From 0c020994fdfaf7375750fffe2bf2afb1f96d42db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 12 Nov 2009 23:52:22 +0000 Subject: [PATCH] merge bash-4.0 to trunk. kept most haiku stuff. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34016 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/bin/bash/ABOUT-NLS | 625 + src/bin/bash/AUTHORS | 8 + src/bin/bash/CHANGES | 2245 +- src/bin/bash/COMPAT | 158 +- src/bin/bash/COPYING | 855 +- src/bin/bash/INSTALL | 79 +- src/bin/bash/Jamfile | 7 +- src/bin/bash/MANIFEST | 322 +- src/bin/bash/MANIFEST.doc | 24 + src/bin/bash/Makefile.in | 461 +- src/bin/bash/NEWS | 515 + src/bin/bash/NOTES | 21 + src/bin/bash/POSIX | 134 +- src/bin/bash/RBASH | 4 +- src/bin/bash/README | 19 +- src/bin/bash/Y2K | 3 +- src/bin/bash/aclocal.m4 | 2414 +- src/bin/bash/alias.c | 24 +- src/bin/bash/alias.h | 22 +- src/bin/bash/array.c | 320 +- src/bin/bash/array.h | 55 +- src/bin/bash/arrayfunc.c | 612 +- src/bin/bash/arrayfunc.h | 41 +- src/bin/bash/assoc.c | 518 + src/bin/bash/assoc.h | 61 + src/bin/bash/bash.rdef | 8 +- src/bin/bash/bashansi.h | 24 +- src/bin/bash/bashhist.c | 189 +- src/bin/bash/bashhist.h | 38 +- src/bin/bash/bashintl.h | 49 +- src/bin/bash/bashjmp.h | 32 +- src/bin/bash/bashline.c | 1139 +- src/bin/bash/bashline.h | 29 +- src/bin/bash/bashtypes.h | 24 +- src/bin/bash/bracecomp.c | 47 +- src/bin/bash/braces.c | 326 +- src/bin/bash/builtins.h | 33 +- src/bin/bash/builtins/Makefile.in | 169 +- src/bin/bash/builtins/alias.def | 89 +- src/bin/bash/builtins/bashgetopt.c | 24 +- src/bin/bash/builtins/bashgetopt.h | 22 +- src/bin/bash/builtins/bind.def | 88 +- src/bin/bash/builtins/break.def | 53 +- src/bin/bash/builtins/builtin.def | 37 +- src/bin/bash/builtins/caller.def | 153 + src/bin/bash/builtins/cd.def | 229 +- src/bin/bash/builtins/colon.def | 36 +- src/bin/bash/builtins/command.def | 51 +- src/bin/bash/builtins/common.c | 272 +- src/bin/bash/builtins/common.h | 44 +- src/bin/bash/builtins/complete.def | 334 +- src/bin/bash/builtins/declare.def | 258 +- src/bin/bash/builtins/echo.def | 97 +- src/bin/bash/builtins/enable.def | 81 +- src/bin/bash/builtins/eval.def | 31 +- src/bin/bash/builtins/evalfile.c | 134 +- src/bin/bash/builtins/evalstring.c | 264 +- src/bin/bash/builtins/exec.def | 58 +- src/bin/bash/builtins/exit.def | 101 +- src/bin/bash/builtins/fc.def | 143 +- src/bin/bash/builtins/fg_bg.def | 79 +- src/bin/bash/builtins/getopt.c | 26 +- src/bin/bash/builtins/getopt.h | 21 +- src/bin/bash/builtins/getopts.def | 45 +- src/bin/bash/builtins/hash.def | 74 +- src/bin/bash/builtins/help.def | 273 +- src/bin/bash/builtins/history.def | 194 +- src/bin/bash/builtins/inlib.def | 28 +- src/bin/bash/builtins/jobs.def | 108 +- src/bin/bash/builtins/kill.def | 101 +- src/bin/bash/builtins/let.def | 47 +- src/bin/bash/builtins/mapfile.def | 343 + src/bin/bash/builtins/mkbuiltins.c | 201 +- src/bin/bash/builtins/printf.def | 392 +- src/bin/bash/builtins/psize.c | 23 +- src/bin/bash/builtins/pushd.def | 250 +- src/bin/bash/builtins/read.def | 453 +- src/bin/bash/builtins/reserved.def | 204 +- src/bin/bash/builtins/return.def | 42 +- src/bin/bash/builtins/set.def | 224 +- src/bin/bash/builtins/setattr.def | 182 +- src/bin/bash/builtins/shift.def | 38 +- src/bin/bash/builtins/shopt.def | 144 +- src/bin/bash/builtins/source.def | 95 +- src/bin/bash/builtins/suspend.def | 48 +- src/bin/bash/builtins/test.def | 114 +- src/bin/bash/builtins/times.def | 34 +- src/bin/bash/builtins/trap.def | 103 +- src/bin/bash/builtins/type.def | 110 +- src/bin/bash/builtins/ulimit.def | 167 +- src/bin/bash/builtins/umask.def | 61 +- src/bin/bash/builtins/wait.def | 67 +- src/bin/bash/command.h | 106 +- src/bin/bash/config-bot.h | 152 +- src/bin/bash/config-top.h | 53 +- src/bin/bash/config.h | 337 +- src/bin/bash/config.h.in | 261 +- src/bin/bash/configure | 32251 ++++++++++++---- src/bin/bash/configure.in | 356 +- src/bin/bash/conftypes.h | 24 +- src/bin/bash/copy_cmd.c | 64 +- src/bin/bash/dispose_cmd.c | 65 +- src/bin/bash/dispose_cmd.h | 28 +- src/bin/bash/error.c | 108 +- src/bin/bash/error.h | 27 +- src/bin/bash/eval.c | 47 +- src/bin/bash/execute_cmd.c | 1623 +- src/bin/bash/execute_cmd.h | 50 +- src/bin/bash/expr.c | 248 +- src/bin/bash/externs.h | 142 +- src/bin/bash/findcmd.c | 113 +- src/bin/bash/findcmd.h | 24 +- src/bin/bash/flags.c | 60 +- src/bin/bash/flags.h | 29 +- src/bin/bash/general.c | 313 +- src/bin/bash/general.h | 61 +- src/bin/bash/hashcmd.c | 24 +- src/bin/bash/hashcmd.h | 26 +- src/bin/bash/hashlib.c | 26 +- src/bin/bash/hashlib.h | 24 +- src/bin/bash/include/ansi_stdlib.h | 22 +- src/bin/bash/include/chartypes.h | 22 +- src/bin/bash/include/filecntl.h | 22 +- src/bin/bash/include/gettext.h | 70 + src/bin/bash/include/maxpath.h | 22 +- src/bin/bash/include/memalloc.h | 22 +- src/bin/bash/include/ocache.h | 22 +- src/bin/bash/include/posixdir.h | 30 +- src/bin/bash/include/posixjmp.h | 20 +- src/bin/bash/include/posixstat.h | 20 +- src/bin/bash/include/posixtime.h | 20 +- src/bin/bash/include/posixwait.h | 22 +- src/bin/bash/include/shmbutil.h | 206 +- src/bin/bash/include/shtty.h | 33 +- src/bin/bash/include/stdc.h | 22 +- src/bin/bash/include/systimes.h | 26 +- src/bin/bash/include/typemax.h | 26 +- src/bin/bash/include/unionwait.h | 22 +- src/bin/bash/include/y.tab.h | 1 - src/bin/bash/input.c | 81 +- src/bin/bash/input.h | 27 +- src/bin/bash/jobs.c | 1610 +- src/bin/bash/jobs.h | 109 +- src/bin/bash/lib/glob/Makefile.in | 26 +- src/bin/bash/lib/glob/collsyms.h | 22 +- src/bin/bash/lib/glob/glob.c | 429 +- src/bin/bash/lib/glob/glob.h | 27 +- src/bin/bash/lib/glob/glob_loop.c | 28 +- src/bin/bash/lib/glob/sm_loop.c | 82 +- src/bin/bash/lib/glob/smatch.c | 64 +- src/bin/bash/lib/glob/strmatch.c | 48 +- src/bin/bash/lib/glob/strmatch.h | 38 +- src/bin/bash/lib/glob/xmbsrtowcs.c | 188 +- src/bin/bash/lib/intl/ChangeLog | 4 + src/bin/bash/lib/intl/Makefile.in | 470 + src/bin/bash/lib/intl/VERSION | 1 + src/bin/bash/lib/intl/bindtextdom.c | 376 + src/bin/bash/lib/intl/config.charset | 465 + src/bin/bash/lib/intl/dcgettext.c | 61 + src/bin/bash/lib/intl/dcigettext.c | 1248 + src/bin/bash/lib/intl/dcngettext.c | 62 + src/bin/bash/lib/intl/dgettext.c | 61 + src/bin/bash/lib/intl/dngettext.c | 63 + src/bin/bash/lib/intl/eval-plural.h | 116 + src/bin/bash/lib/intl/explodename.c | 195 + src/bin/bash/lib/intl/finddomain.c | 197 + src/bin/bash/lib/intl/gettext.c | 66 + src/bin/bash/lib/intl/gettextP.h | 226 + src/bin/bash/lib/intl/gmo.h | 150 + src/bin/bash/lib/intl/hash-string.h | 61 + src/bin/bash/lib/intl/intl-compat.c | 152 + src/bin/bash/lib/intl/l10nflist.c | 456 + src/bin/bash/lib/intl/libgnuintl.h.in | 311 + src/bin/bash/lib/intl/loadinfo.h | 159 + src/bin/bash/lib/intl/loadmsgcat.c | 1324 + src/bin/bash/lib/intl/localcharset.c | 399 + src/bin/bash/lib/intl/localcharset.h | 43 + src/bin/bash/lib/intl/locale.alias | 78 + src/bin/bash/lib/intl/localealias.c | 421 + src/bin/bash/lib/intl/localename.c | 774 + src/bin/bash/lib/intl/log.c | 106 + src/bin/bash/lib/intl/ngettext.c | 70 + src/bin/bash/lib/intl/os2compat.c | 100 + src/bin/bash/lib/intl/os2compat.h | 48 + src/bin/bash/lib/intl/osdep.c | 26 + src/bin/bash/lib/intl/plural-exp.c | 158 + src/bin/bash/lib/intl/plural-exp.h | 128 + src/bin/bash/lib/intl/plural.c | 1679 + src/bin/bash/lib/intl/plural.y | 411 + src/bin/bash/lib/intl/ref-add.sin | 29 + src/bin/bash/lib/intl/ref-del.sin | 24 + src/bin/bash/lib/intl/relocatable.c | 440 + src/bin/bash/lib/intl/relocatable.h | 69 + src/bin/bash/lib/intl/textdomain.c | 144 + src/bin/bash/lib/readline/COPYING | 849 +- src/bin/bash/lib/readline/Makefile.in | 35 +- src/bin/bash/lib/readline/ansi_stdlib.h | 22 +- src/bin/bash/lib/readline/bind.c | 538 +- src/bin/bash/lib/readline/callback.c | 159 +- src/bin/bash/lib/readline/chardefs.h | 33 +- src/bin/bash/lib/readline/compat.c | 26 +- src/bin/bash/lib/readline/complete.c | 674 +- src/bin/bash/lib/readline/display.c | 955 +- src/bin/bash/lib/readline/doc/Makefile | 58 +- src/bin/bash/lib/readline/doc/fdl.texi | 451 + src/bin/bash/lib/readline/doc/hist.texinfo | 110 - src/bin/bash/lib/readline/doc/history.texi | 99 + .../doc/{hstech.texinfo => hstech.texi} | 39 +- .../doc/{hsuser.texinfo => hsuser.texi} | 37 +- src/bin/bash/lib/readline/doc/manvers.texinfo | 10 - src/bin/bash/lib/readline/doc/rlman.texi | 97 + src/bin/bash/lib/readline/doc/rlman.texinfo | 108 - .../doc/{rltech.texinfo => rltech.texi} | 383 +- .../doc/{rluser.texinfo => rluser.texi} | 191 +- src/bin/bash/lib/readline/doc/rluserman.texi | 83 + .../bash/lib/readline/doc/rluserman.texinfo | 94 - src/bin/bash/lib/readline/doc/version.texi | 10 + src/bin/bash/lib/readline/emacs_keymap.c | 25 +- src/bin/bash/lib/readline/examples/Inputrc | 24 +- src/bin/bash/lib/readline/examples/Makefile | 26 +- .../bash/lib/readline/examples/excallback.c | 3 + src/bin/bash/lib/readline/examples/fileman.c | 29 +- .../bash/lib/readline/examples/histexamp.c | 141 +- src/bin/bash/lib/readline/examples/manexamp.c | 23 +- src/bin/bash/lib/readline/examples/rl.c | 32 +- src/bin/bash/lib/readline/examples/rlcat.c | 29 +- src/bin/bash/lib/readline/examples/rltest.c | 29 +- src/bin/bash/lib/readline/funmap.c | 30 +- src/bin/bash/lib/readline/histexpand.c | 420 +- src/bin/bash/lib/readline/histfile.c | 166 +- src/bin/bash/lib/readline/histlib.h | 26 +- src/bin/bash/lib/readline/history.c | 222 +- src/bin/bash/lib/readline/history.h | 48 +- src/bin/bash/lib/readline/histsearch.c | 31 +- src/bin/bash/lib/readline/input.c | 120 +- src/bin/bash/lib/readline/isearch.c | 948 +- src/bin/bash/lib/readline/keymaps.c | 40 +- src/bin/bash/lib/readline/keymaps.h | 23 +- src/bin/bash/lib/readline/kill.c | 72 +- src/bin/bash/lib/readline/macro.c | 39 +- src/bin/bash/lib/readline/mbutil.c | 91 +- src/bin/bash/lib/readline/misc.c | 365 +- src/bin/bash/lib/readline/nls.c | 63 +- src/bin/bash/lib/readline/parens.c | 32 +- src/bin/bash/lib/readline/posixdir.h | 30 +- src/bin/bash/lib/readline/posixjmp.h | 20 +- src/bin/bash/lib/readline/posixstat.h | 20 +- src/bin/bash/lib/readline/readline.c | 470 +- src/bin/bash/lib/readline/readline.h | 159 +- src/bin/bash/lib/readline/rlconf.h | 33 +- src/bin/bash/lib/readline/rldefs.h | 40 +- src/bin/bash/lib/readline/rlmbutil.h | 76 +- src/bin/bash/lib/readline/rlprivate.h | 226 +- src/bin/bash/lib/readline/rlshell.h | 25 +- src/bin/bash/lib/readline/rlstdc.h | 30 +- src/bin/bash/lib/readline/rltty.c | 376 +- src/bin/bash/lib/readline/rltty.h | 60 +- src/bin/bash/lib/readline/rltypedefs.h | 31 +- src/bin/bash/lib/readline/rlwinsize.h | 33 +- src/bin/bash/lib/readline/savestring.c | 29 +- src/bin/bash/lib/readline/search.c | 369 +- src/bin/bash/lib/readline/shell.c | 64 +- src/bin/bash/lib/readline/signals.c | 255 +- src/bin/bash/lib/readline/tcap.h | 28 +- src/bin/bash/lib/readline/terminal.c | 179 +- src/bin/bash/lib/readline/text.c | 386 +- src/bin/bash/lib/readline/tilde.c | 86 +- src/bin/bash/lib/readline/tilde.h | 28 +- src/bin/bash/lib/readline/undo.c | 115 +- src/bin/bash/lib/readline/util.c | 203 +- src/bin/bash/lib/readline/vi_keymap.c | 29 +- src/bin/bash/lib/readline/vi_mode.c | 639 +- src/bin/bash/lib/readline/xmalloc.c | 27 +- src/bin/bash/lib/readline/xmalloc.h | 25 +- src/bin/bash/lib/sh/Jamfile | 51 +- src/bin/bash/lib/sh/Makefile.in | 158 +- src/bin/bash/lib/sh/casemod.c | 239 + src/bin/bash/lib/sh/clktck.c | 22 +- src/bin/bash/lib/sh/clock.c | 22 +- src/bin/bash/lib/sh/eaccess.c | 222 + src/bin/bash/lib/sh/fdprintf.c | 70 + src/bin/bash/lib/sh/fmtullong.c | 24 +- src/bin/bash/lib/sh/fmtulong.c | 29 +- src/bin/bash/lib/sh/fmtumax.c | 25 +- src/bin/bash/lib/sh/fpurge.c | 123 + src/bin/bash/lib/sh/getcwd.c | 85 +- src/bin/bash/lib/sh/getenv.c | 30 +- src/bin/bash/lib/sh/inet_aton.c | 2 + src/bin/bash/lib/sh/input_avail.c | 105 + src/bin/bash/lib/sh/itos.c | 22 +- src/bin/bash/lib/sh/mailstat.c | 24 +- src/bin/bash/lib/sh/makepath.c | 38 +- src/bin/bash/lib/sh/mbscmp.c | 62 + src/bin/bash/lib/sh/memset.c | 19 +- src/bin/bash/lib/sh/mktime.c | 32 +- src/bin/bash/lib/sh/netconn.c | 27 +- src/bin/bash/lib/sh/netopen.c | 42 +- src/bin/bash/lib/sh/oslib.c | 22 +- src/bin/bash/lib/sh/pathcanon.c | 31 +- src/bin/bash/lib/sh/pathphys.c | 73 +- src/bin/bash/lib/sh/rename.c | 20 +- src/bin/bash/lib/sh/setlinebuf.c | 22 +- src/bin/bash/lib/sh/shmatch.c | 120 + src/bin/bash/lib/sh/shquote.c | 75 +- src/bin/bash/lib/sh/shtty.c | 108 +- src/bin/bash/lib/sh/snprintf.c | 192 +- src/bin/bash/lib/sh/spell.c | 48 +- src/bin/bash/lib/sh/strcasecmp.c | 22 +- src/bin/bash/lib/sh/strerror.c | 22 +- src/bin/bash/lib/sh/strftime.c | 25 +- src/bin/bash/lib/sh/strindex.c | 25 +- src/bin/bash/lib/sh/stringlist.c | 22 +- src/bin/bash/lib/sh/stringvec.c | 22 +- src/bin/bash/lib/sh/strnlen.c | 49 + src/bin/bash/lib/sh/strpbrk.c | 19 +- src/bin/bash/lib/sh/strstr.c | 125 + src/bin/bash/lib/sh/strtod.c | 16 +- src/bin/bash/lib/sh/strtoimax.c | 23 +- src/bin/bash/lib/sh/strtol.c | 29 +- src/bin/bash/lib/sh/strtoll.c | 26 +- src/bin/bash/lib/sh/strtoul.c | 26 +- src/bin/bash/lib/sh/strtoull.c | 26 +- src/bin/bash/lib/sh/strtoumax.c | 24 +- src/bin/bash/lib/sh/strtrans.c | 73 +- src/bin/bash/lib/sh/times.c | 22 +- src/bin/bash/lib/sh/timeval.c | 22 +- src/bin/bash/lib/sh/tmpfile.c | 36 +- src/bin/bash/lib/sh/uconvert.c | 116 + src/bin/bash/lib/sh/ufuncs.c | 104 + src/bin/bash/lib/sh/vprint.c | 24 +- src/bin/bash/lib/sh/wcsdup.c | 44 + src/bin/bash/lib/sh/winsize.c | 83 + src/bin/bash/lib/sh/xstrchr.c | 22 +- src/bin/bash/lib/sh/zcatfd.c | 26 +- src/bin/bash/lib/sh/zgetline.c | 121 + src/bin/bash/lib/sh/zmapfd.c | 90 + src/bin/bash/lib/sh/zread.c | 73 +- src/bin/bash/lib/sh/zwrite.c | 26 +- src/bin/bash/lib/tilde/Makefile.in | 23 +- src/bin/bash/lib/tilde/doc/Makefile | 5 - src/bin/bash/lib/tilde/doc/tilde.texi | 0 src/bin/bash/lib/tilde/shell.c | 21 +- src/bin/bash/lib/tilde/tilde.c | 86 +- src/bin/bash/lib/tilde/tilde.h | 28 +- src/bin/bash/list.c | 25 +- src/bin/bash/locale.c | 246 +- src/bin/bash/mailcheck.c | 151 +- src/bin/bash/mailcheck.h | 23 +- src/bin/bash/make_cmd.c | 143 +- src/bin/bash/make_cmd.h | 34 +- src/bin/bash/mksyntax.c | 52 +- src/bin/bash/nojobs.c | 283 +- src/bin/bash/parse.y | 1783 +- src/bin/bash/parser-built | 196 +- src/bin/bash/parser.h | 45 +- src/bin/bash/patchlevel.h | 22 +- src/bin/bash/pathexp.c | 106 +- src/bin/bash/pathexp.h | 30 +- src/bin/bash/pathnames.h | 30 - src/bin/bash/pathnames.h.in | 33 + src/bin/bash/pcomplete.c | 203 +- src/bin/bash/pcomplete.h | 33 +- src/bin/bash/pcomplib.c | 31 +- src/bin/bash/po/._lt.po | Bin 0 -> 4096 bytes src/bin/bash/po/LINGUAS | 2 + src/bin/bash/po/Makefile.in.in | 359 + src/bin/bash/po/Makevars | 41 + src/bin/bash/po/POTFILES.in | 77 + src/bin/bash/po/README | 1 + src/bin/bash/po/Rules-builtins | 19 + src/bin/bash/po/Rules-quot | 42 + src/bin/bash/po/af.gmo | Bin 0 -> 1231 bytes src/bin/bash/po/af.po | 4480 +++ src/bin/bash/po/bash.pot | 3824 ++ src/bin/bash/po/bg.gmo | Bin 0 -> 36341 bytes src/bin/bash/po/bg.po | 5489 +++ src/bin/bash/po/boldquot.sed | 10 + src/bin/bash/po/ca.gmo | Bin 0 -> 10101 bytes src/bin/bash/po/ca.po | 6378 +++ src/bin/bash/po/cs.gmo | Bin 0 -> 153701 bytes src/bin/bash/po/cs.po | 6002 +++ src/bin/bash/po/de.gmo | Bin 0 -> 35764 bytes src/bin/bash/po/de.po | 6527 ++++ src/bin/bash/po/en@boldquot.gmo | Bin 0 -> 155921 bytes src/bin/bash/po/en@boldquot.header | 25 + src/bin/bash/po/en@boldquot.po | 5355 +++ src/bin/bash/po/en@quot.gmo | Bin 0 -> 154417 bytes src/bin/bash/po/en@quot.header | 22 + src/bin/bash/po/en@quot.po | 5317 +++ src/bin/bash/po/eo.gmo | Bin 0 -> 25421 bytes src/bin/bash/po/eo.po | 5276 +++ src/bin/bash/po/es.gmo | Bin 0 -> 31030 bytes src/bin/bash/po/es.po | 7632 ++++ src/bin/bash/po/et.gmo | Bin 0 -> 12257 bytes src/bin/bash/po/et.po | 3846 ++ src/bin/bash/po/fr.gmo | Bin 0 -> 27590 bytes src/bin/bash/po/fr.po | 5461 +++ src/bin/bash/po/hu.gmo | Bin 0 -> 9591 bytes src/bin/bash/po/hu.po | 6196 +++ src/bin/bash/po/id.gmo | Bin 0 -> 152559 bytes src/bin/bash/po/id.po | 6159 +++ src/bin/bash/po/insert-header.sin | 23 + src/bin/bash/po/ja.gmo | Bin 0 -> 8183 bytes src/bin/bash/po/ja.po | 4100 ++ src/bin/bash/po/lt.gmo | Bin 0 -> 25365 bytes src/bin/bash/po/lt.po | 4205 ++ src/bin/bash/po/nl.gmo | Bin 0 -> 154123 bytes src/bin/bash/po/nl.po | 5328 +++ src/bin/bash/po/pl.gmo | Bin 0 -> 26025 bytes src/bin/bash/po/pl.po | 5101 +++ src/bin/bash/po/pt_BR.gmo | Bin 0 -> 9926 bytes src/bin/bash/po/pt_BR.po | 6196 +++ src/bin/bash/po/quot.sed | 6 + src/bin/bash/po/remove-potcdate.sin | 19 + src/bin/bash/po/ro.gmo | Bin 0 -> 9699 bytes src/bin/bash/po/ro.po | 6304 +++ src/bin/bash/po/ru.gmo | Bin 0 -> 9142 bytes src/bin/bash/po/ru.po | 3878 ++ src/bin/bash/po/sk.gmo | Bin 0 -> 153974 bytes src/bin/bash/po/sk.po | 5889 +++ src/bin/bash/po/sv.gmo | Bin 0 -> 149365 bytes src/bin/bash/po/sv.po | 5324 +++ src/bin/bash/po/tr.gmo | Bin 0 -> 25573 bytes src/bin/bash/po/tr.po | 5406 +++ src/bin/bash/po/vi.gmo | Bin 0 -> 164633 bytes src/bin/bash/po/vi.po | 5368 +++ src/bin/bash/po/zh_TW.gmo | Bin 0 -> 5993 bytes src/bin/bash/po/zh_TW.po | 3847 ++ src/bin/bash/print_cmd.c | 395 +- src/bin/bash/quit.h | 48 +- src/bin/bash/redir.c | 253 +- src/bin/bash/redir.h | 34 +- src/bin/bash/shell.c | 298 +- src/bin/bash/shell.h | 81 +- src/bin/bash/sig.c | 189 +- src/bin/bash/sig.h | 38 +- src/bin/bash/siglist.c | 112 +- src/bin/bash/siglist.h | 24 +- src/bin/bash/signames_haiku.h | 10 +- src/bin/bash/stringlib.c | 29 +- src/bin/bash/subst.c | 3279 +- src/bin/bash/subst.h | 108 +- src/bin/bash/support/Makefile.in | 40 +- src/bin/bash/support/bash.xbm | 1 + src/bin/bash/support/bashbug.sh | 77 +- src/bin/bash/support/bashversion.c | 25 +- src/bin/bash/support/checkbashisms | 170 + src/bin/bash/support/config.guess | 952 +- src/bin/bash/support/config.rpath | 547 + src/bin/bash/support/config.sub | 473 +- src/bin/bash/support/fixlinks | 22 +- src/bin/bash/support/man2html.c | 63 +- src/bin/bash/support/missing | 27 +- src/bin/bash/support/mkclone | 21 +- src/bin/bash/support/mkconffiles | 21 +- src/bin/bash/support/mkdirs | 21 +- src/bin/bash/support/mkinstalldirs | 111 + src/bin/bash/support/mksignames.c | 381 +- src/bin/bash/support/mkversion.sh | 48 +- src/bin/bash/support/printenv.c | 28 +- src/bin/bash/support/printenv.sh | 22 +- src/bin/bash/support/recho.c | 29 +- src/bin/bash/support/rlvers.sh | 22 +- src/bin/bash/support/shobj-conf | 178 +- src/bin/bash/support/signames.c | 393 + src/bin/bash/support/texi2dvi | 216 +- src/bin/bash/support/texi2html | 25 +- src/bin/bash/support/xcase.c | 95 + src/bin/bash/support/xenix-link.sh | 24 +- src/bin/bash/support/zecho.c | 27 +- src/bin/bash/syntax.h | 35 +- src/bin/bash/test.c | 205 +- src/bin/bash/test.h | 26 +- src/bin/bash/trap.c | 357 +- src/bin/bash/trap.h | 57 +- src/bin/bash/unwind_prot.c | 36 +- src/bin/bash/unwind_prot.h | 25 +- src/bin/bash/variables.c | 1279 +- src/bin/bash/variables.h | 77 +- src/bin/bash/version.c | 65 +- src/bin/bash/version.h | 17 + src/bin/bash/xmalloc.c | 43 +- src/bin/bash/xmalloc.h | 24 +- src/bin/bash/y.tab.h | 160 + 484 files changed, 218270 insertions(+), 22061 deletions(-) create mode 100644 src/bin/bash/ABOUT-NLS create mode 100644 src/bin/bash/MANIFEST.doc create mode 100644 src/bin/bash/assoc.c create mode 100644 src/bin/bash/assoc.h create mode 100644 src/bin/bash/builtins/caller.def create mode 100644 src/bin/bash/builtins/mapfile.def create mode 100644 src/bin/bash/include/gettext.h delete mode 100644 src/bin/bash/include/y.tab.h create mode 100644 src/bin/bash/lib/intl/ChangeLog create mode 100644 src/bin/bash/lib/intl/Makefile.in create mode 100644 src/bin/bash/lib/intl/VERSION create mode 100644 src/bin/bash/lib/intl/bindtextdom.c create mode 100755 src/bin/bash/lib/intl/config.charset create mode 100644 src/bin/bash/lib/intl/dcgettext.c create mode 100644 src/bin/bash/lib/intl/dcigettext.c create mode 100644 src/bin/bash/lib/intl/dcngettext.c create mode 100644 src/bin/bash/lib/intl/dgettext.c create mode 100644 src/bin/bash/lib/intl/dngettext.c create mode 100644 src/bin/bash/lib/intl/eval-plural.h create mode 100644 src/bin/bash/lib/intl/explodename.c create mode 100644 src/bin/bash/lib/intl/finddomain.c create mode 100644 src/bin/bash/lib/intl/gettext.c create mode 100644 src/bin/bash/lib/intl/gettextP.h create mode 100644 src/bin/bash/lib/intl/gmo.h create mode 100644 src/bin/bash/lib/intl/hash-string.h create mode 100644 src/bin/bash/lib/intl/intl-compat.c create mode 100644 src/bin/bash/lib/intl/l10nflist.c create mode 100644 src/bin/bash/lib/intl/libgnuintl.h.in create mode 100644 src/bin/bash/lib/intl/loadinfo.h create mode 100644 src/bin/bash/lib/intl/loadmsgcat.c create mode 100644 src/bin/bash/lib/intl/localcharset.c create mode 100644 src/bin/bash/lib/intl/localcharset.h create mode 100644 src/bin/bash/lib/intl/locale.alias create mode 100644 src/bin/bash/lib/intl/localealias.c create mode 100644 src/bin/bash/lib/intl/localename.c create mode 100644 src/bin/bash/lib/intl/log.c create mode 100644 src/bin/bash/lib/intl/ngettext.c create mode 100644 src/bin/bash/lib/intl/os2compat.c create mode 100644 src/bin/bash/lib/intl/os2compat.h create mode 100644 src/bin/bash/lib/intl/osdep.c create mode 100644 src/bin/bash/lib/intl/plural-exp.c create mode 100644 src/bin/bash/lib/intl/plural-exp.h create mode 100644 src/bin/bash/lib/intl/plural.c create mode 100644 src/bin/bash/lib/intl/plural.y create mode 100644 src/bin/bash/lib/intl/ref-add.sin create mode 100644 src/bin/bash/lib/intl/ref-del.sin create mode 100644 src/bin/bash/lib/intl/relocatable.c create mode 100644 src/bin/bash/lib/intl/relocatable.h create mode 100644 src/bin/bash/lib/intl/textdomain.c create mode 100644 src/bin/bash/lib/readline/doc/fdl.texi delete mode 100644 src/bin/bash/lib/readline/doc/hist.texinfo create mode 100644 src/bin/bash/lib/readline/doc/history.texi rename src/bin/bash/lib/readline/doc/{hstech.texinfo => hstech.texi} (95%) rename src/bin/bash/lib/readline/doc/{hsuser.texinfo => hsuser.texi} (91%) delete mode 100644 src/bin/bash/lib/readline/doc/manvers.texinfo create mode 100644 src/bin/bash/lib/readline/doc/rlman.texi delete mode 100644 src/bin/bash/lib/readline/doc/rlman.texinfo rename src/bin/bash/lib/readline/doc/{rltech.texinfo => rltech.texi} (84%) rename src/bin/bash/lib/readline/doc/{rluser.texinfo => rluser.texi} (89%) create mode 100644 src/bin/bash/lib/readline/doc/rluserman.texi delete mode 100644 src/bin/bash/lib/readline/doc/rluserman.texinfo create mode 100644 src/bin/bash/lib/readline/doc/version.texi create mode 100644 src/bin/bash/lib/sh/casemod.c create mode 100644 src/bin/bash/lib/sh/eaccess.c create mode 100644 src/bin/bash/lib/sh/fdprintf.c create mode 100644 src/bin/bash/lib/sh/fpurge.c create mode 100644 src/bin/bash/lib/sh/input_avail.c create mode 100644 src/bin/bash/lib/sh/mbscmp.c create mode 100644 src/bin/bash/lib/sh/shmatch.c create mode 100644 src/bin/bash/lib/sh/strnlen.c create mode 100644 src/bin/bash/lib/sh/strstr.c create mode 100644 src/bin/bash/lib/sh/uconvert.c create mode 100644 src/bin/bash/lib/sh/ufuncs.c create mode 100644 src/bin/bash/lib/sh/wcsdup.c create mode 100644 src/bin/bash/lib/sh/winsize.c create mode 100644 src/bin/bash/lib/sh/zgetline.c create mode 100644 src/bin/bash/lib/sh/zmapfd.c delete mode 100644 src/bin/bash/lib/tilde/doc/Makefile delete mode 100644 src/bin/bash/lib/tilde/doc/tilde.texi delete mode 100644 src/bin/bash/pathnames.h create mode 100644 src/bin/bash/pathnames.h.in create mode 100644 src/bin/bash/po/._lt.po create mode 100644 src/bin/bash/po/LINGUAS create mode 100644 src/bin/bash/po/Makefile.in.in create mode 100644 src/bin/bash/po/Makevars create mode 100644 src/bin/bash/po/POTFILES.in create mode 100644 src/bin/bash/po/README create mode 100644 src/bin/bash/po/Rules-builtins create mode 100644 src/bin/bash/po/Rules-quot create mode 100644 src/bin/bash/po/af.gmo create mode 100644 src/bin/bash/po/af.po create mode 100644 src/bin/bash/po/bash.pot create mode 100644 src/bin/bash/po/bg.gmo create mode 100644 src/bin/bash/po/bg.po create mode 100644 src/bin/bash/po/boldquot.sed create mode 100644 src/bin/bash/po/ca.gmo create mode 100644 src/bin/bash/po/ca.po create mode 100644 src/bin/bash/po/cs.gmo create mode 100644 src/bin/bash/po/cs.po create mode 100644 src/bin/bash/po/de.gmo create mode 100644 src/bin/bash/po/de.po create mode 100644 src/bin/bash/po/en@boldquot.gmo create mode 100644 src/bin/bash/po/en@boldquot.header create mode 100644 src/bin/bash/po/en@boldquot.po create mode 100644 src/bin/bash/po/en@quot.gmo create mode 100644 src/bin/bash/po/en@quot.header create mode 100644 src/bin/bash/po/en@quot.po create mode 100644 src/bin/bash/po/eo.gmo create mode 100644 src/bin/bash/po/eo.po create mode 100644 src/bin/bash/po/es.gmo create mode 100644 src/bin/bash/po/es.po create mode 100644 src/bin/bash/po/et.gmo create mode 100644 src/bin/bash/po/et.po create mode 100644 src/bin/bash/po/fr.gmo create mode 100644 src/bin/bash/po/fr.po create mode 100644 src/bin/bash/po/hu.gmo create mode 100644 src/bin/bash/po/hu.po create mode 100644 src/bin/bash/po/id.gmo create mode 100644 src/bin/bash/po/id.po create mode 100644 src/bin/bash/po/insert-header.sin create mode 100644 src/bin/bash/po/ja.gmo create mode 100644 src/bin/bash/po/ja.po create mode 100644 src/bin/bash/po/lt.gmo create mode 100644 src/bin/bash/po/lt.po create mode 100644 src/bin/bash/po/nl.gmo create mode 100644 src/bin/bash/po/nl.po create mode 100644 src/bin/bash/po/pl.gmo create mode 100644 src/bin/bash/po/pl.po create mode 100644 src/bin/bash/po/pt_BR.gmo create mode 100644 src/bin/bash/po/pt_BR.po create mode 100644 src/bin/bash/po/quot.sed create mode 100644 src/bin/bash/po/remove-potcdate.sin create mode 100644 src/bin/bash/po/ro.gmo create mode 100644 src/bin/bash/po/ro.po create mode 100644 src/bin/bash/po/ru.gmo create mode 100644 src/bin/bash/po/ru.po create mode 100644 src/bin/bash/po/sk.gmo create mode 100644 src/bin/bash/po/sk.po create mode 100644 src/bin/bash/po/sv.gmo create mode 100644 src/bin/bash/po/sv.po create mode 100644 src/bin/bash/po/tr.gmo create mode 100644 src/bin/bash/po/tr.po create mode 100644 src/bin/bash/po/vi.gmo create mode 100644 src/bin/bash/po/vi.po create mode 100644 src/bin/bash/po/zh_TW.gmo create mode 100644 src/bin/bash/po/zh_TW.po create mode 100755 src/bin/bash/support/checkbashisms create mode 100755 src/bin/bash/support/config.rpath create mode 100755 src/bin/bash/support/mkinstalldirs create mode 100644 src/bin/bash/support/signames.c create mode 100644 src/bin/bash/support/xcase.c create mode 100644 src/bin/bash/version.h create mode 100644 src/bin/bash/y.tab.h diff --git a/src/bin/bash/ABOUT-NLS b/src/bin/bash/ABOUT-NLS new file mode 100644 index 0000000000..47d5e39f0e --- /dev/null +++ b/src/bin/bash/ABOUT-NLS @@ -0,0 +1,625 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your country by running the command +`locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of May 2003. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files am az be bg ca cs da de el en en_GB eo es + +-------------------------------------------+ + a2ps | [] [] [] [] | + aegis | () | + anubis | | + ap-utils | | + bash | [] [] [] | + batchelor | | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bluez-pin | [] [] | + clisp | | + clisp | [] [] [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + darkstat | () [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + error | [] [] [] [] [] | + fetchmail | [] () [] [] [] [] | + fileutils | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] | + gas | [] | + gawk | [] [] [] [] | + gcal | [] | + gcc | [] [] | + gettext | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] [] [] [] | + gliv | | + glunarclock | [] [] [] | + gnucash | () [] | + gnucash-glossary | [] () [] | + gnupg | [] () [] [] [] [] | + gpe-calendar | [] | + gpe-conf | [] | + gpe-contacts | [] | + gpe-edit | | + gpe-login | [] | + gpe-ownerinfo | [] | + gpe-sketchbook | [] | + gpe-timesheet | | + gpe-today | [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | () () () | + grep | [] [] [] [] [] | + gretl | [] | + hello | [] [] [] [] [] [] | + id-utils | [] [] | + indent | [] [] [] [] | + jpilot | [] [] [] [] | + jwhois | [] | + kbd | [] [] [] [] [] | + ld | [] [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] | + libiconv | [] [] [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lingoteach_lessons | () () | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | [] [] | + make | [] [] [] | + man-db | [] () [] [] () | + mysecretdiary | [] [] [] | + nano | [] () [] [] [] | + nano_1_0 | [] () [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] [] | + ptx | [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] [] [] [] | + screem | | + sed | [] [] [] [] [] | + sh-utils | [] [] [] | + sharutils | [] [] [] [] [] [] | + sketch | [] () [] | + soundtracker | [] [] [] | + sp | [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] | + tin | () () | + util-linux | [] [] [] [] [] | + vorbis-tools | [] [] [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] [] [] [] [] | + xchat | [] [] [] | + xpad | | + +-------------------------------------------+ + am az be bg ca cs da de el en en_GB eo es + 0 1 4 2 31 17 54 60 14 1 4 12 56 + + et fa fi fr ga gl he hr hu id it ja ko + +----------------------------------------+ + a2ps | [] [] [] () () | + aegis | | + anubis | [] | + ap-utils | [] | + bash | [] [] | + batchelor | [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] [] | + bluez-pin | [] [] [] [] | + clisp | | + clisp | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] [] | + darkstat | () [] [] [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | | + enscript | [] [] | + error | [] [] [] [] | + fetchmail | [] | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] [] [] [] | + flex | [] [] | + gas | [] | + gawk | [] [] | + gcal | [] | + gcc | [] | + gettext | [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] | + gimp-print | [] [] | + gliv | () | + glunarclock | [] [] [] [] | + gnucash | [] | + gnucash-glossary | [] | + gnupg | [] [] [] [] [] [] [] | + gpe-calendar | [] | + gpe-conf | | + gpe-contacts | [] | + gpe-edit | [] [] | + gpe-login | [] | + gpe-ownerinfo | [] [] [] | + gpe-sketchbook | [] | + gpe-timesheet | [] [] [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | [] [] [] | + gprof | [] [] | + gpsdrive | () [] () () | + grep | [] [] [] [] [] [] [] [] [] [] [] | + gretl | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] [] [] [] [] [] | + jpilot | [] () | + jwhois | [] [] [] [] | + kbd | [] | + ld | [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] [] [] | + libiconv | [] [] [] [] [] [] [] [] | + lifelines | () | + lilypond | [] | + lingoteach | [] [] | + lingoteach_lessons | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | | + make | [] [] [] [] [] [] | + man-db | [] () () | + mysecretdiary | [] [] | + nano | [] [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] [] [] [] | + screem | | + sed | [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] | + sketch | [] | + soundtracker | [] [] [] | + sp | [] () | + tar | [] [] [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] [] | + tin | [] () | + util-linux | [] [] [] [] () [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] | + xpad | | + +----------------------------------------+ + et fa fi fr ga gl he hr hu id it ja ko + 20 1 15 73 14 24 8 10 30 31 19 31 9 + + lg lt lv ms nb nl nn no pl pt pt_BR ro + +----------------------------------------+ + a2ps | [] [] () () () [] [] | + aegis | () | + anubis | [] [] | + ap-utils | () | + bash | [] | + batchelor | | + bfd | | + binutils | | + bison | [] [] [] [] | + bluez-pin | [] | + clisp | | + clisp | [] | + coreutils | [] | + cpio | [] [] [] | + darkstat | [] [] [] [] | + diffutils | [] [] [] | + e2fsprogs | | + enscript | [] [] | + error | [] [] | + fetchmail | () () | + fileutils | [] | + findutils | [] [] [] [] | + flex | [] | + gas | | + gawk | [] | + gcal | | + gcc | | + gettext | [] | + gettext-runtime | [] | + gettext-tools | | + gimp-print | [] | + gliv | [] | + glunarclock | [] | + gnucash | | + gnucash-glossary | [] [] | + gnupg | | + gpe-calendar | [] [] | + gpe-conf | [] [] | + gpe-contacts | [] | + gpe-edit | [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-sketchbook | [] [] | + gpe-timesheet | [] [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | | + gprof | [] | + gpsdrive | () () () | + grep | [] [] [] [] | + gretl | | + hello | [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] | + jpilot | () () | + jwhois | [] [] [] | + kbd | | + ld | | + libc | [] [] [] [] | + libgpewidget | [] [] | + libiconv | [] [] | + lifelines | | + lilypond | [] | + lingoteach | | + lingoteach_lessons | | + lynx | [] [] | + m4 | [] [] [] [] | + mailutils | | + make | [] [] | + man-db | [] | + mysecretdiary | [] | + nano | [] [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] | + screem | | + sed | [] [] | + sh-utils | [] | + sharutils | [] | + sketch | [] | + soundtracker | | + sp | | + tar | [] [] [] [] [] [] | + texinfo | [] | + textutils | [] | + tin | | + util-linux | [] [] | + vorbis-tools | [] [] | + wastesedge | | + wdiff | [] [] [] [] | + wget | [] [] [] | + xchat | [] [] | + xpad | [] | + +----------------------------------------+ + lg lt lv ms nb nl nn no pl pt pt_BR ro + 0 0 2 11 7 26 3 4 18 15 34 34 + + ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW + +-------------------------------------------+ + a2ps | [] [] [] [] [] | 16 + aegis | () | 0 + anubis | [] [] | 5 + ap-utils | () | 1 + bash | [] | 7 + batchelor | | 1 + bfd | [] [] [] | 7 + binutils | [] [] [] | 7 + bison | [] [] | 13 + bluez-pin | | 7 + clisp | | 0 + clisp | | 5 + coreutils | [] [] [] [] [] | 14 + cpio | [] [] [] | 13 + darkstat | [] () () | 9 + diffutils | [] [] [] [] | 21 + e2fsprogs | [] | 3 + enscript | [] [] [] | 11 + error | [] [] [] | 14 + fetchmail | [] | 7 + fileutils | [] [] [] [] [] [] | 15 + findutils | [] [] [] [] [] [] | 27 + flex | [] [] [] | 10 + gas | [] | 3 + gawk | [] [] | 9 + gcal | [] [] | 4 + gcc | [] | 4 + gettext | [] [] [] [] [] [] | 15 + gettext-runtime | [] [] [] [] [] [] | 16 + gettext-tools | [] [] | 5 + gimp-print | [] [] | 10 + gliv | | 1 + glunarclock | [] [] [] | 11 + gnucash | [] [] | 4 + gnucash-glossary | [] [] [] | 8 + gnupg | [] [] [] [] | 16 + gpe-calendar | [] | 5 + gpe-conf | | 3 + gpe-contacts | [] | 4 + gpe-edit | [] | 5 + gpe-login | [] | 5 + gpe-ownerinfo | [] | 7 + gpe-sketchbook | [] | 5 + gpe-timesheet | [] | 6 + gpe-today | [] | 6 + gpe-todo | [] | 6 + gphoto2 | [] [] | 9 + gprof | [] [] | 7 + gpsdrive | [] [] | 3 + grep | [] [] [] [] | 24 + gretl | | 2 + hello | [] [] [] [] [] | 33 + id-utils | [] [] [] | 11 + indent | [] [] [] [] | 19 + jpilot | [] [] [] [] [] | 10 + jwhois | () () [] [] | 10 + kbd | [] [] | 8 + ld | [] [] | 5 + libc | [] [] [] [] | 20 + libgpewidget | | 6 + libiconv | [] [] [] [] [] [] | 21 + lifelines | [] | 2 + lilypond | [] | 4 + lingoteach | | 2 + lingoteach_lessons | () | 0 + lynx | [] [] [] [] | 14 + m4 | [] [] [] | 15 + mailutils | | 2 + make | [] [] [] [] | 15 + man-db | [] | 6 + mysecretdiary | [] [] | 8 + nano | [] [] [] | 15 + nano_1_0 | [] [] [] | 15 + opcodes | [] [] | 9 + parted | [] [] | 13 + ptx | [] [] [] | 22 + python | | 0 + radius | | 0 + recode | [] [] [] [] | 19 + screem | [] | 1 + sed | [] [] [] [] [] | 20 + sh-utils | [] [] [] | 13 + sharutils | [] [] [] [] | 16 + sketch | [] | 5 + soundtracker | [] | 7 + sp | [] | 3 + tar | [] [] [] [] [] | 24 + texinfo | [] [] [] [] | 13 + textutils | [] [] [] [] [] | 15 + tin | | 1 + util-linux | [] [] | 14 + vorbis-tools | [] | 7 + wastesedge | | 0 + wdiff | [] [] [] [] | 17 + wget | [] [] [] [] [] [] [] | 25 + xchat | [] [] [] | 11 + xpad | | 1 + +-------------------------------------------+ + 50 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW + 97 domains 32 19 16 0 56 0 48 10 1 1 12 23 913 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If May 2003 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +Using `gettext' in new packages +=============================== + + If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/src/bin/bash/AUTHORS b/src/bin/bash/AUTHORS index 656a07de92..a7fa8f2d6f 100644 --- a/src/bin/bash/AUTHORS +++ b/src/bin/bash/AUTHORS @@ -1,6 +1,8 @@ # # 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. # @@ -100,6 +102,7 @@ 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 @@ -122,6 +125,7 @@ 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 @@ -451,3 +455,7 @@ 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 diff --git a/src/bin/bash/CHANGES b/src/bin/bash/CHANGES index 1a751280be..3d71f176ba 100644 --- a/src/bin/bash/CHANGES +++ b/src/bin/bash/CHANGES @@ -1,3 +1,2246 @@ +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 initialzation. + +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 inheritence of the DEBUG, RETURN, and ERR traps is now dependent only + on the settings of the `functrace' and `errtrace' shell options, rather + than whether or not the shell is in debugging mode. + +aa. Fixed a problem with $HOME being converted to ~ in the expansion of + members of the DIRSTACK array. + +bb. Fixed a problem with quoted arguments to arithmetic expansions in certain + constructs. + +cc. The command word completion code now no longer returns matching directories + while searching $PATH. + +dd. Fixed a bug with zero-padding and precision handling in snprintf() + replacement. + +ee. Fixed a bug that caused the command substitution code not to take embedded + shell comments into account. + +ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an + arithmetic substitution. + +gg. Fixed a bug in the prompt expansion code that inappropriately added a + \001 before a \002 under certain circumstances. + +hh. Fixed a bug that caused `unset LANG' to not properly reset the locale + (previous versions would set the locale back to what it was when bash + was started rather than the system's "native" locale). + +ii. Fixed a bug that could cause file descriptors > 10 to not be closed even + when closed explicitly by a script. + +jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting + inside double-quoted command substitutions. + +kk. Fixed a bug that could cause core dumps when `return' was executed as the + last element of a pipeline inside a shell function. + +ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in + the jobs list. + +2. Changes to Readline + +a. Fixed a problem that caused segmentation faults when using readline in + callback mode and typing consecutive DEL characters on an empty line. + +b. Fixed several redisplay problems with multibyte characters, all having to + do with the different code paths and variable meanings between single-byte + and multibyte character redisplay. + +c. Fixed a problem with key sequence translation when presented with the + sequence \M-\C-x. + +d. Fixed a problem that prevented the `a' command in vi mode from being + undone and redone properly. + +e. Fixed a problem that prevented empty inserts in vi mode from being undone + properly. + +f. Fixed a problem that caused readline to initialize with an incorrect idea + of whether or not the terminal can autowrap. + +g. Fixed output of key bindings (like bash `bind -p') to honor the setting of + convert-meta and use \e where appropriate. + +h. Changed the default filename completion function to call the filename + dequoting function if the directory completion hook isn't set. This means + that any directory completion hooks need to dequote the directory name, + since application-specific hooks need to know how the word was quoted, + even if no other changes are made. + +i. Fixed a bug with creating the prompt for a non-interactive search string + when there are non-printing characters in the primary prompt. + +j. Fixed a bug that caused prompts with invisible characters to be redrawn + multiple times in a multibyte locale. + +k. Fixed a bug that could cause the key sequence scanning code to return the + wrong function. + +l. Fixed a problem with the callback interface that caused it to fail when + using multi-character keyboard macros. + +m. Fixed a bug that could cause a core dump when an edited history entry was + re-executed under certain conditions. + +n. Fixed a bug that caused readline to reference freed memory when attmpting + to display a portion of the prompt. + +3. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +4. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-release, +and the previous version, bash-3.1-rc2. + +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 + maniuplate the limit on file locks. + +c. Fixed a problem with using += to append to index 0 of an array variable + when not using subscript syntax. + +d. A few changes to configure.in to remove calls to obsolete or outdated + macros. + +e. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is set in the temporary environment to a command. + +f. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is modified using `printf -v'. + +g. The export environment is now remade on cygwin when HOME is changed, so + DLLs bash is linked against pick up the new value. This fixes problems + with tilde expansion when linking against and already-installed readline. + +h. Small fix to the logic for performing tilde expansion in posix mode, so + expansion on the right-hand side of an assignment statement takes place. + +i. Fixed a bug that prevented redirections associated with a shell function + from being executed when in a subshell. + +j. Fixed `source' and `.' builtins to not require an executable file when + searching $PATH for a file to source. + +k. Fixed a bug that caused incorrect word splitting in a function when IFS + was declared local, then unset. + +l. Fixed a problem with the `kill' builtin that prevented sending signals + to a process group under certain circumstances when providing a pid < 0. + +m. When in POSIX mode, `pwd' now checks that the value it prints is the same + directory as `.', even when displaying $PWD. + +n. Fixed a problem with the `read' builtin when reading a script from standard + input and reading data from the same file. + +o. Fixed a problem with the `type' and `command' builtins that caused absolute + pathnames to be displayed incorrectly. + +p. Some changes to the `bg' builtin for POSIX conformance. + +q. The `fc' builtin now removes the `fc' command that caused it to invoke an + editor on specified history entries from the history entirely, rather than + simply ignoring it. + +r. When in POSIX mode, the `v' command in vi editing mode simply invokes vi + on the current command, rather than checking $FCEDIT and $EDITOR. + +s. Fixed a small memory leak in the pathname canonicalization code. + +t. Fixed a bug that caused the expanded value of a $'...' string to be + incorrectly re-quoted if it occurred within a double-quoted ${...} + parameter expansion. + +u. Restored default emacs-mode key binding of M-TAB to dynamic-complete-history. + +v. Fixed a bug that caused core dumps when interrupting loops running builtins + on some systems. + +w. Make sure that some of the functions bash provides replacements for are + not cpp defines. + +x. The code that scans embedded commands for the parser (`...` and $(...)) is + now more aware of embedded comments and their effect on quoted strings. + +y. Changed the `-n' option to the `history' builtin to not reset the number of + history lines read in the current session after reading the new lines from + the history file if the history is being appended when it is written to + the file, since the appending takes care of the problem that the adjustment + was intended to solve. + +z. Improved the error message displayed when a shell script fails to execute + because the environment and size of command line arguments are too large. + +aa. A small fix to make sure that $HISTCMD is evaluated whenever the shell is + saving commands to the history list, not just when HISTSIZE is defined. + +2. Changes to Readline + +a. The `change-case' command now correctly changes the case of multibyte + characters. + +b. Changes to the shared library construction scripts to deal with Windows + DLL naming conventions for Cygwin. + +c. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed + SIGWINCH. + +d. Fixed the non-incremental search code in vi mode to dispose of any current + undo list when copying a line from the history into the current editing + buffer. + +e. The variable assignment code now ignores whitespace at the end of lines + when assigning to boolean variables. + +f. The `C-w' binding in incremental search now understands multibyte + characters. + +3. New Features in Bash + +a. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +4. New Features in Readline + +a. If the rl_completion_query_items is set to a value < 0, readline never + asks the user whether or not to view the possible completions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-alpha1, +and the previous version, bash-3.0-release. + +1. Changes to Bash + +a. Fixed a bug that caused bash to crash if referencing an unset local array. + +b. Fixed a problem that caused tilde expansion to not be performed before + attempting globbing word completion. + +c. Fixed an incompatibility so that a first argument to trap that's a valid + signal number will be trated as a signal rather than a command to execute. + +d. Fixed ${#word} expansion to correctly compute the length of a string + containing multibyte characters. + +e. Fixed a bug that caused bash to not pass the correct flags for signal + disposition to child processes. + +f. Fixed a bug that caused `fc -l' to list one too many history entries. + +g. Some fixes to `fc' for POSIX conformance. + +h. Some fixes to job status display for POSIX conformance. + +i. Fixed a bug that caused `command -v' to display output if a command was not + found -- it should be silent. + +j. In POSIX mode, `type' and `command -[vV]' do not report non-executable + files, even if the shell will attempt to execute them. + +k. Fixed a bug that caused the `==' operator to the [[ command to not attempt + extended pattern matching. + +l. Fixed the brace expansion code to handle characters whose value exceeds 128. + +m. Fixed `printf' to handle strings with a leading `\0' whose length is + non-zero. + +n. Fixed a couple of problems with brace expansion where `${' was handled + incorrectly. + +o. Fixed off-by-one error when calculating the upper bound of `offset' when + processing the ${array[@]:offset:length} expansion. + +p. System-specific configuration changes for: FreeBSD 5.x, Interix, MacOS X + 10.4, Linux 2.4+ kernels, Linux 3.x kernels, Dragonfly BSD, QNX 6.x, + Cygwin + +q. Fixed a bug that caused the shell to ignore the status of the rightmost + command in a pipeline when the `pipefail' option was enabled. + +r. Fixed a completion bug that caused core dumps when expanding a directory + name. + +s. Fixed a bug that prevented `hash -d' from removing commands from the hash + table. + +t. Fixed word splitting to avoid really bad quadratic performance when + expanding long lists. + +u. Fixed a bug that caused negative offsets in substring expansion to use the + wrong values. + +v. Fixed a bug in printf that caused it to not return failure on write errors. + +w. Fixed a bug that caused commands in subshells to not be properly timed. + +x. The shell parser no longer attempts to parse a compound assignment specially + unless in a position where an assignment statement is acceptable or parsing + arguments to a builtin that accepts assignment statements. + +y. Fixed a problem that caused a `case' statement to be added to the history + incorrectly as a single command if the `case word' was on one line and the + `in' on another. + +z. Fixed a problem that caused internal shell quoting characters to be + incorrectly quoted with backslashes under some circumstances. + +aa. The shell now performs correct word splitting when IFS contains multibyte + characters. + +bb. The mail checking code now resets the cached file information if the size + drops to 0, even if the times don't change. + +cc. A completed command name that is found in $PATH as well as the name of a + directory in the current directory no longer has a slash appended in certain + circumstances: a single instance found in $PATH when `.' is not in $PATH, + and multiple instances found in $PATH, even when `.' is in $PATH. + +dd. Incorporated tilde expansion into the word expansion code rather than as a + separately-called function, fixing some cases where it was performed + inappropriately (e.g., after the second `=' in an assignment statement or + in a double-quoted parameter expansion). + +ee. Fixed several bugs encountered when parsing compound assignment statements, + so that compound assignments appearing as arguments to builtins are no + longer double-expanded. + +ff. Fixed a bug in the command execution code that caused asynchronous commands + containing command substitutions to not put the terminal in the wrong + process group. + +gg. Bash now handles the case where the WCONTINUED flag causes waitpid() to + return -1/EINVAL at runtime as well as configuration time. + +hh. Fixed parser to generate an error when the pipeline `argument' to `!' or + `time' is NULL. + +ii. The shell now takes a little more care when manipulating file descriptors + greater than 9 with the `exec' builtin. + +jj. Fixed a bug that caused variable assignments preceding the `command' builtin + preceding a special builtin to be preserved after the command completed in + POSIX mode. + +kk. Fixed a bug that allowed variables beginning with a digit to be created. + +ll. Fixed a bug that caused a \ to be removed when parsing a $'...' + construct. + +mm. A shell whose name begins with `-' will now be a restricted shell if the + remainder of the name indicates it should be restricted. + +nn. Fixed a bug that could cause a core dump if FUNCNAME were changed or unset + during a function's execution. + +oo. Fixed a bug that caused executing a `return' in a function to not execute + a RETURN trap. The RETURN trap is inherited by shell functions only if + function tracing is globally enabled or has been enabled for that function. + +pp. Fixed cases where var[@] was not handled exactly like var, when var is a + scalar variable. + +qq. Fixed a bug that caused the first character after a SIGINT to be discarded + under certain circumstances. + +rr. Fixed exit status code so that a suspended job returns 128+signal as its + exit status (preventing commands after it in `&&' lists from being + executed). + +ss. Fixed a bug that caused the shell parser state to be changed by executing + a shell function as a result of word completion. + +tt. Fixed a long-standing bug that caused '\177' characters in variable + values to be discarded when expanded in double-quoted strings. + +uu. Fixed a bug that caused $RANDOM to be re-seeded multiple times in a + subshell environment. + +vv. Extensive changes to the job management code to avoid the pid-reuse and + pid-aliasing problems caused by retaining the exit status of too many jobs, + but still retain as many background job statuses as POSIX requires. + +ww. Fixed a parser bug in processing \ that caused things like + + ((echo 5) \ + (echo 6)) + + to not work correctly. + +xx. `pwd -P' now sets $PWD to a directory name containing no symbolic links + when in posix mode, as POSIX requires. + +yy. In posix mode, bash no longer sets $PWD to a name containing no symbolic + links if a directory is chosen from $CDPATH. + +zz. The word splitting code now treats an IFS character that is not space, + tab, or newline and any adjacent IFS white space as a single delimiter, as + SUSv3/XPG6 require. + +aaa. The `read' builtin now checks whether or not the number of fields read is + exactly the same as the number of variables instead of just assigning the + rest of the line (minus any trailing IFS white space) to the last + variable. This is what POSIX/SUS/XPG all require. + +bbb. Fixed a bug that caused `read' to always check whether or not fd 0 was a + pipe, even when reading from another file descriptor. + +ccc. Fixed a bug that caused short-circuiting of execution even if the return + value was being inverted. + +ddd. Fixed a bug that caused a core dump while decoding \W escapes in PS1 if + PWD was unset. + +eee. Fixed a bug in `read' that counted internal quoting characters for the + purposes of `read -n'. + +fff. Fixed a bug so that a function definition in a pipeline causes a child + process to be forked at the right time. + +ggg. Bash will not attempt to link against a readline library that doesn't + have rl_gnu_readline_p == 1. + +hhh. Fixed a bug that caused `read' to consume one too many characters when + reading a fixed number of characters and the Nth character is a backslash. + +iii. Fixed a bug that caused `unset' on variables in the temporary environment + to leave them set when `unset' completed. + +jjj. Fixed a bug that caused bash to close fd 2 if an `exec' failed and the + shell didn't exit. + +kkk. The completion code is more careful to not turn `/' or `///' into `//', + for those systems on which `//' has special meaning. + +lll. Fixed a bug that caused command substitution in asynchronous commands to + close the wrong file descriptors. + +mmm. The shell no longer prints status messages about terminated background + processes unless job control is active. + +nnn. Fixed a bug that prevented multiple consecutive invocations of `history -s' + from adding all the commands to the history list. + +ooo. Added a couple of changes to make arithmetic expansion more consistent in + all its contexts (still not perfect). + +ppp. Fixed a bug that caused the parser to occasionally not find the right + terminating "`" in an old-style command substitution. + +qqq. Fixed a bug that caused core dumps when the shell was reading its non- + interactive input from fd 0 and fd 0 was duplicated and restored using a + combination of `exec' (to save) and redirection (to restore). + +rrr. Fixed a problem that caused loops in sourced scripts to not be cleaned + up properly when a `return' is executed. + +sss. Change internal command substitution completion function to append a slash + to directory names in the command. + +2. Changes to Readline + +a. Fixed a bug that caused multiliine prompts to be wrapped and displayed + incorrectly. + +b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current + line correctly. + +c. Fixed a problem in computing the number of invisible characters on the first + line of a prompt whose length exceeds the screen width. + +d. Fixed vi-mode searching so that failure preserves the current line rather + than the last line in the history list. + +e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +g. Fixed multiple bugs in the redisplay of multibyte characters: displaying + prompts longer than the screen width containing multibyte characters, + +h. Fix the calculation of the number of physical characters in the prompt + string when it contains multibyte characters. + +i. A non-zero value for the `rl_complete_suppress_append' variable now causes + no `/' to be appended to a directory name. + +j. Fixed forward-word and backward-word to work when words contained + multibyte characters. + +k. Fixed a bug in finding the delimiter of a `?' substring when performing + history expansion in a locale that supports multibyte characters. + +l. Fixed a memory leak caused by not freeing the timestamp in a history entry. + +m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting + of the `convert-meta' variable. + +n. Fixed saving and restoring primary prompt when prompting for incremental + and non-incremental searches; search prompts now display multibyte + characters correctly. + +o. Fixed a bug that caused keys originally bound to self-insert but shadowed + by a multi-character key sequence to not be inserted. + +p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't + dereferenced if NULL (matching the documentation). + +q. Extensive changes to readline to add enough state so that commands + requiring additional characters (searches, multi-key sequences, numeric + arguments, commands requiring an additional specifier character like + vi-mode change-char, etc.) work without synchronously waiting for + additional input. + +r. Lots of changes so readline builds and runs on MinGW. + +s. Readline no longer tries to modify the terminal settings when running in + callback mode. + +t. The Readline display code no longer sets the location of the last invisible + character in the prompt if the \[\] sequence is empty. + +3. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +4. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-release, +and the previous version, bash-3.0-rc1. + +1. Changes to Bash + +a. Fixed a boundary overrun that could cause segmentation faults when the + completion code hands an incomplete construct to the word expansion + functions. + +b. Changed posix mode behavior so that an error in a variable assignment + preceding a special builtin causes a non-interactive shell to exit. + +c. Change the directory expansion portion of the completion code to not + expand embedded command substitutions if the directory name appears in + the file system. + +d. Fixed a problem that caused `bash -r' to turn on restrictions before + reading the startup files. + +e. Fixed a problem with the default operation of the `umask' builtin. + +2. Changes to Readline + +a. Fixed a problem with readline saving the contents of the current line + before beginning a non-interactive search. + +b. Fixed a problem with EOF detection when using rl_event_hook. + +c. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-rc1, +and the previous version, bash-3.0-beta1. + +1. Changes to Bash + +a. Fixed a bug that caused incorrect behavior when referecing element 0 of + an array using $array, element 0 was unset, and `set -u' was enabled. + +b. System-specific changes for: SCO Unix 3.2, Tandem. + +c. Fixed a bug that caused inappropriate word splitting when a variable was + expanded within a double-quoted string that also included $@. + +d. Fixed a bug that caused `pwd' to not display anything in physical mode + when the file system had changed underneath the shell. + +e. Fixed a bug in the pre- and post- increment and decrement parsing in the + expression evaluator that caused errors when the operands and corresponding + operators were separated by whitespace. + +f. Fixed a bug that caused `history -p' to add an entry to the history list, + counter to the documentation. (Keeps the history expansions invoked by + emacs-mode command line editing from doing that as well.) + +g. Fixed a bug that could cause a core dump if `cd' is asked to print out a + pathname longer than PATH_MAX characters. + +h. Fixed a bug that caused jobs to be put into the wrong process group under + some circumstances after enabling job control with `set -m'. + +i. `unalias' now returns failure if no alias name arguments are supplied. + +j. Documented the characters not allowed to appear in an alias name. + +k. $* is no longer expanded as if in double quotes when it appears in the + body of a here document, as the SUS seems to require. + +l. The `bashbug' script now uses a directory in $TMPDIR for exclusive + access rather than trying to guess how the underlying OS provides for + secure temporary file creation. + +m. Fixed a few problems with `cd' and `pwd' when asked to operate on pathnames + longer than PATH_MAX characters. + +n. Fixed a memory leak caused when creating multiple local array variables + with identical names. + +o. Fixed a problem with calls to getcwd() so that bash now operates better + when the full pathname to the current directory is longer than PATH_MAX + bytes. + +p. The `trap' builtin now reports an error if a single non-signal argument + is specified. + +q. Fixed a bug that caused `umask' to not work correctly when presented + with a mask of all 0s. + +r. When `getopts' reaches the end of options, OPTARG is unset, as POSIX + appears to specify. + +s. Interactive mode now depends on whether or not stdin and stderr are + connected to a tty; formerly it was stdin and stdout. POSIX requires + this. + +t. Fixed vi-mode completion to work more as POSIX specifies (e.g., doing the + right kind of filename generation). + +2. Changes to Readline + +a. Fixed a problem that could cause readline to refer to freed memory when + moving between history lines while doing searches. + +b. Improvements to the code that expands and displays prompt strings + containing multibyte characters. + +c. Fixed a problem with vi-mode not correctly remembering the numeric argument + to the last `c'hange command for later use with `.'. + +d. Fixed a bug in vi-mode that caused multi-digit count arguments to work + incorrectly. + +e. Fixed a problem in vi-mode that caused the last text modification command + to not be remembered across different command lines. + +f. Fixed problems with changing characters and changing case at the end of + the line. + +3. New Features in Bash + +a. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +b. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +4. New Features in Readline + +a. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-beta1, +and the previous version, bash-3.0-alpha. + +1. Changes to Bash + +a. Fixes to build correctly when arrays are not compiled into the shell. + +b. Fixed command substitution to run any exit trap defined in the command + substitution before returning; the exit trap is not inherited from the + calling shell. + +c. Fixes to process group synchronization code so that every child process + attempts to set the terminal's process group; fixes some synchronization + problems on Linux kernels that schedule the child to always run before + the parent. + +d. Fixed processing of octal and hex constants in printf builtin for POSIX.2 + compliance. + +e. Fixed a couple of core dumps in the pattern removal code. + +f. Fixes to the array subrange extraction code to deal better with sparse + arrays. + +g. Parser errors and other errors that result in the shell exiting now cause + the exit trap to be run. + +h. Change the command substitution completion functions to not append any + closing quote, because it would be inserted a closing "`" or ")". + +i. Fix history initialization so assignments to $histchars made in startup + files are honored. + +j. If an exit trap does not contain a call to `exit', the shell now uses + the exit status of the last command executed before the trap as the exit + status of the shell. + +k. The parser now prompts with $PS2 if it reads a newline while parsing a + compound array assignment statement. + +l. When performing a compound array assignment, the parser doesn't treat + words of the form [index]=value as assignments if they're the result of + expansions. + +m. Fixed a bug that caused `return' executed in a trap command to make the + shell think it was still running the trap. + +n. Fixed the value of errno set by the pathname canonicalization functions. + +o. Changed the grammar so that `time' alone on a line times a null command + rather than being a syntax error. + +p. The pattern substitution code no longer performs quote removal on the + pattern before trying to match it, as the pattern removal functions do. + +q. Fixed a bug that could cause core dumps when checking whether a quoted + command name was being completed. + +r. Fixes to the pattern removal and pattern replacement expansions to deal + with multibyte characters better (and faster). + +s. Fix to the substring expansion (${param:off[:len]}) to deal with (possibly + multibyte) characters instead of raw bytes. + +t. Fixed a bug that caused some key bindings set in an inputrc to be ignored + at shell startup. + +u. Fixed a bug that caused unsetting a local variable within a function to + not work correctly. + +v. Fixed a bug that caused invalid variables to be created when using + `read -a'. + +w. Fixed a bug that caused "$@" to expand incorrectly when used as the right + hand side of a parameter expansion such as ${word:="$@"} if the first + character of $IFS was not a space. + +x. Fixed a slight cosmetic problem when printing commands containing a + `>&word' redirection. + +y. Fixed a problem that could cause here documents to not be created correctly + if the system temporary directory did not allow writing. + +2. Changes to Readline + +a. Change to history expansion functions to treat `^' as equivalent to word + one, as the documention states. + +b. Some changes to the display code to improve display and redisplay of + multibyte characters. + +c. Changes to speed up the multibyte character redisplay code. + +d. Fixed a bug in the vi-mode `E' command that caused it to skip over the + last character of a word if invoked while point was on the word's + next-to-last character. + +e. Fixed a bug that could cause incorrect filename quoting when + case-insensitive completion was enabled and the word being completed + contained backslashes quoting word break characters. + +f. Fixed a bug in redisplay triggered when the prompt string contains + invisible characters. + +g. Fixed some display (and other) bugs encountered in multibyte locales + when a non-ascii character was the last character on a line. + +h. Fixed some display bugs caused by multibyte characters in prompt strings. + +i. Fixed a problem with history expansion caused by non-whitespace characters + used as history word delimiters. + +3. New Features in Bash + +a. printf builtin understands two new escape sequences: \" and \?. + +b. `echo -e' understands two new escape sequences: \" and \?. + +c. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +d. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +e. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +4. New Features in Readline + +a. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +b. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +c. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +d. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +e. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-alpha, +and the previous version, bash-2.05b-release. + +1. Changes to Bash + +a. Fixes so that the shell will compile without some of the default options + defined. + +b. Fixed an error message that did not pass enough arguments to printf. + +c. Fixed a bug that caused input redirection to a builtin inside a script + being read from standard input to result in the rest of the already- + read and buffered script to be discarded. + +d. Fixed a bug that caused subshell initialization to close the file + descriptor from which the shell was reading a script under certain + circumstances. + +e. Fixed a bug that caused the shell to not advance a string pointer over + a null wide character when doing string operations. + +f. Fixed the internal logout code so that shells that time out waiting for + input (using $TMOUT) run ~/.bash_logout. + +g. Portability and configuration changes for: cygwin, HP/UX, GNU/FreeBSD. + +h. The parser no longer adds implicit double quotes to ((...)) arithmetic + commands. + +i. The ((...)) arithmetic command evaluation code was fixed to not dump core + when the expanded string is null. + +j. The ((...)) arithmetic command evaluation code was fixed to not perform + variable assignments while expanding the expression. + +k. Fixed a bug that caused word splitting to be performed incorrectly when + IFS is set, but null. + +l. Fixed a bug in brace expansion that caused a quoted `$' preceding an + open brace to inhibit brace expansion. + +m. Fixed a bug that caused a leading `-' in the shell's name to cause it to + not be recognized as a restricted shell. + +n. Fixed a bug in the arithmetic evaluation code that could cause longjmps + to an invalid location and result in a core dump. + +o. Fixed a bug in the calculation of how many history lines are new in a + single shell session when reading new history lines from a file with + `history -n'. + +p. Fixed a bug in pathname canonicalization that caused the shell to dump + core when presented with a pathname longer than PATH_MAX. + +q. Fixed the parser so that it doesn't try to compare a char variable to + EOF, which fails when chars are unsigned. + +r. Fixed a bug in the simple command execution code that caused occasional + core dumps. + +s. The shell does a better job of saving any partial parsing state during + operations which cause a command to be executed while a line is being + entered and parsed. + +t. The completion code now splits words more like the expansion code when + $IFS is used to split. + +u. The locale code does a better job of recomputing the various locale + variable values when LC_ALL is unset. + +v. The programmable completion code does a better job of dequoting expanded + word lists before comparing them against the word to be matched. + +w. The shell no longer seg faults if the expanded value of $PS4 is null + and `set -x' is enabled. + +x. Fixed a bug that caused core dumps when a here string expanded to NULL. + +y. The mail checking code now makes sure the mailbox is bigger before + reporting the existence of new mail. + +z. The parser does not try to expand $'...' and $"..." when the appear + within double quotes unless the `extquote' option has been enabled with + `shopt'. For backwards compatibility, it is enabled by default. + +aa. Fixed a bug that caused `for x; do ...' and `select x; do ... to use + $@ instead of "$@" for the implicit list of arguments. + +bb. Fixed a bug that caused a subshell of a restricted shell (e.g., one + spawned to execute a pipeline) to not exit immediately if attempting + to use a command containing a slash. + +cc. Fixed a problem with empty replacements for a pattern that doesn't match + when performing ${param/word/} expansion. + +dd. Word expansions performed while expanding redirections no longer search + a command's temporary environment to expand variable values. + +ee. Improvements to the alias expansion code when expanding subsequent words + because an aliase's value ends with a space. + +ff. `cd -' now prints the current working directory after a successful chdir + even when the shell is not interactive, as the standard requires. + +gg. The shell does a better job of ensuring a child process dies of SIGINT + before resending SIGINT to itself. + +hh. The arithmetic expansion variable assignment code now does the right + thing when assigning to `special' variables like OPTIND. + +ii. When history expansion verification is enabled, the bash readline helper + functions that do history expansion on the current line don't print + the results. + +jj. Fixed bugs with multiple consecutive alias expansion when one of the + expansions ends with a space. + +kk. Fixed a problem in the programmable completion code that could cause core + dumps when trying to initialize a set of possible completions from a + list of variables. + +ll. The \[ and \] escape characters are now ignored when decoding the prompt + string if the shell is started with editing disabled. + +mm. Fixed a bug that could leave extra characters in a string when doing + quoted null character removal. + +nn. Command substitution and other subshell operations no longer reset the + line number (aids the bash debugger). + +oo. Better line number management when executing simple commands, conditional + commands, for commands, and select commands. + +pp. The globbing code now uses malloc, with its better failure properties, + rather than alloca(). + +qq. Fixed a bug that caused expansions like #{a[2]:=value} to create the + appropriate array element instead of a variable named `a[2]'. + +rr. Fixed a bug in the handling of a `?(...)' pattern immediately following + a `*' when extglob is enabled. + +ss. Fixed a bug that caused a `return' invoked in an exit trap when exit is + invoked in a function to misbehave. + +tt. Fixed a bug that caused CTLESC and CTLNUL characters to not be escaped + by the internal shell string quoting functions. + +uu. Fixed a bug that caused quoted null characters in an expanded word list + to be inappropriately assigned to an array variable when using `read -a'. + +vv. Fixed a bug that caused redirections accompanying a null command to persist + in the current shell. + +ww. Fixed a bug that caused the prompt to be printed when the shell was + expanding a multiline alias. + +xx. Fixed a bug that resulted in core dumps when the completion for a command + changed the compspec. + +yy. Fixed a bug that caused evaluation of programmable completions to print + notifications of completed jobs. + +zz. Bash now disables line editing when $EMACS == `t' and $TERM == `dumb' + (which is what emacs shell windows do). + +aaa. In posix mode, `kill -l' causes signal names to be displayed without + a leading `SIG'. + +bbb. Clear error flag on standard output so it doesn't persist across multiple + builtin commands. + +ccc. In posix mode, `alias' displays alias values without the leading `alias', + so the output cannot be used as subsequent input. + +ddd. In posix mode, the `trap' builtin doesn't check whether or not its + first argument is a signal specification and revert the signal handling + to its original disposition if it is. + +eee. Fixed several bugs in the handling of "$*" and "${array[*]}" by the + pattern substitution and removal expansions. + +fff. Fixed several problems with the handling of ${array[@]}, ${array[*]}, + $@, and $* by the indirect variable expansion code. + +ggg. Fixed a bug that did not allow `time' to be aliased. + +hhh. Improved the mail checking code so it won't check (and possibly cause an + NFS file system mount) until MAILPATH or MAIL is given a value -- there + is no default if DEFAULT_MAIL_DIRECTORY is not defined at compile time. + (It is computed by configure, but can be #undef'd in config-bot.h.) + +iii. If the `chkwinsize' option is enabled, the shell checks for window size + changes if a child process exits due to a signal. + +jjj. Removed the attempts to avoid adding a slash at the end of a completed + executable name if there was a directory with the same name in the + current directory. + +kkk. Fixed PATH lookup code so it treats the permission bits separately for + owner, group, and other, rather than checking them all. + +lll. Fixed the locale code to reset the parser's idea of the character class + , which controls how it splits tokens, when the locale changes. + +mmm. The shell now binds its special readline functions and key bindings only + if the user's inputrc file has not already bound them. + +nnn. The shell now reports on processes that dump core due to signals when + invoked as `-c command'. + +2. Changes to Readline + +a. Fixes to avoid core dumps because of null pointer references in the + multibyte character code. + +b. Fix to avoid infinite recursion caused by certain key combinations. + +c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. + +d. Readline no longer tries to read ahead more than one line of input, even + when more is available. + +e. Fixed the code that adjusts the point to not mishandle null wide + characters. + +f. Fixed a bug in the history expansion `g' modifier that caused it to skip + every other match. + +g. Fixed a bug that caused the prompt to overwrite previous output when the + output doesn't contain a newline and the locale supports multibyte + characters. This same change fixes the problem of readline redisplay + slowing down dramatically as the line gets longer in multibyte locales. + +h. History traversal with arrow keys in vi insertion mode causes the cursor + to be placed at the end of the new line, like in emacs mode. + +i. The locale initialization code does a better job of using the right + precedence and defaulting when checking the appropriate environment + variables. + +j. Fixed the history word tokenizer to handle <( and >( better when used as + part of bash. + +k. The overwrite mode code received several bug fixes to improve undo. + +l. Many speedups to the multibyte character redisplay code. + +m. The callback character reading interface should not hang waiting to read + keyboard input. + +n. Fixed a bug with redoing vi-mode `s' command. + +o. The code that initializes the terminal tracks changes made to the terminal + special characters with stty(1) (or equivalent), so that these changes + are reflected in the readline bindings. New application-callable function + to make it work: rl_tty_unset_default_bindings(). + +p. Fixed a bug that could cause garbage to be inserted in the buffer when + changing character case in vi mode when using a multibyte locale. + +q. Fixed a bug in the redisplay code that caused problems on systems + supporting multibyte characters when moving between history lines when the + new line has more glyphs but fewer bytes. + +r. Undo and redo now work better after exiting vi insertion mode. + +s. Make sure system calls are restarted after a SIGWINCH is received using + SA_RESTART. + +t. Improvements to the code that displays possible completions when using + multibyte characters. + +u. Fixed a problem when parsing nested if statements in inputrc files. + +v. The completer now takes multibyte characters into account when looking for + quoted substrings on which to perform completion. + +w. The history search functions now perform better bounds checking on the + history list. + +3. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +4. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +------------------------------------------------------------------------------ This document details the changes between this version, bash-2.05b-release, and the previous version, bash-2.05b-beta2. @@ -157,7 +2400,7 @@ e. The `fc' builtin has been fixed, as POSIX requires, to use the closest 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 bettern in compound commands. +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 `=' diff --git a/src/bin/bash/COMPAT b/src/bin/bash/COMPAT index c2778fe074..13512acb23 100644 --- a/src/bin/bash/COMPAT +++ b/src/bin/bash/COMPAT @@ -1,11 +1,12 @@ -This document details the incompatibilites between this version of bash, -bash-2.05b, and the previous widely-available version, bash-1.14 (which -is still the `standard' version for many Linux distributions). These -were discovered by users of bash-2.x, so this list is not comprehensive. -Some of these incompatibilities occur between the current version and -versions 2.0 and above. +This document details the incompatibilities between this version of bash, +bash-4.0, and the previous widely-available versions, bash-1.14 (which is +still the `standard' version for a few Linux distributions) and bash-2.x. +These were discovered by users of bash-2.x and 3.x, so this list is not +comprehensive. Some of these incompatibilities occur between the current +version and versions 2.0 and above. (The differences between bash-1.14 and +bash-2.0 were significant.) -1. Bash now uses a new quoting syntax, $"...", to do locale-specific +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 @@ -183,28 +184,137 @@ versions 2.0 and above. 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 +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. + 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 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. + 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. +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. +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. +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'. + +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 subsitution 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. + +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. + +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. diff --git a/src/bin/bash/COPYING b/src/bin/bash/COPYING index 2b940a412e..94a9ed024d 100644 --- a/src/bin/bash/COPYING +++ b/src/bin/bash/COPYING @@ -1,293 +1,626 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + 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. -The Free Software Foundation has exempted Bash from the requirement of -Paragraph 2c of the General Public License. This is to say, there is -no requirement for Bash to print a notice when it is started -interactively in the usual way. We made this exception because users -and standards expect shells not to print such messages. This -exception applies to any program that serves as a shell and that is -based primarily on Bash as opposed to other GNU software. + Preamble - Preamble + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to + 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 -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + 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 give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. +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. - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. + 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. - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. + 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. - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. + 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. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". + TERMS AND CONDITIONS -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. + 0. Definitions. - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. + "This License" refers to version 3 of the GNU General Public License. -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: + "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. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + 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. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. + 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. -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. + 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. -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. + 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. - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: + 1. Source Code. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, + 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. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 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. - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) + The "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 source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. + 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. -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. + The Corresponding Source for a work in source code form is that +same work. - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + 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. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or + 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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. +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. -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. + 13. Use with the GNU Affero General Public License. -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. + 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. -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. + 14. Revised Versions of this License. - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will + 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. + 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. - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. + 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. - NO WARRANTY + 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. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. + 15. Disclaimer of Warranty. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. + 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. - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs + 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 @@ -295,15 +628,15 @@ free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +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) 19yy + Copyright (C) - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -312,36 +645,30 @@ the "copyright" line and a pointer to where the full notice is found. 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 + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. +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 your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: + 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 +. - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. + 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/src/bin/bash/INSTALL b/src/bin/bash/INSTALL index bd0d41727c..eee64bb35a 100644 --- a/src/bin/bash/INSTALL +++ b/src/bin/bash/INSTALL @@ -191,13 +191,14 @@ the Bash `configure' recognizes. Define if you are using the Andrew File System from Transarc. `--with-bash-malloc' - Use the Bash version of `malloc' in `lib/malloc/malloc.c'. This - is not the same `malloc' that appears in GNU libc, but an older - version 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. + 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 @@ -210,7 +211,7 @@ the Bash `configure' recognizes. `--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 4.3 and later versions. If PREFIX is `yes' or + 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 @@ -274,7 +275,16 @@ does not provide the necessary support. `--enable-brace-expansion' Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ). - See *Note Brace Expansion::, for a complete description. + 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 @@ -283,16 +293,28 @@ does not provide the necessary support. builtins and functions to be timed. `--enable-cond-command' - Include support for the `[[' conditional command (*note + 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-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 + `xxx' has been disabled using `enable -n xxx'. See *note Bash Builtins::, for details of the `builtin' and `enable' builtin commands. @@ -302,7 +324,7 @@ does not provide the necessary support. `--enable-extended-glob' Include support for the extended pattern matching features - described above under *Note Pattern Matching::. + described above under *note Pattern Matching::. `--enable-help-builtin' Include the `help' builtin, which displays help on shell builtins @@ -316,6 +338,10 @@ does not provide the necessary support. 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 @@ -325,30 +351,43 @@ does not provide the necessary support. This enables process substitution (*note Process Substitution::) if the operating system provides the necessary support. -`--enable-prompt-string-decoding' - Turn on the interpretation of a number of backslash-escaped - characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt - strings. See *Note Printing a Prompt::, for a complete list of - prompt string escape sequences. - `--enable-progcomp' Enable the programmable completion facilities (*note Programmable Completion::). If Readline is not enabled, this option has no effect. +`--enable-prompt-string-decoding' + Turn on the interpretation of a number of backslash-escaped + characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt + strings. See *note Printing a Prompt::, for a complete list of + prompt string escape sequences. + `--enable-readline' Include support for command-line editing and history with the Bash version of the Readline library (*note Command Line Editing::). `--enable-restricted' Include support for a "restricted shell". If this is enabled, - Bash, when called as `rbash', enters a restricted mode. See *Note + Bash, when called as `rbash', enters a restricted mode. See *note The Restricted Shell::, for a description of restricted mode. `--enable-select' Include the `select' builtin, which allows the generation of simple menus (*note Conditional Constructs::). +`--enable-separate-helpfiles' + Use external files for the documentation displayed by the `help' + builtin instead of storing the text internally. + +`--enable-single-help-strings' + Store the text displayed by the `help' builtin as a single string + for each help topic. This aids in translating the text to + different languages. You may need to disable this if your + compiler cannot handle very long string literals. + +`--enable-strict-posix-default' + Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). + `--enable-usg-echo-default' A synonym for `--enable-xpg-echo-default'. @@ -357,7 +396,7 @@ does not provide the necessary support. 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 2. *Note Bash Builtins::, for a + 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 diff --git a/src/bin/bash/Jamfile b/src/bin/bash/Jamfile index c7d38478f8..6a28edd1bd 100644 --- a/src/bin/bash/Jamfile +++ b/src/bin/bash/Jamfile @@ -7,7 +7,7 @@ local cpuName = [ Match "([^-]*)-.*" : $(HAIKU_GCC_MACHINE) ] ; local vendorName = [ Match "[^-]*-([^-]*)" : $(HAIKU_GCC_MACHINE) ] ; local osName = [ Match "[^-]*-[^-]*-([^-]*)" : $(HAIKU_GCC_MACHINE) ] ; -SubDirCcFlags -DHAVE_CONFIG_H -DPROGRAM='\"bash\"' -DSHELL ; +SubDirCcFlags -DHAVE_CONFIG_H -DPROGRAM='\"bash\"' -DSHELL -DLOCALEDIR='\"/boot/common/share/locale\"' -DPACKAGE='\"bash\"' ; SubDirCcFlags -DCONF_MACHTYPE='\"$(HAIKU_GCC_MACHINE)\"' ; SubDirCcFlags -DCONF_HOSTTYPE='\"$(cpuName)\"' ; SubDirCcFlags -DCONF_VENDOR='\"$(vendorName)\"' ; @@ -26,9 +26,9 @@ BuildPlatformMain mksyntax : mksyntax.c ; BuildPlatformMain mksignames : - mksignames.c ; + mksignames.c signames.c ; -SEARCH on [ FGristFiles mksignames.c ] = [ FDirName $(SUBDIR) support ] ; +SEARCH on [ FGristFiles mksignames.c signames.c ] = [ FDirName $(SUBDIR) support ] ; rule MkSyntaxExt { @@ -75,6 +75,7 @@ if $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { } BinCommand bash : + assoc.c parse.y shell.c eval.c general.c make_cmd.c print_cmd.c dispose_cmd.c execute_cmd.c variables.c version.c expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c diff --git a/src/bin/bash/MANIFEST b/src/bin/bash/MANIFEST index bfcac430b5..735270cb6d 100644 --- a/src/bin/bash/MANIFEST +++ b/src/bin/bash/MANIFEST @@ -10,7 +10,6 @@ builtins d cross-build d doc d examples d -examples/bashdb d examples/obashdb d examples/complete d examples/functions d @@ -26,18 +25,19 @@ include d lib d lib/glob d lib/glob/doc d +lib/intl d lib/malloc d lib/readline d lib/readline/doc d lib/readline/examples d lib/sh d lib/termcap d -lib/termcap/grot d lib/tilde d -lib/tilde/doc d +po d support d tests d tests/misc d +ABOUT-NLS f CHANGES f COMPAT f COPYING f @@ -51,7 +51,7 @@ RBASH f AUTHORS f Y2K f configure.in f -configure f +configure f 755 Makefile.in f config-top.h f config-bot.h f @@ -59,6 +59,7 @@ 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 @@ -109,6 +110,7 @@ patchlevel.h f variables.h f array.h f arrayfunc.h f +assoc.h f jobs.h f findcmd.h f hashlib.h f @@ -140,16 +142,17 @@ execute_cmd.h f redir.h f bashtypes.h f mailcheck.h f -pathnames.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 @@ -174,6 +177,7 @@ 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 @@ -200,13 +204,12 @@ builtins/bashgetopt.c f builtins/common.h f builtins/bashgetopt.h f cross-build/cygwin32.cache f -cross-build/win32sig.h f cross-build/x86-beos.cache f -cross-build/beos-sig.h f cross-build/opennt.cache f include/ansi_stdlib.h f include/chartypes.h f include/filecntl.h f +include/gettext.h f include/maxpath.h f include/memalloc.h f include/ocache.h f @@ -234,6 +237,47 @@ 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 @@ -313,14 +357,15 @@ lib/readline/rlstdc.h f lib/readline/rlprivate.h f lib/readline/xmalloc.h f lib/readline/doc/Makefile f -lib/readline/doc/manvers.texinfo f -lib/readline/doc/rlman.texinfo f -lib/readline/doc/rltech.texinfo f -lib/readline/doc/rluser.texinfo f -lib/readline/doc/rluserman.texinfo f -lib/readline/doc/hist.texinfo f -lib/readline/doc/hstech.texinfo f -lib/readline/doc/hsuser.texinfo 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 @@ -331,17 +376,23 @@ 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/eaccess.c f +lib/sh/fdprintf.c f lib/sh/fmtullong.c f lib/sh/fmtulong.c f lib/sh/fmtumax.c f +lib/sh/fpurge.c f lib/sh/getcwd.c f lib/sh/getenv.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/mbscmp.c f lib/sh/memset.c f lib/sh/mktime.c f lib/sh/netconn.c f @@ -351,6 +402,7 @@ lib/sh/pathcanon.c f lib/sh/pathphys.c f lib/sh/rename.c f lib/sh/setlinebuf.c f +lib/sh/shmatch.c f lib/sh/shquote.c f lib/sh/shtty.c f lib/sh/snprintf.c f @@ -361,7 +413,9 @@ lib/sh/strftime.c f lib/sh/strindex.c f lib/sh/stringlist.c f lib/sh/stringvec.c f +lib/sh/strnlen.c f lib/sh/strpbrk.c f +lib/sh/strstr.c f lib/sh/strtod.c f lib/sh/strtoimax.c f lib/sh/strtol.c f @@ -373,9 +427,15 @@ 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/vprint.c f +lib/sh/wcsdup.c f +lib/sh/winsize.c f lib/sh/xstrchr.c f lib/sh/zcatfd.c f +lib/sh/zgetline.c f +lib/sh/zmapfd.c f lib/sh/zread.c f lib/sh/zwrite.c f lib/termcap/Makefile.in f @@ -384,28 +444,75 @@ lib/termcap/termcap.c f lib/termcap/termcap.h f lib/termcap/tparam.c f lib/termcap/version.c f -lib/termcap/grot/termcap.info f -lib/termcap/grot/termcap.info-1 f -lib/termcap/grot/termcap.info-2 f -lib/termcap/grot/termcap.info-3 f -lib/termcap/grot/termcap.info-4 f -lib/termcap/grot/NEWS f -lib/termcap/grot/INSTALL f -lib/termcap/grot/ChangeLog f -lib/termcap/grot/texinfo.tex f -lib/termcap/grot/termcap.texi f -lib/termcap/grot/Makefile.in f -lib/termcap/grot/configure f -lib/termcap/grot/configure.in f -lib/termcap/grot/COPYING f -lib/termcap/grot/README f lib/tilde/README f lib/tilde/Makefile.in f -lib/tilde/doc/tilde.texi f -lib/tilde/doc/Makefile f lib/tilde/tilde.c f lib/tilde/tilde.h f lib/tilde/shell.c f +po/LINGUAS f +po/Makefile.in.in f +po/Makevars f +po/POTFILES.in f +po/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/de.gmo f +po/de.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/fr.gmo f +po/fr.po f +po/hu.gmo f +po/hu.po f +po/id.gmo f +po/id.po f +po/ja.gmo f +po/ja.po f +po/lt.gmo f +po/lt.po f +po/nl.gmo f +po/nl.po f +po/pl.gmo f +po/pl.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/sv.gmo f +po/sv.po f +po/tr.gmo f +po/tr.po f +po/vi.gmo f +po/vi.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 @@ -414,6 +521,7 @@ CWRU/misc/errlist.c f CWRU/misc/hpux10-dlfcn.h f CWRU/PLATFORMS f CWRU/README f +CWRU/audit-patch f CWRU/changelog f CWRU/sh-redir-hack f CWRU/mh-folder-comp f @@ -427,12 +535,18 @@ doc/README f doc/INTRO f doc/texinfo.tex f doc/bashref.texi f +doc/version.texi f doc/bashref.info f doc/article.ms f doc/htmlpost.sh f 755 +doc/infopost.sh f 755 +doc/fdl.texi f +doc/fdl.txt f support/Makefile.in f support/bashversion.c f +support/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 @@ -441,33 +555,36 @@ support/missing f 755 support/mkclone f 755 support/mkconffiles f 755 support/mkdirs f 755 +support/mkinstalldirs f 755 support/mkversion.sh f 755 support/mksignames.c f +support/signames.c f support/bashbug.sh f support/man2html.c f support/recho.c f support/zecho.c f +support/xcase.c f support/SYMLINKS f support/fixlinks f 755 support/install.sh f 755 -support/texi2dvi f +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/bashdb/PERMISSION f -examples/bashdb/bashdb f -examples/bashdb/bashdb.el f +examples/INDEX.txt f +examples/INDEX.html f examples/obashdb/PERMISSION f examples/obashdb/README f -examples/obashdb/bashdb f -examples/obashdb/bashdb.fns f -examples/obashdb/bashdb.pre f +examples/obashdb/bashdb f +examples/obashdb/bashdb.el f +examples/complete/bash_completion f examples/complete/complete-examples f examples/complete/complete.ianmac f examples/complete/complete2.ianmac f examples/complete/complete.freebsd f examples/complete/complete.gnu-longopt f +examples/complete/bashcc-1.0.1.tar.gz f examples/loadables/README f examples/loadables/template.c f examples/loadables/Makefile.in f @@ -476,6 +593,7 @@ examples/loadables/hello.c f examples/loadables/print.c f examples/loadables/realpath.c f examples/loadables/sleep.c f +examples/loadables/strftime.c f examples/loadables/truefalse.c f examples/loadables/getconf.h f examples/loadables/getconf.c f @@ -498,6 +616,7 @@ examples/loadables/uname.c f examples/loadables/sync.c f examples/loadables/mkdir.c f examples/loadables/ln.c f +examples/loadables/mypid.c f examples/loadables/unlink.c f examples/loadables/perl/Makefile.in f examples/loadables/perl/README f @@ -577,6 +696,8 @@ 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 @@ -601,15 +722,37 @@ examples/misc/aliasconv.sh f examples/misc/aliasconv.bash f examples/misc/cshtobash f tests/README f +tests/COPYRIGHT f +tests/alias.tests f +tests/alias.right f +tests/appendop.tests f +tests/appendop.right f tests/arith-for.tests f tests/arith-for.right f tests/arith.tests f tests/arith.right f +tests/arith1.sub f +tests/arith2.sub f tests/array.tests f tests/array.right f +tests/array1.sub f +tests/array2.sub f +tests/array3.sub f +tests/array4.sub f +tests/array5.sub f +tests/array6.sub f +tests/array7.sub f +tests/array8.sub f +tests/array9.sub f tests/array-at-star f tests/array2.right f -tests/braces-tests 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/braces.tests f tests/braces.right f tests/builtins.tests f tests/builtins.right f @@ -620,11 +763,40 @@ tests/source2.sub f tests/source3.sub f tests/source4.sub f tests/source5.sub f +tests/source6.sub f +tests/case.tests f +tests/case.right f +tests/casemod.tests f +tests/casemod.right f +tests/comsub.tests f +tests/comsub.right 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-eof.right f +tests/comsub-posix.tests f +tests/comsub-posix.right f +tests/comsub-posix1.sub f tests/cond.tests f tests/cond.right f +tests/cond-regexp.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/dollar-at-star f +tests/dollar-at1.sub f +tests/dollar-at2.sub f +tests/dollar-star1.sub f +tests/dollar-star2.sub f +tests/dollar-star3.sub f tests/dollar.right f tests/dstack.tests f tests/dstack.right f @@ -640,12 +812,19 @@ tests/exec3.sub f tests/exec4.sub f tests/exec5.sub f tests/exec6.sub f -tests/exp-tests f +tests/exec7.sub f +tests/exec8.sub f +tests/exp.tests f tests/exp.right f +tests/exp1.sub f +tests/exp2.sub f tests/extglob.tests f tests/extglob.right f +tests/extglob1.sub f tests/extglob2.tests f tests/extglob2.right f +tests/extglob3.tests f +tests/extglob3.right f tests/func.tests f tests/func.right f tests/func1.sub f @@ -665,31 +844,49 @@ tests/glob1.sub f tests/glob.right f tests/heredoc.tests f tests/heredoc.right f +tests/heredoc1.sub f tests/herestr.tests f tests/herestr.right f tests/histexp.tests f tests/histexp.right f tests/history.tests f tests/history.right f -tests/history.list f +tests/history.list f 444 +tests/history1.sub f tests/ifs.tests f tests/ifs.right f +tests/ifs-posix.tests f +tests/ifs-posix.right f tests/input-line.sh f tests/input-line.sub f tests/input.right f +tests/intl.tests f +tests/intl1.sub f +tests/intl.right f +tests/iquote.tests f +tests/iquote.right f tests/invert.tests f tests/invert.right f tests/jobs.tests f tests/jobs1.sub f tests/jobs2.sub f tests/jobs3.sub f +tests/jobs4.sub f tests/jobs.right f +tests/mapfile.data f +tests/mapfile.right f +tests/mapfile.tests f +tests/mapfile1.sub f tests/more-exp.tests f tests/more-exp.right f tests/new-exp.tests f tests/new-exp1.sub f tests/new-exp2.sub f tests/new-exp3.sub f +tests/new-exp4.sub f +tests/new-exp5.sub f +tests/new-exp6.sub f +tests/new-exp7.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f @@ -699,6 +896,10 @@ 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/posix2.tests f tests/posix2.right f tests/posixpat.tests f @@ -715,6 +916,8 @@ 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 @@ -725,20 +928,35 @@ 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/rhs-exp.tests f tests/rhs-exp.right f tests/rsh.tests f tests/rsh.right f tests/run-all f tests/run-minimal f +tests/run-alias f +tests/run-appendop f tests/run-arith-for f tests/run-arith f tests/run-array f tests/run-array2 f +tests/run-assoc f tests/run-braces f tests/run-builtins f +tests/run-case f +tests/run-casemod 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-errors f @@ -746,6 +964,7 @@ tests/run-execscript f tests/run-exp-tests f tests/run-extglob f tests/run-extglob2 f +tests/run-extglob3 f tests/run-func f tests/run-getopts f tests/run-glob-test f @@ -754,15 +973,21 @@ 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-mapfile f tests/run-more-exp f tests/run-new-exp f tests/run-nquote f tests/run-nquote1 f tests/run-nquote2 f tests/run-nquote3 f +tests/run-nquote4 f +tests/run-nquote5 f tests/run-posix2 f tests/run-posixpat f tests/run-precedence f @@ -773,23 +998,31 @@ tests/run-redir f tests/run-rhs-exp f tests/run-rsh f tests/run-set-e f +tests/run-set-x f tests/run-shopt f tests/run-strip f tests/run-test f tests/run-tilde f +tests/run-tilde2 f tests/run-trap f tests/run-type f tests/run-varenv f -tests/set-e-test f +tests/set-e.tests f +tests/set-e1.sub f +tests/set-e2.sub f tests/set-e.right f +tests/set-x.tests f +tests/set-x.right f tests/shopt.tests f tests/shopt.right f tests/strip.tests f tests/strip.right f tests/test.tests f tests/test.right f -tests/tilde-tests f +tests/tilde.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 @@ -797,6 +1030,7 @@ tests/trap2.sub f 755 tests/trap2a.sub f 755 tests/type.tests f tests/type.right f +tests/type1.sub f tests/varenv.right f tests/varenv.sh f tests/varenv1.sub f diff --git a/src/bin/bash/MANIFEST.doc b/src/bin/bash/MANIFEST.doc new file mode 100644 index 0000000000..736ad5b5e7 --- /dev/null +++ b/src/bin/bash/MANIFEST.doc @@ -0,0 +1,24 @@ +# +# Master Manifest file for documentation-only distribution +# +doc d +MANIFEST.doc f +doc/article.ps f +doc/rose94.ps f +doc/bash.ps f +doc/bashbug.ps f +doc/builtins.ps f +doc/rbash.ps f +doc/bashref.ps f +doc/bashref.dvi f +doc/bash.0 f +doc/bashbug.0 f +doc/builtins.0 f +doc/rbash.0 f +doc/article.txt f +doc/bash.html f +doc/bashref.html f +doc/article.pdf f +doc/bash.pdf f +doc/bashref.pdf f +doc/rose94.pdf f diff --git a/src/bin/bash/Makefile.in b/src/bin/bash/Makefile.in index 377ce2a02f..b01ca3f48d 100644 --- a/src/bin/bash/Makefile.in +++ b/src/bin/bash/Makefile.in @@ -1,33 +1,44 @@ -# Makefile for bash-2.05b, version 2.142 +# Makefile for bash-4.0, version 3.4 # -# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# 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@ + # 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@ mandir = @mandir@ manpfx = man @@ -44,6 +55,7 @@ DESTDIR = topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ +top_builddir = @BUILD_DIR@ srcdir = @srcdir@ VPATH = .:@srcdir@ @@ -57,6 +69,7 @@ RM = rm -f AR = @AR@ ARFLAGS = @ARFLAGS@ RANLIB = @RANLIB@ +SIZE = @SIZE@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -67,6 +80,8 @@ INSTALLMODE2 = -m 0555 TESTSCRIPT = @TESTSCRIPT@ +DEBUGGER_START_FILE = @DEBUGGER_START_FILE@ + #If you have purify, and want to use it, uncomment this definition or # run the make as `make PURIFY=purify' # or run configure with the --with-purify argument. @@ -106,19 +121,23 @@ THIS_SH = $(BUILD_DIR)/$(Program) PROFILE_FLAGS= @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ -CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ -LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +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)"' +SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) @@ -130,10 +149,13 @@ CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS) LDFLAGS_FOR_BUILD = $(LDFLAGS) -INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) +INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) -GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ - -Wcast-align -Wstrict-prototypes -Wconversion \ +# 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) @@ -149,8 +171,13 @@ 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 @@ -181,7 +208,14 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/fmtumax.c ${SH_LIBSRC}/netconn.c \ ${SH_LIBSRC}/mktime.c ${SH_LIBSRC}/strftime.c \ ${SH_LIBSRC}/memset.c ${SH_LIBSRC}/xstrchr.c \ - ${SH_LIBSRC}/zcatfd.c + ${SH_LIBSRC}/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}/fdprintf.c \ + ${SH_LIBSRC}/input_avail.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -223,7 +257,7 @@ READLINE_SOURCE = $(RL_LIBSRC)/rldefs.h $(RL_LIBSRC)/rlconf.h \ $(RL_LIBSRC)/terminal.c $(RL_LIBSRC)/nls.c \ $(RL_LIBSRC)/input.c $(RL_LIBSRC)/xmalloc.c \ $(RL_LIBSRC)/shell.c $(RL_LIBSRC)/savestring.c \ - $(RL_LIBSRC)/misc.c $(RL_LIBSRC)/compat.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 @@ -238,7 +272,7 @@ READLINE_OBJ = $(RL_LIBDIR)/readline.o $(RL_LIBDIR)/funmap.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)/compat.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 @@ -294,7 +328,7 @@ TILDE_LIBSRC = $(LIBSRC)/tilde TILDE_LIBDIR = $(dot)/$(LIBSUBDIR)/tilde TILDE_ABSSRC = ${topdir}/$(TILDE_LIBDIR) -TILDE_LIB = -ltilde +TILDE_LIB = @TILDE_LIB@ TILDE_LIBRARY = $(TILDE_LIBDIR)/libtilde.a TILDE_LDFLAGS = -L$(TILDE_LIBDIR) TILDE_DEP = $(TILDE_LIBRARY) @@ -302,6 +336,25 @@ TILDE_DEP = $(TILDE_LIBRARY) TILDE_SOURCE = $(TILDE_LIBSRC)/tilde.c $(TILDE_LIBSRC)/tilde.h TILDE_OBJ = $(TILDE_LIBDIR)/tilde.o +# libintl +INTL_LIBSRC = $(LIBSRC)/intl +INTL_LIBDIR = $(dot)/$(LIBSUBDIR)/intl +INTL_ABSSRC = ${topdir}/$(INTL_LIB) +INTL_BUILDDIR = ${LIBBUILD}/intl + +INTL_LIB = @LIBINTL@ +INTL_LIBRARY = $(INTL_LIBDIR)/libintl.a +INTL_DEP = @INTL_DEP@ +INTL_INC = @INTL_INC@ + +LIBINTL_H = @LIBINTL_H@ + +# tests +LIBINTL = @LIBINTL@ +LTLIBINTL = @LTLIBINTL@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ + # Our malloc. MALLOC_TARGET = @MALLOC_TARGET@ @@ -343,9 +396,9 @@ BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \ $(BASHINCDIR)/ocache.h LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ - $(TILDE_LIB) $(MALLOC_LIB) $(LOCAL_LIBS) + $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) -LIBDEP = $(SHLIB_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \ +LIBDEP = $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \ $(TILDE_DEP) $(MALLOC_DEP) LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \ @@ -360,7 +413,7 @@ CSOURCES = shell.c eval.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \ dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \ expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c \ test.c trap.c alias.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ - input.c bashhist.c array.c arrayfunc.c sig.c pathexp.c \ + 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 @@ -371,7 +424,7 @@ HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.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 \ + execute_cmd.h parser.h pathexp.h pathnames.h pcomplete.h assoc.h \ $(BASHINCFILES) SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) @@ -382,26 +435,28 @@ SIGNAMES_H = @SIGNAMES_H@ # object files chosen based on running of configure JOBS_O = @JOBS_O@ SIGLIST_O = @SIGLIST_O@ +SIGNAMES_O = @SIGNAMES_O@ # Matching object files. OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \ dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \ expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ - alias.o array.o arrayfunc.o braces.o bracecomp.o bashhist.o \ + 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 + 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)/declare.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 \ @@ -412,7 +467,8 @@ BUILTIN_DEFS = $(DEFSRC)/alias.def $(DEFSRC)/bind.def $(DEFSRC)/break.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)/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) @@ -420,7 +476,7 @@ 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)/declare.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 \ @@ -431,7 +487,7 @@ BUILTIN_OBJS = $(DEFDIR)/alias.o $(DEFDIR)/bind.o $(DEFDIR)/break.o \ $(DEFDIR)/source.o $(DEFDIR)/suspend.o $(DEFDIR)/test.o \ $(DEFDIR)/times.o $(DEFDIR)/trap.o $(DEFDIR)/type.o \ $(DEFDIR)/ulimit.o $(DEFDIR)/umask.o $(DEFDIR)/wait.o \ - $(DEFDIR)/getopts.o $(BUILTIN_C_OBJ) + $(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 @@ -444,24 +500,30 @@ BUILTINS_DEP = $(BUILTINS_LIBRARY) 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) +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) mksignames$(EXEEXT) lsignames.h \ + tests/printenv$(EXEEXT) xcase$(EXEEXT) tests/xcase$(EXEEXT) \ + mksignames$(EXEEXT) lsignames.h \ mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ - buildversion.o + buildversion.o mksignames.o signames.o buildsignames.o CREATED_CONFIGURE = config.h config.cache config.status config.log \ - stamp-h + stamp-h po/POTFILES CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ lib/readline/Makefile lib/glob/Makefile \ lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \ lib/termcap/Makefile examples/loadables/Makefile \ - examples/loadables/perl/Makefile support/Makefile + examples/loadables/perl/Makefile support/Makefile \ + lib/intl/Makefile po/Makefile po/Makefile.in # Keep GNU Make from exporting the entire environment for small machines. .NOEXPORT: @@ -473,7 +535,7 @@ $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) $(RM) $@ $(PURIFY) $(CC) $(BUILTINS_LDFLAGS) $(LIBRARY_LDFLAGS) $(LDFLAGS) -o $(Program) $(OBJECTS) $(LIBS) ls -l $(Program) - size $(Program) + -$(SIZE) $(Program) .build: $(SOURCES) config.h Makefile version.h $(VERSPROG) @echo @@ -500,7 +562,7 @@ bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) strip: $(Program) .made strip $(Program) ls -l $(Program) - size $(Program) + -$(SIZE) $(Program) lint: ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made @@ -510,10 +572,10 @@ version.h: $(SOURCES) config.h Makefile && mv newversion.h version.h bashversion$(EXEEXT): patchlevel.h conftypes.h version.h buildversion.o $(SUPPORT_SRC)bashversion.c - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o ${LIBS_FOR_BUILD} buildversion.o: version.h conftypes.h patchlevel.h $(srcdir)/version.c - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -c -o $@ $(srcdir)/version.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c -o $@ $(srcdir)/version.c # old rules GRAM_H = parser-built @@ -565,17 +627,38 @@ $(SHLIB_LIBRARY): config.h ${SHLIB_SOURCE} @(cd ${SH_LIBDIR} && \ $(MAKE) $(MFLAGS) DEBUG=${DEBUG} ${SHLIB_LIBNAME}) || exit 1 -mksignames$(EXEEXT): $(SUPPORT_SRC)mksignames.c - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)mksignames.c +${INTL_LIBRARY}: config.h ${INTL_LIBDIR}/Makefile + @echo making $@ in ${INTL_LIBDIR} + @(cd ${INTL_LIBDIR} && \ + $(MAKE) $(MFLAGS) 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) -o $@ mksignames.o buildsignames.o ${LIBS_FOR_BUILD} mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h - ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c + $(RM) $@ + ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c ${LIBS_FOR_BUILD} # make a list of signals for the local system -- this is done when we're # *not* cross-compiling lsignames.h: mksignames$(EXEEXT) $(RM) $@ - ./mksignames $@ + ./mksignames$(EXEEXT) $@ # copy the correct signames header file to signames.h signames.h: $(SIGNAMES_H) @@ -583,9 +666,9 @@ signames.h: $(SIGNAMES_H) syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h $(RM) $@ - ./mksyntax -o $@ + ./mksyntax$(EXEEXT) -o $@ -$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h +$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h version.h @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libbuiltins.a ) || exit 1 # these require special rules to circumvent make builtin rules @@ -617,13 +700,22 @@ stamp-h: config.status $(srcdir)/config.h.in $(srcdir)/config-top.h $(srcdir)/co config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck +pathnames.h: Makefile $(srcdir)/pathnames.h.in + @sed -e 's|@DEBUGGER_START_FILE\@|${DEBUGGER_START_FILE}|g' $(srcdir)/pathnames.h.in > pathnames.tmp + @if test -f $@; then \ + cmp -s pathnames.tmp $@ || mv pathnames.tmp $@; \ + else \ + mv pathnames.tmp $@; \ + fi + @${RM} pathnames.tmp + # comment out for distribution $(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in cd $(srcdir) && autoconf # for chet reconfig: force - sh $(srcdir)/configure + sh $(srcdir)/configure -C #newversion: mkversion # $(RM) .build @@ -639,18 +731,19 @@ info dvi ps: force force: -tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) -TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ # Targets that actually do things not part of the build installdirs: - @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(bindir) - @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(man1dir) - @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(infodir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(bindir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(man1dir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(infodir) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) install: .made installdirs $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) @@ -660,6 +753,7 @@ install: .made installdirs 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' \ @@ -672,51 +766,46 @@ uninstall: .made man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) .PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean maybe-clean +LIB_SUBDIRS = ${RL_LIBDIR} ${HIST_LIBDIR} ${TERM_LIBDIR} ${GLOB_LIBDIR} \ + ${INTL_LIBDIR} ${TILDE_LIBDIR} ${ALLOC_LIBDIR} ${SH_LIBDIR} + basic-clean: $(RM) $(OBJECTS) $(Program) bashbug - $(RM) .build .made version.h + $(RM) .build .made version.h clean: basic-clean ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) - -(cd $(RL_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(HIST_LIBDIR) && test -f Makefile && $(MAKE) $(MFLAGS) $@) - -(cd $(TERM_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(GLOB_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(TILDE_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(ALLOC_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(SH_LIBDIR) && $(MAKE) $(MFLAGS) $@) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_SUPPORT) mostlyclean: basic-clean ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) - -(cd $(RL_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(HIST_LIBDIR) && test -f Makefile && $(MAKE) $(MFLAGS) $@) - -(cd $(TERM_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(GLOB_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(TILDE_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(ALLOC_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(SH_LIBDIR) && $(MAKE) $(MFLAGS) $@) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) distclean: basic-clean maybe-clean ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) - -(cd $(RL_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(HIST_LIBDIR) && test -f Makefile && $(MAKE) $(MFLAGS) $@) - -(cd $(TERM_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(GLOB_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(TILDE_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(ALLOC_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(SH_LIBDIR) && $(MAKE) $(MFLAGS) $@) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_CONFIGURE) tags TAGS - $(RM) $(CREATED_SUPPORT) Makefile $(CREATED_MAKEFILES) + $(RM) $(CREATED_SUPPORT) Makefile $(CREATED_MAKEFILES) pathnames.h maintainer-clean: basic-clean @echo This command is intended for maintainers to use. @@ -725,15 +814,12 @@ maintainer-clean: basic-clean ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) ( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) - -(cd $(RL_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(HIST_LIBDIR) && test -f Makefile && $(MAKE) $(MFLAGS) $@) - -(cd $(TERM_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(GLOB_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(TILDE_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(ALLOC_LIBDIR) && $(MAKE) $(MFLAGS) $@) - -(cd $(SH_LIBDIR) && $(MAKE) $(MFLAGS) $@) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_CONFIGURE) $(CREATED_MAKEFILES) - $(RM) $(CREATED_SUPPORT) Makefile + $(RM) $(CREATED_SUPPORT) Makefile pathnames.h maybe-clean: -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \ @@ -741,19 +827,22 @@ maybe-clean: fi recho$(EXEEXT): $(SUPPORT_SRC)recho.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD} zecho$(EXEEXT): $(SUPPORT_SRC)zecho.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD} printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} + +xcase$(EXEEXT): $(SUPPORT_SRC)xcase.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)xcase.c ${LIBS_FOR_BUILD} test tests check: force $(Program) $(TESTS_SUPPORT) @-test -d tests || mkdir tests @cp $(TESTS_SUPPORT) tests @( cd $(srcdir)/tests && \ - PATH=$$PATH:$(BUILD_DIR)/tests THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) symlinks: $(SHELL) $(SUPPORT_SRC)fixlinks -s $(srcdir) @@ -761,9 +850,9 @@ symlinks: 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 ${Program} $(Version)-${RELSTATUS} - @echo tar cf $(Program)-$(Version)-${RELSTATUS}.tar ${Program}-$(Version)-${RELSTATUS} - @echo gzip $(Program)-$(Version)-${RELSTATUS}.tar + @echo $(Program) $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r ${PACKAGE} $(PACKAGE_VERSION) + @echo tar cf $(PACKAGE)-${PACKAGE_VERSION}.tar ${PACKAGE}-$(PACKAGE_VERSION) + @echo gzip $(PACKAGE)-$(PACKAGE_VERSION).tar depend: depends @@ -806,22 +895,27 @@ dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h dispose_cmd.o: ${BASHINCDIR}/ocache.h error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h +error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +error.o: make_cmd.h subst.h sig.h pathnames.h externs.h +error.o: input.h execute_cmd.h eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h -eval.o: input.h execute_cmd.h +eval.o: input.h execute_cmd.h execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h execute_cmd.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/chartypes.h -expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +expr.o: 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 @@ -833,7 +927,7 @@ findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfun findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h findcmd.o: ${BASHINCDIR}/chartypes.h -flags.o: config.h flags.h +flags.o: 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 @@ -842,7 +936,7 @@ general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -general.o: make_cmd.h subst.h sig.h pathnames.h externs.h +general.o: make_cmd.h subst.h sig.h pathnames.h externs.h general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h general.o: ${BASHINCDIR}/chartypes.h hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -853,18 +947,18 @@ 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: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -list.o: make_cmd.h subst.h sig.h pathnames.h externs.h -locale.o: config.h bashtypes.h bashintl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +list.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: config.h bashtypes.h bashintl.h ${LIBINTL_H} bashansi.h ${BASHINCDIR}/ansi_stdlib.h locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h locale.o: ${BASHINCDIR}/chartypes.h mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h mailcheck.o: ${BASHINCDIR}/posixtime.h @@ -872,7 +966,7 @@ mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman 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: execute_cmd.h mailcheck.h make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h @@ -897,39 +991,39 @@ 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: make_cmd.h subst.h sig.h pathnames.h externs.h print_cmd.o: ${GRAM_H} $(DEFSRC)/common.h redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h -redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h +redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h redir.o: flags.h execute_cmd.h redir.h input.h shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h version.h +shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h -shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h +shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h sig.o: config.h bashtypes.h sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h +sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h siglist.o: config.h bashtypes.h siglist.h trap.h stringlib.o: bashtypes.h ${BASHINCDIR}/chartypes.h stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h +stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h stringlib.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h subst.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h +subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}/filecntl.h trap.h pathexp.h subst.o: mailcheck.h input.h $(DEFSRC)/getopt.h $(DEFSRC)/common.h subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}/strmatch.h @@ -940,25 +1034,26 @@ test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h $ test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h -test.o: ${DEFSRC}/common.h +test.o: ${DEFSRC}/common.h trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h trap.o: signames.h $(DEFSRC)/common.h +trap.o: ${DEFDIR}/builtext.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h +variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h -variables.o: pcomplete.h version.h ${BASHINCDIR}/chartypes.h +variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h variables.o: ${BASHINCDIR}/posixtime.h -version.o: version.h conftypes.h patchlevel.h +version.o: conftypes.h patchlevel.h version.h xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h # job control @@ -968,13 +1063,14 @@ jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h +jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h jobs.o: ${BASHINCDIR}/posixtime.h nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h +nojobs.o: $(DEFDIR)/builtext.h # shell features that may be compiled in @@ -982,24 +1078,32 @@ 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: make_cmd.h subst.h sig.h pathnames.h externs.h array.o: $(DEFSRC)/common.h arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h +arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h arrayfunc.o: $(DEFSRC)/common.h arrayfunc.o: ${BASHINCDIR}/shmbutil.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: $(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: make_cmd.h subst.h sig.h pathnames.h externs.h braces.o: ${BASHINCDIR}/shmbutil.h alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h -alias.o: pcomplete.h +alias.o: pcomplete.h alias.o: ${BASHINCDIR}/chartypes.h pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h @@ -1012,7 +1116,7 @@ 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: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h # library support files @@ -1021,14 +1125,14 @@ bashhist.o: ${BASHINCDIR}/filecntl.h bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h bashhist.o: $(GLOB_LIBSRC)/strmatch.h bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h @@ -1036,7 +1140,7 @@ bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h bracecomp.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h hashlib.h builtins.h general.h xmalloc.h bracecomp.o: quit.h alias.h config.h variables.h arrayfunc.h conftypes.h bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1066,27 +1170,59 @@ shell.o: $(TILDE_LIBSRC)/tilde.h subst.o: $(TILDE_LIBSRC)/tilde.h variables.o: $(TILDE_LIBSRC)/tilde.h +# libintl dependencies +arrayfunc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashhist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashline.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +braces.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +error.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +eval.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +execute_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +expr.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +general.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +input.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +jobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +parse.y: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +redir.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +shell.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +sig.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +siglist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +subst.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +test.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +trap.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +signames.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h + # XXX - dependencies checked through here # builtin c sources builtins/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h builtins/bashgetopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -builtins/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/bashgetopt.o: 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: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h builtins/common.o: ${DEFDIR}/builtext.h builtins/common.o: ${BASHINCDIR}/chartypes.h builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1099,7 +1235,7 @@ builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h builtins/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/getopt.o: 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 @@ -1120,6 +1256,12 @@ builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general. builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: $(DEFSRC)/common.h quit.h +builtins/caller.o: ${BASHINCDIR}/chartypes.h bashtypes.h +builtins/caller.o: ${DEFDIR}/builtext.h builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1138,16 +1280,16 @@ builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/enable.o: pcomplete.h +builtins/enable.o: pcomplete.h builtins/eval.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/exec.o: bashtypes.h +builtins/exec.o: bashtypes.h builtins/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h +builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h builtins/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h -builtins/exit.o: bashtypes.h +builtins/exit.o: 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 @@ -1158,22 +1300,22 @@ builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h builtins/fc.o: ${BASHINCDIR}/chartypes.h -builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h +builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/hash.o: bashtypes.h +builtins/hash.o: bashtypes.h builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h -builtins/help.o: $(GLOB_LIBSRC)/glob.h version.h -builtins/history.o: bashtypes.h +builtins/help.o: $(GLOB_LIBSRC)/glob.h +builtins/history.o: bashtypes.h builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h @@ -1224,14 +1366,14 @@ builtins/shopt.o: $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h +builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/test.o: test.h +builtins/test.o: test.h builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1258,9 +1400,50 @@ builtins/wait.o: ${BASHINCDIR}/chartypes.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h -builtins/complete.o: builtins.h +builtins/complete.o: builtins.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 + +# 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 @@ -1277,6 +1460,7 @@ 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 @@ -1297,6 +1481,7 @@ 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 diff --git a/src/bin/bash/NEWS b/src/bin/bash/NEWS index b545eb60db..05573cca69 100644 --- a/src/bin/bash/NEWS +++ b/src/bin/bash/NEWS @@ -1,3 +1,518 @@ +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. diff --git a/src/bin/bash/NOTES b/src/bin/bash/NOTES index 31068d0eef..b938d02bb0 100644 --- a/src/bin/bash/NOTES +++ b/src/bin/bash/NOTES @@ -261,6 +261,10 @@ Platform-Specific Configuration and Operation Notes I have received word that adding -L/etc/lib (or the equivalent -Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib. + On later versions of Solaris, it may be necessary to add -lnsl before + -ldl; statically-linked versions of bash using libnsl are not guaranteed + to work correctly on future versions of Solaris. + 12. Configuring bash to build it in a cross environment. Currently only two native versions can be compiled this way, cygwin32 and x86 BeOS. For BeOS, you would configure it like this: @@ -324,3 +328,20 @@ Platform-Specific Configuration and Operation Notes 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. + + diff --git a/src/bin/bash/POSIX b/src/bin/bash/POSIX index 977f98914c..f6b6b3edb8 100644 --- a/src/bin/bash/POSIX +++ b/src/bin/bash/POSIX @@ -1,10 +1,10 @@ -Bash POSIX Mode -=============== +6.11 Bash POSIX Mode +==================== Starting Bash with the `--posix' command-line option or executing `set -o posix' while Bash is running will cause Bash to conform more closely -to the POSIX 1003.2 standard by changing the behavior to match that -specified by POSIX in areas where the Bash default differs. +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. @@ -22,18 +22,20 @@ The following list is what's changed when `POSIX mode' is in effect: is stopped is `Stopped(SIGNAME)', where SIGNAME is, for example, `SIGTSTP'. - 4. Reserved words may not be aliased. + 4. The `bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. - 5. The POSIX 1003.2 `PS1' and `PS2' expansions of `!' to the history - number and `!!' to `!' are enabled, and parameter expansion is - performed on the values of `PS1' and `PS2' regardless of the - setting of the `promptvars' option. + 5. Reserved words appearing in a context where reserved words are + recognized do not undergo alias expansion. - 6. Interactive comments are enabled by default. (Bash has them on by - default anyway.) + 6. The POSIX `PS1' and `PS2' expansions of `!' to the history number + and `!!' to `!' are enabled, and parameter expansion is performed + on the values of `PS1' and `PS2' regardless of the setting of the + `promptvars' option. - 7. The POSIX 1003.2 startup files are executed (`$ENV') rather than - the normal Bash files. + 7. The POSIX startup files are executed (`$ENV') rather than the + normal Bash files. 8. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. @@ -42,38 +44,37 @@ The following list is what's changed when `POSIX mode' is in effect: value of `$HISTFILE'). 10. The output of `kill -l' prints all the signal names on a single - line, separated by spaces. + line, separated by spaces, without the `SIG' prefix. - 11. Non-interactive shells exit if FILENAME in `.' FILENAME is not + 11. The `kill' builtin does not accept signal names with a `SIG' + prefix. + + 12. Non-interactive shells exit if FILENAME in `.' FILENAME is not found. - 12. Non-interactive shells exit if a syntax error in an arithmetic + 13. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 13. Redirection operators do not perform filename expansion on the word + 14. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 14. Redirection operators do not perform word splitting on the word in + 15. Redirection operators do not perform word splitting on the word in the redirection. - 15. Function names must be valid shell `name's. That is, they may not + 16. Function names must be valid shell `name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 16. POSIX 1003.2 `special' builtins are found before shell functions - during command lookup. + 17. POSIX special builtins are found before shell functions during + command lookup. - 17. If a POSIX 1003.2 special builtin returns an error status, a + 18. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in - the POSIX.2 standard, and include things like passing incorrect + the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 18. If the `cd' builtin finds a directory to change to using - `$CDPATH', the value it assigns to the `PWD' variable does not - contain any symbolic links, as if `cd -P' had been executed. - 19. If `CDPATH' is set, the `cd' builtin will not implicitly append the current directory to it. This means that `cd' will fail if no valid directory name can be constructed from any of the entries in @@ -91,52 +92,91 @@ The following list is what's changed when `POSIX mode' is in effect: 22. Process substitution is not available. - 23. Assignment statements preceding POSIX 1003.2 special builtins - persist in the shell environment after the builtin completes. + 23. Assignment statements preceding POSIX special builtins persist in + the shell environment after the builtin completes. 24. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. 25. The `export' and `readonly' builtin commands display their output - in the format required by POSIX 1003.2. + in the format required by POSIX. 26. The `trap' builtin displays signal names without the leading `SIG'. - 27. The `.' and `source' builtins do not search the current directory + 27. The `trap' builtin doesn't check the first argument for a possible + signal specification and revert the signal handling to the original + disposition if it is, unless that argument consists solely of + digits and is a valid signal number. If users want to reset the + handler for a given signal to the original disposition, they + should use `-' as the first argument. + + 28. The `.' and `source' builtins do not search the current directory for the filename argument if it is not found by searching `PATH'. - 28. Subshells spawned to execute command substitutions inherit the + 29. Subshells spawned to execute command substitutions inherit the value of the `-e' option from the parent shell. When not in POSIX mode, Bash clears the `-e' option in such subshells. - 29. Alias expansion is always enabled, even in non-interactive shells. + 30. Alias expansion is always enabled, even in non-interactive shells. - 30. When the `set' builtin is invoked without options, it does not + 31. When the `alias' builtin displays alias definitions, it does not + display them with a leading `alias ' unless the `-p' option is + supplied. + + 32. When the `set' builtin is invoked without options, it does not display shell function names and definitions. - 31. When the `set' builtin is invoked without options, it displays + 33. When the `set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 32. When the `cd' builtin is invoked in LOGICAL mode, and the pathname + 34. When the `cd' builtin is invoked in LOGICAL mode, and the pathname constructed from `$PWD' and the directory name supplied as an argument does not refer to an existing directory, `cd' will fail instead of falling back to PHYSICAL mode. -There is other POSIX 1003.2 behavior that Bash does not implement. -Specifically: + 35. When the `pwd' builtin is supplied the `-P' option, it resets + `$PWD' to a pathname containing no symlinks. - 1. Assignment statements affect the execution environment of all - builtins, not just special ones. + 36. The `pwd' builtin verifies that the value it prints is the same as + the current directory, even if it is not asked to check the file + system with the `-P' option. - 2. When a subshell is created to execute a shell script with execute - permission, but without a leading `#!', Bash sets `$0' to the full - pathname of the script as found by searching `$PATH', rather than - the command as typed by the user. + 37. When listing the history, the `fc' builtin does not include an + indication of whether or not a history entry has been modified. - 3. When using `.' to source a shell script found in `$PATH', bash - checks execute permission bits rather than read permission bits, - just as if it were searching for a command. + 38. The default editor used by `fc' is `ed'. + + 39. The `type' and `command' builtins will not report a non-executable + file as having been found, though the shell will attempt to + execute such a file if it is the only so-named file found in + `$PATH'. + + 40. The `vi' editing mode will invoke the `vi' editor directly when + the `v' command is run, instead of checking `$VISUAL' and + `$EDITOR'. + + 41. When the `xpg_echo' option is enabled, Bash does not attempt to + interpret any arguments to `echo' as options. Each argument is + displayed, after escape characters are converted. + + 42. The `ulimit' builtin uses a block size of 512 bytes for the `-c' + and `-f' options. +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/src/bin/bash/RBASH b/src/bin/bash/RBASH index c3667f5f76..0e5c10b3e8 100644 --- a/src/bin/bash/RBASH +++ b/src/bin/bash/RBASH @@ -1,5 +1,5 @@ -The Restricted Shell -==================== +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 diff --git a/src/bin/bash/README b/src/bin/bash/README index 9dff9ef235..2d43cea622 100644 --- a/src/bin/bash/README +++ b/src/bin/bash/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 2.05b. Bash is the GNU Project's Bourne +This is GNU Bash, version 4.0. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history @@ -11,17 +11,18 @@ 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 CWRU/POSIX.NOTES for a discussion of how Bash differs +See the file POSIX for a discussion of how the Bash defaults differ from the POSIX.2 spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and the previous widely-distributed version, bash-1.14. -For details, see the file COMPAT. The NEWS file tersely lists -features that are new in this release. +of Bash and previous widely-distributed versions, bash-2.05b and +bash-3.2. For details, see the file COMPAT. The NEWS file tersely +lists features that are new in this release. -Bash is free software, distributed under the terms of the [GNU] -General Public License, version 2. For more information, see the -file COPYING. +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'. @@ -87,4 +88,4 @@ like this shell to be the best that we can make it. Enjoy! Chet Ramey -chet@po.cwru.edu +chet.ramey@case.edu diff --git a/src/bin/bash/Y2K b/src/bin/bash/Y2K index aa7ac311fc..d12e3525dd 100644 --- a/src/bin/bash/Y2K +++ b/src/bin/bash/Y2K @@ -1,5 +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) in the prompt customization code. In all cases, -it discards the year. +returned by ctime(3) or strftime(3) in the prompt customization code. diff --git a/src/bin/bash/aclocal.m4 b/src/bin/bash/aclocal.m4 index d1ad025fb0..5a742bc7e4 100644 --- a/src/bin/bash/aclocal.m4 +++ b/src/bin/bash/aclocal.m4 @@ -215,7 +215,7 @@ AC_CACHE_VAL(bash_cv_sys_siglist, #ifdef HAVE_UNISTD_H #include #endif -#ifndef SYS_SIGLIST_DECLARED +#if !HAVE_DECL_SYS_SIGLIST extern char *sys_siglist[]; #endif main() @@ -336,18 +336,18 @@ main() { DIR *dir; int fd, err; -err = mkdir("/tmp/bash-aclocal", 0700); +err = mkdir("bash-aclocal", 0700); if (err < 0) { perror("mkdir"); exit(1); } -unlink("/tmp/bash-aclocal/not_a_directory"); -fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +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("/tmp/bash-aclocal/not_a_directory"); -unlink("/tmp/bash-aclocal/not_a_directory"); -rmdir("/tmp/bash-aclocal"); +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) @@ -531,6 +531,18 @@ 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 . @@ -685,65 +697,26 @@ fi ]) AC_DEFUN(BASH_FUNC_GETCWD, -[AC_MSG_CHECKING([if getcwd() calls popen()]) -AC_CACHE_VAL(bash_cv_getcwd_calls_popen, +[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 -#ifndef __STDC__ -#ifndef const -#define const -#endif -#endif - -int popen_called; - -FILE * -popen(command, type) - const char *command; - const char *type; -{ - popen_called = 1; - return (FILE *)NULL; -} - -FILE *_popen(command, type) - const char *command; - const char *type; -{ - return (popen (command, type)); -} - -int -pclose(stream) -FILE *stream; -{ - return 0; -} - -int -_pclose(stream) -FILE *stream; -{ - return 0; -} - main() { - char lbuf[32]; - popen_called = 0; - getcwd(lbuf, 32); - exit (popen_called); + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); } -], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, - [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) - bash_cv_getcwd_calls_popen=no] +], 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_calls_popen) -if test $bash_cv_getcwd_calls_popen = yes; then +AC_MSG_RESULT($bash_cv_getcwd_malloc) +if test $bash_cv_getcwd_malloc = no; then AC_DEFINE(GETCWD_BROKEN) AC_LIBOBJ(getcwd) fi @@ -972,7 +945,7 @@ AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) fi ]) -AC_DEFUN(BASH_CHECK_LIB_TERMCAP, +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], [ if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes @@ -981,11 +954,12 @@ AC_MSG_CHECKING(which library has the termcap functions) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_termcap_lib, -[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, +[AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, + [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])])]) + bash_cv_termcap_lib=gnutermcap)])])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi @@ -1003,6 +977,9 @@ 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= @@ -1061,7 +1038,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, [AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(if struct dirent has a d_ino member) +AC_MSG_CHECKING(for struct dirent.d_ino) AC_CACHE_VAL(bash_cv_dirent_has_dino, [AC_TRY_COMPILE([ #include @@ -1088,13 +1065,13 @@ 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(STRUCT_DIRENT_HAS_D_INO) +AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO) fi ]) AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, [AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(if struct dirent has a d_fileno member) +AC_MSG_CHECKING(for struct dirent.d_fileno) AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [AC_TRY_COMPILE([ #include @@ -1121,7 +1098,40 @@ 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(STRUCT_DIRENT_HAS_D_FILENO) +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 ]) @@ -1141,6 +1151,22 @@ if test $bash_cv_struct_timeval = yes; then 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, @@ -1409,19 +1435,19 @@ exit (1); #if defined (NeXT) exit (1); #endif -err = mkdir("/tmp/bash-aclocal", 0700); +err = mkdir("bash-aclocal", 0700); if (err < 0) { perror ("mkdir"); exit(1); } -fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); if (fd == -1) { - rmdir ("/tmp/bash-aclocal"); + rmdir ("bash-aclocal"); exit (1); } close(fd); -unlink ("/tmp/bash-aclocal/sh-np-autoconf"); -rmdir ("/tmp/bash-aclocal"); +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) @@ -1526,13 +1552,22 @@ fi AC_DEFUN(BASH_CHECK_DEV_FD, [AC_MSG_CHECKING(whether /dev/fd is available) AC_CACHE_VAL(bash_cv_dev_fd, -[if test -d /dev/fd && test -r /dev/fd/0; then - bash_cv_dev_fd=standard - elif test -d /proc/self/fd && test -r /proc/self/fd/0; then - bash_cv_dev_fd=whacky - else - bash_cv_dev_fd=absent - fi +[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 -int -main () -{ - mbstate_t ps; - return 0; -}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) -if test $bash_cv_have_mbstate_t = yes; then +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)) + +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 ], @@ -1677,6 +1716,43 @@ if test $bash_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET) fi +dnl check for wchar_t in +AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, +[AC_TRY_COMPILE( +[#include +], +[ + wchar_t foo; + foo = 0; +], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) +if test $bash_cv_type_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) +fi + +dnl check for wctype_t in +AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, +[AC_TRY_COMPILE( +[#include ], +[ + wctype_t foo; + foo = 0; +], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) +if test $bash_cv_type_wctype_t = yes; then + AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) +fi + +dnl check for wint_t in +AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, +[AC_TRY_COMPILE( +[#include ], +[ + wint_t foo; + foo = 0; +], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) +if test $bash_cv_type_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) +fi + ]) dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB @@ -1684,7 +1760,7 @@ dnl require: dnl AC_PROG_CC dnl BASH_CHECK_LIB_TERMCAP -AC_DEFUN(RL_LIB_READLINE_VERSION, +AC_DEFUN([RL_LIB_READLINE_VERSION], [ AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) @@ -1712,23 +1788,30 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" -AC_TRY_RUN([ +AC_CACHE_VAL(ac_cv_rl_version, +[AC_TRY_RUN([ #include #include +extern int rl_gnu_readline_p; + main() { FILE *fp; fp = fopen("conftest.rlv", "w"); - if (fp == 0) exit(1); - fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); fclose(fp); exit(0); } ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='4.2') +ac_cv_rl_version='4.2')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -1790,3 +1873,2148 @@ AC_MSG_RESULT($ac_cv_rl_version) fi ]) + +AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, +[ +AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) +AC_CACHE_VAL(bash_cv_func_ctype_nonascii, +[AC_TRY_RUN([ +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} +], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, + [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) + bash_cv_func_ctype_nonascii=no] +)]) +AC_MSG_RESULT($bash_cv_func_ctype_nonascii) +if test $bash_cv_func_ctype_nonascii = yes; then +AC_DEFINE(CTYPE_NON_ASCII) +fi +]) + +AC_DEFUN(BASH_CHECK_WCONTINUED, +[ +AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken) +AC_CACHE_VAL(bash_cv_wcontinued_broken, +[AC_TRY_RUN([ +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} +], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes, + [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no) + bash_cv_wcontinued_broken=no] +)]) +AC_MSG_RESULT($bash_cv_wcontinued_broken) +if test $bash_cv_wcontinued_broken = yes; then +AC_DEFINE(WCONTINUED_BROKEN) +fi +]) + +dnl +dnl tests added for bashdb +dnl + + +AC_DEFUN([AM_PATH_LISPDIR], + [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), + [ lispdir="$withval" + AC_MSG_CHECKING([where .elc files should go]) + AC_MSG_RESULT([$lispdir])], + [ + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + AC_CHECK_PROGS(EMACS, emacs xemacs, no) + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + ]) + lispdir="$am_cv_lispdir" + fi + fi + ]) + AC_SUBST(lispdir) +]) + +dnl +dnl tests added for gettext +dnl +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# gettext.m4 serial 20 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define(gt_included_intl, ifelse([$1], [external], [no], [yes])) + define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Set USE_NLS. + AM_NLS + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext_libintl=yes + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking]) + + AM_ICONV + AM_LANGINFO_CODESET + if test $ac_cv_header_locale_h = yes; then + AM_LC_MESSAGES + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) +# intdiv0.m4 serial 1 (gettext-0.11.3) +dnl Copyright (C) 2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + AC_TRY_RUN([ +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, + [ + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + ]) + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, + [Define if integer division by zero raises signal SIGFPE.]) +]) +# inttypes.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H if exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) + ]) + if test $gt_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, + [Define if exists and doesn't clash with .]) + fi +]) +# inttypes_h.m4 serial 5 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([jm_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + jm_ac_cv_header_inttypes_h=yes, + jm_ac_cv_header_inttypes_h=no)]) + if test $jm_ac_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +# inttypes-pri.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_REQUIRE([gt_HEADER_INTTYPES_H]) + if test $gt_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + gt_cv_inttypes_pri_broken, + [ + AC_TRY_COMPILE([#include +#ifdef PRId32 +char *p = PRId32; +#endif +], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, + [Define if exists and defines unusable PRI* macros.]) + fi +]) +# isc-posix.m4 serial 2 (gettext-0.11.2) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. + +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# lcmessage.m4 serial 3 (gettext-0.11.3) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([AM_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi +]) +# lib-ld.m4 serial 2 (gettext-0.12) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) +# lib-link.m4 serial 4 (gettext-0.12) +dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) +# lib-prefix.m4 serial 2 (gettext-0.12) +dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) +# nls.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate it. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) +# po.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + fi + + AC_OUTPUT_COMMANDS([ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) +# progtest.m4 serial 3 (gettext-0.12) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) +# stdint_h.m4 serial 3 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([jm_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + jm_ac_cv_header_stdint_h=yes, + jm_ac_cv_header_stdint_h=no)]) + if test $jm_ac_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +# uintmax_t.m4 serial 7 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +AC_PREREQ(2.13) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([jm_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([jm_AC_HEADER_STDINT_H]) + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE(HAVE_UINTMAX_T, 1, + [Define if you have the 'uintmax_t' type in or .]) + fi +]) +# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) +dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], +[ + AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, + [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], + [unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull;], + ac_cv_type_unsigned_long_long=yes, + ac_cv_type_unsigned_long_long=no)]) + if test $ac_cv_type_unsigned_long_long = yes; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, + [Define if you have the unsigned long long type.]) + fi +]) + +dnl From gnulib +AC_DEFUN([BASH_FUNC_FPURGE], +[ + AC_CHECK_FUNCS_ONCE([fpurge]) + AC_CHECK_FUNCS_ONCE([__fpurge]) + AC_CHECK_DECLS([fpurge], , , [#include ]) +]) diff --git a/src/bin/bash/alias.c b/src/bin/bash/alias.c index 1aa9cb11b3..2eedad58c1 100644 --- a/src/bin/bash/alias.c +++ b/src/bin/bash/alias.c @@ -1,23 +1,23 @@ /* alias.c -- Not a full alias, but just the kind that we use in the shell. Csh style alias is somewhere else (`over there, in a box'). */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -67,7 +67,7 @@ HASH_TABLE *aliases = (HASH_TABLE *)NULL; void initialize_aliases () { - if (!aliases) + if (aliases == 0) aliases = hash_create (ALIAS_HASH_BUCKETS); } diff --git a/src/bin/bash/alias.h b/src/bin/bash/alias.h index b70b3ec0e3..4d0075f85c 100644 --- a/src/bin/bash/alias.h +++ b/src/bin/bash/alias.h @@ -1,22 +1,22 @@ /* alias.h -- structure definitions. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* 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 1, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_ALIAS_H_) #define _ALIAS_H_ diff --git a/src/bin/bash/array.c b/src/bin/bash/array.c index a73be55a8a..a8c7766e1e 100644 --- a/src/bin/bash/array.c +++ b/src/bin/bash/array.c @@ -9,23 +9,23 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 1997-2002 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -107,7 +107,7 @@ ARRAY *a; ARRAY *a1; ARRAY_ELEMENT *ae, *new; - if (!a) + if (a == 0) return((ARRAY *) NULL); a1 = array_create(); a1->type = a->type; @@ -120,7 +120,6 @@ ARRAY *a; return(a1); } -#ifdef INCLUDE_UNUSED /* * Make and return a new array composed of the elements in array A from * S to E, inclusive. @@ -138,32 +137,32 @@ ARRAY_ELEMENT *s, *e; a = array_create (); a->type = array->type; - for (p = s, i = 0; p != e; p = element_forw(p), i++) { + 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(ae); + mi = element_index(n); } a->num_elements = i; a->max_index = mi; return a; } -#endif /* * Walk the array, calling FUNC once for each element, with the array * element as the argument. */ void -array_walk(a, func) +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) < 0) + if ((*func)(ae, udata) < 0) return; } @@ -242,9 +241,9 @@ char *s; { register ARRAY_ELEMENT *ae, *new; - if (a == 0) + if (a == 0 || (array_empty(a) && s == 0)) return 0; - if (n <= 0) + else if (n <= 0) return (a->num_elements); ae = element_forw(a->head); @@ -252,27 +251,44 @@ char *s; new = array_create_element(0, s); ADD_BEFORE(ae, new); a->num_elements++; + if (array_num_elements(a) == 1) /* array was empty */ + return 1; } - a->max_index += n; - /* * Renumber all elements in the array except the one we just added. */ for ( ; ae != a->head; ae = element_forw(ae)) element_index(ae) += n; + a->max_index = element_index(a->head->prev); + return (a->num_elements); } -ARRAY * +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 == 0 || array_empty (array)) + 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); @@ -282,27 +298,139 @@ ARRAY *array; return array; } -char * -array_subrange (a, start, end, quoted) -ARRAY *a; -arrayind_t start, end; -int quoted; +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; + 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)) + 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) +ARRAY *a; +arrayind_t start, nelem; +int starsub, quoted; +{ + ARRAY *a2; ARRAY_ELEMENT *h, *p; arrayind_t i; + char *ifs, *sifs, *t; + int slen; - p = array_head (a); - if (p == 0 || array_empty (a) || start > array_num_elements (a)) + p = a ? array_head (a) : 0; + if (p == 0 || array_empty (a) || start > array_max_index(a)) return ((char *)NULL); - for (i = 0, p = element_forw(p); p != a->head && i < start; i++, p = element_forw(p)) + /* + * 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); - for (h = p; p != a->head && i < end; i++, p = element_forw(p)) + + /* Starting at P, take NELEM elements, inclusive. */ + for (i = 0, h = p; p != a->head && i < nelem; i++, p = element_forw(p)) ; - return (array_to_string_internal (h, p, " ", quoted)); + a2 = array_slice(a, h, p); + + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + array_quote(a2); + else + array_quote_escapes(a2); + + if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { + /* ${array[*]} */ + array_remove_quoted_nulls (a2); + sifs = ifs_firstchar ((int *)NULL); + t = array_to_string (a2, sifs, 0); + free (sifs); + } else if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) { + /* ${array[@]} */ + sifs = ifs_firstchar (&slen); + ifs = getifs (); + if (ifs == 0 || *ifs == 0) { + if (slen < 2) + sifs = xrealloc(sifs, 2); + sifs[0] = ' '; + sifs[1] = '\0'; + } + t = array_to_string (a2, sifs, 0); + free (sifs); + } else + t = array_to_string (a2, " ", 0); + array_dispose(a2); + + return t; } char * @@ -313,12 +441,13 @@ int mflags; { ARRAY *a2; ARRAY_ELEMENT *e; - char *t; + char *t, *sifs, *ifs; + int slen; - if (array_head (a) == 0 || array_empty (a)) + if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy (a); + a2 = array_copy(a); for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { t = pat_subst(element_value(e), pat, rep, mflags); FREE(element_value(e)); @@ -326,13 +455,84 @@ int mflags; } if (mflags & MATCH_QUOTED) - array_quote (a2); - t = array_to_string (a2, " ", 0); + array_quote(a2); + else + array_quote_escapes(a2); + + if (mflags & MATCH_STARSUB) { + array_remove_quoted_nulls (a2); + sifs = ifs_firstchar((int *)NULL); + t = array_to_string (a2, sifs, 0); + free(sifs); + } else if (mflags & MATCH_QUOTED) { + /* ${array[@]} */ + sifs = ifs_firstchar (&slen); + ifs = getifs (); + if (ifs == 0 || *ifs == 0) { + if (slen < 2) + sifs = xrealloc (sifs, 2); + sifs[0] = ' '; + sifs[1] = '\0'; + } + t = array_to_string (a2, sifs, 0); + free(sifs); + } else + t = array_to_string (a2, " ", 0); array_dispose (a2); return t; } +char * +array_modcase (a, pat, modop, mflags) +ARRAY *a; +char *pat; +int modop; +int mflags; +{ + ARRAY *a2; + ARRAY_ELEMENT *e; + char *t, *sifs, *ifs; + int slen; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + a2 = array_copy(a); + for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { + t = sh_modcase(element_value(e), pat, modop); + FREE(element_value(e)); + e->value = t; + } + + if (mflags & MATCH_QUOTED) + array_quote(a2); + else + array_quote_escapes(a2); + + if (mflags & MATCH_STARSUB) { + array_remove_quoted_nulls (a2); + sifs = ifs_firstchar((int *)NULL); + t = array_to_string (a2, sifs, 0); + free(sifs); + } else if (mflags & MATCH_QUOTED) { + /* ${array[@]} */ + sifs = ifs_firstchar (&slen); + ifs = getifs (); + if (ifs == 0 || *ifs == 0) { + if (slen < 2) + sifs = xrealloc (sifs, 2); + sifs[0] = ' '; + sifs[1] = '\0'; + } + t = array_to_string (a2, sifs, 0); + free(sifs); + } else + t = array_to_string (a2, " ", 0); + array_dispose (a2); + + return t; +} /* * Allocate and return a new array element with index INDEX and value * VALUE. @@ -365,8 +565,10 @@ void array_dispose_element(ae) ARRAY_ELEMENT *ae; { - FREE(ae->value); - free(ae); + if (ae) { + FREE(ae->value); + free(ae); + } } /* @@ -380,7 +582,7 @@ char *v; { register ARRAY_ELEMENT *new, *ae; - if (!a) + if (a == 0) return(-1); new = array_create_element(i, v); if (i > array_max_index(a)) { @@ -404,7 +606,7 @@ char *v; */ array_dispose_element(new); free(element_value(ae)); - ae->value = savestring(v); + ae->value = v ? savestring(v) : (char *)NULL; return(0); } else if (element_index(ae) > i) { ADD_BEFORE(ae, new); @@ -426,7 +628,7 @@ arrayind_t i; { register ARRAY_ELEMENT *ae; - if (!a || array_empty(a)) + if (a == 0 || array_empty(a)) return((ARRAY_ELEMENT *) NULL); for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) if (element_index(ae) == i) { @@ -460,6 +662,7 @@ arrayind_t i; /* 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; @@ -487,6 +690,25 @@ WORD_LIST *list; 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; @@ -521,8 +743,8 @@ ARRAY *a; } /* - * Return a string that is the concatenation of all the elements in A, - * separated by SEP. + * 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) @@ -586,7 +808,7 @@ int quoted; is = inttostr (element_index(ae), indstr, sizeof(indstr)); valstr = element_value (ae) ? sh_double_quote (element_value(ae)) : (char *)NULL; - elen = STRLEN (indstr) + 8 + STRLEN (valstr); + elen = STRLEN (is) + 8 + STRLEN (valstr); RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); result[rlen++] = '['; @@ -767,7 +989,7 @@ print_array(a) ARRAY *a; { printf("\n"); - array_walk(a, print_element); + array_walk(a, print_element, (void *)NULL); } main() diff --git a/src/bin/bash/array.h b/src/bin/bash/array.h index 9c8e5fc540..1080fc980c 100644 --- a/src/bin/bash/array.h +++ b/src/bin/bash/array.h @@ -1,23 +1,24 @@ /* array.h -- definitions for the interface exported by array.c that allows the rest of the shell to manipulate array variables. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _ARRAY_H_ #define _ARRAY_H_ @@ -40,7 +41,7 @@ typedef struct array_element { struct array_element *next, *prev; } ARRAY_ELEMENT; -typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *)); +typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *, void *)); /* Basic operations on entire arrays */ extern ARRAY *array_create __P((void)); @@ -48,14 +49,22 @@ extern void array_flush __P((ARRAY *)); extern void array_dispose __P((ARRAY *)); extern ARRAY *array_copy __P((ARRAY *)); extern ARRAY *array_slice __P((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *)); -extern void array_walk __P((ARRAY *, sh_ae_map_func_t *)); +extern void array_walk __P((ARRAY *, sh_ae_map_func_t *, void *)); extern ARRAY_ELEMENT *array_shift __P((ARRAY *, int, int)); extern int array_rshift __P((ARRAY *, int, char *)); -extern ARRAY *array_quote __P((ARRAY *)); +extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *)); +extern int array_shift_element __P((ARRAY *, char *)); -extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int)); +extern ARRAY *array_quote __P((ARRAY *)); +extern ARRAY *array_quote_escapes __P((ARRAY *)); +extern ARRAY *array_dequote __P((ARRAY *)); +extern ARRAY *array_dequote_escapes __P((ARRAY *)); +extern ARRAY *array_remove_quoted_nulls __P((ARRAY *)); + +extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); extern char *array_patsub __P((ARRAY *, char *, char *, int)); +extern char *array_modcase __P((ARRAY *, char *, int, int)); /* Basic operations on array elements. */ extern ARRAY_ELEMENT *array_create_element __P((arrayind_t, char *)); @@ -69,6 +78,8 @@ extern char *array_reference __P((ARRAY *, arrayind_t)); /* Converting to and from arrays */ extern WORD_LIST *array_to_word_list __P((ARRAY *)); extern ARRAY *array_from_word_list __P((WORD_LIST *)); +extern WORD_LIST *array_keys_to_word_list __P((ARRAY *)); + extern ARRAY *array_assign_list __P((ARRAY *, WORD_LIST *)); extern char **array_to_argv __P((ARRAY *)); @@ -90,6 +101,18 @@ extern ARRAY *array_from_string __P((char *, char *)); #define element_forw(ae) ((ae)->next) #define element_back(ae) ((ae)->prev) +/* Convenience */ +#define array_push(a,v) \ + do { array_rshift ((a), 1, (v)); } while (0) +#define array_pop(a) \ + do { array_dispose_element (array_shift ((a), 1, 0)); } while (0) + +#define GET_ARRAY_FROM_VAR(n, v, a) \ + do { \ + (v) = find_variable (n); \ + (a) = ((v) && array_p ((v))) ? array_cell (v) : (ARRAY *)0; \ + } while (0) + #define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*') #endif /* _ARRAY_H_ */ diff --git a/src/bin/bash/arrayfunc.c b/src/bin/bash/arrayfunc.c index 60e70d9255..dbc2e20c38 100644 --- a/src/bin/bash/arrayfunc.c +++ b/src/bin/bash/arrayfunc.c @@ -1,22 +1,22 @@ /* arrayfunc.c -- High-level array functions used by other parts of the shell. */ -/* Copyright (C) 2001-2002 Free Software Foundation, Inc. +/* Copyright (C) 2001-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -27,7 +27,10 @@ #endif #include +#include "bashintl.h" + #include "shell.h" +#include "pathexp.h" #include "shmbutil.h" @@ -35,10 +38,17 @@ extern char *this_command_name; extern int last_command_exit_value; +extern int array_needs_making; +static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int)); + +static char *quote_assign __P((const char *)); static void quote_array_assignment_chars __P((WORD_LIST *)); static char *array_value_internal __P((char *, int, int, int *)); +/* Standard error message to use when encountering an invalid array subscript */ +const char * const bash_badsub_errmsg = N_("bad array subscript"); + /* **************************************************************** */ /* */ /* Functions to manipulate array variables and perform assignments */ @@ -56,7 +66,8 @@ convert_var_to_array (var) oldval = value_cell (var); array = array_create (); - array_insert (array, 0, oldval); + if (oldval) + array_insert (array, 0, oldval); FREE (value_cell (var)); var_setarray (var, array); @@ -66,6 +77,8 @@ convert_var_to_array (var) var->assign_func = (sh_var_assign_func_t *)NULL; INVALIDATE_EXPORTSTR (var); + if (exported_p (var)) + array_needs_making++; VSETATTR (var, att_array); VUNSETATTR (var, att_invisible); @@ -73,6 +86,86 @@ convert_var_to_array (var) 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, "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); + VUNSETATTR (var, att_invisible); + + return var; +} + +static SHELL_VAR * +bind_array_var_internal (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); + + 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); + + 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 @@ -81,13 +174,13 @@ convert_var_to_array (var) 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) +bind_array_variable (name, ind, value, flags) char *name; arrayind_t ind; char *value; + int flags; { SHELL_VAR *entry; - char *newval; entry = var_lookup (name, shell_variables); @@ -103,23 +196,48 @@ bind_array_variable (name, ind, value) entry = convert_var_to_array (entry); /* ENTRY is an array variable, and ARRAY points to the value. */ - newval = make_variable_value (entry, value); - if (entry->assign_func) - (*entry->assign_func) (entry, newval, ind); - else - array_insert (array_cell (entry), ind, newval); - FREE (newval); + return (bind_array_var_internal (entry, ind, 0, value, flags)); +} - return (entry); +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; +{ + SHELL_VAR *dentry; + char *newval; + + if (readonly_p (entry) || noassign_p (entry)) + { + if (readonly_p (entry)) + err_readonly (name); + return (entry); + } + + return (bind_array_var_internal (entry, 0, 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(). */ SHELL_VAR * -assign_array_element (name, value) +assign_array_element (name, value, flags) char *name, *value; + int flags; { - char *sub, *vname; + char *sub, *vname, *akey; arrayind_t ind; int sublen; SHELL_VAR *entry; @@ -136,15 +254,32 @@ assign_array_element (name, value) return ((SHELL_VAR *)NULL); } - ind = array_expand_index (sub, sublen); - if (ind < 0) - { - free (vname); - err_badarraysub (name); - return ((SHELL_VAR *)NULL); - } + entry = find_variable (vname); - entry = bind_array_variable (vname, ind, value); + if (entry && assoc_p (entry)) + { + sub[sublen-1] = '\0'; + akey = expand_assignment_string_to_string (sub, 0); /* [ */ + sub[sublen-1] = ']'; + if (akey == 0 || *akey == 0) + { + free (vname); + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + entry = bind_assoc_variable (entry, vname, akey, value, flags); + } + else + { + ind = array_expand_index (sub, sublen); + if (ind < 0) + { + free (vname); + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + entry = bind_array_variable (vname, ind, value, flags); + } free (vname); return (entry); @@ -152,27 +287,33 @@ assign_array_element (name, value) /* Find the array variable corresponding to NAME. If there is no variable, create a new array variable. If the variable exists but is not an array, - convert it to an indexed array. If CHECK_FLAGS is non-zero, an existing + 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). */ + 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, check_flags) +find_or_make_array_variable (name, flags) char *name; - int check_flags; + int flags; { SHELL_VAR *var; var = find_variable (name); if (var == 0) - var = make_new_array_variable (name); - else if (check_flags && (readonly_p (var) || noassign_p (var))) + 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 (array_p (var) == 0) + else if ((flags & 2) && array_p (var)) + { + 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); @@ -181,62 +322,64 @@ find_or_make_array_variable (name, check_flags) /* 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) +assign_array_from_string (name, value, flags) char *name, *value; + int flags; { SHELL_VAR *var; + int vflags; - var = find_or_make_array_variable (name, 1); + 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)); + 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) +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; - for (a = array_cell (var), l = list, i = 0; l; l = l->next, i++) + a = array_cell (var); + i = (flags & ASS_APPEND) ? array_max_index (a) + 1 : 0; + + for (l = list; l; l = l->next, i++) if (var->assign_func) - (*var->assign_func) (var, l->word->word, i); + (*var->assign_func) (var, l->word->word, i, 0); else array_insert (a, i, l->word->word); return var; } -/* Perform a compound array assignment: VAR->name=( VALUE ). The - VALUE has already had the parentheses stripped. */ -SHELL_VAR * -assign_array_var_from_string (var, value) +WORD_LIST * +expand_compound_array_assignment (var, value, flags) SHELL_VAR *var; char *value; + int flags; { - ARRAY *a; WORD_LIST *list, *nlist; - char *w, *val, *nval; - int ni, len; - arrayind_t ind, last_ind; + char *val; + int ni; - if (value == 0) - return var; - - /* If this is called from declare_builtin, value[0] == '(' and - xstrchr(value, ')') != 0. In this case, we need to extract - the value from between the parens before going on. */ + /* I don't believe this condition is ever true any more. */ if (*value == '(') /*)*/ { ni = 1; val = extract_array_assignment_list (value, &ni); if (val == 0) - return var; + return (WORD_LIST *)NULL; } else val = value; @@ -245,7 +388,7 @@ assign_array_var_from_string (var, value) 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, "array assign"); + list = parse_string_to_word_list (val, 1, "array assign"); /* If we're using [subscript]=value, we need to quote each [ and ] to prevent unwanted filename expansion. */ @@ -261,27 +404,62 @@ assign_array_var_from_string (var, value) if (val != value) free (val); - a = array_cell (var); + return nlist; +} + +void +assign_compound_array_list (var, nlist, flags) + SHELL_VAR *var; + WORD_LIST *nlist; + int flags; +{ + ARRAY *a; + HASH_TABLE *h; + WORD_LIST *list; + char *w, *val, *nval; + int len, iflags; + arrayind_t ind, last_ind; + char *akey; + + a = (var && array_p (var)) ? array_cell (var) : (ARRAY *)0; + 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 (a) - array_flush (a); - - for (last_ind = 0, list = nlist; list; list = list->next) + if ((flags & ASS_APPEND) == 0) { + if (array_p (var) && a) + array_flush (a); + else if (assoc_p (var) && h) + assoc_flush (h); + } + + last_ind = (a && (flags & ASS_APPEND)) ? array_max_index (a) + 1 : 0; + + for (list = nlist; list; list = list->next) + { + iflags = flags; w = list->word->word; /* We have a word of the form [ind]=value */ - if (w[0] == '[') + if ((list->word->flags & W_ASSIGNMENT) && w[0] == '[') { len = skipsubscript (w, 0); - if (w[len] != ']' || w[len+1] != '=') + /* XXX - changes for `+=' */ + if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '='))) { - nval = make_variable_value (var, w); + 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); + (*var->assign_func) (var, nval, last_ind, 0); else array_insert (a, last_ind, nval); FREE (nval); @@ -297,18 +475,47 @@ assign_array_var_from_string (var, value) if (ALL_ELEMENT_SUB (w[1]) && len == 2) { - report_error ("%s: cannot assign to non-numeric index", w); + if (assoc_p (var)) + report_error (_("%s: invalid associative array key"), w); + else + report_error (_("%s: cannot assign to non-numeric index"), w); continue; } - ind = array_expand_index (w + 1, len); - if (ind < 0) + if (array_p (var)) { - err_badarraysub (w); - continue; + ind = array_expand_index (w + 1, len); + if (ind < 0) + { + err_badarraysub (w); + continue; + } + + last_ind = ind; } - last_ind = ind; - val = w + len + 2; + else if (assoc_p (var)) + { + akey = substring (w, 1, len); + if (akey == 0 || *akey == 0) + { + err_badarraysub (w); + 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)) + { + report_error (_("%s: %s: must use subscript when assigning associative array"), var->name, w); + continue; } else /* No [ind]=value, just a stray `=' */ { @@ -318,28 +525,70 @@ assign_array_var_from_string (var, value) if (integer_p (var)) this_command_name = (char *)NULL; /* no command name for errors */ - nval = make_variable_value (var, val); - if (var->assign_func) - (*var->assign_func) (var, nval, ind); - else - array_insert (a, ind, nval); - FREE (nval); + bind_array_var_internal (var, ind, akey, val, iflags); last_ind++; } +} - dispose_words (nlist); +/* 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); 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; + const char *s, *send; + 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 && (glob_char_p (s) || isifs (*s))) + *t++ = '\\'; + + COPY_CHAR_P (t, s, send); + } + *t = '\0'; + return temp; +} + /* For each word in a compound array assignment, if the word looks like - [ind]=value, quote the `[' and `]' before the `=' to protect them from - unwanted filename expansion. */ + [ind]=value, quote globbing chars and characters in $IFS before the `='. */ static void quote_array_assignment_chars (list) WORD_LIST *list; { - char *s, *t, *nword; - int saw_eq; + char *nword; WORD_LIST *l; for (l = list; l; l = l->next) @@ -349,17 +598,7 @@ quote_array_assignment_chars (list) /* Don't bother if it doesn't look like [ind]=value */ if (l->word->word[0] != '[' || xstrchr (l->word->word, '=') == 0) /* ] */ continue; - s = nword = (char *)xmalloc (strlen (l->word->word) * 2 + 1); - saw_eq = 0; - for (t = l->word->word; *t; ) - { - if (*t == '=') - saw_eq = 1; - if (saw_eq == 0 && (*t == '[' || *t == ']')) - *s++ = '\\'; - *s++ = *t++; - } - *s = '\0'; + nword = quote_assign (l->word->word); free (l->word->word); l->word->word = nword; } @@ -376,13 +615,11 @@ skipsubscript (s, i) #if defined (HANDLE_MULTIBYTE) mbstate_t state, state_bak; size_t slength, mblength; - size_t mb_cur_max; #endif #if defined (HANDLE_MULTIBYTE) memset (&state, '\0', sizeof (mbstate_t)); slength = strlen (s + i); - mb_cur_max = MB_CUR_MAX; #endif count = 1; @@ -390,18 +627,18 @@ skipsubscript (s, i) { /* Advance one (possibly multibyte) character in S starting at I. */ #if defined (HANDLE_MULTIBYTE) - if (mb_cur_max > 1) + if (MB_CUR_MAX > 1) { state_bak = state; mblength = mbrlen (s + i, slength, &state); - if (mblength == (size_t)-2 || mblength == (size_t)-1) + if (MB_INVALIDCH (mblength)) { state = state_bak; i++; slength--; } - else if (mblength == 0) + else if (MB_NULLWCH (mblength)) return i; else { @@ -416,7 +653,7 @@ skipsubscript (s, i) c = s[i]; if (c == 0) - break; + break; else if (c == '[') count++; else if (c == ']') @@ -436,12 +673,13 @@ unbind_array_element (var, sub) { int len; arrayind_t ind; + char *akey; ARRAY_ELEMENT *ae; len = skipsubscript (sub, 0); if (sub[len] != ']' || len == 0) { - builtin_error ("%s[%s: bad array subscript", var->name, sub); + builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); return -1; } sub[len] = '\0'; @@ -451,15 +689,30 @@ unbind_array_element (var, sub) unbind_variable (var->name); return (0); } - ind = array_expand_index (sub, len+1); - if (ind < 0) + + if (assoc_p (var)) { - builtin_error ("[%s]: bad array subscript", sub); - return -1; + akey = expand_assignment_string_to_string (sub, 0); /* [ */ + if (akey == 0 || *akey == 0) + { + builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + return -1; + } + assoc_remove (assoc_cell (var), akey); } - ae = array_remove (array_cell (var), ind); - if (ae) - array_dispose_element (ae); + else + { + ind = array_expand_index (sub, len+1); + if (ind < 0) + { + builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + return -1; + } + ae = array_remove (array_cell (var), ind); + if (ae) + array_dispose_element (ae); + } + return 0; } @@ -483,6 +736,26 @@ print_array_assignment (var, quoted) } } +/* 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 */ @@ -530,7 +803,7 @@ array_expand_index (s, len) exp = (char *)xmalloc (len); strncpy (exp, s, len - 1); exp[len - 1] = '\0'; - t = expand_string_to_string (exp, 0); + t = expand_arith_string (exp, 0); this_command_name = (char *)NULL; val = evalexp (t, &expok); free (t); @@ -538,6 +811,8 @@ array_expand_index (s, len) if (expok == 0) { last_command_exit_value = EXECUTION_FAILURE; + + top_level_cleanup (); jump_to_top_level (DISCARD); } return val; @@ -557,12 +832,22 @@ array_variable_name (s, subp, lenp) t = xstrchr (s, '['); if (t == 0) - return ((char *)NULL); + { + if (subp) + *subp = t; + if (lenp) + *lenp = 0; + return ((char *)NULL); + } ind = t - s; ni = skipsubscript (s, ind); if (ni <= ind + 1 || s[ni] != ']') { err_badarraysub (s); + if (subp) + *subp = t; + if (lenp) + *lenp = 0; return ((char *)NULL); } @@ -595,14 +880,14 @@ array_variable_part (s, subp, lenp) var = find_variable (t); free (t); - return var; + return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; } /* Return a string containing the elements in the array and subscript described by S. If the subscript is * or @, obeys quoting rules akin to the expansion of $* and $@ including double quoting. If RTYPE - is non-null it gets 1 if the array reference is name[@] or name[*] - and 0 otherwise. */ + 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, allow_all, rtype) char *s; @@ -610,6 +895,7 @@ array_value_internal (s, quoted, allow_all, rtype) { int len; arrayind_t ind; + char *akey; char *retval, *t, *temp; WORD_LIST *l; SHELL_VAR *var; @@ -623,20 +909,29 @@ array_value_internal (s, quoted, allow_all, rtype) return (char *)NULL; #endif + if (len == 0) + return ((char *)NULL); /* error message already printed */ + /* [ */ if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') { if (rtype) - *rtype = 1; + *rtype = (t[0] == '*') ? 1 : 2; if (allow_all == 0) { err_badarraysub (s); return ((char *)NULL); } - else if (var == 0) + else if (var == 0 || value_cell (var) == 0) return ((char *)NULL); - else if (array_p (var) == 0) + 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)); @@ -659,24 +954,40 @@ array_value_internal (s, quoted, allow_all, rtype) { if (rtype) *rtype = 0; - ind = array_expand_index (t, len); - if (ind < 0) + if (var == 0 || array_p (var) || assoc_p (var) == 0) { - if (var) - err_badarraysub (var->name); - else + ind = array_expand_index (t, len); + if (ind < 0) { - t[-1] = '\0'; - err_badarraysub (s); - t[-1] = '['; /* ] */ +index_error: + if (var) + err_badarraysub (var->name); + else + { + t[-1] = '\0'; + err_badarraysub (s); + t[-1] = '['; /* ] */ + } + return ((char *)NULL); } - return ((char *)NULL); } + else if (assoc_p (var)) + { + t[len - 1] = '\0'; + akey = expand_assignment_string_to_string (t, 0); /* [ */ + t[len - 1] = ']'; + if (akey == 0 || *akey == 0) + goto index_error; + } + if (var == 0) return ((char *)NULL); - if (array_p (var) == 0) + if (array_p (var) == 0 && assoc_p (var) == 0) return (ind == 0 ? value_cell (var) : (char *)NULL); - retval = array_reference (array_cell (var), ind); + else if (assoc_p (var)) + retval = assoc_reference (assoc_cell (var), akey); + else + retval = array_reference (array_cell (var), ind); } return retval; @@ -704,4 +1015,41 @@ get_array_value (s, allow_all, rtype) return (array_value_internal (s, 0, allow_all, rtype)); } +char * +array_keys (s, quoted) + char *s; + int quoted; +{ + int len; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + /* [ */ + if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']') + return (char *)NULL; + + if (array_p (var) == 0 && 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); + + if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + { + temp = string_list_dollar_star (l); + retval = quote_string (temp); + free (temp); + } + else /* ${!name[@]} or unquoted ${!name[*]} */ + retval = string_list_dollar_at (l, quoted); + + dispose_words (l); + return retval; +} #endif /* ARRAY_VARS */ diff --git a/src/bin/bash/arrayfunc.h b/src/bin/bash/arrayfunc.h index 7eae976fcf..44dd39d10b 100644 --- a/src/bin/bash/arrayfunc.h +++ b/src/bin/bash/arrayfunc.h @@ -1,22 +1,22 @@ /* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_ARRAYFUNC_H_) #define _ARRAYFUNC_H_ @@ -26,25 +26,34 @@ #if defined (ARRAY_VARS) extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); +extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *)); -extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *)); -extern SHELL_VAR *assign_array_element __P((char *, char *)); +extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int)); +extern SHELL_VAR *bind_array_element __P((SHELL_VAR *, arrayind_t, char *, int)); +extern SHELL_VAR *assign_array_element __P((char *, char *, int)); extern SHELL_VAR *find_or_make_array_variable __P((char *, int)); -extern SHELL_VAR *assign_array_from_string __P((char *, char *)); -extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *)); -extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *)); +extern SHELL_VAR *assign_array_from_string __P((char *, char *, int)); +extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int)); + +extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int)); +extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int)); +extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int)); extern int unbind_array_element __P((SHELL_VAR *, char *)); extern int skipsubscript __P((const char *, int)); + extern void print_array_assignment __P((SHELL_VAR *, int)); +extern void print_assoc_assignment __P((SHELL_VAR *, int)); extern arrayind_t array_expand_index __P((char *, int)); extern int valid_array_reference __P((char *)); extern char *array_value __P((char *, int, int *)); extern char *get_array_value __P((char *, int, int *)); +extern char *array_keys __P((char *, int)); + extern char *array_variable_name __P((char *, char **, int *)); extern SHELL_VAR *array_variable_part __P((char *, char **, int *)); diff --git a/src/bin/bash/assoc.c b/src/bin/bash/assoc.c new file mode 100644 index 0000000000..476facb340 --- /dev/null +++ b/src/bin/bash/assoc.c @@ -0,0 +1,518 @@ +/* + * assoc.c - functions to manipulate associative arrays + * + * Associative arrays are standard shell hash tables. + * + * Chet Ramey + * chet@ins.cwru.edu + */ + +/* Copyright (C) 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 "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 __P((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; + FREE (b->data); + b->data = value ? savestring (value) : (char *)0; + return (0); +} + +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) +HASH_TABLE *hash; +arrayind_t start, nelem; +int starsub, quoted; +{ + 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) + 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); + + 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; +{ + BUCKET_CONTENTS *tlist; + int i, slen; + HASH_TABLE *h2; + char *t, *sifs, *ifs; + + if (h == 0 || assoc_empty (h)) + return ((char *)NULL); + + h2 = assoc_copy (h); + for (i = 0; i < h2->nbuckets; i++) + for (tlist = hash_items (i, h2); tlist; tlist = tlist->next) + { + t = pat_subst ((char *)tlist->data, pat, rep, mflags); + FREE (tlist->data); + tlist->data = t; + } + + if (mflags & MATCH_QUOTED) + assoc_quote (h2); + else + assoc_quote_escapes (h2); + + if (mflags & MATCH_STARSUB) + { + assoc_remove_quoted_nulls (h2); + sifs = ifs_firstchar ((int *)NULL); + t = assoc_to_string (h2, sifs, 0); + free (sifs); + } + else if (mflags & MATCH_QUOTED) + { + /* ${array[@]} */ + sifs = ifs_firstchar (&slen); + ifs = getifs (); + if (ifs == 0 || *ifs == 0) + { + if (slen < 2) + sifs = xrealloc (sifs, 2); + sifs[0] = ' '; + sifs[1] = '\0'; + } + t = assoc_to_string (h2, sifs, 0); + free(sifs); + } + else + t = assoc_to_string (h2, " ", 0); + + assoc_dispose (h2); + + return t; +} + +char * +assoc_modcase (h, pat, modop, mflags) + HASH_TABLE *h; + char *pat; + int modop; + int mflags; +{ + BUCKET_CONTENTS *tlist; + int i, slen; + HASH_TABLE *h2; + char *t, *sifs, *ifs; + + if (h == 0 || assoc_empty (h)) + return ((char *)NULL); + + h2 = assoc_copy (h); + for (i = 0; i < h2->nbuckets; i++) + for (tlist = hash_items (i, h2); tlist; tlist = tlist->next) + { + t = sh_modcase ((char *)tlist->data, pat, modop); + FREE (tlist->data); + tlist->data = t; + } + + if (mflags & MATCH_QUOTED) + assoc_quote (h2); + else + assoc_quote_escapes (h2); + + if (mflags & MATCH_STARSUB) + { + assoc_remove_quoted_nulls (h2); + sifs = ifs_firstchar ((int *)NULL); + t = assoc_to_string (h2, sifs, 0); + free (sifs); + } + else if (mflags & MATCH_QUOTED) + { + /* ${array[@]} */ + sifs = ifs_firstchar (&slen); + ifs = getifs (); + if (ifs == 0 || *ifs == 0) + { + if (slen < 2) + sifs = xrealloc (sifs, 2); + sifs[0] = ' '; + sifs[1] = '\0'; + } + t = assoc_to_string (h2, sifs, 0); + free(sifs); + } + else + t = assoc_to_string (h2, " ", 0); + + assoc_dispose (h2); + + return t; +} + +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) + { + istr = tlist->key; + vstr = tlist->data ? 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++] = ' '; + + 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; + 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 (""); + return result; +} + +#endif /* ARRAY_VARS */ diff --git a/src/bin/bash/assoc.h b/src/bin/bash/assoc.h new file mode 100644 index 0000000000..1ec1f6b23b --- /dev/null +++ b/src/bin/bash/assoc.h @@ -0,0 +1,61 @@ +/* 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 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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_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 __P((HASH_TABLE *)); +extern void assoc_flush __P((HASH_TABLE *)); + +extern int assoc_insert __P((HASH_TABLE *, char *, char *)); +extern void assoc_remove __P((HASH_TABLE *, char *)); + +extern char *assoc_reference __P((HASH_TABLE *, char *)); + +extern char *assoc_subrange __P((HASH_TABLE *, arrayind_t, arrayind_t, int, int)); +extern char *assoc_patsub __P((HASH_TABLE *, char *, char *, int)); +extern char *assoc_modcase __P((HASH_TABLE *, char *, int, int)); + +extern HASH_TABLE *assoc_quote __P((HASH_TABLE *)); +extern HASH_TABLE *assoc_quote_escapes __P((HASH_TABLE *)); +extern HASH_TABLE *assoc_dequote __P((HASH_TABLE *)); +extern HASH_TABLE *assoc_dequote_escapes __P((HASH_TABLE *)); +extern HASH_TABLE *assoc_remove_quoted_nulls __P((HASH_TABLE *)); + +extern char *assoc_to_assign __P((HASH_TABLE *, int)); + +extern WORD_LIST *assoc_to_word_list __P((HASH_TABLE *)); +extern WORD_LIST *assoc_keys_to_word_list __P((HASH_TABLE *)); + +extern char *assoc_to_string __P((HASH_TABLE *, char *, int)); +#endif /* _ASSOC_H_ */ diff --git a/src/bin/bash/bash.rdef b/src/bin/bash/bash.rdef index 0561db63f8..1841bee0a3 100644 --- a/src/bin/bash/bash.rdef +++ b/src/bin/bash/bash.rdef @@ -1,11 +1,11 @@ resource app_version { - major = 2, + major = 4, middle = 0, - minor = 5, + minor = 0, variety = 5, internal = 0, - short_info = "2.05b", - long_info = "2.05b ©2004 The Free Software Foundation" + short_info = "4.0.0", + long_info = "4.0.0 Copyright 2009 The Free Software Foundation" }; diff --git a/src/bin/bash/bashansi.h b/src/bin/bash/bashansi.h index e7f11585b1..2c33937d0d 100644 --- a/src/bin/bash/bashansi.h +++ b/src/bin/bash/bashansi.h @@ -1,22 +1,22 @@ /* bashansi.h -- Typically included information required by picky compilers. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/bashhist.c b/src/bin/bash/bashhist.c index 809026687c..5c61f67568 100644 --- a/src/bin/bash/bashhist.c +++ b/src/bin/bash/bashhist.c @@ -1,22 +1,22 @@ /* bashhist.c -- bash interface to the GNU history library. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -36,6 +36,8 @@ #include "posixstat.h" #include "filecntl.h" +#include "bashintl.h" + #include "shell.h" #include "flags.h" #include "input.h" @@ -50,6 +52,7 @@ #if defined (READLINE) # include "bashline.h" +extern int rl_done, rl_dispatching; /* should really include readline.h */ #endif #if !defined (errno) @@ -58,6 +61,7 @@ extern int errno; static int histignore_item_func __P((struct ign *)); static int check_history_control __P((char *)); +static void hc_erasedups __P((char *)); static void really_add_history __P((char *)); static struct ignorevar histignore = @@ -76,8 +80,12 @@ static struct ignorevar histignore = list. This is different than the user-controlled behaviour; this becomes zero when we read lines from a file, for example. */ int remember_on_history = 1; +int enable_history_list = 1; /* value for `set -o history' */ -/* The number of lines that Bash has added to this history session. */ +/* 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. */ @@ -134,10 +142,14 @@ int literal_history; exit, even if the history has been stifled. */ int force_append_history; -/* A nit for picking at history saving. - Value of 0 means save all lines parsed by the shell on the history. - Value of 1 means save all lines that do not start with a space. - Value of 2 means save all lines that do not match the last line saved. */ +/* 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 @@ -145,6 +157,10 @@ int history_control; 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. */ @@ -206,6 +222,9 @@ bash_initialize_history () history_quotes_inhibit_expansion = 1; history_search_delimiter_chars = ";&()|<>"; history_inhibit_expansion_function = bash_history_inhibit_expansion; +#if defined (BANG_HISTORY) + sv_histchars ("histchars"); +#endif } void @@ -216,7 +235,7 @@ bash_history_reinit (interact) history_expansion = interact != 0; history_expansion_inhibited = 1; #endif - remember_on_history = interact != 0; + remember_on_history = enable_history_list = interact != 0; history_inhibit_expansion_function = bash_history_inhibit_expansion; } @@ -246,19 +265,21 @@ void load_history () { char *hf; - struct stat buf; /* Truncate history file for interactive shells which desire it. Note that the history file is automatically truncated to the size of HISTSIZE if the user does not explicitly set the size differently. */ + set_if_not ("HISTSIZE", "500"); + sv_histsize ("HISTSIZE"); + set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE")); sv_histsize ("HISTFILESIZE"); /* Read the history in HISTFILE into the history list. */ hf = get_string_value ("HISTFILE"); - if (hf && *hf && stat (hf, &buf) == 0) + if (hf && *hf && file_exists (hf)) { read_history (hf); using_history (); @@ -266,16 +287,65 @@ load_history () } } +void +bash_clear_history () +{ + clear_history (); + history_lines_this_session = 0; +} + +/* 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 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; - struct stat buf; hf = get_string_value ("HISTFILE"); - if (hf && *hf && stat (hf, &buf) == 0) + if (hf && *hf && file_exists (hf)) { /* Append only the lines that occurred this session to the history file. */ @@ -285,7 +355,6 @@ save_history () append_history (history_lines_this_session, hf); else write_history (hf); - sv_histsize ("HISTFILESIZE"); } } @@ -307,7 +376,7 @@ maybe_append_history (filename) fd = open (filename, O_WRONLY|O_CREAT, 0600); if (fd < 0) { - builtin_error ("%s: cannot create: %s", filename, strerror (errno)); + builtin_error (_("%s: cannot create: %s"), filename, strerror (errno)); return (EXECUTION_FAILURE); } close (fd); @@ -326,7 +395,6 @@ maybe_save_shell_history () { int result; char *hf; - struct stat buf; result = 0; if (history_lines_this_session) @@ -336,7 +404,7 @@ maybe_save_shell_history () if (hf && *hf) { /* If the file doesn't exist, then create it. */ - if (stat (hf, &buf) == -1) + if (file_exists (hf) == 0) { int file; file = open (hf, O_CREAT | O_TRUNC | O_WRONLY, 0600); @@ -433,12 +501,19 @@ pre_process_line (line, print_changes, addit) /* 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) + if (history_reediting && expanded < 0 && rl_done) re_edit (line); # endif /* READLINE */ return ((char *)NULL); @@ -511,27 +586,49 @@ check_history_control (line) HIST_ENTRY *temp; int r; - switch (history_control) + 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) { - case 0: /* nothing */ - return 1; - case 1: /* ignorespace */ - return (*line != ' '); - case 3: /* ignoreboth */ - if (*line == ' ') - return 0; - /* FALLTHROUGH if case == 3 (`ignoreboth') */ - case 2: /* ignoredups */ using_history (); temp = previous_history (); r = (temp == 0 || STREQ (temp->line, line) == 0); using_history (); - return r; + + if (r == 0) + return r; } - return 0; + return 1; +} + +/* Remove all entries matching LINE from the history list. Triggered when + HISTCONTROL includes `erasedups'. */ +static void +hc_erasedups (line) + char *line; +{ + HIST_ENTRY *temp; + int r; + + using_history (); + while (temp = previous_history ()) + { + if (STREQ (temp->line, line)) + { + r = where_history (); + remove_history (r); + } + } + using_history (); } /* Add LINE to the history list, handling possibly multi-line compound @@ -577,6 +674,11 @@ check_add_history (line, 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); @@ -635,10 +737,8 @@ bash_add_history (line) free (new_line); if (old) - { - FREE (old->line); - free (old); - } + free_history_entry (old); + add_it = 0; } } @@ -654,6 +754,7 @@ really_add_history (line) char *line; { hist_last_line_added = 1; + hist_last_line_pushed = 0; add_history (line); history_lines_this_session++; } @@ -662,7 +763,7 @@ int history_number () { using_history (); - return (get_string_value ("HISTSIZE") ? history_base + where_history () : 1); + return (remember_on_history ? history_base + where_history () : 1); } static int diff --git a/src/bin/bash/bashhist.h b/src/bin/bash/bashhist.h index f17e7e7fc7..c44e7c6073 100644 --- a/src/bin/bash/bashhist.h +++ b/src/bin/bash/bashhist.h @@ -1,29 +1,39 @@ /* bashhist.h -- interface to the bash history functions in bashhist.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) + 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; @@ -31,6 +41,7 @@ extern int history_control; extern int command_oriented_history; extern int current_command_first_line_saved; extern int hist_last_line_added; +extern int hist_last_line_pushed; # if defined (BANG_HISTORY) extern int history_expansion_inhibited; @@ -40,6 +51,9 @@ extern void bash_initialize_history __P((void)); extern void bash_history_reinit __P((int)); extern void bash_history_disable __P((void)); extern void bash_history_enable __P((void)); +extern void bash_clear_history __P((void)); +extern int bash_delete_histent __P((int)); +extern int bash_delete_last_history __P((void)); extern void load_history __P((void)); extern void save_history __P((void)); extern int maybe_append_history __P((char *)); diff --git a/src/bin/bash/bashintl.h b/src/bin/bash/bashintl.h index f9e6cdbbc1..7e6b83fc0c 100644 --- a/src/bin/bash/bashintl.h +++ b/src/bin/bash/bashintl.h @@ -1,35 +1,44 @@ -/* bashintl.h -- Internationalization stuff +/* bashintl.h -- Internationalization functions and defines. */ - Copyright (C) 1996 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ -/* Include this *after* config.h */ -#if defined (HAVE_LIBINTL_H) -# include +#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 @@ -38,12 +47,4 @@ # define setlocale(cat, loc) #endif -#if !defined (HAVE_TEXTDOMAIN) -# define textdomain(dom) -#endif - -#if !defined (HAVE_BINDTEXTDOMAIN) -# define bindtextdomain(dom, dir) -#endif - #endif /* !_BASHINTL_H_ */ diff --git a/src/bin/bash/bashjmp.h b/src/bin/bash/bashjmp.h index 2b4418937e..c26053d4bc 100644 --- a/src/bin/bash/bashjmp.h +++ b/src/bin/bash/bashjmp.h @@ -1,22 +1,22 @@ /* bashjmp.h -- wrapper for setjmp.h with necessary bash definitions. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _BASHJMP_H_ #define _BASHJMP_H_ @@ -33,9 +33,11 @@ extern procenv_t return_catch; /* used by `return' builtin */ 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 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/src/bin/bash/bashline.c b/src/bin/bash/bashline.c index 0e011b3390..c5e8369730 100644 --- a/src/bin/bash/bashline.c +++ b/src/bin/bash/bashline.c @@ -1,22 +1,22 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -40,6 +40,8 @@ #include #include "chartypes.h" #include "bashansi.h" +#include "bashintl.h" + #include "shell.h" #include "input.h" #include "builtins.h" @@ -48,7 +50,10 @@ #include "execute_cmd.h" #include "findcmd.h" #include "pathexp.h" +#include "shmbutil.h" + #include "builtins/common.h" + #include #include #include @@ -71,6 +76,8 @@ # define VI_EDITING_MODE 0 #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 __P((int, int)); #endif /* BRACE_COMPLETION */ @@ -97,7 +104,15 @@ static int alias_expand_line __P((int, int)); static int history_and_alias_expand_line __P((int, int)); #endif +static int bash_forward_shellword __P((int, int)); +static int bash_backward_shellword __P((int, int)); +static int bash_kill_shellword __P((int, int)); +static int bash_backward_kill_shellword __P((int, int)); + /* Helper functions for Readline. */ +static char *restore_tilde __P((char *, char *)); + +static void bash_directory_expansion __P((char **)); static int bash_directory_completion_hook __P((char **)); static int filename_completion_ignore __P((char **)); static int bash_push_line __P((void)); @@ -115,6 +130,7 @@ static char *command_subst_completion_function __P((const char *, int)); static void build_history_completion_array __P((void)); static char *history_completion_generator __P((const char *, int)); static int dynamic_complete_history __P((int, int)); +static int bash_dabbrev_expand __P((int, int)); static void initialize_hostname_list __P((void)); static void add_host_name __P((char *)); @@ -150,10 +166,16 @@ static char **prog_complete_matches; #endif /* Variables used here but defined in other files. */ -extern int current_command_line_count; +#if defined (BANG_HISTORY) +extern int hist_verify; +#endif + +extern int current_command_line_count, last_command_exit_value; +extern int array_needs_making; extern int posixly_correct, no_symbolic_links; extern char *current_prompt_string, *ps1_prompt; extern STRING_INT_ALIST word_token_alist[]; +extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; /* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual completion functions which indicate what type of completion should be @@ -186,11 +208,13 @@ static int bash_glob_completion_internal __P((int)); static int bash_glob_complete_word __P((int, int)); static int bash_glob_expand_word __P((int, int)); static int bash_glob_list_expansions __P((int, int)); + #endif /* SPECIFIC_COMPLETION_FUNCTIONS */ static int edit_and_execute_command __P((int, int, int, char *)); #if defined (VI_MODE) static int vi_edit_and_execute_command __P((int, int)); +static int bash_vi_complete __P((int, int)); #endif static int emacs_edit_and_execute_command __P((int, int)); @@ -205,11 +229,22 @@ 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; + static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:"; static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; +/* )) */ static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; +static int dot_in_path = 0; + /* What kind of quoting is performed by bash_quote_filename: COMPLETE_DQUOTE = double-quoting the filename COMPLETE_SQUOTE = single_quoting the filename @@ -220,6 +255,9 @@ static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; #define COMPLETE_BSQUOTE 3 static int completion_quoting_style = COMPLETE_BSQUOTE; +/* Flag values for the final argument to bash_default_completion */ +#define DEFCOMP_CMDPOS 1 + /* Change the readline VI-mode keymaps into or out of Posix.2 compliance. Called when the shell is put into or out of `posix' mode. */ void @@ -233,11 +271,20 @@ posix_readline_initialize (on_or_off) #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; @@ -245,13 +292,60 @@ enable_hostname_completion (on_or_off) { perform_hostname_completion = 1; rl_special_prefixes = "$@"; - rl_completer_word_break_characters = bash_completer_word_break_characters; } else { perform_hostname_completion = 0; rl_special_prefixes = "$"; - rl_completer_word_break_characters = bash_nohostname_word_break_characters; + } + + /* 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); @@ -261,6 +355,9 @@ enable_hostname_completion (on_or_off) void initialize_readline () { + rl_command_func_t *func; + char kseq[2]; + if (bash_readline_initialized) return; @@ -279,6 +376,11 @@ initialize_readline () 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); + #ifdef ALIAS rl_add_defun ("alias-expand-line", alias_expand_line, -1); # ifdef BANG_HISTORY @@ -314,58 +416,76 @@ initialize_readline () #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_in_map (CTRL('E'), shell_expand_line, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map (CTRL('E'), shell_expand_line, emacs_meta_keymap); - /* Bind up our special shell functions. */ #ifdef BANG_HISTORY - rl_bind_key_in_map ('^', history_expand_line, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('^', history_expand_line, emacs_meta_keymap); #endif - rl_bind_key_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap); - rl_bind_key_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap); + rl_bind_key_if_unbound_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap); + rl_bind_key_if_unbound_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap); /* In Bash, the user can switch editing modes with "set -o [vi emacs]", so it is not necessary to allow C-M-j for context switching. Turn off this occasionally confusing behaviour. */ - rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); - rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); + kseq[0] = CTRL('J'); + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); + kseq[0] = CTRL('M'); + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); #if defined (VI_MODE) rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); #endif #if defined (BRACE_COMPLETION) - rl_bind_key_in_map ('{', bash_brace_completion, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('{', bash_brace_completion, emacs_meta_keymap); /*}*/ #endif /* BRACE_COMPLETION */ #if defined (SPECIFIC_COMPLETION_FUNCTIONS) - rl_bind_key_in_map ('/', bash_complete_filename, emacs_meta_keymap); - rl_bind_key_in_map ('/', bash_possible_filename_completions, emacs_ctlx_keymap); + 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); - rl_bind_key_in_map ('~', bash_complete_username, emacs_meta_keymap); - rl_bind_key_in_map ('~', bash_possible_username_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_in_map ('@', bash_complete_hostname, emacs_meta_keymap); - rl_bind_key_in_map ('@', bash_possible_hostname_completions, emacs_ctlx_keymap); + rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap); - rl_bind_key_in_map ('$', bash_complete_variable, emacs_meta_keymap); - rl_bind_key_in_map ('$', bash_possible_variable_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_in_map ('!', bash_complete_command, emacs_meta_keymap); - rl_bind_key_in_map ('!', bash_possible_command_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_in_map ('g', bash_glob_complete_word, emacs_meta_keymap); - rl_bind_key_in_map ('*', bash_glob_expand_word, emacs_ctlx_keymap); - rl_bind_key_in_map ('g', bash_glob_list_expansions, 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 */ - rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap); + 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; @@ -378,12 +498,16 @@ initialize_readline () rl_ignore_some_completions_function = filename_completion_ignore; /* Bind C-xC-e to invoke emacs and run result as commands. */ - rl_bind_key_in_map (CTRL ('E'), emacs_edit_and_execute_command, emacs_ctlx_keymap); + rl_bind_key_if_unbound_in_map (CTRL ('E'), emacs_edit_and_execute_command, emacs_ctlx_keymap); #if defined (VI_MODE) - rl_bind_key_in_map ('v', vi_edit_and_execute_command, vi_movement_keymap); + rl_bind_key_if_unbound_in_map ('v', vi_edit_and_execute_command, vi_movement_keymap); # if defined (ALIAS) - rl_bind_key_in_map ('@', posix_edit_macros, vi_movement_keymap); + 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 = "'\""; @@ -394,7 +518,11 @@ initialize_readline () enable_hostname_completion (perform_hostname_completion); /* characters that need to be quoted when appearing in filenames. */ +#if 0 rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{"; /*}*/ +#else + rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/ +#endif rl_filename_quoting_function = bash_quote_filename; rl_filename_dequoting_function = bash_dequote_filename; rl_char_is_quoted_p = char_is_quoted; @@ -411,13 +539,19 @@ initialize_readline () bash_readline_initialized = 1; } +void +bashline_reinitialize () +{ + bash_readline_initialized = 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_reinitialize () +bashline_reset () { tilde_initialize (); rl_attempted_completion_function = attempt_shell_completion; @@ -708,16 +842,17 @@ operate_and_get_next (count, c) 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 VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-vi}}\"" +#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-emacs}}\"" +#define POSIX_VI_EDIT_COMMAND "fc -e vi" static int edit_and_execute_command (count, c, editing_mode, edit_command) int count, c, editing_mode; char *edit_command; { - char *command; - int r, cclc, rrs; + char *command, *metaval; + int r, cclc, rrs, metaflag; rrs = rl_readline_state; cclc = current_command_line_count; @@ -744,10 +879,17 @@ edit_and_execute_command (count, c, editing_mode, edit_command) command = savestring (edit_command); } + metaval = rl_variable_value ("input-meta"); + metaflag = RL_BOOLEAN_VARIABLE_VALUE (metaval); + /* Now, POSIX.1-2001 and SUSv3 say that the commands executed from the temporary file should be placed into the history. We don't do that yet. */ + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST); + if (rl_prep_term_function) + (*rl_prep_term_function) (metaflag); current_command_line_count = cclc; @@ -769,7 +911,10 @@ static int vi_edit_and_execute_command (count, c) int count, c; { - return (edit_and_execute_command (count, c, VI_EDITING_MODE, VI_EDIT_COMMAND)); + 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 */ @@ -803,6 +948,203 @@ posix_edit_macros (count, key) } #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 sindex, 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; + } + + /* 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 sindex, c, 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. */ + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) + BACKUP_CHAR (rl_line_buffer, slen, p); + break; + } + + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Now move backward until we hit a metacharacter or BOL. */ + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) + break; + 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 == 1) /* 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 == 1) /* 1 == emacs_mode */ + rl_mark = rl_point; + + return 0; +} + + /* **************************************************************** */ /* */ /* How To Do Shell Completion */ @@ -810,6 +1152,7 @@ posix_edit_macros (count, key) /* **************************************************************** */ #define COMMAND_SEPARATORS ";|&{(`" +/* )} */ static int check_redir (ti) @@ -844,7 +1187,7 @@ find_cmd_start (start) register int s, os; os = 0; - while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS)) <= start) && + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP)) <= start) && rl_line_buffer[s]) os = s+1; return os; @@ -856,7 +1199,7 @@ find_cmd_end (end) { register int e; - e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS); + e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS, SD_NOJMP); return e; } @@ -871,7 +1214,7 @@ find_cmd_name (start) ; /* skip until a shell break character */ - e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n"); + e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n", SD_NOJMP); name = substring (rl_line_buffer, s, e); @@ -902,7 +1245,7 @@ attempt_shell_completion (text, start, end) const char *text; int start, end; { - int in_command_position, ti, saveti, qc; + int in_command_position, ti, saveti, qc, dflags; char **matches, *command_separator_chars; command_separator_chars = COMMAND_SEPARATORS; @@ -922,7 +1265,7 @@ attempt_shell_completion (text, start, end) #if 1 /* If this is an open quote, maybe we're trying to complete a quoted command name. */ - if (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'') + if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'')) { qc = rl_line_buffer[ti]; saveti = ti--; @@ -970,8 +1313,9 @@ attempt_shell_completion (text, start, end) #if defined (PROGRAMMABLE_COMPLETION) /* Attempt programmable completion. */ - if (!matches && in_command_position == 0 && prog_completion_enabled && - (progcomp_size () > 0) && current_prompt_string == ps1_prompt) + if (matches == 0 && (in_command_position == 0 || text[0] == '\0') && + prog_completion_enabled && (progcomp_size () > 0) && + current_prompt_string == ps1_prompt) { int s, e, foundcs; char *n; @@ -984,7 +1328,9 @@ attempt_shell_completion (text, start, end) s = find_cmd_start (start); e = find_cmd_end (end); n = find_cmd_name (s); - if (e > s) + if (e == 0 && e == s && text[0] == '\0') + prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs); + else if (e > s && assignment (n, 0) == 0) prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); else foundcs = 0; @@ -992,27 +1338,43 @@ attempt_shell_completion (text, start, end) /* 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. */ + option has been set with the `-o default' option to complete or + compopt. */ if (foundcs) { - /* If the user specified that the compspec returns filenames, make - sure that readline knows it. */ - if (foundcs & COPT_FILENAMES) - rl_filename_completion_desired = 1; - /* If the user doesn't want a space appended, tell readline. */ - if (foundcs & COPT_NOSPACE) - rl_completion_suppress_append = 1; + 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 */ - return (matches); + if (matches || ((foundcs & COPT_BASHDEFAULT) == 0)) + return (matches); } } #endif + if (matches == 0) + { + dflags = 0; + if (in_command_position) + dflags |= DEFCOMP_CMDPOS; + matches = bash_default_completion (text, start, end, qc, dflags); + } + + return matches; +} + +char ** +bash_default_completion (text, start, end, qc, compflags) + const char *text; + int start, end, qc, compflags; +{ + char **matches; + + matches = (char **)NULL; + /* New posix-style command substitution or variable name? */ if (!matches && *text == '$') { @@ -1035,17 +1397,20 @@ attempt_shell_completion (text, start, end) /* 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 && in_command_position) + if (matches == 0 && (compflags & DEFCOMP_CMDPOS)) { - if (start == 0 && end == 0 && text[0] == '\0' && no_empty_command_completion) + /* 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 && *(x) != '~' && test_for_directory (x)) +#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 @@ -1055,25 +1420,28 @@ attempt_shell_completion (text, start, end) 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])) - /* Turn off rl_filename_completion_desired so readline doesn't - append a slash if there is a directory with the same name - in the current directory, or other filename-specific things. - If the name begins with a slash, we're either completing a - full pathname or a directory pathname, and readline won't be - looking in the current directory anyway, so there's no - conflict. */ - rl_filename_completion_desired = 0; + 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 off - rl_filename_completion_desired for the same reason as above. + 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_filename_completion_desired = 0; + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } } } @@ -1107,51 +1475,110 @@ command_word_completion_function (hint_text, state) static char *path = (char *)NULL; static char *val = (char *)NULL; static char *filename_hint = (char *)NULL; - static int path_index, hint_len, istate; - static int mapping_over, local_index; + static char *dequoted_hint = (char *)NULL; + static char *directory_part = (char *)NULL; + static char **glob_matches = (char **)NULL; + static int path_index, hint_len, dequoted_len, istate, igncase; + static int mapping_over, local_index, searching_path, hint_is_dir; + static int 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; /* We have to map over the possibilities for command words. If we have no state, then make one just for that purpose. */ - if (!state) + if (state == 0) { + if (dequoted_hint && dequoted_hint != hint) + free (dequoted_hint); if (hint) free (hint); - mapping_over = 0; + 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 = glob_pattern_p (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 (absolute_program (hint_text)) + 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(). */ if (*hint_text == '~') - hint = bash_tilde_expand (hint_text, 0); + { + 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 hint = savestring (hint_text); - hint_len = strlen (hint); + + dequoted_hint = hint; + /* If readline's completer found a quote character somewhere, but + didn't set the quote character, there must have been a quote + character embedded in the filename. It can't be at the start of + the filename, so we need to dequote the filename before we look + in the file system for it. */ + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + free (hint); + hint = dequoted_hint; + } + dequoted_len = hint_len = strlen (hint); if (filename_hint) free (filename_hint); + filename_hint = savestring (hint); - mapping_over = 4; istate = 0; - goto inner; + + if (globpat) + { + mapping_over = 5; + goto globword; + } + else + { + mapping_over = 4; + goto inner; + } } - hint = savestring (hint_text); - hint_len = strlen (hint); + dequoted_hint = hint = savestring (hint_text); + dequoted_len = hint_len = strlen (hint); + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + dequoted_len = strlen (dequoted_hint); + } + path = get_string_value ("PATH"); - path_index = 0; + path_index = dot_in_path = 0; /* Initialize the variables for each type of command word. */ local_index = 0; @@ -1237,6 +1664,60 @@ command_word_completion_function (hint_text, state) 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 (glob_pattern_p (hint)) + { + if (state == 0) + { + glob_ignore_case = igncase; + glob_matches = shell_glob_filename (hint); + 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 == '~') + { + temp = 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. */ @@ -1244,16 +1725,17 @@ command_word_completion_function (hint_text, state) istate = (val != (char *)NULL); - if (!istate) + if (istate == 0) { char *current_path; /* Get the next directory from the path. If there is none, then we are all done. */ - if (!path || !path[path_index] || + 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); @@ -1269,12 +1751,14 @@ command_word_completion_function (hint_text, state) current_path = t; } + if (current_path[0] == '.' && current_path[1] == '\0') + dot_in_path = 1; + if (filename_hint) free (filename_hint); filename_hint = sh_makepath (current_path, hint, 0); - - free (current_path); + free (current_path); /* XXX */ } inner: @@ -1293,23 +1777,18 @@ command_word_completion_function (hint_text, state) else { int match, freetemp; - char *temp; if (absolute_program (hint)) { - match = strncmp (val, hint, hint_len) == 0; + if (igncase == 0) + match = strncmp (val, hint, hint_len) == 0; + else + match = strncasecmp (val, hint, hint_len) == 0; + /* If we performed tilde expansion, restore the original filename. */ if (*hint_text == '~') - { - int l, tl, vl; - vl = strlen (val); - tl = strlen (hint_text); - l = vl - hint_len; /* # of chars added */ - temp = (char *)xmalloc (l + 2 + tl); - strcpy (temp, hint_text); - strcpy (temp + tl, val + vl - l); - } + temp = restore_tilde (val, directory_part); else temp = savestring (val); freetemp = 1; @@ -1321,7 +1800,10 @@ command_word_completion_function (hint_text, state) if (temp) { temp++; - freetemp = match = strncmp (temp, hint, hint_len) == 0; + 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); } @@ -1329,9 +1811,18 @@ command_word_completion_function (hint_text, state) freetemp = match = 0; } +#if 0 /* If we have found a match, and it is an executable file or a directory name, return it. */ if (match && executable_or_directory (val)) +#else + /* If we have found a match, and it is an executable file, return it. + We don't return directory names when searching $PATH, since the + bash execution code won't find executables in directories which + appear in directories in $PATH when they're specified using + relative pathnames. */ + if (match && (searching_path ? executable_file (val) : executable_or_directory (val))) +#endif { free (val); val = ""; /* So it won't be NULL. */ @@ -1368,6 +1859,9 @@ command_subst_completion_function (text, state) 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) @@ -1397,6 +1891,13 @@ command_subst_completion_function (text, state) /* If there is more than one match, rl_completion_matches has already put the lcd in matches[0]. Skip over it. */ cmd_index = matches && matches[0] && matches[1]; + + /* If there's a single match and it's a directory, set the append char + to the expected `/'. Otherwise, don't append anything. */ + if (matches && matches[0] && matches[1] == 0 && test_for_directory (matches[0])) + rl_completion_append_character = '/'; + else + rl_completion_suppress_append = 1; } if (!matches || !matches[cmd_index]) @@ -1557,8 +2058,9 @@ bash_servicename_completion_function (text, state) if (snamelen == 0 || (STREQN (sname, srvent->s_name, snamelen))) break; /* Not primary, check aliases */ - for (alist = srvent->s_aliases; aentry = *alist; alist++) + for (alist = srvent->s_aliases; *alist; alist++) { + aentry = *alist; if (STREQN (sname, aentry, snamelen)) { afound = 1; @@ -1634,8 +2136,13 @@ 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 @@ -1646,11 +2153,20 @@ 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); + FREE (to_free); putc ('\r', rl_outstream); rl_forced_update_display (); } @@ -1767,7 +2283,7 @@ tcsh_magic_space (count, ignore) else return (1); } -#endif +#endif /* BANG_HISTORY */ /* History and alias expand the line. */ static int @@ -1776,9 +2292,10 @@ history_and_alias_expand_line (count, ignore) { char *new_line; - new_line = pre_process_line (rl_line_buffer, 0, 0); - if (new_line == rl_line_buffer) - new_line = savestring (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) @@ -1814,9 +2331,10 @@ shell_expand_line (count, ignore) char *new_line; WORD_LIST *expanded_string; - new_line = pre_process_line (rl_line_buffer, 0, 0); - if (new_line == rl_line_buffer) - new_line = savestring (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) @@ -1876,10 +2394,6 @@ shell_expand_line (count, ignore) } } -/* Define NO_FORCE_FIGNORE if you want to match filenames that would - otherwise be ignored if they are the only possible matches. */ -/* #define NO_FORCE_FIGNORE */ - /* 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 @@ -1904,10 +2418,8 @@ _ignore_completion_names (names, name_func) { char **newnames; int idx, nidx; -#ifdef NO_FORCE_FIGNORE char **oldnames; int oidx; -#endif /* 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 @@ -1915,13 +2427,13 @@ _ignore_completion_names (names, name_func) if there is only one completion; it is the completion itself. */ if (names[1] == (char *)0) { -#ifndef NO_FORCE_FIGNORE - if ((*name_func) (names[0]) == 0) - { - free (names[0]); - names[0] = (char *)NULL; - } -#endif + if (force_fignore) + if ((*name_func) (names[0]) == 0) + { + free (names[0]); + names[0] = (char *)NULL; + } + return; } @@ -1930,22 +2442,22 @@ _ignore_completion_names (names, name_func) for (nidx = 1; names[nidx]; nidx++) ; newnames = strvec_create (nidx + 1); -#ifdef NO_FORCE_FIGNORE - oldnames = strvec_create (nidx - 1); - oidx = 0; -#endif + + 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 -#ifndef NO_FORCE_FIGNORE - free (names[idx]); -#else + else if (force_fignore == 0) oldnames[oidx++] = names[idx]; -#endif + else + free (names[idx]); } newnames[nidx] = (char *)NULL; @@ -1953,21 +2465,24 @@ _ignore_completion_names (names, name_func) /* If none are acceptable then let the completer handle it. */ if (nidx == 1) { -#ifndef NO_FORCE_FIGNORE - free (names[0]); - names[0] = (char *)NULL; -#else - free (oldnames); -#endif + if (force_fignore) + { + free (names[0]); + names[0] = (char *)NULL; + } + else + free (oldnames); + free (newnames); return; } -#ifdef NO_FORCE_FIGNORE - while (oidx) - free (oldnames[--oidx]); - free (oldnames); -#endif + 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) @@ -2031,22 +2546,19 @@ filename_completion_ignore (names) return 0; } -/* Return 1 if NAME is a directory. */ +/* Return 1 if NAME is a directory. NAME undergoes tilde expansion. */ static int test_for_directory (name) const char *name; { - struct stat finfo; char *fn; + int r; fn = bash_tilde_expand (name, 0); - if (stat (fn, &finfo) != 0) - { - free (fn); - return 0; - } + r = file_isdir (fn); free (fn); - return (S_ISDIR (finfo.st_mode)); + + return (r); } /* Remove files from NAMES, leaving directories. */ @@ -2073,6 +2585,73 @@ bash_ignore_everything (names) 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; + + 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); + 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; + + ret = (char *)xmalloc (dl2 + 2 + l); + strcpy (ret, dh2); + strcpy (ret + dl2, val + xl); + + free (dh2); + 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); + + if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_completion_found_quote) + { + nd = bash_dequote_filename (d, rl_completion_quote_character); + free (*dirname); + free (d); + *dirname = nd; + } +} + /* Handle symbolic link references and other directory name expansions while hacking completion. */ static int @@ -2082,13 +2661,11 @@ bash_directory_completion_hook (dirname) char *local_dirname, *new_dirname, *t; int return_value, should_expand_dirname; WORD_LIST *wl; + struct stat sb; return_value = should_expand_dirname = 0; local_dirname = *dirname; -#if 0 - should_expand_dirname = xstrchr (local_dirname, '$') || xstrchr (local_dirname, '`'); -#else if (xstrchr (local_dirname, '$')) should_expand_dirname = 1; else @@ -2097,12 +2674,18 @@ bash_directory_completion_hook (dirname) if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0) should_expand_dirname = 1; } + +#if defined (HAVE_LSTAT) + if (should_expand_dirname && lstat (local_dirname, &sb) == 0) +#else + if (should_expand_dirname && stat (local_dirname, &sb) == 0) #endif + should_expand_dirname = 0; if (should_expand_dirname) { new_dirname = savestring (local_dirname); - wl = expand_prompt_string (new_dirname, 0); /* does the right thing */ + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ if (wl) { *dirname = string_list (wl); @@ -2123,8 +2706,15 @@ bash_directory_completion_hook (dirname) return 1; } } + else + { + /* Dequote the filename even if we don't expand it. */ + new_dirname = bash_dequote_filename (local_dirname, rl_completion_quote_character); + free (local_dirname); + local_dirname = *dirname = new_dirname; + } - if (!no_symbolic_links && (local_dirname[0] != '.' || local_dirname[1])) + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) { char *temp1, *temp2; int len1, len2; @@ -2133,6 +2723,19 @@ bash_directory_completion_hook (dirname) temp1 = make_absolute (local_dirname, t); free (t); temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* Try spelling correction if initial canonicalization fails. */ + if (temp2 == 0 && dircomplete_spelling) + { + 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) { @@ -2143,9 +2746,12 @@ bash_directory_completion_hook (dirname) if (temp1[len1 - 1] == '/') { len2 = strlen (temp2); - temp2 = (char *)xrealloc (temp2, len2 + 2); - temp2[len2] = '/'; - temp2[len2 + 1] = '\0'; + if (len2 > 2) /* don't append `/' to `/' or `//' */ + { + temp2 = (char *)xrealloc (temp2, len2 + 2); + temp2[len2] = '/'; + temp2[len2 + 1] = '\0'; + } } free (local_dirname); *dirname = temp2; @@ -2232,12 +2838,12 @@ dynamic_complete_history (count, key) int count, key; { int r; - rl_compentry_func_t *orig_func; rl_completion_func_t *orig_attempt_func; orig_func = rl_completion_entry_function; orig_attempt_func = rl_attempted_completion_function; + rl_completion_entry_function = history_completion_generator; rl_attempted_completion_function = (rl_completion_func_t *)NULL; @@ -2252,6 +2858,33 @@ dynamic_complete_history (count, key) return r; } +static int +bash_dabbrev_expand (count, key) + int count, key; +{ + int r; + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + + orig_func = rl_menu_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + + rl_menu_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_filename_completion_desired = 0; + + /* XXX - use rl_completion_mode here? */ + if (rl_last_func == bash_dabbrev_expand) + rl_last_func = rl_menu_complete; + r = rl_menu_complete (count, key); + + rl_last_func = bash_dabbrev_expand; + rl_menu_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + + return r; +} + #if defined (SPECIFIC_COMPLETION_FUNCTIONS) static int bash_complete_username (ignore, ignore2) @@ -2295,7 +2928,7 @@ bash_complete_filename_internal (what_to_do) rl_compentry_func_t *orig_func; rl_completion_func_t *orig_attempt_func; rl_icppfunc_t *orig_dir_func; - const char *orig_rl_completer_word_break_characters; + /*const*/ char *orig_rl_completer_word_break_characters; int r; orig_func = rl_completion_entry_function; @@ -2391,7 +3024,7 @@ glob_complete_word (text, state) static char **matches = (char **)NULL; static int ind; int glen; - char *ret; + char *ret, *ttext; if (state == 0) { @@ -2401,17 +3034,22 @@ glob_complete_word (text, state) FREE (globorig); FREE (globtext); + ttext = bash_tilde_expand (text, 0); + if (rl_explicit_arg) { - globorig = savestring (text); - glen = strlen (text); + globorig = savestring (ttext); + glen = strlen (ttext); globtext = (char *)xmalloc (glen + 2); - strcpy (globtext, text); + strcpy (globtext, ttext); globtext[glen] = '*'; globtext[glen+1] = '\0'; } else - globtext = globorig = savestring (text); + globtext = globorig = savestring (ttext); + + if (ttext != text) + free (ttext); matches = shell_glob_filename (globtext); if (GLOB_FAILED (matches)) @@ -2452,7 +3090,8 @@ bash_glob_complete_word (count, key) int r; rl_quote_func_t *orig_quoting_function; - rl_explicit_arg = 1; /* force `*' append */ + 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; @@ -2500,6 +3139,63 @@ bash_specific_completion (what_to_do, generator) #endif /* SPECIFIC_COMPLETION_FUNCTIONS */ +#if defined (VI_MODE) +/* Completion, from vi mode's point of view. This is a modified version of + rl_vi_complete which uses the bash globbing code to implement what POSIX + specifies, which is to append a `*' and attempt filename generation (which + has the side effect of expanding any globbing characters in the word). */ +static int +bash_vi_complete (count, key) + int count, key; +{ +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + int p, r; + char *t; + + if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) + { + if (!whitespace (rl_line_buffer[rl_point + 1])) + rl_vi_end_word (1, 'E'); + rl_point++; + } + + /* Find boundaries of current word, according to vi definition of a + `bigword'. */ + t = 0; + if (rl_point > 0) + { + p = rl_point; + rl_vi_bWord (1, 'B'); + r = rl_point; + rl_point = p; + p = r; + + t = substring (rl_line_buffer, p, rl_point); + } + + if (t && glob_pattern_p (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); + + if (key == '*') /* Expansion and replacement. */ + r = bash_glob_expand_word (count, key); + else if (key == '=') /* List possible completions. */ + r = bash_glob_list_expansions (count, key); + else if (key == '\\') /* Standard completion */ + r = bash_glob_complete_word (count, key); + else + r = rl_complete (0, key); + + if (key == '*' || key == '\\') + rl_vi_start_inserting (key, 1, 1); + + return (r); +#else + return rl_vi_complete (count, key); +#endif /* !SPECIFIC_COMPLETION_FUNCTIONS */ +} +#endif /* VI_MODE */ + /* Filename quoting for completion. */ /* A function to strip unquoted quote characters (single quotes, double quotes, and backslashes). It allows single quotes to appear @@ -2516,9 +3212,17 @@ bash_dequote_filename (text, quote_char) ret = (char *)xmalloc (l + 1); for (quoted = quote_char, p = text, r = ret; p && *p; p++) { - /* Allow backslash-quoted characters to pass through unscathed. */ + /* 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[p[1]] & CBSDQUOTE) == 0)) + *r++ = *p; + *r++ = *++p; if (*p == '\0') break; @@ -2569,6 +3273,9 @@ quote_word_break_chars (text) rl_completer_word_break_characters. */ if (xstrchr (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'; @@ -2599,10 +3306,6 @@ bash_quote_filename (s, rtype, qcp) to perform tilde expansion, because single and double quotes inhibit tilde expansion by the shell. */ - mtext = s; - if (mtext[0] == '~' && rtype == SINGLE_MATCH) - mtext = bash_tilde_expand (s, 0); - 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 @@ -2610,7 +3313,7 @@ bash_quote_filename (s, rtype, qcp) the word being completed contains newlines, since those are not quoted correctly using backslashes (a backslash-newline pair is special to the shell parser). */ - if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && xstrchr (mtext, '\n')) + if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && xstrchr (s, '\n')) cs = COMPLETE_SQUOTE; else if (*qcp == '"') cs = COMPLETE_DQUOTE; @@ -2618,17 +3321,23 @@ bash_quote_filename (s, rtype, qcp) cs = COMPLETE_SQUOTE; #if defined (BANG_HISTORY) else if (*qcp == '\0' && history_expansion && cs == COMPLETE_DQUOTE && - history_expansion_inhibited == 0 && xstrchr (mtext, '!')) + history_expansion_inhibited == 0 && xstrchr (s, '!')) cs = COMPLETE_BSQUOTE; if (*qcp == '"' && history_expansion && cs == COMPLETE_DQUOTE && - history_expansion_inhibited == 0 && xstrchr (mtext, '!')) + history_expansion_inhibited == 0 && xstrchr (s, '!')) { cs = COMPLETE_BSQUOTE; *qcp = '\0'; } #endif + /* Don't tilde-expand backslash-quoted filenames, since only single and + double quotes inhibit tilde expansion. */ + mtext = s; + if (mtext[0] == '~' && rtype == SINGLE_MATCH && cs != COMPLETE_BSQUOTE) + mtext = bash_tilde_expand (s, 0); + switch (cs) { case COMPLETE_DQUOTE: @@ -2678,9 +3387,12 @@ bash_execute_unix_command (count, key) Keymap ckmap; /* current keymap */ Keymap xkmap; /* unix command executing keymap */ register int i; - char *cmd; - int old_line_count; - int *ts; + intmax_t mi; + int save_point; + sh_parser_state_t ps; + char *cmd, *value, *l; + SHELL_VAR *v; + char ibuf[INT_STRLEN_BOUND(int) + 1]; /* First, we need to find the right command to execute. This is tricky, because we might have already indirected into another keymap. */ @@ -2698,7 +3410,7 @@ bash_execute_unix_command (count, key) else { rl_crlf (); - internal_error ("bash_execute_unix_command: cannot find keymap for command"); + internal_error (_("bash_execute_unix_command: cannot find keymap for command")); rl_forced_update_display (); return 1; } @@ -2716,14 +3428,41 @@ bash_execute_unix_command (count, key) rl_crlf (); /* move to a new line */ - old_line_count = current_command_line_count; - ts = save_token_state (); + v = bind_variable ("READLINE_LINE", rl_line_buffer, 0); + if (v) + VSETATTR (v, att_exported); + l = value_cell (v); + save_point = rl_point; + value = inttostr (rl_point, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_POINT", value); + if (v) + VSETATTR (v, att_exported); + array_needs_making = 1; - cmd = savestring (cmd); - parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST); + save_parser_state (&ps); + parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); + restore_parser_state (&ps); - current_command_line_count = old_line_count; - restore_token_state (ts); + v = find_variable ("READLINE_LINE"); + if (value_cell (v) != l) + maybe_make_readline_line (value_cell (v)); + v = find_variable ("READLINE_POINT"); + if (v && legal_number (value_cell (v), &mi)) + { + i = mi; + if (i != save_point) + { + rl_point = i; + if (rl_point > rl_end) + rl_point = rl_end; + else if (rl_point < 0) + rl_point = 0; + } + } + + unbind_variable ("READLINE_LINE"); + unbind_variable ("READLINE_POINT"); + array_needs_making = 1; /* and restore the readline buffer and display after command execution. */ rl_forced_update_display (); @@ -2749,7 +3488,7 @@ isolate_sequence (string, ind, need_dquote, startp) /* 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); + builtin_error (_("%s: first non-whitespace character is not `\"'"), string); return -1; } @@ -2778,7 +3517,7 @@ isolate_sequence (string, ind, need_dquote, startp) if (delim && string[i] != delim) { - builtin_error ("%s: no closing `%c'", string, delim); + builtin_error (_("no closing `%c' in %s"), delim, string); return -1; } @@ -2812,7 +3551,7 @@ bind_keyseq_to_unix_command (line) ; if (line[i] != ':') { - builtin_error ("%s: missing colon separator", line); + builtin_error (_("%s: missing colon separator"), line); return -1; } @@ -2828,7 +3567,7 @@ bind_keyseq_to_unix_command (line) /* and bind the key sequence in the current keymap to a function that understands how to execute from CMD_XMAP */ - rl_set_key (kseq, bash_execute_unix_command, kmap); + rl_bind_keyseq_in_map (kseq, bash_execute_unix_command, kmap); return 0; } @@ -2844,7 +3583,7 @@ bash_directory_completion_matches (text) char *dfn; int qc; - qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0; + qc = rl_dispatching ? rl_completion_quote_character : 0; dfn = bash_dequote_filename ((char *)text, qc); m1 = rl_completion_matches (dfn, rl_filename_completion_function); free (dfn); @@ -2857,4 +3596,16 @@ bash_directory_completion_matches (text) (void)bash_ignore_filenames (m1); return m1; } + +char * +bash_dequote_text (text) + const char *text; +{ + char *dtxt; + int qc; + + qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0; + dtxt = bash_dequote_filename ((char *)text, qc); + return (dtxt); +} #endif /* READLINE */ diff --git a/src/bin/bash/bashline.h b/src/bin/bash/bashline.h index 32d3b0982b..9daa8f9fdc 100644 --- a/src/bin/bash/bashline.h +++ b/src/bin/bash/bashline.h @@ -1,22 +1,22 @@ /* bashline.h -- interface to the bash readline functions in bashline.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -26,13 +26,17 @@ extern int bash_readline_initialized; extern void posix_readline_initialize __P((int)); +extern void reset_completer_word_break_chars __P((void)); extern int enable_hostname_completion __P((int)); extern void initialize_readline __P((void)); +extern void bashline_reset __P((void)); extern void bashline_reinitialize __P((void)); extern int bash_re_edit __P((char *)); extern int bind_keyseq_to_unix_command __P((char *)); +extern char **bash_default_completion __P((const char *, int, int, int, int)); + /* Used by programmable completion code. */ extern char *command_word_completion_function __P((const char *, int)); extern char *bash_groupname_completion_function __P((const char *, int)); @@ -42,5 +46,6 @@ extern char **get_hostname_list __P((void)); extern void clear_hostname_list __P((void)); extern char **bash_directory_completion_matches __P((const char *)); +extern char *bash_dequote_text __P((const char *)); #endif /* _BASHLINE_H_ */ diff --git a/src/bin/bash/bashtypes.h b/src/bin/bash/bashtypes.h index 7409247c09..f773652174 100644 --- a/src/bin/bash/bashtypes.h +++ b/src/bin/bash/bashtypes.h @@ -1,22 +1,22 @@ /* bashtypes.h -- Bash system types. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/bracecomp.c b/src/bin/bash/bracecomp.c index 34fc91e8d0..cb218a2bf4 100644 --- a/src/bin/bash/bracecomp.c +++ b/src/bin/bash/bracecomp.c @@ -4,25 +4,26 @@ /* Original version by tromey@cns.caltech.edu, Fri Feb 7 1992. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -35,10 +36,13 @@ #endif #include "bashansi.h" +#include "shmbutil.h" #include "shell.h" #include +static int _strcompare __P((char **, char **)); + /* Find greatest common prefix of two strings. */ static int string_gcd (s1, s2) @@ -145,6 +149,19 @@ really_munge_braces (array, real_start, real_end, gcd_zero) 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; @@ -152,7 +169,11 @@ hack_braces_completion (names) register int i; char *temp; - temp = really_munge_braces (names, 1, strvec_len (names), 0); + 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) { diff --git a/src/bin/bash/braces.c b/src/bin/bash/braces.c index 4f5b0f0f3b..4e0c08a795 100644 --- a/src/bin/bash/braces.c +++ b/src/bin/bash/braces.c @@ -1,22 +1,22 @@ /* braces.c -- code for doing word expansion in curly braces. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* Stuff in curly braces gets expanded before all other shell expansions. */ @@ -39,9 +39,14 @@ #include "general.h" #include "shmbutil.h" +#include "chartypes.h" #define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') +#define BRACE_SEQ_SPECIFIER ".." + +extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + /* Basic idea: Segregate the text into 3 sections: preamble (stuff before an open brace), @@ -52,18 +57,34 @@ */ /* The character which is used to separate arguments. */ -int brace_arg_separator = ','; +static const int brace_arg_separator = ','; #if defined (__P) static int brace_gobbler __P((char *, size_t, int *, int)); -static char **expand_amble __P((char *, size_t)); +static char **expand_amble __P((char *, size_t, int)); +static char **expand_seqterm __P((char *, size_t)); +static char **mkseq __P((int, int, int, int, int)); static char **array_concat __P((char **, char **)); #else static int brace_gobbler (); static char **expand_amble (); +static char **expand_seqterm (); +static char **mkseq(); static char **array_concat (); #endif +#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) @@ -74,14 +95,45 @@ brace_expand (text) char *preamble, *postamble, *amble; size_t alen; char **tack, **result; - int i, j, c; + int i, j, c, c1; DECLARE_MBSTATE; /* Find the text of the preamble. */ tlen = strlen (text); i = 0; - c = brace_gobbler (text, tlen, &i, '{'); +#if defined (CSH_BRACE_COMPAT) + c = brace_gobbler (text, tlen, &i, '{'); /* } */ +#else + /* Make sure that when we exit this loop, c == 0 or text[i] begins a + valid brace expansion sequence. */ + do + { + c = brace_gobbler (text, tlen, &i, '{'); /* } */ + c1 = c; + /* Verify that c begins a valid brace expansion word. If it doesn't, we + go on. Loop stops when there are no more open braces in the word. */ + if (c) + { + start = j = i + 1; /* { */ + c = brace_gobbler (text, tlen, &j, '}'); + if (c == 0) /* it's not */ + { + i++; + c = c1; + continue; + } + else /* it is */ + { + c = c1; + break; + } + } + else + break; + } + while (c); +#endif /* !CSH_BRACE_COMPAT */ preamble = (char *)xmalloc (i + 1); strncpy (preamble, text, i); @@ -117,9 +169,9 @@ brace_expand (text) } if (text[j] == brace_arg_separator) - { + { /* { */ strvec_dispose (result); - report_error ("missing `}'"); + report_error ("no closing `%c' in %s", '}', text); throw_to_top_level (); } ADVANCE_CHAR (text, tlen, j); @@ -161,22 +213,29 @@ brace_expand (text) ADVANCE_CHAR (amble, alen, j); } - if (!amble[j]) + if (amble[j] == 0) { - free (amble); - free (preamble); - result[0] = savestring (text); - return (result); + tack = expand_seqterm (amble, alen); + if (tack) + goto add_tack; + else + { + free (amble); + free (preamble); + result[0] = savestring (text); + return (result); + } } #endif /* SHELL */ - postamble = &text[i + 1]; - - tack = expand_amble (amble, alen); + tack = expand_amble (amble, alen, 0); +add_tack: result = array_concat (result, tack); free (amble); strvec_dispose (tack); + postamble = text + i + 1; + tack = brace_expand (postamble); result = array_concat (result, tack); strvec_dispose (tack); @@ -189,9 +248,10 @@ brace_expand (text) expand each slot which needs it, until there are no more slots which need it. */ static char ** -expand_amble (text, tlen) +expand_amble (text, tlen, flags) char *text; size_t tlen; + int flags; { char **result, **partial; char *tem; @@ -220,9 +280,10 @@ expand_amble (text, tlen) result = partial; else { - register int lr = strvec_len (result); - register int lp = strvec_len (partial); - register int j; + register int lr, lp, j; + + lr = strvec_len (result); + lp = strvec_len (partial); result = strvec_resize (result, lp + lr + 1); @@ -239,10 +300,174 @@ expand_amble (text, tlen) 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) + int start, end, incr, type, width; +{ + int n, i; + char **result, *t; + + n = abs (end - start) + 1; + result = strvec_create (n + 1); + + if (incr == 0) + incr = 1; + + if (start > end && incr > 0) + incr = -incr; + else if (start < end && incr < 0) + incr = -incr; + + /* Make sure we go through the loop at least once, so {3..3} prints `3' */ + i = 0; + n = start; + do + { +#if defined (SHELL) + QUIT; /* XXX - memory leak here */ +#endif + if (type == ST_INT) + result[i++] = itos (n); + else if (type == ST_ZINT) + { + int len; + len = asprintf (&t, "%0*d", width, n); + result[i++] = t; + } + else + { + t = (char *)xmalloc (2); + t[0] = n; + t[1] = '\0'; + result[i++] = t; + } + 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 i, lhs_t, rhs_t, lhs_v, rhs_v, incr, lhs_l, rhs_l, width; + intmax_t tl, tr; + char **result, *ep; + + 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; + tr = strtoimax (rhs, &ep, 10); + if (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) + { + if (ep && *ep == '.' && ep[1] == '.' && ep[2]) + incr = strtoimax (ep + 2, &ep, 10); + if (*ep != 0) + rhs_t = ST_BAD; /* invalid incr */ + } + + 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; + } + + 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; @@ -250,7 +475,7 @@ brace_gobbler (text, tlen, indx, satisfy) int *indx; int satisfy; { - register int i, c, quoted, level, pass_next; + register int i, c, quoted, level, commas, pass_next; #if defined (SHELL) int si; char *t; @@ -258,6 +483,11 @@ brace_gobbler (text, tlen, indx, satisfy) 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]) @@ -278,6 +508,18 @@ brace_gobbler (text, tlen, indx, satisfy) 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) @@ -294,11 +536,11 @@ brace_gobbler (text, tlen, indx, satisfy) } #if defined (SHELL) - /* Pass new-style command substitutions through unchanged. */ - if (c == '$' && text[i+1] == '(') /* ) */ + /* Pass new-style command and process substitutions through unchanged. */ + if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */ { si = i + 2; - t = extract_command_subst (text, &si); + t = extract_command_subst (text, &si, 0); i = si; free (t); i++; @@ -306,7 +548,7 @@ brace_gobbler (text, tlen, indx, satisfy) } #endif - if (c == satisfy && level == 0 && quoted == 0) + 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 @@ -318,11 +560,7 @@ brace_gobbler (text, tlen, indx, satisfy) i++; continue; } -#if defined (SHELL) - /* If this is being compiled as part of bash, ignore the `{' - in a `${}' construct */ - if ((c != '{') || i == 0 || (text[i - 1] != '$')) -#endif /* SHELL */ + break; } @@ -330,6 +568,13 @@ brace_gobbler (text, tlen, indx, satisfy) level++; else if (c == '}' && level) level--; +#if !defined (CSH_BRACE_COMPAT) + else if (satisfy == '}' && c == brace_arg_separator && level == 0) + commas++; + else if (satisfy == '}' && STREQN (text+i, BRACE_SEQ_SPECIFIER, 2) && + text[i+2] != satisfy && level == 0) + commas++; +#endif ADVANCE_CHAR (text, tlen, i); } @@ -368,8 +613,7 @@ array_concat (arr1, arr2) for (j = 0; j < len2; j++) { - result[len] = - (char *)xmalloc (1 + strlen_1 + strlen (arr2[j])); + result[len] = (char *)xmalloc (1 + strlen_1 + strlen (arr2[j])); strcpy (result[len], arr1[i]); strcpy (result[len] + strlen_1, arr2[j]); len++; diff --git a/src/bin/bash/builtins.h b/src/bin/bash/builtins.h index 53fb5274ef..8f7b461781 100644 --- a/src/bin/bash/builtins.h +++ b/src/bin/bash/builtins.h @@ -1,22 +1,22 @@ /* builtins.h -- What a builtin looks like, and where to find them. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -35,11 +35,14 @@ #endif /* Flags describing various things about a builtin. */ -#define BUILTIN_ENABLED 0x1 /* This builtin is enabled. */ -#define BUILTIN_DELETED 0x2 /* This has been deleted with enable -d. */ -#define STATIC_BUILTIN 0x4 /* This builtin is not dynamically loaded. */ -#define SPECIAL_BUILTIN 0x8 /* This is a Posix `special' builtin. */ +#define 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 BASE_INDENT 4 /* The thing that we build the array of builtins out of. */ struct builtin { diff --git a/src/bin/bash/builtins/Makefile.in b/src/bin/bash/builtins/Makefile.in index 53ae75ac06..96dfaa3ca0 100644 --- a/src/bin/bash/builtins/Makefile.in +++ b/src/bin/bash/builtins/Makefile.in @@ -1,20 +1,25 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# 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@ @@ -33,8 +38,12 @@ prefix = @prefix@ srcdir = @srcdir@ VPATH = .:@srcdir@ topdir = @top_srcdir@ + +datarootdir = @datarootdir@ + includedir = @includedir@ datadir = @datadir@ +localedir = @localedir@ # Support an alternate destination root directory for package building DESTDIR = @@ -43,9 +52,11 @@ 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@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} @@ -54,7 +65,7 @@ LOCAL_DEFS = @LOCAL_DEFS@ LIBS = @LIBS@ LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) -LDFLAGS_FOR_BUILD = $(LDFLAGS) +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) @@ -63,10 +74,18 @@ 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 -INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) +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) @@ -82,6 +101,7 @@ GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ MKBUILTINS = mkbuiltins$(EXEEXT) DIRECTDEFINE = -D $(srcdir) HELPDIRDEFINE = @HELPDIRDEFINE@ +HELPSTRINGS = @HELPSTRINGS@ # xxx this is bad style RL_LIBSRC = $(topdir)/lib/readline @@ -106,7 +126,8 @@ RL_LIBSRC = $(topdir)/lib/readline $(CC) -c $(CCFLAGS) $< DEFSRC = $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.def \ - $(srcdir)/builtin.def $(srcdir)/cd.def $(srcdir)/colon.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 \ @@ -118,16 +139,16 @@ DEFSRC = $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.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)/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 cd.o colon.o command.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 \ + 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 @@ -145,7 +166,7 @@ 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) $(DEFSRC) + -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC) @-if cmp -s old-builtext.h builtext.h 2>/dev/null; then \ mv old-builtext.h builtext.h; \ else \ @@ -162,9 +183,8 @@ helpdoc: $(MKBUILTINS) $(DEFSRC) install-help: @-if test -n "${HELPDIR}" && test -d helpfiles ; then \ - test -d ${HELPDIR} || ${SHELL} ${MKDIRS} $(DESTDIR)$(HELPDIR) ;\ - ( cd helpfiles ; \ - for f in *; do \ + test -d $(DESTDIR)${HELPDIR} || ${SHELL} ${MKDIRS} $(DESTDIR)$(HELPDIR) ;\ + ( for f in helpfiles/*; do \ echo installing $$f; \ ${INSTALL_DATA} $$f $(DESTDIR)$(HELPDIR); \ done; ) ; \ @@ -214,10 +234,25 @@ distclean maintainer-clean: clean $(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 @@ -235,6 +270,7 @@ 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 @@ -263,7 +299,7 @@ bashgetopt.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topd 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: $(topdir)/pathnames.h $(topdir)/externs.h $(srcdir)/common.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 @@ -274,7 +310,7 @@ 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 $(topdir)/pathnames.h ./builtext.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 @@ -283,7 +319,7 @@ evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir 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: $(topdir)/pathnames.h $(topdir)/externs.h +evalfile.o: ../pathnames.h $(topdir)/externs.h evalfile.o: $(topdir)/jobs.h $(topdir)/builtins.h $(topdir)/flags.h evalfile.o: $(topdir)/input.h $(topdir)/execute_cmd.h evalfile.o: $(topdir)/bashhist.h $(srcdir)/common.h @@ -303,8 +339,8 @@ getopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(topdir)/com 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 $(topdir)/pathnames.h $(topdir)/externs.h -getopt.o: $(srcdir)/getopt.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 @@ -331,6 +367,12 @@ builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h builtin.o: $(srcdir)/bashgetopt.h +caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h +caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h +caller.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +caller.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ./builtext.h +caller.o: ${BASHINCDIR}/chartypes.h $(topdir)/bashtypes.h cd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h cd.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h cd.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h @@ -347,6 +389,7 @@ declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h declare.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h declare.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h declare.o: $(topdir)/arrayfunc.h $(srcdir)/bashgetopt.h +declare.o: ./builtext.h echo.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h echo.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h @@ -362,7 +405,7 @@ enable.o: $(topdir)/pcomplete.h eval.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h eval.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h eval.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -eval.o: $(topdir)/subst.h $(topdir)/externs.h +eval.o: $(topdir)/subst.h $(topdir)/externs.h eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h eval.o: $(BASHINCDIR)/maxpath.h exec.o: $(topdir)/bashtypes.h @@ -372,12 +415,12 @@ exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h exec.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/flags.h exec.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exec.o: $(srcdir)/common.h $(topdir)/execute_cmd.h $(BASHINCDIR)/maxpath.h -exec.o: $(topdir)/findcmd.h +exec.o: $(topdir)/findcmd.h $(topdir)/jobs.h exit.o: $(topdir)/bashtypes.h exit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -exit.o: $(topdir)/subst.h $(topdir)/externs.h +exit.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/jobs.h exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h @@ -395,6 +438,7 @@ fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +fg_bg.o: $(topdir)/jobs.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h @@ -416,7 +460,7 @@ history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -history.o: $(topdir)/subst.h $(topdir)/externs.h +history.o: $(topdir)/subst.h $(topdir)/externs.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h inlib.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h @@ -426,7 +470,7 @@ inlib.o: $(BASHINCDIR)/maxpath.h $(topdir)/subst.h $(topdir)/externs.h inlib.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h jobs.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h jobs.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(srcdir)/bashgetopt.h -jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h +jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h $(topdir)/jobs.h jobs.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h jobs.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h kill.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h @@ -434,6 +478,7 @@ kill.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/exte kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h kill.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/trap.h $(topdir)/unwind_prot.h kill.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/maxpath.h +kill.o: $(topdir)/jobs.h let.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h let.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h @@ -443,13 +488,13 @@ 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: $(topdir)/pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h +printf.o: ../pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h printf.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/stdc.h $(srcdir)/bashgetopt.h printf.o: $(topdir)/bashtypes.h ${srcdir}/common.h $(BASHINCDIR)/chartypes.h pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h pushd.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -pushd.o: $(topdir)/subst.h $(topdir)/externs.h +pushd.o: $(topdir)/subst.h $(topdir)/externs.h pushd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h pushd.o: $(BASHINCDIR)/maxpath.h $(srcdir)/common.h ./builtext.h read.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h @@ -474,7 +519,7 @@ setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h -setattr.o: $(topdir)/externs.h +setattr.o: $(topdir)/externs.h setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h setattr.o: $(topdir)/arrayfunc.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h @@ -487,12 +532,13 @@ source.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/fi source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -source.o: $(srcdir)/bashgetopt.h +source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h suspend.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h suspend.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +suspend.o: $(topdir)/jobs.h test.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h @@ -533,6 +579,7 @@ wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +wait.o: $(topdir)/jobs.h wait.o: $(BASHINCDIR)/chartypes.h shopt.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h shopt.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h @@ -541,12 +588,56 @@ shopt.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h shopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h shopt.o: $(srcdir)/common.h $(srcdir)/bashgetopt.h -complete.o: ../config.h +complete.o: ../config.h complete.o: ${topdir}/shell.h $(topdir)/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h ${topdir}/sig.h complete.o: ${topdir}/unwind_prot.h ${topdir}/variables.h complete.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h complete.o: ${topdir}/builtins.h complete.o: ${topdir}/pcomplete.h complete.o: ${srcdir}/common.h ${srcdir}/bashgetopt.h +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 +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 #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/src/bin/bash/builtins/alias.def b/src/bin/bash/builtins/alias.def index f51df94858..d760cebe07 100644 --- a/src/bin/bash/builtins/alias.def +++ b/src/bin/bash/builtins/alias.def @@ -1,35 +1,43 @@ This file is alias.def, from which is created alias.c It implements the builtins "alias" and "unalias" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] ... ] -`alias' with no arguments or with the -p option prints the list -of aliases in the form alias NAME=VALUE on standard output. +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. Alias returns -true unless a NAME is given for which no alias has been defined. +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 @@ -44,6 +52,7 @@ $END #endif # include "../bashansi.h" +# include "../bashintl.h" # include # include "../shell.h" @@ -51,17 +60,23 @@ $END # include "common.h" # include "bashgetopt.h" -static void print_alias __P((alias_t *)); +/* Flags for print_alias */ +#define AL_REUSABLE 0x01 + +static void print_alias __P((alias_t *, int)); + +extern int posixly_correct; /* Hack the alias command in a Korn shell way. */ int alias_builtin (list) WORD_LIST *list; { - int any_failed, offset, pflag; + 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) @@ -70,6 +85,7 @@ alias_builtin (list) { case 'p': pflag = 1; + dflags |= AL_REUSABLE; break; default: builtin_usage (); @@ -90,12 +106,12 @@ alias_builtin (list) return (EXECUTION_SUCCESS); for (offset = 0; alias_list[offset]; offset++) - print_alias (alias_list[offset]); + print_alias (alias_list[offset], dflags); free (alias_list); /* XXX - Do not free the strings. */ if (list == 0) - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } any_failed = 0; @@ -111,13 +127,19 @@ alias_builtin (list) name[offset] = '\0'; value = name + offset + 1; - add_alias (name, value); + 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); + print_alias (t, dflags); else { sh_notfound (name); @@ -134,9 +156,13 @@ alias_builtin (list) $BUILTIN unalias $FUNCTION unalias_builtin $DEPENDS_ON ALIAS -$SHORT_DOC unalias [-a] [name ...] -Remove NAMEs from the list of defined aliases. If the -a option is given, -then remove all alias definitions. +$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) @@ -171,6 +197,12 @@ unalias_builtin (list) return (EXECUTION_SUCCESS); } + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + aflag = 0; while (list) { @@ -192,13 +224,16 @@ unalias_builtin (list) /* Output ALIAS in such a way as to allow it to be read back in. */ static void -print_alias (alias) +print_alias (alias, flags) alias_t *alias; + int flags; { char *value; value = sh_single_quote (alias->value); - printf ("alias %s=%s\n", alias->name, value); + if (flags & AL_REUSABLE) + printf ("alias "); + printf ("%s=%s\n", alias->name, value); free (value); fflush (stdout); diff --git a/src/bin/bash/builtins/bashgetopt.c b/src/bin/bash/builtins/bashgetopt.c index 4c8d907a9c..b1b7070603 100644 --- a/src/bin/bash/builtins/bashgetopt.c +++ b/src/bin/bash/builtins/bashgetopt.c @@ -2,21 +2,21 @@ /* Copyright (C) 1992-2002 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/builtins/bashgetopt.h b/src/bin/bash/builtins/bashgetopt.h index 835797c150..f2aea2668d 100644 --- a/src/bin/bash/builtins/bashgetopt.h +++ b/src/bin/bash/builtins/bashgetopt.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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. */ diff --git a/src/bin/bash/builtins/bind.def b/src/bin/bash/builtins/bind.def index ddf561991a..fcc3bbb9a4 100644 --- a/src/bin/bash/builtins/bind.def +++ b/src/bin/bash/builtins/bind.def @@ -1,23 +1,22 @@ This file is bind.def, from which is created bind.c. It implements the builtin "bind" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES bind.c @@ -27,12 +26,15 @@ $BUILTIN bind $DEPENDS_ON READLINE $FUNCTION bind_builtin $SHORT_DOC bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command] -Bind a key sequence to a Readline function or a macro, or set -a Readline variable. The non-option argument syntax is equivalent -to that found in ~/.inputrc, but must be passed as a single argument: -bind '"\C-x\C-r": re-read-init-file'. -bind accepts the following options: - -m keymap Use `keymap' as the keymap for the duration of this +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. @@ -40,18 +42,21 @@ bind accepts the following options: -P List function names and bindings. -p List functions and bindings in a form that can be reused as input. - -r keyseq Remove the binding for KEYSEQ. - -x keyseq:shell-command Cause SHELL-COMMAND to be executed when - KEYSEQ is entered. - -f filename Read key bindings from FILENAME. - -q function-name Query about which keys invoke the named function. - -u function-name Unbind all keys which are bound to the named function. - -V List variable names and values - -v List variable names and values in a form that can - be reused as input. -S List key sequences that invoke macros and their values -s List key sequences that invoke macros and their values in a form that can be reused as input. + -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. + +Exit Status: +bind returns 0 unless an unrecognized option is given or an error occurs. $END #if defined (READLINE) @@ -72,6 +77,8 @@ extern int errno; #include #include +#include "../bashintl.h" + #include "../shell.h" #include "../bashline.h" #include "bashgetopt.h" @@ -108,14 +115,21 @@ bind_builtin (list) char *initfile, *map_name, *fun_name, *unbind_name, *remove_seq, *cmd_seq; if (no_line_editing) - return (EXECUTION_FAILURE); + { +#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 = (char *)NULL; return_code = EXECUTION_SUCCESS; - if (!bash_readline_initialized) + if (bash_readline_initialized == 0) initialize_readline (); begin_unwind_frame ("bind_builtin"); @@ -189,7 +203,7 @@ bind_builtin (list) kmap = rl_get_keymap_by_name (map_name); if (!kmap) { - builtin_error ("`%s': invalid keymap name", map_name); + builtin_error (_("`%s': invalid keymap name"), map_name); BIND_RETURN (EXECUTION_FAILURE); } } @@ -228,7 +242,7 @@ bind_builtin (list) { if (rl_read_init_file (initfile) != 0) { - builtin_error ("%s: cannot read: %s", initfile, strerror (errno)); + builtin_error (_("%s: cannot read: %s"), initfile, strerror (errno)); BIND_RETURN (EXECUTION_FAILURE); } } @@ -243,7 +257,7 @@ bind_builtin (list) { if (rl_set_key (remove_seq, (rl_command_func_t *)NULL, rl_get_keymap ()) != 0) { - builtin_error ("`%s': cannot unbind", remove_seq); + builtin_error (_("`%s': cannot unbind"), remove_seq); BIND_RETURN (EXECUTION_FAILURE); } } @@ -264,7 +278,7 @@ bind_builtin (list) run_unwind_frame ("bind_builtin"); - return (return_code); + return (sh_chkwrite (return_code)); } static int @@ -278,7 +292,7 @@ query_bindings (name) function = rl_named_function (name); if (function == 0) { - builtin_error ("`%s': unknown function name", name); + builtin_error (_("`%s': unknown function name"), name); return EXECUTION_FAILURE; } @@ -286,11 +300,11 @@ query_bindings (name) if (!keyseqs) { - printf ("%s is not bound to any keys.\n", name); + printf (_("%s is not bound to any keys.\n"), name); return EXECUTION_FAILURE; } - printf ("%s can be invoked via ", name); + 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]) @@ -308,7 +322,7 @@ unbind_command (name) function = rl_named_function (name); if (function == 0) { - builtin_error ("`%s': unknown function name", name); + builtin_error (_("`%s': unknown function name"), name); return EXECUTION_FAILURE; } diff --git a/src/bin/bash/builtins/break.def b/src/bin/bash/builtins/break.def index 1025414526..232ac1a71f 100644 --- a/src/bin/bash/builtins/break.def +++ b/src/bin/bash/builtins/break.def @@ -1,31 +1,35 @@ This file is break.def, from which is created break.c. It implements the builtins "break" and "continue" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 from within a FOR, WHILE or UNTIL loop. If N is specified, -break N levels. +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 @@ -36,6 +40,8 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "common.h" @@ -64,11 +70,11 @@ break_builtin (list) if (check_loop_level () == 0) return (EXECUTION_SUCCESS); - newbreak = get_numeric_arg (list, 1); + (void)get_numeric_arg (list, 1, &newbreak); if (newbreak <= 0) { - sh_erange (list->word->word, "loop count"); + sh_erange (list->word->word, _("loop count")); breaking = loop_level; return (EXECUTION_FAILURE); } @@ -84,8 +90,13 @@ break_builtin (list) $BUILTIN continue $FUNCTION continue_builtin $SHORT_DOC continue [n] -Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop. -If N is specified, resume at the N-th enclosing loop. +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 @@ -99,11 +110,11 @@ continue_builtin (list) if (check_loop_level () == 0) return (EXECUTION_SUCCESS); - newcont = get_numeric_arg (list, 1); + (void)get_numeric_arg (list, 1, &newcont); if (newcont <= 0) { - sh_erange (list->word->word, "loop count"); + sh_erange (list->word->word, _("loop count")); breaking = loop_level; return (EXECUTION_FAILURE); } @@ -123,7 +134,7 @@ 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"); + builtin_error (_("only meaningful in a `for', `while', or `until' loop")); #endif /* BREAK_COMPLAINS */ return (loop_level); diff --git a/src/bin/bash/builtins/builtin.def b/src/bin/bash/builtins/builtin.def index 8571f372a7..3e765e4108 100644 --- a/src/bin/bash/builtins/builtin.def +++ b/src/bin/bash/builtins/builtin.def @@ -1,32 +1,37 @@ This file is builtin.def, from which is created builtin.c. It implements the builtin "builtin" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 ...]] -Run a shell builtin. This is useful when you wish to rename a -shell builtin to be a function, but need the functionality of the -builtin within the function itself. +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 @@ -68,7 +73,7 @@ builtin_builtin (list) if (!function) { - builtin_error ("%s: not a shell builtin", command); + sh_notbuiltin (command); return (EXECUTION_FAILURE); } else diff --git a/src/bin/bash/builtins/caller.def b/src/bin/bash/builtins/caller.def new file mode 100644 index 0000000000..7ddbdad491 --- /dev/null +++ b/src/bin/bash/builtins/caller.def @@ -0,0 +1,153 @@ +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. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU 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; + + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); + + if (bash_lineno_a == 0 || array_empty (bash_lineno_a)) + return (EXECUTION_FAILURE); + + if (bash_source_a == 0 || array_empty (bash_source_a)) + return (EXECUTION_FAILURE); + + if (no_options (list)) + return (EX_USAGE); + list = loptend; /* skip over possible `--' */ + + /* If there is no argument list, then give short form: line filename. */ + if (list == 0) + { + lineno_s = array_reference (bash_lineno_a, 0); + source_s = array_reference (bash_source_a, 1); + printf("%s %s\n", lineno_s ? lineno_s : "NULL", source_s ? source_s : "NULL"); + return (EXECUTION_SUCCESS); + } + + if (funcname_a == 0 || array_empty (funcname_a)) + return (EXECUTION_FAILURE); + + if (legal_number (list->word->word, &num)) + { + lineno_s = array_reference (bash_lineno_a, num); + source_s = array_reference (bash_source_a, num+1); + funcname_s = array_reference (funcname_a, num+1); + + if (lineno_s == NULL|| source_s == NULL || funcname_s == NULL) + return (EXECUTION_FAILURE); + + printf("%s %s %s\n", lineno_s, funcname_s, source_s); + } + else + { + sh_invalidnum (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +#endif +} + +#ifdef LOADABLE_BUILTIN +static char *caller_doc[] = { +N_("Returns the context of the current subroutine call.\n\ + \n\ + Without EXPR, returns "$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/src/bin/bash/builtins/cd.def b/src/bin/bash/builtins/cd.def index 3c5c2af2f6..d53b25870a 100644 --- a/src/bin/bash/builtins/cd.def +++ b/src/bin/bash/builtins/cd.def @@ -1,23 +1,22 @@ This file is cd.def, from which is created cd.c. It implements the builtins "cd" and "pwd" in Bash. -Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES cd.c #include @@ -39,6 +38,7 @@ $PRODUCES cd.c #include #include "../bashansi.h" +#include "../bashintl.h" #include #include @@ -55,13 +55,13 @@ extern int errno; extern int posixly_correct; extern int array_needs_making; -extern char *bash_getcwd_errstr; +extern const char * const bash_getcwd_errstr; static int bindpwd __P((int)); +static void setpwd __P((char *)); +static char *resetpwd __P((char *)); static int change_to_directory __P((char *, int)); -static char *cdspell __P((char *)); - /* Change this to 1 to get cd spelling correction by default. */ int cdspelling = 0; @@ -70,27 +70,58 @@ int cdable_vars; $BUILTIN cd $FUNCTION cd_builtin $SHORT_DOC cd [-L|-P] [dir] -Change the current directory to DIR. The variable $HOME is the -default DIR. The variable CDPATH defines the search path for -the directory containing DIR. Alternative directory names in CDPATH -are separated by a colon (:). A null directory name is the same as -the current directory, i.e. `.'. If DIR begins with a slash (/), -then CDPATH is not used. If the directory is not found, and the -shell option `cdable_vars' is set, then try the word as a variable -name. If that variable has a value, then cd to the value of that -variable. The -P option says to use the physical directory structure -instead of following symbolic links; the -L option forces symbolic links -to be followed. +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 + -P use the physical directory structure without following symbolic + links + +The default is to follow symbolic links, as if `-L' were specified. + +Exit Status: +Returns 0 if the directory is changed; non-zero otherwise. $END +/* Just set $PWD, don't change OLDPWD. Used by `pwd -P' in posix mode. */ +static void +setpwd (dirname) + char *dirname; +{ + int old_anm; + SHELL_VAR *tvar; + + old_anm = array_needs_making; + tvar = bind_variable ("PWD", dirname ? dirname : "", 0); + if (old_anm == 0 && array_needs_making && exported_p (tvar)) + { + update_export_env_inplace ("PWD=", 4, dirname ? dirname : ""); + array_needs_making = 0; + } +} + static int bindpwd (no_symlinks) int no_symlinks; { char *dirname, *pwdvar; - int old_anm; + int old_anm, r; 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"); @@ -99,35 +130,32 @@ bindpwd (no_symlinks) old_anm = array_needs_making; pwdvar = get_string_value ("PWD"); - tvar = bind_variable ("OLDPWD", pwdvar); + tvar = bind_variable ("OLDPWD", pwdvar, 0); if (old_anm == 0 && array_needs_making && exported_p (tvar)) { update_export_env_inplace ("OLDPWD=", 7, pwdvar); array_needs_making = 0; } - tvar = bind_variable ("PWD", dirname); - if (old_anm == 0 && array_needs_making && exported_p (tvar)) - { - update_export_env_inplace ("PWD=", 4, dirname); - array_needs_making = 0; - } + setpwd (dirname); if (dirname && dirname != the_current_working_directory) free (dirname); - return (EXECUTION_SUCCESS); + + return (r); } /* Call get_working_directory to reset the value of the_current_working_directory () */ static char * -resetpwd () +resetpwd (caller) + char *caller; { char *tdir; FREE (the_current_working_directory); the_current_working_directory = (char *)NULL; - tdir = get_working_directory ("cd"); + tdir = get_working_directory (caller); return (tdir); } @@ -184,7 +212,7 @@ cd_builtin (list) if (dirname == 0) { - builtin_error ("HOME not set"); + builtin_error (_("HOME not set")); return (EXECUTION_FAILURE); } lflag = 0; @@ -196,14 +224,18 @@ cd_builtin (list) if (dirname == 0) { - builtin_error ("OLDPWD not set"); + builtin_error (_("OLDPWD not set")); return (EXECUTION_FAILURE); } +#if 0 lflag = interactive ? LCD_PRINTPATH : 0; +#else + lflag = LCD_PRINTPATH; /* According to SUSv3 */ +#endif } else if (absolute_pathname (list->word->word)) dirname = list->word->word; - else if (cdpath = get_string_value ("CDPATH")) + else if (privileged_mode == 0 && (cdpath = get_string_value ("CDPATH"))) { dirname = list->word->word; @@ -222,13 +254,17 @@ cd_builtin (list) 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) - printf ("%s\n", no_symlinks ? temp : the_current_working_directory); + 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); @@ -275,7 +311,7 @@ cd_builtin (list) typo. This is similar to the UNIX 8th and 9th Edition shells. */ if (lflag & LCD_DOSPELL) { - temp = cdspell (dirname); + temp = dirspell (dirname); if (temp && change_to_directory (temp, no_symlinks)) { printf ("%s\n", temp); @@ -291,10 +327,19 @@ cd_builtin (list) $BUILTIN pwd $FUNCTION pwd_builtin -$SHORT_DOC pwd [-PL] -Print the current working directory. With the -P option, pwd prints -the physical directory, without any symbolic links; the -L option -makes pwd follow symbolic links. +$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 @@ -307,16 +352,17 @@ pwd_builtin (list) WORD_LIST *list; { char *directory; - int opt; + 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 = 1; + verbatim_pwd = pflag = 1; break; case 'L': verbatim_pwd = 0; @@ -332,20 +378,24 @@ pwd_builtin (list) directory = tcwd ? (verbatim_pwd ? sh_physpath (tcwd, 0) : tcwd) : get_working_directory ("pwd"); + + /* Try again using getcwd() if canonicalization fails (for instance, if + the file system has changed state underneath bash). */ + if ((tcwd && directory == 0) || + (posixly_correct && same_file (".", tcwd, (struct stat *)0, (struct stat *)0) == 0)) + directory = resetpwd ("pwd"); + #undef tcwd if (directory) { printf ("%s\n", directory); + /* This is dumb but posix-mandated. */ + if (posixly_correct && pflag) + setpwd (directory); if (directory != the_current_working_directory) free (directory); - fflush (stdout); - if (ferror (stdout)) - { - builtin_error ("write error: %s", strerror (errno)); - return (EXECUTION_FAILURE); - } - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } else return (EXECUTION_FAILURE); @@ -363,7 +413,7 @@ change_to_directory (newdir, nolinks) int nolinks; { char *t, *tdir; - int err, canon_failed; + int err, canon_failed, r, ndlen, dlen; tdir = (char *)NULL; @@ -381,6 +431,9 @@ change_to_directory (newdir, nolinks) tdir = nolinks ? sh_physpath (t, 0) : sh_canonpath (t, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + ndlen = strlen (newdir); + dlen = strlen (t); + /* Use the canonicalized version of NEWDIR, or, if canonicalization failed, use the non-canonical form. */ canon_failed = 0; @@ -396,10 +449,15 @@ change_to_directory (newdir, nolinks) /* In POSIX mode, if we're resolving symlinks logically and sh_canonpath returns NULL (because it checks the path, it will return NULL if the resolved path doesn't exist), fail immediately. */ - if (posixly_correct && nolinks == 0 && canon_failed) + if (posixly_correct && nolinks == 0 && canon_failed && (errno != ENAMETOOLONG || ndlen > PATH_MAX)) { +#if defined ENAMETOOLONG + if (errno != ENOENT && errno != ENAMETOOLONG) +#else if (errno != ENOENT) +#endif errno = ENOTDIR; + free (tdir); return (0); } @@ -409,62 +467,47 @@ change_to_directory (newdir, nolinks) /* If canonicalization failed, but the chdir succeeded, reset the shell's idea of the_current_working_directory. */ if (canon_failed) - resetpwd (); - else { - FREE (the_current_working_directory); - the_current_working_directory = tdir; + t = resetpwd ("cd"); + if (t == 0) + set_working_directory (tdir); } + else + set_working_directory (tdir); + free (tdir); return (1); } /* We failed to change to the appropriate directory name. If we tried what the user passed (nolinks != 0), punt now. */ if (nolinks) - return (0); + { + free (tdir); + return (0); + } err = errno; - free (tdir); /* We're not in physical mode (nolinks == 0), but we failed to change to the canonicalized directory name (TDIR). Try what the user passed verbatim. If we succeed, reinitialize the_current_working_directory. */ if (chdir (newdir) == 0) { - tdir = resetpwd (); - FREE (tdir); + t = resetpwd ("cd"); + if (t == 0) + set_working_directory (tdir); + else + free (t); - return (1); + r = 1; } else { errno = err; - return (0); - } -} - -/* Code for cd spelling correction. Original patch submitted by - Neil Russel (caret@c-side.com). */ - -static char * -cdspell (dirname) - char *dirname; -{ - int n; - char *guess; - - n = (strlen (dirname) * 3 + 1) / 2 + 1; - guess = (char *)xmalloc (n); - - switch (spname (dirname, guess)) - { - case -1: - default: - free (guess); - return (char *)NULL; - case 0: - case 1: - return guess; + r = 0; } + + free (tdir); + return r; } diff --git a/src/bin/bash/builtins/colon.def b/src/bin/bash/builtins/colon.def index a7cdc12506..4b78b30c12 100644 --- a/src/bin/bash/builtins/colon.def +++ b/src/bin/bash/builtins/colon.def @@ -1,23 +1,22 @@ This file is colon.def, from which is created colon.c. It implements the builtin ":" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES colon.c @@ -25,19 +24,30 @@ $BUILTIN : $DOCNAME colon $FUNCTION colon_builtin $SHORT_DOC : -No effect; the command does nothing. A zero exit code is returned. +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 /* Return a successful result. */ diff --git a/src/bin/bash/builtins/command.def b/src/bin/bash/builtins/command.def index dcbbec1481..77f91268bd 100644 --- a/src/bin/bash/builtins/command.def +++ b/src/bin/bash/builtins/command.def @@ -1,35 +1,42 @@ This file is command.def, from which is created command.c. It implements the builtin "command" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 ...] -Runs COMMAND with ARGS ignoring shell functions. If you have a shell -function called `ls', and you wish to call the command `ls', you can -say "command ls". If the -p option is given, a default value is used -for PATH that is guaranteed to find all of the standard utilities. If -the -V or -v option is given, a string is printed describing COMMAND. -The -V option produces a more verbose description. +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 @@ -78,7 +85,7 @@ command_builtin (list) use_standard_path = 1; break; case 'V': - verbose = CDESC_SHORTDESC; /* look in common.h for constants */ + verbose = CDESC_SHORTDESC|CDESC_ABSPATH; /* look in common.h for constants */ break; case 'v': verbose = CDESC_REUSABLE; /* ditto */ @@ -101,7 +108,7 @@ command_builtin (list) { found = describe_command (list->word->word, verbose); - if (found == 0) + if (found == 0 && verbose != CDESC_REUSABLE) sh_notfound (list->word->word); any_found += found; @@ -131,7 +138,7 @@ command_builtin (list) add_unwind_protect ((Function *)restore_path, old_path); standard_path = get_standard_path (); - bind_variable ("PATH", standard_path ? standard_path : ""); + bind_variable ("PATH", standard_path ? standard_path : "", 0); FREE (standard_path); } @@ -170,7 +177,7 @@ restore_path (var) { if (var) { - bind_variable ("PATH", var); + bind_variable ("PATH", var, 0); free (var); } else diff --git a/src/bin/bash/builtins/common.c b/src/bin/bash/builtins/common.c index b818600294..6ba641b802 100644 --- a/src/bin/bash/builtins/common.c +++ b/src/bin/bash/builtins/common.c @@ -1,20 +1,22 @@ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* common.c - utility functions for all builtins */ + +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -40,6 +42,9 @@ #endif #include "../bashansi.h" +#include "../bashintl.h" + +#define NEED_FPURGE_DECL #include "../shell.h" #include "maxpath.h" @@ -68,7 +73,7 @@ extern int last_command_exit_value; extern int running_trap; extern int posixly_correct; extern char *this_command_name, *shell_name; -extern char *bash_getcwd_errstr; +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; @@ -83,6 +88,22 @@ sh_builtin_func_t *this_shell_builtin = (sh_builtin_func_t *)NULL; /* 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, ...) @@ -93,16 +114,29 @@ builtin_error (format, va_alist) #endif { va_list args; - char *name; - name = get_name_for_error (); - fprintf (stderr, "%s: ", name); + builtin_error_prolog (); - if (interactive_shell == 0) - fprintf (stderr, "line %d: ", executing_line_number ()); + SH_VA_START (args, format); - if (this_command_name && *this_command_name) - fprintf (stderr, "%s: ", this_command_name); + 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); @@ -116,7 +150,7 @@ void builtin_usage () { if (this_command_name && *this_command_name) - fprintf (stderr, "%s: usage: ", this_command_name); + fprintf (stderr, _("%s: usage: "), this_command_name); fprintf (stderr, "%s\n", current_builtin->short_doc); fflush (stderr); } @@ -129,7 +163,8 @@ no_args (list) { if (list) { - builtin_error ("too many arguments"); + builtin_error (_("too many arguments")); + top_level_cleanup (); jump_to_top_level (DISCARD); } } @@ -153,21 +188,21 @@ void sh_needarg (s) char *s; { - builtin_error ("%s: option requires an argument", s); + builtin_error (_("%s: option requires an argument"), s); } void sh_neednumarg (s) char *s; { - builtin_error ("%s: numeric argument required", s); + builtin_error (_("%s: numeric argument required"), s); } void sh_notfound (s) char *s; { - builtin_error ("%s: not found", s); + builtin_error (_("%s: not found"), s); } /* Function called when one of the builtin commands detects an invalid @@ -176,49 +211,57 @@ void sh_invalidopt (s) char *s; { - builtin_error ("%s: invalid option", s); + builtin_error (_("%s: invalid option"), s); } void sh_invalidoptname (s) char *s; { - builtin_error ("%s: invalid option name", s); + builtin_error (_("%s: invalid option name"), s); } void sh_invalidid (s) char *s; { - builtin_error ("`%s': not a valid identifier", s); + builtin_error (_("`%s': not a valid identifier"), s); } void sh_invalidnum (s) char *s; { - builtin_error ("%s: invalid number", s); + char *msg; + + if (*s == '0' && isdigit (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); + builtin_error (_("%s: invalid signal specification"), s); } void sh_badpid (s) char *s; { - builtin_error ("`%s': not a pid or valid job spec", 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); + builtin_error (_("%s: readonly variable"), s); } void @@ -226,9 +269,9 @@ sh_erange (s, desc) char *s, *desc; { if (s) - builtin_error ("%s: %s out of range", s, desc ? desc : "argument"); + builtin_error (_("%s: %s out of range"), s, desc ? desc : _("argument")); else - builtin_error ("%s out of range", desc ? desc : "argument"); + builtin_error (_("%s out of range"), desc ? desc : _("argument")); } #if defined (JOB_CONTROL) @@ -236,7 +279,7 @@ void sh_badjob (s) char *s; { - builtin_error ("%s: no such job", s); + builtin_error (_("%s: no such job"), s); } void @@ -244,9 +287,9 @@ sh_nojobs (s) char *s; { if (s) - builtin_error ("%s: no job control"); + builtin_error (_("%s: no job control"), s); else - builtin_error ("no job control"); + builtin_error (_("no job control")); } #endif @@ -256,12 +299,53 @@ sh_restricted (s) char *s; { if (s) - builtin_error ("%s: restricted", s); + builtin_error (_("%s: restricted"), s); else - builtin_error ("restricted"); + 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; +{ + fflush (stdout); + if (ferror (stdout)) + { + sh_wrerror (); + fpurge (stdout); + clearerr (stdout); + return (EXECUTION_FAILURE); + } + return (s); +} + /* **************************************************************** */ /* */ /* Shell positional parameter manipulation */ @@ -357,36 +441,44 @@ set_dollar_vars_changed () /* Read a numeric arg for this_command_name, the name of the shell builtin that wants it. LIST is the word list that the arg is to come from. Accept only the numeric argument; report an error if other arguments - follow. If FATAL is true, call throw_to_top_level, which exits the - shell; if not, call jump_to_top_level (DISCARD), which aborts the - current command. */ -intmax_t -get_numeric_arg (list, fatal) + 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; { - intmax_t count = 1; + char *arg; + + if (count) + *count = 1; if (list && list->word && ISOPTION (list->word->word, '-')) list = list->next; if (list) { - register char *arg; - arg = list->word->word; - if (arg == 0 || (legal_number (arg, &count) == 0)) + if (arg == 0 || (legal_number (arg, count) == 0)) { - sh_neednumarg (list->word->word); - if (fatal) + 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 - jump_to_top_level (DISCARD); + else /* fatal == 2; discard current command */ + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } } no_args (list->next); } - return (count); + return (1); } /* Get an eight-bit status value from LIST */ @@ -453,29 +545,24 @@ char * get_working_directory (for_whom) char *for_whom; { - char *directory; - if (no_symbolic_links) { - if (the_current_working_directory) - free (the_current_working_directory); - + FREE (the_current_working_directory); the_current_working_directory = (char *)NULL; } if (the_current_working_directory == 0) { - the_current_working_directory = (char *)xmalloc (PATH_MAX); - the_current_working_directory[0] = '\0'; - directory = getcwd (the_current_working_directory, PATH_MAX); - if (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: could not get current directory: %s: %s\n", + 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)); - - free (the_current_working_directory); - the_current_working_directory = (char *)NULL; + _(bash_getcwd_errstr), strerror (errno)); return (char *)NULL; } } @@ -506,15 +593,17 @@ get_job_by_name (name, flags) { register int i, wl, cl, match, job; register PROCESS *p; + register JOB *j; job = NO_JOB; wl = strlen (name); - for (i = job_slots - 1; i >= 0; i--) + for (i = js.j_jobslots - 1; i >= 0; i--) { - if (jobs[i] == 0 || ((flags & JM_STOPPED) && JOBSTATE(i) != JSTOPPED)) + j = get_job_by_jid (i); + if (j == 0 || ((flags & JM_STOPPED) && J_JOBSTATE(j) != JSTOPPED)) continue; - p = jobs[i]->pipe; + p = j->pipe; do { if (flags & JM_EXACT) @@ -537,15 +626,15 @@ get_job_by_name (name, flags) else if (job != NO_JOB) { if (this_shell_builtin) - builtin_error ("%s: ambiguous job spec", name); + builtin_error (_("%s: ambiguous job spec"), name); else - report_error ("%s: ambiguous job spec", name); + report_error (_("%s: ambiguous job spec"), name); return (DUP_JOB); } else job = i; } - while (p != jobs[i]->pipe); + while (p != j->pipe); } return (job); @@ -560,12 +649,12 @@ get_job_spec (list) int job, jflags; if (list == 0) - return (current_job); + return (js.j_current); word = list->word->word; if (*word == '\0') - return (current_job); + return (NO_JOB); if (*word == '%') word++; @@ -573,11 +662,7 @@ get_job_spec (list) if (DIGIT (*word) && all_digits (word)) { job = atoi (word); -#if 0 - return (job >= job_slots ? NO_JOB : job - 1); -#else - return (job > job_slots ? NO_JOB : job - 1); -#endif + return (job > js.j_jobslots ? NO_JOB : job - 1); } jflags = 0; @@ -586,10 +671,10 @@ get_job_spec (list) case 0: case '%': case '+': - return (current_job); + return (js.j_current); case '-': - return (previous_job); + return (js.j_previous); case '?': /* Substring search requested. */ jflags |= JM_SUBSTRING; @@ -602,6 +687,9 @@ get_job_spec (list) } #endif /* JOB_CONTROL */ +/* + * NOTE: `kill' calls this function with forcecols == 0 + */ int display_signal_list (list, forcecols) WORD_LIST *list; @@ -609,8 +697,7 @@ display_signal_list (list, forcecols) { register int i, column; char *name; - int result; - int signum; + int result, signum, dflags; intmax_t lsignum; result = EXECUTION_SUCCESS; @@ -623,12 +710,18 @@ display_signal_list (list, forcecols) continue; if (posixly_correct && !forcecols) - printf ("%s%s", name, (i == NSIG - 1) ? "" : " "); + { + /* This is for the kill builtin. POSIX.2 says the signal names + are displayed without the `SIG' prefix. */ + if (STREQN (name, "SIG", 3)) + name += 3; + printf ("%s%s", name, (i == NSIG - 1) ? "" : " "); + } else { printf ("%2d) %s", i, name); - if (++column < 4) + if (++column < 5) printf ("\t"); else { @@ -677,7 +770,10 @@ display_signal_list (list, forcecols) } else { - signum = decode_signal (list->word->word); + 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); diff --git a/src/bin/bash/builtins/common.h b/src/bin/bash/builtins/common.h index a971bcda24..ecf9d1b454 100644 --- a/src/bin/bash/builtins/common.h +++ b/src/bin/bash/builtins/common.h @@ -1,22 +1,22 @@ /* common.h -- extern declarations for functions defined in common.c. */ -/* Copyright (C) 1993-2002 Free Software Foundation, Inc. +/* Copyright (C) 1993-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -30,6 +30,9 @@ #define SEVAL_INTERACT 0x002 #define SEVAL_NOHIST 0x004 #define SEVAL_NOFREE 0x008 +#define SEVAL_RESETLINE 0x010 +#define SEVAL_PARSEONLY 0x020 +#define SEVAL_NOLONGJMP 0x040 /* Flags for describe_command, shared between type.def and command.def */ #define CDESC_ALL 0x001 /* type -a */ @@ -39,6 +42,7 @@ #define CDESC_PATH_ONLY 0x010 /* type -p */ #define CDESC_FORCE_PATH 0x020 /* type -ap or type -P */ #define CDESC_NOFUNCS 0x040 /* type -f */ +#define CDESC_ABSPATH 0x080 /* convert to absolute path, no ./ */ /* Flags for get_job_by_name */ #define JM_PREFIX 0x01 /* prefix of job name */ @@ -55,6 +59,7 @@ /* Functions from common.c */ extern void builtin_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +extern void builtin_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); extern void builtin_usage __P((void)); extern void no_args __P((WORD_LIST *)); extern int no_options __P((WORD_LIST *)); @@ -74,6 +79,10 @@ extern void sh_badjob __P((char *)); extern void sh_readonly __P((const char *)); extern void sh_nojobs __P((char *)); extern void sh_restricted __P((char *)); +extern void sh_notbuiltin __P((char *)); +extern void sh_wrerror __P((void)); +extern void sh_ttyerror __P((int)); +extern int sh_chkwrite __P((int)); extern char **make_builtin_argv __P((WORD_LIST *, int *)); extern void remember_args __P((WORD_LIST *, int)); @@ -82,7 +91,7 @@ extern int dollar_vars_changed __P((void)); extern void set_dollar_vars_unchanged __P((void)); extern void set_dollar_vars_changed __P((void)); -extern intmax_t get_numeric_arg __P((WORD_LIST *, int)); +extern int get_numeric_arg __P((WORD_LIST *, int, intmax_t *)); extern int get_exitstat __P((WORD_LIST *)); extern int read_octal __P((char *)); @@ -105,6 +114,9 @@ extern sh_builtin_func_t *builtin_address __P((char *)); extern sh_builtin_func_t *find_special_builtin __P((char *)); extern void initialize_shell_builtins __P((void)); +/* Functions from exit.def */ +extern void bash_logout __P((void)); + /* Functions from getopts.def */ extern void getopts_reset __P((int)); @@ -134,6 +146,7 @@ extern int describe_command __P((char *, int)); /* Functions from setattr.def */ extern int set_or_show_attributes __P((WORD_LIST *, int, int)); +extern int show_all_var_attributes __P((int, int)); extern int show_var_attributes __P((SHELL_VAR *, int, int)); extern int show_name_attributes __P((char *, int)); extern void set_var_attribute __P((char *, int, int)); @@ -142,15 +155,16 @@ extern void set_var_attribute __P((char *, int, int)); extern char *get_dirstack_from_string __P((char *)); extern char *get_dirstack_element __P((intmax_t, int)); extern void set_dirstack_element __P((intmax_t, int, char *)); -extern WORD_LIST *get_directory_stack __P((void)); +extern WORD_LIST *get_directory_stack __P((int)); /* Functions from evalstring.c */ extern int parse_and_execute __P((char *, const char *, int)); extern void parse_and_execute_cleanup __P((void)); +extern int parse_string __P((char *, const char *, int, char **)); /* Functions from evalfile.c */ extern int maybe_execute_file __P((const char *, int)); -extern int source_file __P((const char *)); +extern int source_file __P((const char *, int)); extern int fc_execute_file __P((const char *)); #endif /* !__COMMON_H */ diff --git a/src/bin/bash/builtins/complete.def b/src/bin/bash/builtins/complete.def index f39162048f..d7e9aee368 100644 --- a/src/bin/bash/builtins/complete.def +++ b/src/bin/bash/builtins/complete.def @@ -1,35 +1,45 @@ This file is complete.def, from which is created complete.c. -It implements the builtins "complete" and "compgen" in Bash. +It implements the builtins "complete", "compgen", and "compopt" in Bash. -Copyright (C) 1999-2002 Free Software Foundation, Inc. +Copyright (C) 1999-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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] -For each NAME, specify how arguments are to be completed. -If the -p option is supplied, or if no options are supplied, existing -completion specifications are printed in a way that allows them to be -reused as input. The -r option removes a completion specification for -each NAME, or, if no NAMEs are supplied, all completion specifications. +$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-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 + +When completion is attempted, the actions are applied in the order the +uppercase-letter options are listed above. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. $END #include @@ -43,10 +53,12 @@ $END #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" @@ -55,22 +67,31 @@ $END #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 Eflag; +}; + static int find_compact __P((char *)); static int find_compopt __P((char *)); -static int build_actions __P((WORD_LIST *, int *, int *, unsigned long *, unsigned long *)); +static int build_actions __P((WORD_LIST *, struct _optflags *, unsigned long *, unsigned long *)); static int remove_cmd_completions __P((WORD_LIST *)); static int print_one_completion __P((char *, COMPSPEC *)); static int print_compitem __P((BUCKET_CONTENTS *)); +static void print_compopts __P((const char *, COMPSPEC *, int)); static void print_all_completions __P((void)); static int print_cmd_completions __P((WORD_LIST *)); static char *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; -static struct _compacts { - char *actname; +static const struct _compacts { + const char * const actname; int actflag; int actopt; } compacts[] = { @@ -102,14 +123,16 @@ static struct _compacts { }; /* This should be a STRING_INT_ALIST */ -static struct _compopt { - char *optname; +const static struct _compopt { + const char * const optname; int optflag; } compopts[] = { + { "bashdefault", COPT_BASHDEFAULT }, { "default", COPT_DEFAULT }, { "dirnames", COPT_DIRNAMES }, { "filenames",COPT_FILENAMES}, { "nospace", COPT_NOSPACE }, + { "plusdirs", COPT_PLUSDIRS }, { (char *)NULL, 0 }, }; @@ -152,9 +175,9 @@ find_compopt (name) */ static int -build_actions (list, pp, rp, actp, optp) +build_actions (list, flagp, actp, optp) WORD_LIST *list; - int *pp, *rp; + struct _optflags *flagp; unsigned long *actp, *optp; { int opt, ind, opt_given; @@ -164,15 +187,15 @@ build_actions (list, pp, rp, actp, optp) opt_given = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:")) != -1) + while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:E")) != -1) { opt_given = 1; switch (opt) { case 'r': - if (rp) + if (flagp) { - *rp = 1; + flagp->rflag = 1; break; } else @@ -183,9 +206,9 @@ build_actions (list, pp, rp, actp, optp) } case 'p': - if (pp) + if (flagp) { - *pp = 1; + flagp->pflag = 1; break; } else @@ -244,7 +267,7 @@ build_actions (list, pp, rp, actp, optp) ind = find_compact (list_optarg); if (ind < 0) { - builtin_error ("%s: invalid action name", list_optarg); + builtin_error (_("%s: invalid action name"), list_optarg); return (EX_USAGE); } acts |= compacts[ind].actflag; @@ -252,6 +275,18 @@ build_actions (list, pp, rp, actp, optp) case 'C': Carg = list_optarg; break; + case 'E': + if (flagp) + { + flagp->Eflag = 1; + break; + } + else + { + sh_invalidopt ("-E"); + builtin_usage (); + return (EX_USAGE); + } case 'F': Farg = list_optarg; break; @@ -287,9 +322,11 @@ int complete_builtin (list) WORD_LIST *list; { - int opt_given, pflag, rflag, rval; + int opt_given, rval; unsigned long acts, copts; COMPSPEC *cs; + struct _optflags oflags; + WORD_LIST *l, *wl; if (list == 0) { @@ -297,24 +334,33 @@ complete_builtin (list) return (EXECUTION_SUCCESS); } - opt_given = pflag = rflag = 0; + opt_given = oflags.pflag = oflags.rflag = oflags.Eflag = 0; + acts = copts = (unsigned long)0L; Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL; cs = (COMPSPEC *)NULL; /* Build the actions from the arguments. Also sets the [A-Z]arg variables as a side effect if they are supplied as options. */ - rval = build_actions (list, &pflag, &rflag, &acts, &copts); + rval = build_actions (list, &oflags, &acts, &copts); if (rval == EX_USAGE) return (rval); opt_given = rval != EXECUTION_FAILURE; list = loptend; + wl = oflags.Eflag ? make_word_list (make_bare_word ("_EmptycmD_"), (WORD_LIST *)NULL) : 0; + /* -p overrides everything else */ - if (pflag || (list == 0 && opt_given == 0)) + if (oflags.pflag || (list == 0 && opt_given == 0)) { - if (list == 0) + if (wl) + { + rval = print_cmd_completions (wl); + dispose_words (wl); + return rval; + } + else if (list == 0) { print_all_completions (); return (EXECUTION_SUCCESS); @@ -323,9 +369,15 @@ complete_builtin (list) } /* next, -r overrides everything else. */ - if (rflag) + if (oflags.rflag) { - if (list == 0) + if (wl) + { + rval = remove_cmd_completions (wl); + dispose_words (wl); + return rval; + } + else if (list == 0) { progcomp_flush (); return (EXECUTION_SUCCESS); @@ -333,7 +385,7 @@ complete_builtin (list) return (remove_cmd_completions (list)); } - if (list == 0 && opt_given) + if (wl == 0 && list == 0 && opt_given) { builtin_usage (); return (EX_USAGE); @@ -353,13 +405,14 @@ complete_builtin (list) cs->command = STRDUP (Carg); cs->filterpat = STRDUP (Xarg); - for (rval = EXECUTION_SUCCESS ; list; list = list->next) + for (rval = EXECUTION_SUCCESS, l = wl ? wl : list ; l; l = l->next) { /* Add CS as the compspec for the specified commands. */ - if (progcomp_insert (list->word->word, cs) == 0) + if (progcomp_insert (l->word->word, cs) == 0) rval = EXECUTION_FAILURE; } + dispose_words (wl); return (rval); } @@ -374,7 +427,7 @@ remove_cmd_completions (list) { if (progcomp_remove (l->word->word) == 0) { - builtin_error ("%s: no completion specification", l->word->word); + builtin_error (_("%s: no completion specification"), l->word->word); ret = EXECUTION_FAILURE; } } @@ -415,6 +468,14 @@ remove_cmd_completions (list) printf ("-o %s ", f); \ } while (0) +#define XPRINTCOMPOPT(a, f) \ + do { \ + if (copts & a) \ + printf ("-o %s ", f); \ + else \ + printf ("+o %s ", f); \ + } while (0) + static int print_one_completion (cmd, cs) char *cmd; @@ -428,10 +489,12 @@ print_one_completion (cmd, cs) copts = cs->options; /* First, print the -o options. */ + PRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault"); PRINTCOMPOPT (COPT_DEFAULT, "default"); PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); PRINTCOMPOPT (COPT_FILENAMES, "filenames"); PRINTCOMPOPT (COPT_NOSPACE, "nospace"); + PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); acts = cs->actions; @@ -472,15 +535,49 @@ print_one_completion (cmd, cs) SQPRINTARG (cs->suffix, "-S"); SQPRINTARG (cs->filterpat, "-X"); + SQPRINTARG (cs->command, "-C"); + /* simple arguments that don't require quoting */ PRINTARG (cs->funcname, "-F"); - PRINTARG (cs->command, "-C"); printf ("%s\n", cmd); return (0); } +static void +print_compopts (cmd, cs, full) + const char *cmd; + COMPSPEC *cs; + int full; +{ + int copts; + + printf ("compopt "); + copts = cs->options; + + if (full) + { + XPRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault"); + XPRINTCOMPOPT (COPT_DEFAULT, "default"); + XPRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); + XPRINTCOMPOPT (COPT_FILENAMES, "filenames"); + XPRINTCOMPOPT (COPT_NOSPACE, "nospace"); + XPRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); + } + else + { + PRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault"); + PRINTCOMPOPT (COPT_DEFAULT, "default"); + PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); + PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOSPACE, "nospace"); + PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); + } + + printf ("%s\n", cmd); +} + static int print_compitem (item) BUCKET_CONTENTS *item; @@ -515,21 +612,26 @@ print_cmd_completions (list) print_one_completion (l->word->word, cs); else { - builtin_error ("%s: no completion specification", l->word->word); + builtin_error (_("%s: no completion specification"), l->word->word); ret = EXECUTION_FAILURE; } } - return (ret); + + 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] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word] -Display the possible completions depending on the options. Intended -to be used from within a shell function generating possible completions. -If the optional WORD argument is supplied, matches against WORD are -generated. +$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 @@ -540,7 +642,7 @@ compgen_builtin (list) unsigned long acts, copts; COMPSPEC *cs; STRINGLIST *sl; - char *word; + char *word, **matches; if (list == 0) return (EXECUTION_SUCCESS); @@ -551,7 +653,7 @@ compgen_builtin (list) /* Build the actions from the arguments. Also sets the [A-Z]arg variables as a side effect if they are supplied as options. */ - rval = build_actions (list, (int *)NULL, (int *)NULL, &acts, &copts); + rval = build_actions (list, (struct _optflags *)NULL, &acts, &copts); if (rval == EX_USAGE) return (rval); if (rval == EXECUTION_FAILURE) @@ -562,9 +664,9 @@ compgen_builtin (list) word = (list && list->word) ? list->word->word : ""; if (Farg) - internal_warning ("compgen: -F option may not work as you expect"); + builtin_error (_("warning: -F option may not work as you expect")); if (Carg) - internal_warning ("compgen: -C option may not work as you expect"); + 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 (); @@ -583,12 +685,19 @@ compgen_builtin (list) rval = EXECUTION_FAILURE; sl = gen_compspec_completions (cs, "compgen", word, 0, 0); + /* If the compspec wants the bash default completions, temporarily + turn off programmable completion and call the bash completion code. */ + if ((sl == 0 || sl->list_len == 0) && (copts & COPT_BASHDEFAULT)) + { + matches = bash_default_completion (word, 0, 0, 0, 0); + sl = completions_to_stringlist (matches); + strvec_dispose (matches); + } + /* This isn't perfect, but it's the best we can do, given what readline exports from its set of completion utility functions. */ if ((sl == 0 || sl->list_len == 0) && (copts & COPT_DEFAULT)) { - char **matches; - matches = rl_completion_matches (word, rl_filename_completion_function); sl = completions_to_stringlist (matches); strvec_dispose (matches); @@ -607,3 +716,114 @@ compgen_builtin (list) compspec_dispose (cs); return (rval); } + +$BUILTIN compopt +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION compopt_builtin +$SHORT_DOC compopt [-o|+o option] [name ...] +Modify or display completion options. + +Modify the completion options for each NAME, or, if no NAMEs are supplied, +the completion currently begin executed. If no OPTIONs are givenm, print +the completion options for each NAME or the current completion specification. + +Options: + -o option Set completion option OPTION for each NAME + +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, Eflag; + WORD_LIST *l; + COMPSPEC *cs; + + opts_on = opts_off = 0; + ret = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "+o:")) != EOF) + { + 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; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 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 = 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); + } + + return (ret); +} diff --git a/src/bin/bash/builtins/declare.def b/src/bin/bash/builtins/declare.def index 75b154f8fc..9931f5e4ac 100644 --- a/src/bin/bash/builtins/declare.def +++ b/src/bin/bash/builtins/declare.def @@ -1,58 +1,67 @@ This file is declare.def, from which is created declare.c. It implements the builtins "declare" and "local" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [-afFirtx] [-p] name[=value] ... -Declare variables and/or give them attributes. If no NAMEs are -given, then display the values of variables instead. The -p option -will display the attributes and values of each NAME. +$SHORT_DOC declare [-aAfFilrtux] [-p] [name[=value] ...] +Set variable values and attributes. -The flags are: +Declare variables and give them attributes. If no NAMEs are given, +display the attributes and values of all variables. - -a to make NAMEs arrays (if supported) - -f to select from among function names only - -F to display function names without definitions +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) + -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 NAMEs to lower case on assignment -r to make NAMEs readonly -t to make NAMEs have the `trace' attribute + -u to convert NAMEs 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 -`let') done when the variable is assigned to. +the `let' command) performed when the variable is assigned a value. -When displaying values of variables, -f displays a function's name -and definition. The -F option restricts the display to function -name only. +When used in a function, `declare' makes NAMEs local, as with the `local' +command. -Using `+' instead of `-' turns off the given attribute instead. When -used in a function, makes NAMEs local, as with the `local' command. +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. $END $BUILTIN typeset $FUNCTION declare_builtin -$SHORT_DOC typeset [-afFirtx] [-p] name[=value] ... -Obsolete. See `declare'. +$SHORT_DOC typeset [-aAfFilrtux] [-p] name[=value] ... +Set variable values and attributes. + +Obsolete. See `help declare'. $END #include @@ -67,6 +76,7 @@ $END #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "common.h" @@ -74,6 +84,7 @@ $END #include "bashgetopt.h" extern int array_needs_making; +extern int posixly_correct; static int declare_internal __P((register WORD_LIST *, int)); @@ -87,10 +98,18 @@ declare_builtin (list) $BUILTIN local $FUNCTION local_builtin -$SHORT_DOC local name[=value] ... -Create a local variable called NAME, and give it VALUE. LOCAL -can only be used within a function; it makes the variable NAME -have a visible scope restricted to that function and its children. +$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, an error occurs, +or the shell is not executing a function. $END int local_builtin (list) @@ -100,15 +119,15 @@ local_builtin (list) return (declare_internal (list, 1)); else { - builtin_error ("can only be used in a function"); + builtin_error (_("can only be used in a function")); return (EXECUTION_FAILURE); } } #if defined (ARRAY_VARS) -# define DECLARE_OPTS "+afiprtxF" +# define DECLARE_OPTS "+acfilprtuxAF" #else -# define DECLARE_OPTS "+fiprtxF" +# define DECLARE_OPTS "+cfilprtuxF" #endif /* The workhorse function. */ @@ -117,9 +136,11 @@ declare_internal (list, local_var) register WORD_LIST *list; int local_var; { - int flags_on, flags_off, *flags, any_failed, assign_error, pflag, nodefs, opt; + int flags_on, flags_off, *flags; + int any_failed, assign_error, pflag, nodefs, opt; char *t, *subscript_start; SHELL_VAR *var; + FUNCTION_DEF *shell_fn; flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0; reset_internal_getopt (); @@ -132,8 +153,19 @@ declare_internal (list, local_var) case 'a': #if defined (ARRAY_VARS) *flags |= att_array; -#endif 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++; @@ -158,6 +190,25 @@ declare_internal (list, local_var) *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 */ default: builtin_usage (); return (EX_USAGE); @@ -168,7 +219,7 @@ declare_internal (list, local_var) /* If there are no more arguments left, then we just want to show some variables. */ - if (list == 0) /* declare -[afFirtx] */ + if (list == 0) /* declare -[aAfFirtx] */ { /* Show local variables defined at this context level if this is the `local' builtin. */ @@ -187,19 +238,17 @@ declare_internal (list, local_var) free (vlist); } } + 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 - { - if (flags_on == 0) - set_builtin ((WORD_LIST *)NULL); - else - set_or_show_attributes ((WORD_LIST *)NULL, flags_on, nodefs); - } + set_or_show_attributes ((WORD_LIST *)NULL, flags_on, nodefs); - fflush (stdout); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } - if (pflag) /* declare -p [-afFirtx] name [name...] */ + if (pflag) /* declare -p [-aAfFirtx] name [name...] */ { for (any_failed = 0; list; list = list->next) { @@ -210,27 +259,33 @@ declare_internal (list, local_var) any_failed++; } } - return (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS); + 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 [-afFirx] name [name ...] */ + while (list) /* declare [-aAfFirx] name [name ...] */ { char *value, *name; - int offset; + int offset, aflags; #if defined (ARRAY_VARS) int making_array_special, compound_array_assign, simple_array_assign; #endif name = savestring (list->word->word); - offset = assignment (name); + offset = assignment (name, 0); + aflags = 0; - if (offset) /* declare [-afFirx] name=value */ + 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 = ""; @@ -247,8 +302,12 @@ declare_internal (list, local_var) else making_array_special = 0; #endif - - if (legal_identifier (name) == 0) + + /* 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++; @@ -265,7 +324,9 @@ declare_internal (list, local_var) if (variable_context && ((flags_on & att_function) == 0)) { #if defined (ARRAY_VARS) - if ((flags_on & att_array) || making_array_special) + if (flags_on & att_assoc) + var = make_local_assoc_variable (name); + else if ((flags_on & att_array) || making_array_special) var = make_local_array_variable (name); else #endif @@ -289,7 +350,7 @@ declare_internal (list, local_var) { if (offset) /* declare -f [-rix] foo=bar */ { - builtin_error ("cannot use `-f' to make functions"); + builtin_error (_("cannot use `-f' to make functions")); free (name); return (EXECUTION_FAILURE); } @@ -301,7 +362,7 @@ declare_internal (list, local_var) { if (readonly_p (var) && (flags_off & att_readonly)) { - builtin_error ("%s: readonly function", name); + builtin_error (_("%s: readonly function"), name); any_failed++; NEXT_VARIABLE (); } @@ -309,9 +370,23 @@ declare_internal (list, local_var) /* declare -[Ff] name [name...] */ if (flags_on == att_function && flags_off == 0) { - t = nodefs ? var->name - : named_function_string (name, function_cell (var), 1); - printf ("%s\n", t); +#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...] */ { @@ -324,7 +399,7 @@ declare_internal (list, local_var) NEXT_VARIABLE (); } } - else /* declare -[airx] name [name...] */ + else /* declare -[aAirx] name [name...] */ { /* Non-null if we just created or fetched a local variable. */ if (var == 0) @@ -333,11 +408,20 @@ declare_internal (list, local_var) if (var == 0) { #if defined (ARRAY_VARS) - if ((flags_on & att_array) || making_array_special) + if (flags_on & att_assoc) + var = make_new_assoc_variable (name); + else if ((flags_on & att_array) || making_array_special) var = make_new_array_variable (name); else #endif - var = bind_variable (name, ""); + + if (offset) + var = bind_variable (name, "", 0); + else + { + var = bind_variable (name, (char *)NULL, 0); + VSETATTR (var, att_invisible); + } } /* Cannot use declare +r to turn off readonly attribute. */ @@ -359,24 +443,48 @@ declare_internal (list, local_var) } #if defined (ARRAY_VARS) - if ((making_array_special || (flags_on & att_array) || array_p (var)) && offset) + if ((making_array_special || (flags_on & (att_array|att_assoc)) || array_p (var) || assoc_p (var)) && offset) { - if (value[0] == '(' && strchr (value, ')')) + int vlen; + vlen = STRLEN (value); + + if (value[0] == '(' && value[vlen-1] == ')') compound_array_assign = 1; else simple_array_assign = 1; } - /* Cannot use declare +a name to remove an array variable. */ - if ((flags_off & att_array) && array_p (var)) + /* 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); + builtin_error (_("%s: cannot destroy array variables in this way"), name); any_failed++; NEXT_VARIABLE (); } - /* declare -a name makes name an array variable. */ - if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) + 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) var = convert_var_to_array (var); #endif /* ARRAY_VARS */ @@ -385,23 +493,23 @@ declare_internal (list, local_var) #if defined (ARRAY_VARS) if (offset && compound_array_assign) - assign_array_var_from_string (var, value); + assign_array_var_from_string (var, value, aflags); else if (simple_array_assign && subscript_start) { /* declare [-a] name[N]=value */ *subscript_start = '['; /* ] */ - var = assign_array_element (name, value); + var = assign_array_element (name, value, 0); /* XXX - not aflags */ *subscript_start = '\0'; } else if (simple_array_assign) /* let bind_array_variable take care of this. */ - bind_array_variable (name, 0, value); + bind_array_variable (name, 0, value, aflags); else #endif /* bind_variable_value duplicates the essential internals of bind_variable() */ if (offset) - bind_variable_value (var, value); + bind_variable_value (var, value, aflags); /* If we found this variable in the temporary environment, as with `var=value declare -x var', make sure it is treated identically @@ -421,7 +529,7 @@ declare_internal (list, local_var) if (tv) { tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); - tv = bind_variable (var->name, tvalue); + tv = bind_variable (var->name, tvalue, 0); tv->attributes |= var->attributes & ~att_tempvar; if (tv->context > 0) VSETATTR (tv, att_propagate); diff --git a/src/bin/bash/builtins/echo.def b/src/bin/bash/builtins/echo.def index 07e9f247bf..62c61994a2 100644 --- a/src/bin/bash/builtins/echo.def +++ b/src/bin/bash/builtins/echo.def @@ -1,23 +1,22 @@ This file is echo.def, from which is created echo.c. It implements the builtin "echo" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES echo.c #include @@ -31,34 +30,54 @@ $PRODUCES echo.c #include #include "../shell.h" +#include "common.h" + $BUILTIN echo $FUNCTION echo_builtin $DEPENDS_ON V9_ECHO $SHORT_DOC echo [-neE] [arg ...] -Output the ARGs. If -n is specified, the trailing newline is -suppressed. If the -e option is given, interpretation of the -following backslash-escaped characters is turned on: - \a alert (bell) - \b backspace - \c suppress trailing newline - \E escape character - \f form feed - \n new line - \r carriage return - \t horizontal tab - \v vertical tab - \\ backslash - \num the character whose ASCII code is NUM (octal). +Write arguments to the standard output. -You can explicitly turn off the interpretation of the above characters -with the -E option. +Display the ARGs on the standard output followed by a newline. + +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 + \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 + +Exit Status: +Returns success unless a write error occurs. $END $BUILTIN echo $FUNCTION echo_builtin $DEPENDS_ON !V9_ECHO $SHORT_DOC echo [-n] [arg ...] -Output the ARGs. If -n is specified, the trailing newline is suppressed. +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) @@ -72,12 +91,14 @@ $END 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) +#if defined (DEFAULT_ECHO_TO_XPG) || defined (STRICT_POSIX) int xpg_echo = 1; #else int xpg_echo = 0; #endif /* DEFAULT_ECHO_TO_XPG */ +extern int posixly_correct; + /* Print the words in LIST to standard output. If the first word is `-n', then don't print a trailing newline. We also support the echo syntax from Version 9 Unix systems. */ @@ -91,6 +112,9 @@ echo_builtin (list) 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 @@ -133,6 +157,9 @@ echo_builtin (list) just_echo: + clearerr (stdout); /* clear error before writing and testing success */ + + terminate_immediately++; while (list) { i = len = 0; @@ -165,11 +192,7 @@ just_echo: if (display_return) putchar ('\n'); - fflush (stdout); - if (ferror (stdout)) - { - clearerr (stdout); - return (EXECUTION_FAILURE); - } - return (EXECUTION_SUCCESS); + + terminate_immediately--; + return (sh_chkwrite (EXECUTION_SUCCESS)); } diff --git a/src/bin/bash/builtins/enable.def b/src/bin/bash/builtins/enable.def index 7496d42792..40cbb440ac 100644 --- a/src/bin/bash/builtins/enable.def +++ b/src/bin/bash/builtins/enable.def @@ -1,42 +1,51 @@ This file is enable.def, from which is created enable.c. It implements the builtin "enable" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [-pnds] [-a] [-f filename] [name ...] -Enable and disable builtin shell commands. This allows -you to use a disk command which has the same name as a shell -builtin without specifying a full pathname. If -n is used, the -NAMEs become disabled; otherwise NAMEs are enabled. For example, -to use the `test' found in $PATH instead of the shell builtin -version, type `enable -n test'. On systems supporting dynamic -loading, the -f option may be used to load new builtins from the -shared object FILENAME. The -d option will delete a builtin -previously loaded with -f. If no non-option names are given, or -the -p option is supplied, a list of builtins is printed. The --a option means to print every builtin with an indication of whether -or not it is enabled. The -s option restricts the output to the POSIX.2 -`special' builtins. The -n option displays a list of all disabled builtins. +$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 @@ -50,6 +59,8 @@ $END #include #include "../bashansi.h" +#include "../bashintl.h" + #include "../shell.h" #include "../builtins.h" #include "../flags.h" @@ -123,7 +134,7 @@ enable_builtin (list) filename = list_optarg; break; #else - builtin_error ("dynamic loading not available"); + builtin_error (_("dynamic loading not available")); return (EX_USAGE); #endif #if defined (HAVE_DLCLOSE) @@ -131,7 +142,7 @@ enable_builtin (list) flags |= DFLAG; break; #else - builtin_error ("dynamic loading not available"); + builtin_error (_("dynamic loading not available")); return (EX_USAGE); #endif /* HAVE_DLCLOSE */ default: @@ -197,7 +208,7 @@ enable_builtin (list) if (opt == EXECUTION_FAILURE) { - builtin_error ("%s: not a shell builtin", list->word->word); + sh_notbuiltin (list->word->word); result = EXECUTION_FAILURE; } list = list->next; @@ -298,7 +309,7 @@ dyn_load_builtin (list, flags, filename) if (handle == 0) { - builtin_error ("cannot open shared object %s: %s", filename, dlerror ()); + builtin_error (_("cannot open shared object %s: %s"), filename, dlerror ()); return (EXECUTION_FAILURE); } @@ -321,8 +332,8 @@ dyn_load_builtin (list, flags, filename) b = (struct builtin *)dlsym (handle, struct_name); if (b == 0) { - builtin_error ("cannot find %s in shared object %s: %s", struct_name, - filename, dlerror ()); + builtin_error (_("cannot find %s in shared object %s: %s"), + struct_name, filename, dlerror ()); free (struct_name); continue; } @@ -440,12 +451,12 @@ dyn_unload_builtin (name) b = builtin_address_internal (name, 1); if (b == 0) { - builtin_error ("%s: not a shell builtin", name); + sh_notbuiltin (name); return (EXECUTION_FAILURE); } if (b->flags & STATIC_BUILTIN) { - builtin_error ("%s: not dynamically loaded", name); + builtin_error (_("%s: not dynamically loaded"), name); return (EXECUTION_FAILURE); } @@ -460,7 +471,7 @@ dyn_unload_builtin (name) using it drops to zero. */ if (ref == 1 && local_dlclose (handle) != 0) { - builtin_error ("%s: cannot delete: %s", name, dlerror ()); + builtin_error (_("%s: cannot delete: %s"), name, dlerror ()); return (EXECUTION_FAILURE); } diff --git a/src/bin/bash/builtins/eval.def b/src/bin/bash/builtins/eval.def index 500e8c7304..ee9a23d578 100644 --- a/src/bin/bash/builtins/eval.def +++ b/src/bin/bash/builtins/eval.def @@ -1,30 +1,35 @@ This file is eval.def, from which is created eval.c. It implements the builtin "eval" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 ...] -Read ARGs as input to the shell and execute the resulting command(s). +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 diff --git a/src/bin/bash/builtins/evalfile.c b/src/bin/bash/builtins/evalfile.c index 0675753ec8..55b5cb786b 100644 --- a/src/bin/bash/builtins/evalfile.c +++ b/src/bin/bash/builtins/evalfile.c @@ -1,20 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* evalfile.c - read and evaluate commands from a file or file descriptor */ + +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -31,6 +33,7 @@ #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../jobs.h" @@ -38,11 +41,14 @@ #include "../flags.h" #include "../input.h" #include "../execute_cmd.h" +#include "../trap.h" #if defined (HISTORY) # include "../bashhist.h" #endif +#include + #include "common.h" #if !defined (errno) @@ -58,9 +64,10 @@ extern int errno; #define FEVAL_HISTORY 0x020 #define FEVAL_CHECKBINARY 0x040 #define FEVAL_REGFILE 0x080 +#define FEVAL_NOPUSHARGS 0x100 extern int posixly_correct; -extern int indirection_level, startup_state, subshell_environment; +extern int indirection_level, subshell_environment; extern int return_catch_flag, return_catch_value; extern int last_command_exit_value; @@ -75,13 +82,33 @@ _evalfile (filename, flags) volatile int old_interactive; procenv_t old_return_catch; int return_val, fd, result, pflags; + ssize_t nr; /* return value from read(2) */ char *string; struct stat finfo; size_t file_size; sh_vmsg_func_t *errfunc; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; +# if defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; +# endif + char *t, tt[2]; +#endif USE_VAR(pflags); +#if defined (ARRAY_VARS) + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); +# if defined (DEBUGGER) + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); +# endif +#endif + fd = open (filename, O_RDONLY); if (fd < 0 || (fstat (fd, &finfo) == -1)) @@ -104,12 +131,12 @@ file_error_and_exit: if (S_ISDIR (finfo.st_mode)) { - (*errfunc) ("%s: is a directory", filename); + (*errfunc) (_("%s: is a directory"), filename); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0) { - (*errfunc) ("%s: not a regular file", filename); + (*errfunc) (_("%s: not a regular file"), filename); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } @@ -117,7 +144,7 @@ file_error_and_exit: /* Check for overflow with large files. */ if (file_size != finfo.st_size || file_size + 1 < file_size) { - (*errfunc) ("%s: file is too large", filename); + (*errfunc) (_("%s: file is too large"), filename); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } @@ -125,31 +152,37 @@ file_error_and_exit: setmode (fd, O_TEXT); #endif - string = (char *)xmalloc (1 + file_size); - result = read (fd, string, file_size); - string[result] = '\0'; + 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 (result < 0) /* XXX was != file_size, not < 0 */ + if (nr < 0) /* XXX was != file_size, not < 0 */ { free (string); goto file_error_and_exit; } - if (result == 0) + if (nr == 0) { free (string); return ((flags & FEVAL_BUILTIN) ? EXECUTION_SUCCESS : 1); } if ((flags & FEVAL_CHECKBINARY) && - check_binary_file (string, (result > 80) ? 80 : result)) + check_binary_file (string, (nr > 80) ? 80 : nr)) { free (string); - (*errfunc) ("%s: cannot execute binary file", filename); + (*errfunc) (_("%s: cannot execute binary file"), filename); return ((flags & FEVAL_BUILTIN) ? EX_BINARY_FILE : -1); } @@ -176,8 +209,27 @@ file_error_and_exit: return_catch_flag++; sourcelevel++; +#if defined (ARRAY_VARS) + array_push (bash_source_a, (char *)filename); + t = itos (executing_line_number ()); + array_push (bash_lineno_a, t); + free (t); + array_push (funcname_a, "source"); /* not exactly right */ +# if defined (DEBUGGER) + /* Have to figure out a better way to do this when `source' is supplied + arguments */ + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + array_push (bash_argv_a, (char *)filename); + tt[0] = '1'; tt[1] = '\0'; + array_push (bash_argc_a, tt); + } +# endif +#endif + /* set the flags to be passed to parse_and_execute */ - pflags = (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST; + pflags = SEVAL_RESETLINE; + pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST; if (flags & FEVAL_BUILTIN) result = EXECUTION_SUCCESS; @@ -205,6 +257,26 @@ file_error_and_exit: COPY_PROCENV (old_return_catch, return_catch); } +#if defined (ARRAY_VARS) + /* These two variables cannot be unset, and cannot be affected by the + sourced file. */ + array_pop (bash_source_a); + array_pop (bash_lineno_a); + + /* FUNCNAME can be unset, and so can potentially be changed by the + sourced file. */ + GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); + if (nfv == funcname_v) + array_pop (funcname_a); +# if defined (DEBUGGER) + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + array_pop (bash_argc_a); + array_pop (bash_argv_a); + } +# endif +#endif + return ((flags & FEVAL_BUILTIN) ? result : 1); } @@ -240,14 +312,20 @@ fc_execute_file (filename) #endif /* HISTORY */ int -source_file (filename) +source_file (filename, sflags) const char *filename; + int sflags; { - int flags; + int flags, rval; flags = FEVAL_BUILTIN|FEVAL_UNWINDPROT|FEVAL_NONINT; + if (sflags) + flags |= FEVAL_NOPUSHARGS; /* POSIX shells exit if non-interactive and file error. */ if (posixly_correct && !interactive_shell) flags |= FEVAL_LONGJMP; - return (_evalfile (filename, flags)); + rval = _evalfile (filename, flags); + + run_return_trap (); + return rval; } diff --git a/src/bin/bash/builtins/evalstring.c b/src/bin/bash/builtins/evalstring.c index 860a3de868..a0fb3e26e5 100644 --- a/src/bin/bash/builtins/evalstring.c +++ b/src/bin/bash/builtins/evalstring.c @@ -1,20 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* evalstring.c - evaluate a string as one or more shell commands. + +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -42,6 +44,8 @@ #include "../redir.h" #include "../trap.h" +#include + #if defined (HISTORY) # include "../bashhist.h" #endif @@ -54,16 +58,31 @@ extern int errno; #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) -extern int indirection_level, startup_state, subshell_environment; +extern int indirection_level, subshell_environment; extern int line_number; +extern int current_token, shell_eof_token; extern int last_command_exit_value; extern int running_trap; +extern int loop_level; +extern int executing_list; +extern int comsub_ignore_return; extern int posixly_correct; int parse_and_execute_level = 0; static int cat_file __P((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 + /* How to force parse_and_execute () to clean up after itself. */ void parse_and_execute_cleanup () @@ -73,47 +92,43 @@ parse_and_execute_cleanup () run_trap_cleanup (running_trap - 1); unfreeze_jobs_list (); } - run_unwind_frame ("parse_and_execute_top"); + + if (have_unwind_protects ()) + run_unwind_frame (PE_TAG); + else + parse_and_execute_level = 0; /* XXX */ } -/* 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 -*/ - -int -parse_and_execute (string, from_file, flags) +static void +parse_prologue (string, flags, tag) char *string; - const char *from_file; int flags; + char *tag; { - int code, x; - volatile int should_jump_to_top_level, last_result; char *orig_string; - COMMAND *volatile command; + int x; orig_string = string; /* Unwind protect this invocation of parse_and_execute (). */ - begin_unwind_frame ("parse_and_execute_top"); + 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 (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) - unwind_protect_int (remember_on_history); /* can be used in scripts */ + 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) if (interactive_shell) - { - unwind_protect_int (history_expansion_inhibited); - } + unwind_protect_int (history_expansion_inhibited); # endif /* BANG_HISTORY */ #endif /* HISTORY */ @@ -128,9 +143,6 @@ parse_and_execute (string, from_file, flags) add_unwind_protect (xfree, orig_string); end_unwind_frame (); - parse_and_execute_level++; - push_stream (1); /* reset the line number */ - indirection_level++; if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) interactive = (flags & SEVAL_NONINT) ? 0 : 1; @@ -138,14 +150,53 @@ parse_and_execute (string, from_file, flags) if (flags & SEVAL_NOHIST) bash_history_disable (); #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 +*/ + +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; + + parse_prologue (string, flags, PE_TAG); + + parse_and_execute_level++; + + lreset = flags & SEVAL_RESETLINE; + + /* Reset the line number if the caller wants us to. If we don't reset the + line number, we have to subtract one, because we will add one just + before executing the next command (resetting the line number sets it to + 0; the first line number is 1). */ + push_stream (lreset); + if (lreset == 0) + line_number--; + + indirection_level++; code = should_jump_to_top_level = 0; last_result = EXECUTION_SUCCESS; - command = (COMMAND *)NULL; with_input_from_string (string, from_file); while (*(bash_input.location.string)) { + command = (COMMAND *)NULL; + if (interrupt_state) { last_result = EXECUTION_FAILURE; @@ -163,15 +214,18 @@ parse_and_execute (string, from_file, flags) switch (code) { case FORCE_EOF: + case ERREXIT: case EXITPROG: - run_unwind_frame ("pe_dispose"); + 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: - run_unwind_frame ("pe_dispose"); + if (command) + run_unwind_frame ("pe_dispose"); last_result = last_command_exit_value = EXECUTION_FAILURE; /* XXX */ if (subshell_environment) { @@ -194,7 +248,7 @@ parse_and_execute (string, from_file, flags) if (parse_command () == 0) { - if (interactive_shell == 0 && read_but_dont_execute) + if ((flags & SEVAL_PARSEONLY) || (interactive_shell == 0 && read_but_dont_execute)) { last_result = EXECUTION_SUCCESS; dispose_command (global_command); @@ -211,22 +265,31 @@ parse_and_execute (string, from_file, flags) 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 + * the command is not being timed AND + * the command's return status is not being inverted * THEN * tell the execution code that we don't need to fork */ if (startup_state == 2 && parse_and_execute_level == 1 && + running_trap == 0 && *bash_input.location.string == '\0' && command->type == cm_simple && - !command->redirects && !command->value.Simple->redirects && - ((command->flags & CMD_TIME_PIPELINE) == 0)) + signal_is_trapped (EXIT_TRAP) == 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; @@ -269,7 +332,7 @@ parse_and_execute (string, from_file, flags) out: - run_unwind_frame ("parse_and_execute_top"); + run_unwind_frame (PE_TAG); if (interrupt_state && parse_and_execute_level == 0) { @@ -286,6 +349,110 @@ parse_and_execute (string, from_file, flags) 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; + + parse_prologue (string, flags, PS_TAG); + + /* 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); + + code = should_jump_to_top_level = 0; + oglobal = global_command; + ostring = string; + + with_input_from_string (string, from_file); + while (*(bash_input.location.string)) + { + command = (COMMAND *)NULL; + +#if 0 + if (interrupt_state) + break; +#endif + + /* Provide a location for functions which `longjmp (top_level)' to + jump to. */ + code = setjmp (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: + 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 (should_jump_to_top_level) + 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. */ @@ -293,9 +460,8 @@ static int cat_file (r) REDIRECT *r; { - char lbuf[128], *fn; + char *fn; int fd, rval; - ssize_t nr; if (r->instruction != r_input_direction) return -1; diff --git a/src/bin/bash/builtins/exec.def b/src/bin/bash/builtins/exec.def index a6881b88c7..0837a9834b 100644 --- a/src/bin/bash/builtins/exec.def +++ b/src/bin/bash/builtins/exec.def @@ -1,37 +1,44 @@ This file is exec.def, from which is created exec.c. It implements the builtin "exec" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] file [redirection ...] -Exec FILE, replacing this shell with the specified program. -If FILE is not specified, the redirections take effect in this -shell. If the first argument is `-l', then place a dash in the -zeroth arg passed to FILE, as login does. If the `-c' option -is supplied, FILE is executed with a null environment. The `-a' -option means to make set argv[0] of the executed process to NAME. -If the file cannot be executed and the shell is not interactive, -then the shell exits, unless the shell option `execfail' is set. +$SHORT_DOC exec [-cl] [-a name] [command [arguments ...]] [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 @@ -46,6 +53,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../execute_cmd.h" @@ -201,15 +209,14 @@ exec_builtin (list) if (executable_file (command) == 0) { - builtin_error ("%s: cannot execute: %s", command, strerror (errno)); + 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: - if (command) - free (command); + FREE (command); if (subshell_environment || (interactive == 0 && no_exit_on_failed_exec == 0)) exit_shell (exit_value); @@ -221,7 +228,8 @@ failed_exec: initialize_signals (1); #if defined (JOB_CONTROL) - restart_job_control (); + if (interactive_shell || job_control) + restart_job_control (); #endif /* JOB_CONTROL */ return (exit_value); diff --git a/src/bin/bash/builtins/exit.def b/src/bin/bash/builtins/exit.def index bf1d9205ca..edf8db09d9 100644 --- a/src/bin/bash/builtins/exit.def +++ b/src/bin/bash/builtins/exit.def @@ -1,30 +1,31 @@ This file is exit.def, from which is created exit.c. It implements the builtins "exit", and "logout" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 with a status of N. If N is omitted, the exit status +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 @@ -37,13 +38,17 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "../jobs.h" #include "common.h" #include "builtext.h" /* for jobs_builtin */ +extern int check_jobs_at_exit; extern int last_command_exit_value; +extern int running_trap, trap_saved_exit_value; extern int subshell_environment; extern sh_builtin_func_t *this_shell_builtin; extern sh_builtin_func_t *last_shell_builtin; @@ -57,7 +62,7 @@ exit_builtin (list) { if (interactive) { - fprintf (stderr, login_shell ? "logout\n" : "exit\n"); + fprintf (stderr, login_shell ? _("logout\n") : "exit\n"); fflush (stderr); } @@ -66,8 +71,11 @@ exit_builtin (list) $BUILTIN logout $FUNCTION logout_builtin -$SHORT_DOC logout -Logout of a login shell. +$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. */ @@ -77,7 +85,7 @@ logout_builtin (list) { if (login_shell == 0 /* && interactive */) { - builtin_error ("not login shell: use `exit'"); + builtin_error (_("not login shell: use `exit'")); return (EXECUTION_FAILURE); } else @@ -91,7 +99,7 @@ exit_or_logout (list) int exit_value; #if defined (JOB_CONTROL) - int exit_immediate_okay; + int exit_immediate_okay, stopmsg; exit_immediate_okay = (interactive == 0 || last_shell_builtin == exit_builtin || @@ -99,29 +107,56 @@ exit_or_logout (list) last_shell_builtin == jobs_builtin); /* Check for stopped jobs if the user wants to. */ - if (!exit_immediate_okay) + if (exit_immediate_okay == 0) { register int i; - for (i = 0; i < job_slots; i++) + for (i = stopmsg = 0; i < js.j_jobslots; i++) if (jobs[i] && STOPPED (i)) - { - fprintf (stderr, "There are stopped jobs.\n"); + stopmsg = JSTOPPED; + else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i)) + stopmsg = JRUNNING; - /* 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); - } + 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. */ - exit_value = get_exitstat (list); + /* 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) { @@ -130,10 +165,4 @@ exit_or_logout (list) maybe_execute_file (SYS_BASH_LOGOUT, 1); #endif } - - last_command_exit_value = exit_value; - - /* Exit the program. */ - jump_to_top_level (EXITPROG); - /*NOTREACHED*/ } diff --git a/src/bin/bash/builtins/fc.def b/src/bin/bash/builtins/fc.def index 8763914a3c..22425d7042 100644 --- a/src/bin/bash/builtins/fc.def +++ b/src/bin/bash/builtins/fc.def @@ -1,60 +1,63 @@ This file is fc.def, from which is created fc.c. It implements the builtin "fc" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] [-nlr] [first] [last] or fc -s [pat=rep] [cmd] +$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. - -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR, - then vi. +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) - -l means list lines instead of editing. - -n means no line numbers listed. - -r means reverse the order of the lines (making it newest listed first). - -With the `fc -s [pat=rep ...] [command]' format, the command is +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) +#ifndef _MINIX # include #endif #include "../bashtypes.h" #include "posixstat.h" -#if defined (HAVE_SYS_FILE_H) +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif @@ -66,6 +69,7 @@ $END #include #include "../bashansi.h" +#include "../bashintl.h" #include #include "../shell.h" @@ -81,9 +85,9 @@ $END extern int errno; #endif /* !errno */ -extern int echo_input_at_read; extern int current_command_line_count; extern int literal_history; +extern int posixly_correct; extern int unlink __P((const char *)); @@ -155,6 +159,11 @@ static void fc_addhist __P((char *)); /* 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) @@ -166,7 +175,7 @@ fc_builtin (list) int histbeg, histend, last_hist, retval, opt; FILE *stream; REPL *rlist, *rl; - char *ename, *command, *newcom; + char *ename, *command, *newcom, *fcedit; HIST_ENTRY **hlist; char *fn; @@ -249,7 +258,7 @@ fc_builtin (list) if (command == NULL) { - builtin_error ("no command found"); + builtin_error (_("no command found")); if (rlist) FREE_RLIST (); @@ -284,7 +293,7 @@ fc_builtin (list) line was actually added (HISTIGNORE may have caused it to not be), so we check hist_last_line_added. */ - last_hist = i - 1 - hist_last_line_added; + last_hist = i - remember_on_history - hist_last_line_added; if (list) { @@ -302,7 +311,7 @@ fc_builtin (list) if (listing) { histend = last_hist; - histbeg = histend - 16; + histbeg = histend - 16 + 1; /* +1 because loop below uses >= */ if (histbeg < 0) histbeg = 0; } @@ -311,10 +320,25 @@ fc_builtin (list) histbeg = histend = last_hist; } + /* "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; + } + /* We print error messages for line specifications out of range. */ if ((histbeg < 0) || (histend < 0)) { - sh_erange ((char *)NULL, "history specification"); + sh_erange ((char *)NULL, _("history specification")); return (EXECUTION_FAILURE); } @@ -335,7 +359,7 @@ fc_builtin (list) stream = sh_mktmpfp ("bash-fc", MT_USERANDOM|MT_USETMPDIR, &fn); if (stream == 0) { - builtin_error ("cannot open temp file %s", fn ? fn : ""); + builtin_error (_("%s: cannot open temp file: %s"), fn ? fn : "", strerror (errno)); FREE (fn); return (EXECUTION_FAILURE); } @@ -347,13 +371,25 @@ fc_builtin (list) if (numbering) fprintf (stream, "%d", i + history_base); if (listing) - fprintf (stream, "\t%c", histdata (i) ? '*' : ' '); + { + if (posixly_correct) + fputs ("\t", stream); + else + fprintf (stream, "\t%c", histdata (i) ? '*' : ' '); + } fprintf (stream, "%s\n", histline (i)); } if (listing) - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); + fflush (stream); + if (ferror (stream)) + { + sh_wrerror (); + fclose (stream); + return (EXECUTION_FAILURE); + } fclose (stream); /* Now edit the file of commands. */ @@ -364,8 +400,9 @@ fc_builtin (list) } else { - command = (char *)xmalloc (3 + strlen (FC_EDIT_COMMAND) + strlen (fn)); - sprintf (command, "%s %s", FC_EDIT_COMMAND, fn); + 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) @@ -419,10 +456,11 @@ fc_gethnum (command, hlist) char *command; HIST_ENTRY **hlist; { - int sign = 1, n, clen; + int sign, n, clen; register int i, j; register char *s; + sign = 1; /* Count history elements. */ for (i = 0; hlist[i]; i++); @@ -432,8 +470,9 @@ fc_gethnum (command, hlist) and makes the last command that this deals with be the last command the user entered before the fc. We need to check whether the line was actually added (HISTIGNORE may have caused it to not be), - so we check hist_last_line_added. */ - i -= 1 + hist_last_line_added; + so we check hist_last_line_added. This needs to agree with the + calculation of last_hist in fc_builtin above. */ + i -= remember_on_history + hist_last_line_added; /* No specification defaults to most recent command. */ if (command == NULL) @@ -489,7 +528,7 @@ fc_gethist (command, hlist) { int i; - if (!hlist) + if (hlist == 0) return ((char *)NULL); i = fc_gethnum (command, hlist); @@ -573,41 +612,18 @@ static void fc_replhist (command) char *command; { - register int i; - HIST_ENTRY **hlist, *histent, *discard; int n; if (command == 0 || *command == '\0') return; - hlist = history_list (); - - if (hlist == NULL) - return; - - for (i = 0; hlist[i]; i++); - i--; - - /* History_get () takes a parameter that should be - offset by history_base. */ - - histent = history_get (history_base + i); /* Don't free this */ - if (histent == NULL) - return; - n = strlen (command); - if (command[n - 1] == '\n') command[n - 1] = '\0'; if (command && *command) { - discard = remove_history (i); - if (discard) - { - FREE (discard->line); - free ((char *) discard); - } + bash_delete_last_history (); maybe_add_history (command); /* Obeys HISTCONTROL setting. */ } } @@ -620,13 +636,16 @@ fc_addhist (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); + maybe_add_history (line); /* Obeys HISTCONTROL setting. */ } #endif diff --git a/src/bin/bash/builtins/fg_bg.def b/src/bin/bash/builtins/fg_bg.def index c16d894d3a..ae7e90402d 100644 --- a/src/bin/bash/builtins/fg_bg.def +++ b/src/bin/bash/builtins/fg_bg.def @@ -1,23 +1,22 @@ 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-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES fg_bg.c @@ -25,9 +24,14 @@ $BUILTIN fg $FUNCTION fg_builtin $DEPENDS_ON JOB_CONTROL $SHORT_DOC fg [job_spec] -Place JOB_SPEC in the foreground, and make it the current job. If -JOB_SPEC is not present, the shell's notion of the current job is -used. +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 @@ -39,6 +43,8 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "../jobs.h" #include "common.h" @@ -80,10 +86,15 @@ fg_builtin (list) $BUILTIN bg $FUNCTION bg_builtin $DEPENDS_ON JOB_CONTROL -$SHORT_DOC bg [job_spec] -Place JOB_SPEC in the background, as if it had been started with -`&'. If JOB_SPEC is not present, the shell's notion of the current -job is used. +$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) @@ -92,6 +103,8 @@ int bg_builtin (list) WORD_LIST *list; { + int r; + if (job_control == 0) { sh_nojobs ((char *)NULL); @@ -102,7 +115,19 @@ bg_builtin (list) return (EX_USAGE); list = loptend; - return (fg_bg (list, 0)); + /* 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. */ @@ -113,29 +138,31 @@ fg_bg (list, foreground) { sigset_t set, oset; int job, status, old_async_pid; + JOB *j; BLOCK_CHILD (set, oset); job = get_job_spec (list); - if (job < 0 || job >= job_slots || jobs[job] == 0) + if (INVALID_JOB (job)) { if (job != DUP_JOB) - sh_badjob (list ? list->word->word : "current"); + sh_badjob (list ? list->word->word : _("current")); goto failure; } - /* Or if jobs[job]->pgrp == shell_pgrp. */ + 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); + builtin_error (_("job %d started without job control"), job + 1); goto failure; } if (foreground == 0) { old_async_pid = last_asynchronous_pid; - last_asynchronous_pid = jobs[job]->pgrp; /* As per Posix.2 5.4.2 */ + last_asynchronous_pid = j->pgrp; /* As per Posix.2 5.4.2 */ } status = start_job (job, foreground); @@ -144,7 +171,7 @@ fg_bg (list, foreground) { /* win: */ UNBLOCK_CHILD (oset); - return (status); + return (foreground ? status : EXECUTION_SUCCESS); } else { diff --git a/src/bin/bash/builtins/getopt.c b/src/bin/bash/builtins/getopt.c index 60c6188af1..feb18b58e3 100644 --- a/src/bin/bash/builtins/getopt.c +++ b/src/bin/bash/builtins/getopt.c @@ -1,21 +1,22 @@ -/* getopt for BASH. +/* getopt.c - getopt for Bash. Used by the getopt builtin. */ - Copyright (C) 1993, 1994 - Free Software Foundation, Inc. +/* Copyright (C) 1993-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 2, or (at your option) any - later version. + This file is part of GNU Bash, the Bourne Again SHell. - This program is distributed in the hope that it will be useful, + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include @@ -28,6 +29,7 @@ #include #include "memalloc.h" +#include "../bashintl.h" #include "../shell.h" #include "getopt.h" @@ -105,8 +107,8 @@ int sh_badopt = 0; 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) +#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) diff --git a/src/bin/bash/builtins/getopt.h b/src/bin/bash/builtins/getopt.h index 7a4afb1609..75fdec571a 100644 --- a/src/bin/bash/builtins/getopt.h +++ b/src/bin/bash/builtins/getopt.h @@ -1,19 +1,22 @@ -/* Declarations for getopt. - Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. +/* getopt.h - declarations for getopt. */ - 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. +/* Copyright (C) 1989, 1990, 1991, 1992, 1993, 2008,2009 Free Software Foundation, Inc. - This program is distributed in the hope that it will be useful, + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* XXX THIS HAS BEEN MODIFIED FOR INCORPORATION INTO BASH XXX */ diff --git a/src/bin/bash/builtins/getopts.def b/src/bin/bash/builtins/getopts.def index a2a82ff45e..c077c8e051 100644 --- a/src/bin/bash/builtins/getopts.def +++ b/src/bin/bash/builtins/getopts.def @@ -1,30 +1,32 @@ This file is getopts.def, from which is created getopts.c. It implements the builtin "getopts" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +Copyright (C) 1987-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] -Getopts is used by shell procedures to parse positional parameters. +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, @@ -44,7 +46,7 @@ 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 option is not found, a '?' +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. @@ -54,6 +56,10 @@ OPTSTRING is not a colon. OPTERR has the value 1 by default. Getopts normally parses the positional parameters ($0 - $9), but if more arguments are given, they are parsed instead. + +Exit Status: +Returns success if an option is found; fails if the end of options is +encountered or an error occurs. $END #include @@ -101,7 +107,7 @@ getopts_bind_variable (name, value) if (legal_identifier (name)) { - v = bind_variable (name, value); + v = bind_variable (name, value, 0); return (v && (readonly_p (v) == 0)) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; } else @@ -228,7 +234,7 @@ dogetopts (argc, argv) } while (n /= 10); } - bind_variable ("OPTIND", numval + i); + 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 @@ -245,6 +251,7 @@ dogetopts (argc, argv) if (ret == G_EOF) { + unbind_variable ("OPTARG"); getopts_bind_variable (name, "?"); return (EXECUTION_FAILURE); } @@ -258,7 +265,7 @@ dogetopts (argc, argv) { strval[0] = (char)sh_optopt; strval[1] = '\0'; - bind_variable ("OPTARG", strval); + bind_variable ("OPTARG", strval, 0); } else unbind_variable ("OPTARG"); @@ -275,7 +282,7 @@ dogetopts (argc, argv) strval[0] = (char)sh_optopt; strval[1] = '\0'; - bind_variable ("OPTARG", strval); + bind_variable ("OPTARG", strval, 0); } else { @@ -285,7 +292,7 @@ dogetopts (argc, argv) return (ret); } - bind_variable ("OPTARG", sh_optarg); + bind_variable ("OPTARG", sh_optarg, 0); strval[0] = (char) ret; strval[1] = '\0'; diff --git a/src/bin/bash/builtins/hash.def b/src/bin/bash/builtins/hash.def index 6e0e347637..7a8aced8b0 100644 --- a/src/bin/bash/builtins/hash.def +++ b/src/bin/bash/builtins/hash.def @@ -1,39 +1,47 @@ This file is hash.def, from which is created hash.c. It implements the builtin "hash" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 ...] -For each NAME, the full pathname of the command is determined and -remembered. If the -p option is supplied, PATHNAME is used as the -full pathname of NAME, and no path search is performed. The -r -option causes the shell to forget all remembered locations. The -d -option causes the shell to forget the remembered location of each NAME. -If the -t option is supplied the full pathname to which each NAME -corresponds is printed. If multiple NAME arguments are supplied with --t, the NAME is printed before the hashed full pathname. The -l option -causes output to be displayed in a format that may be reused as input. -If no arguments are given, information about remembered commands is displayed. +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 is 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 @@ -49,6 +57,7 @@ $END #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../builtins.h" @@ -58,6 +67,7 @@ $END #include "common.h" #include "bashgetopt.h" +extern int posixly_correct; extern int dot_found_in_search; extern char *this_command_name; @@ -79,7 +89,7 @@ hash_builtin (list) if (hashing_enabled == 0) { - builtin_error ("hashing disabled"); + builtin_error (_("hashing disabled")); return (EXECUTION_FAILURE); } @@ -123,8 +133,9 @@ hash_builtin (list) we test expunge_hash_table. */ if (list == 0 && expunge_hash_table == 0) { - if (print_hashed_commands (list_portably) == 0) - printf ("%s: hash table empty\n", this_command_name); + opt = print_hashed_commands (list_portably); + if (opt == 0 && posixly_correct == 0) + printf (_("%s: hash table empty\n"), this_command_name); return (EXECUTION_SUCCESS); } @@ -155,7 +166,7 @@ hash_builtin (list) #ifdef EISDIR builtin_error ("%s: %s", pathname, strerror (EISDIR)); #else - builtin_error ("%s: is a directory", pathname); + builtin_error (_("%s: is a directory"), pathname); #endif opt = EXECUTION_FAILURE; } @@ -164,10 +175,13 @@ hash_builtin (list) } else if (absolute_program (w)) continue; - else if (delete && phash_remove (w)) + else if (delete) { - sh_notfound (w); - opt = EXECUTION_FAILURE; + if (phash_remove (w)) + { + sh_notfound (w); + opt = EXECUTION_FAILURE; + } } else if (add_hashed_command (w, 0)) opt = EXECUTION_FAILURE; @@ -227,7 +241,7 @@ print_hashed_commands (fmt) return (0); if (fmt == 0) - printf ("hits\tcommand\n"); + printf (_("hits\tcommand\n")); hash_walk (hashed_filenames, fmt ? print_portable_hash_info : print_hash_info); return (1); } diff --git a/src/bin/bash/builtins/help.def b/src/bin/bash/builtins/help.def index 234307b79e..004abe29f7 100644 --- a/src/bin/bash/builtins/help.def +++ b/src/bin/bash/builtins/help.def @@ -1,35 +1,46 @@ This file is help.def, from which is created help.c. It implements the builtin "help" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [-s] [pattern ...] -Display helpful information about builtin commands. If PATTERN is +$SHORT_DOC help [-ds] [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 a list of the builtins is printed. The -s option -restricts the output for each builtin command matching PATTERN to -a short usage synopsis. +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 specifiying a help topic + +Exit Status: +Returns success unless PATTERN is not found or an invalid option is given. $END #include @@ -48,6 +59,8 @@ $END #include +#include "../bashintl.h" + #include "../shell.h" #include "../builtins.h" #include "../pathexp.h" @@ -61,7 +74,13 @@ $END extern int errno; #endif +extern const char * const bash_copyright; +extern const char * const bash_license; + static void show_builtin_command_help __P((void)); +static int open_helpfile __P((char *)); +static void show_desc __P((char *, int)); +static void show_manpage __P((char *, int)); static void show_longdoc __P((int)); /* Print out a list of the known functions in the shell, and what they do. @@ -73,14 +92,20 @@ help_builtin (list) { register int i; char *pattern, *name; - int plen, match_found, sflag; + int plen, match_found, sflag, dflag, mflag; - sflag = 0; + dflag = sflag = mflag = 0; reset_internal_getopt (); - while ((i = internal_getopt (list, "s")) != -1) + while ((i = internal_getopt (list, "dms")) != -1) { switch (i) { + case 'd': + dflag = 1; + break; + case 'm': + mflag = 1; + break; case 's': sflag = 1; break; @@ -102,7 +127,7 @@ help_builtin (list) if (glob_pattern_p (list->word->word)) { - printf ("Shell commands matching keyword%s `", list->next ? "s" : ""); + printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); print_word_list (list, ", "); printf ("'\n\n"); } @@ -118,19 +143,29 @@ help_builtin (list) if ((strncmp (pattern, name, plen) == 0) || (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH)) { + 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); - - match_found++; } } } if (match_found == 0) { - builtin_error ("no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'.", pattern, pattern, pattern); + builtin_error (_("no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."), pattern, pattern, pattern); return (EXECUTION_FAILURE); } @@ -138,6 +173,21 @@ help_builtin (list) return (EXECUTION_SUCCESS); } +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. */ @@ -153,50 +203,181 @@ show_longdoc (i) if (doc && doc[0] && *doc[0] == '/' && doc[1] == (char *)NULL) { - fd = open (doc[0], O_RDONLY); - if (fd == -1) - { - builtin_error ("%s: cannot open: %s", doc[0], strerror (errno)); - return; - } + fd = open_helpfile (doc[0]); + if (fd < 0) + return; zcatfd (fd, 1, doc[0]); close (fd); } else for (j = 0; doc[j]; j++) - printf (" %s\n", doc[j]); + printf ("%*s%s\n", BASE_INDENT, " ", _(doc[j])); +} + +static void +show_desc (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; + + 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 show_builtin_command_help () { int i, j; - char blurb[36]; + int height, width; + char *t, blurb[128]; printf ( -"These shell commands are defined internally. Type `help' to see this list.\n\ +_("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"); +\n")); - for (i = 0; i < num_shell_builtins; i++) + t = get_string_value ("COLUMNS"); + width = (t && *t) ? atoi (t) : 80; + if (width <= 0) + width = 80; + + width /= 2; + if (width > sizeof (blurb)) + width = sizeof (blurb); + height = (num_shell_builtins + 1) / 2; /* number of rows */ + + for (i = 0; i < height; i++) { QUIT; - blurb[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; - strncpy (blurb + 1, shell_builtins[i].short_doc, 34); - blurb[35] = '\0'; - printf ("%s", blurb); - if (i % 2) - printf ("\n"); - else - for (j = strlen (blurb); j < 35; j++) - putc (' ', stdout); + /* first column */ + blurb[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (blurb + 1, shell_builtins[i].short_doc, width - 2); + blurb[width - 2] = '>'; /* indicate truncation */ + blurb[width - 1] = '\0'; + printf ("%s", blurb); + if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) + { + printf ("\n"); + break; + } + + /* two spaces */ + for (j = strlen (blurb); j < width; j++) + putc (' ', stdout); + + /* second column */ + blurb[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (blurb + 1, shell_builtins[i+height].short_doc, width - 3); + blurb[width - 3] = '>'; /* indicate truncation */ + blurb[width - 2] = '\0'; + printf ("%s\n", blurb); } - if (i % 2) - printf ("\n"); } #endif /* HELP_BUILTIN */ diff --git a/src/bin/bash/builtins/history.def b/src/bin/bash/builtins/history.def index b48c8d6c14..e8249e9901 100644 --- a/src/bin/bash/builtins/history.def +++ b/src/bin/bash/builtins/history.def @@ -1,53 +1,65 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 -awrn [filename] or history -ps arg [arg...] -Display the history list with line numbers. Lines listed with -with a `*' have been modified. Argument of N says to list only -the last N lines. The `-c' option causes the history list to be -cleared by deleting all of the entries. The `-d' option deletes -the history entry at offset OFFSET. The `-w' option writes out the -current history to the history file; `-r' means to read the file and -append the contents to the history list instead. `-a' means -to append history lines from this session to the history file. -Argument `-n' means to read all history lines not already read -from the history file and append them to the history list. If -FILENAME is given, then that is used as the history file else +$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 offset OFFSET. + + -a append history lines from this session to the history file + -n read all history lines not already read from the history file + -r read the history file and append the contents to the history + list + -w write the current history to the history file + and append them to the history list + + -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 -s option is supplied, the non-option ARGs are appended to -the history list as a single entry. The -p option means to perform -history expansion on each ARG and display the result, without storing -anything in the history list. + +If the $HISTTIMEFORMAT variable is set and not null, its value is used +as a format string for strftime(3) to print the time stamp associated +with each displayed history entry. No time stamps are printed otherwise. + +Exit Status: +Returns success unless an invalid option is given or an error occurs. $END #include #if defined (HISTORY) #include "../bashtypes.h" -#if defined (HAVE_SYS_FILE_H) +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "posixstat.h" @@ -59,6 +71,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../bashhist.h" @@ -71,10 +84,10 @@ extern int errno; #endif extern int current_command_line_count; +extern int force_append_history; /* shopt -s histappend */ -static void display_history __P((WORD_LIST *)); -static int delete_histent __P((int)); -static int delete_last_history __P((void)); +static char *histtime __P((HIST_ENTRY *, const char *)); +static int display_history __P((WORD_LIST *)); static void push_history __P((WORD_LIST *)); static int expand_and_print_history __P((WORD_LIST *)); @@ -91,7 +104,7 @@ int history_builtin (list) WORD_LIST *list; { - int flags, opt, result, old_history_lines; + int flags, opt, result, old_history_lines, obase; char *filename, *delete_arg; intmax_t delete_offset; @@ -138,14 +151,14 @@ history_builtin (list) 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"); + builtin_error (_("cannot use more than one of -anrw")); return (EXECUTION_FAILURE); } /* clear the history, but allow other arguments to add to it again. */ if (flags & CFLAG) { - clear_history (); + bash_clear_history (); if (list == 0) return (EXECUTION_SUCCESS); } @@ -161,7 +174,7 @@ history_builtin (list) { if (list) return (expand_and_print_history (list)); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } #endif else if (flags & DFLAG) @@ -170,11 +183,11 @@ history_builtin (list) || (delete_offset < history_base) || (delete_offset > (history_base + history_length))) { - sh_erange (delete_arg, "history position"); + sh_erange (delete_arg, _("history position")); return (EXECUTION_FAILURE); } opt = delete_offset; - result = delete_histent (opt - 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) @@ -183,8 +196,8 @@ history_builtin (list) } else if ((flags & (AFLAG|RFLAG|NFLAG|WFLAG|CFLAG)) == 0) { - display_history (list); - return (EXECUTION_SUCCESS); + result = display_history (list); + return (sh_chkwrite (result)); } filename = list ? list->word->word : get_string_value ("HISTFILE"); @@ -200,11 +213,27 @@ history_builtin (list) { /* Read all of the lines in the file that we haven't already read. */ old_history_lines = history_lines_in_file; + obase = history_base; + using_history (); result = read_history_range (filename, history_lines_in_file, -1); using_history (); + history_lines_in_file = where_history (); - history_lines_this_session += history_lines_in_file - old_history_lines; + + /* 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); @@ -214,17 +243,36 @@ history_builtin (list) #define histline(i) (hlist[(i)]->line) #define histdata(i) (hlist[(i)]->data) -static void +static char * +histtime (hlist, histtimefmt) + HIST_ENTRY *hlist; + const char *histtimefmt; +{ + static char timestr[128]; + time_t t; + + t = history_get_time (hlist); + if (t) + strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t)); + else + strcpy (timestr, "??"); + return timestr; +} + +static int display_history (list) WORD_LIST *list; { register int i; intmax_t limit; HIST_ENTRY **hlist; + char *histtimefmt, *timestr; if (list) { - limit = get_numeric_arg (list, 0); + if (get_numeric_arg (list, 0, &limit) == 0) + return (EXECUTION_FAILURE); + if (limit < 0) limit = -limit; } @@ -243,54 +291,22 @@ display_history (list) else i = 0; + histtimefmt = get_string_value ("HISTTIMEFORMAT"); + while (hlist[i]) { QUIT; - printf ("%5d%c %s\n", i + history_base, + + timestr = (histtimefmt && *histtimefmt) ? histtime (hlist[i], histtimefmt) : (char *)NULL; + printf ("%5d%c %s%s\n", i + history_base, histdata(i) ? '*' : ' ', + ((timestr && *timestr) ? timestr : ""), histline(i)); i++; } } -} -/* Delete and free the history list entry at offset I. */ -static int -delete_histent (i) - int i; -{ - HIST_ENTRY *discard; - - discard = remove_history (i); - if (discard) - { - if (discard->line) - free (discard->line); - free ((char *) discard); - } - return 1; -} - -static int -delete_last_history () -{ - register int i; - HIST_ENTRY **hlist, *histent; - - 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; - - return (delete_histent (i)); + return (EXECUTION_SUCCESS); } /* Remove the last entry in the history list and add each argument in @@ -308,10 +324,12 @@ push_history (list) If you don't want history -s to remove the compound command from the history, change #if 0 to #if 1 below. */ #if 0 - if (hist_last_line_added && delete_last_history () == 0) + if (hist_last_line_pushed == 0 && hist_last_line_added && bash_delete_last_history () == 0) #else - if ((hist_last_line_added || (current_command_line_count > 0 && current_command_first_line_saved && command_oriented_history)) - && delete_last_history () == 0) + if (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; @@ -323,6 +341,8 @@ push_history (list) 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); } @@ -334,7 +354,7 @@ expand_and_print_history (list) char *s; int r, result; - if (hist_last_line_added && delete_last_history () == 0) + if (hist_last_line_pushed == 0 && hist_last_line_added && bash_delete_last_history () == 0) return EXECUTION_FAILURE; result = EXECUTION_SUCCESS; while (list) @@ -342,7 +362,7 @@ expand_and_print_history (list) r = history_expand (list->word->word, &s); if (r < 0) { - builtin_error ("%s: history expansion failed", list->word->word); + builtin_error (_("%s: history expansion failed"), list->word->word); result = EXECUTION_FAILURE; } else diff --git a/src/bin/bash/builtins/inlib.def b/src/bin/bash/builtins/inlib.def index 094c4b949a..c4faf0d537 100644 --- a/src/bin/bash/builtins/inlib.def +++ b/src/bin/bash/builtins/inlib.def @@ -5,19 +5,18 @@ Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES inlib.c #include @@ -29,12 +28,17 @@ $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) @@ -64,7 +68,7 @@ inlib_builtin (list) if (status.all != status_$ok) { - builtin_error ("%s: inlib failed", list->word->word); + builtin_error (_("%s: inlib failed"), list->word->word); return_value = EXECUTION_FAILURE; } diff --git a/src/bin/bash/builtins/jobs.def b/src/bin/bash/builtins/jobs.def index 54f50ca32d..b14e91f24b 100644 --- a/src/bin/bash/builtins/jobs.def +++ b/src/bin/bash/builtins/jobs.def @@ -1,23 +1,22 @@ This file is jobs.def, from which is created jobs.c. It implements the builtins "jobs" and "disown" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES jobs.c @@ -25,15 +24,26 @@ $BUILTIN jobs $FUNCTION jobs_builtin $DEPENDS_ON JOB_CONTROL $SHORT_DOC jobs [-lnprs] [jobspec ...] or jobs -x command [args] -Lists the active jobs. The -l option lists process id's in addition -to the normal information; the -p option lists process id's only. -If -n is given, only processes that have changed status since the last -notification are printed. JOBSPEC restricts output to that job. The --r and -s options restrict output to running and stopped jobs only, -respectively. Without options, the status of all active jobs is -printed. If -x is given, COMMAND is run after all job specifications -that appear in ARGS have been replaced with the process ID of that job's +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 list 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 @@ -46,6 +56,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../jobs.h" @@ -74,9 +85,6 @@ jobs_builtin (list) int form, execute, state, opt, any_failed, job; sigset_t set, oset; - if (job_control == 0 && interactive_shell == 0) - return (EXECUTION_SUCCESS); - execute = any_failed = 0; form = JLIST_STANDARD; state = JSTATE_ANY; @@ -98,7 +106,7 @@ jobs_builtin (list) case 'x': if (form != JLIST_STANDARD) { - builtin_error ("no other options allowed with `-x'"); + builtin_error (_("no other options allowed with `-x'")); return (EXECUTION_FAILURE); } execute++; @@ -143,7 +151,7 @@ jobs_builtin (list) BLOCK_CHILD (set, oset); job = get_job_spec (list); - if ((job == NO_JOB) || !jobs || !jobs[job]) + if ((job == NO_JOB) || jobs == 0 || get_job_by_jid (job) == 0) { sh_badjob (list->word->word); any_failed++; @@ -163,6 +171,8 @@ execute_list_with_replacements (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) @@ -172,31 +182,29 @@ execute_list_with_replacements (list) job = get_job_spec (l); /* A bad job spec is not really a job spec! Pass it through. */ - if (job < 0 || job >= job_slots || !jobs[job]) + if (INVALID_JOB (job)) continue; + j = get_job_by_jid (job); free (l->word->word); - l->word->word = itos (jobs[job]->pgrp); + l->word->word = itos (j->pgrp); } } /* Next make a new simple command and execute it. */ begin_unwind_frame ("jobs_builtin"); - { - COMMAND *command = (COMMAND *)NULL; - add_unwind_protect (dispose_command, command); + 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; - 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); - result = execute_command (command); - } - - run_unwind_frame ("jobs_builtin"); + discard_unwind_frame ("jobs_builtin"); return (result); } #endif /* JOB_CONTROL */ @@ -205,11 +213,19 @@ $BUILTIN disown $FUNCTION disown_builtin $DEPENDS_ON JOB_CONTROL $SHORT_DOC disown [-h] [-ar] [jobspec ...] -By default, removes each JOBSPEC argument from the table of active jobs. -If the -h option is given, the job is not removed from the table, but is -marked so that SIGHUP is not sent to the job if the shell receives a -SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all -jobs from the job table; the -r option means to remove only running jobs. +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) @@ -261,9 +277,9 @@ disown_builtin (list) ? get_job_by_pid ((pid_t) pid_value, 0) : get_job_spec (list); - if (job == NO_JOB || jobs == 0 || job < 0 || job >= job_slots || jobs[job] == 0) + if (job == NO_JOB || jobs == 0 || INVALID_JOB (job)) { - sh_badjob (list ? list->word->word : "current"); + sh_badjob (list ? list->word->word : _("current")); retval = EXECUTION_FAILURE; } else if (nohup_only) diff --git a/src/bin/bash/builtins/kill.def b/src/bin/bash/builtins/kill.def index 96b34fcb4a..734da250e2 100644 --- a/src/bin/bash/builtins/kill.def +++ b/src/bin/bash/builtins/kill.def @@ -1,37 +1,46 @@ This file is kill.def, from which is created kill.c. It implements the builtin "kill" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 -$DEPENDS_ON JOB_CONTROL -$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec] -Send the processes named by PID (or JOB) the signal SIGSPEC. If -SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l' -lists the signal names; if arguments follow `-l' they are assumed to -be signal numbers for which names should be listed. Kill is a shell -builtin for two reasons: it allows job IDs to be used instead of -process IDs, and, if you have reached the limit on processes that -you can create, you don't have to start a process to kill another one. +$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 + +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 @@ -46,6 +55,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../trap.h" @@ -57,9 +67,10 @@ $END extern int errno; #endif /* !errno */ -#if defined (JOB_CONTROL) extern int posixly_correct; +static void kill_error __P((pid_t, int)); + #if !defined (CONTINUE_AFTER_KILL_ERROR) # define CONTINUE_OR_FAIL return (EXECUTION_FAILURE) #else @@ -73,7 +84,7 @@ int kill_builtin (list) WORD_LIST *list; { - int sig, any_succeeded, listing, saw_signal; + int sig, any_succeeded, listing, saw_signal, dflags; char *sigspec, *word; pid_t pid; intmax_t pid_value; @@ -88,6 +99,7 @@ kill_builtin (list) sig = SIGTERM; sigspec = "TERM"; + dflags = DSIG_NOCASE | ((posixly_correct == 0) ? DSIG_SIGPREFIX : 0); /* Process options. */ while (list) { @@ -107,7 +119,7 @@ kill_builtin (list) if (sigspec[0] == '0' && sigspec[1] == '\0') sig = 0; else - sig = decode_signal (sigspec); + sig = decode_signal (sigspec, dflags); list = list->next; } else @@ -132,7 +144,7 @@ kill_builtin (list) else if ((*word == '-') && !saw_signal) { sigspec = word + 1; - sig = decode_signal (sigspec); + sig = decode_signal (sigspec, dflags); saw_signal++; list = list->next; } @@ -168,26 +180,34 @@ kill_builtin (list) { pid = (pid_t) pid_value; - if ((pid < -1 ? kill_pid (-pid, sig, 1) : kill_pid (pid, sig, 0)) < 0) - goto signal_error; + 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: no such pid", list->word->word); + builtin_error (_("%s: arguments must be process or job IDs"), list->word->word); CONTINUE_OR_FAIL; } - else if (*word && (interactive || job_control)) + 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 (job < 0 || job >= job_slots || !jobs[job]) + if (INVALID_JOB (job)) { if (job != DUP_JOB) sh_badjob (list->word->word); @@ -195,26 +215,27 @@ kill_builtin (list) 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) ? jobs[job]->pgrp : jobs[job]->pipe->pid; + pid = IS_JOBCONTROL (job) ? j->pgrp : j->pipe->pid; UNBLOCK_CHILD (oset); if (kill_pid (pid, sig, 1) < 0) { - signal_error: if (errno == EINVAL) sh_invalidsig (sigspec); else - builtin_error ("(%ld) - %s", (long)pid, strerror (errno)); + kill_error (pid, errno); CONTINUE_OR_FAIL; } else any_succeeded++; } +#endif /* !JOB_CONTROL */ else { sh_badpid (list->word->word); @@ -226,4 +247,16 @@ kill_builtin (list) return (any_succeeded ? EXECUTION_SUCCESS : EXECUTION_FAILURE); } -#endif /* JOB_CONTROL */ + +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/src/bin/bash/builtins/let.def b/src/bin/bash/builtins/let.def index 7c9341ed48..2601fb95fe 100644 --- a/src/bin/bash/builtins/let.def +++ b/src/bin/bash/builtins/let.def @@ -1,33 +1,34 @@ This file is let.def, from which is created let.c. It implements the builtin "let" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 ...] -Each ARG is an arithmetic expression to be evaluated. Evaluation -is done in fixed-width integers with no check for overflow, though -division by 0 is trapped and flagged as an error. The following -list of operators is grouped into levels of equal-precedence operators. -The levels are listed in order of decreasing precedence. +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 @@ -45,7 +46,7 @@ The levels are listed in order of decreasing precedence. && logical AND || logical OR expr ? expr : expr - conditional expression + conditional operator =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= assignment @@ -59,8 +60,8 @@ Operators are evaluated in order of precedence. Sub-expressions in parentheses are evaluated first and may override the precedence rules above. -If the last ARG evaluates to 0, let returns 1; 0 is returned -otherwise. +Exit Status: +If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.. $END #include @@ -72,6 +73,8 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "common.h" @@ -89,7 +92,7 @@ let_builtin (list) if (list == 0) { - builtin_error ("expression expected"); + builtin_error (_("expression expected")); return (EXECUTION_FAILURE); } @@ -114,7 +117,7 @@ exp_builtin (list) if (list == 0) { - builtin_error ("expression expected"); + builtin_error (_("expression expected")); return (EXECUTION_FAILURE); } diff --git a/src/bin/bash/builtins/mapfile.def b/src/bin/bash/builtins/mapfile.def new file mode 100644 index 0000000000..e37cd22701 --- /dev/null +++ b/src/bin/bash/builtins/mapfile.def @@ -0,0 +1,343 @@ +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,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 mapfile.c + +$BUILTIN mapfile +$FUNCTION mapfile_builtin +$SHORT_DOC mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +Read lines from the standard input into an array variable. + +Read lines from the standard input into the array variable ARRAY, or from +file descriptor FD if the -u option is supplied. The variable MAPFILE is +the default ARRAY. + +Options: + -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 newline from each line read. + -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 as an additional argument. + +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. +$END + +$BUILTIN readarray +$FUNCTION mapfile_builtin +$SHORT_DOC readarray [-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 +#include + +#include "../bashintl.h" +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif + +#if defined (ARRAY_VARS) + +#define DEFAULT_ARRAY_NAME "MAPFILE" + +/* 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 +run_callback(callback, current_index) + const char *callback; + unsigned int current_index; +{ + unsigned int execlen; + char *execstr; + int flags; + + execlen = strlen (callback) + 10; + /* 1 for space between %s and %d, + another 1 for the last nul char for C string. */ + execlen += 2; + execstr = xmalloc (execlen); + + flags = 0; +#if 0 + if (interactive) + flags |= SEVAL_NOHIST|SEVAL_INTERACT; +#endif + snprintf (execstr, execlen, "%s %d", callback, current_index); + return parse_and_execute(execstr, NULL, flags); +} + +static void +do_chop(line) + char * line; +{ + int length; + + length = strlen (line); + if (length && line[length-1] == '\n') + line[length-1] = '\0'; +} + +static int +mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_name, flags) + int fd; + long line_count_goal, origin, nskip, callback_quantum; + char *callback, *array_name; + 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 (readonly_p (entry)) + err_readonly (array_name); + + return (EXECUTION_FAILURE); + } + 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 + + zreset (); + + /* Skip any lines at beginning of file? */ + for (line_count = 0; line_count < nskip; line_count++) + if (zgetline (fd, &line, &line_length, unbuffered_read) < 0) + break; + + line = 0; + line_length = 0; + + /* Reset the buffer for bash own stream */ + interrupt_immediately++; + for (array_index = origin, line_count = 1; + zgetline (fd, &line, &line_length, unbuffered_read) != -1; + array_index++, line_count++) + { + /* Have we exceeded # of lines to store? */ + if (line_count_goal != 0 && line_count > line_count_goal) + break; + + /* Remove trailing newlines? */ + if (flags & MAPF_CHOP) + do_chop (line); + + /* 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); + + /* Reset the buffer for bash own stream. */ + if (unbuffered_read == 0) + zsyncfd (fd); + } + + bind_array_element (entry, array_index, line, 0); + } + + xfree (line); + + if (unbuffered_read == 0) + zsyncfd (fd); + + interrupt_immediately--; + return EXECUTION_SUCCESS; +} + +int +mapfile_builtin (list) + WORD_LIST *list; +{ + int opt, code, fd, clear_array, flags; + intmax_t intval; + long lines, origin, nskip, callback_quantum; + char *array_name, *callback; + + clear_array = 1; + fd = 0; + lines = origin = nskip = 0; + flags = MAPF_CLEARARRAY; + callback_quantum = DEFAULT_QUANTUM; + callback = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "u:n:O:tC:c:s:")) != -1) + { + switch (opt) + { + 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; + 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 && valid_array_reference (array_name) == 0) + { + sh_invalidid (array_name); + return (EXECUTION_FAILURE); + } + + return mapfile (fd, lines, origin, nskip, callback_quantum, callback, array_name, flags); +} + +#else + +int +mapfile_builtin (list) + WORD_LIST *list; +{ + builtin_error (_("array variable support required")); + return (EXECUTION_FAILURE); +} + +#endif /* ARRAY_VARS */ diff --git a/src/bin/bash/builtins/mkbuiltins.c b/src/bin/bash/builtins/mkbuiltins.c index 74a25480e9..f4984b8503 100644 --- a/src/bin/bash/builtins/mkbuiltins.c +++ b/src/bin/bash/builtins/mkbuiltins.c @@ -1,25 +1,34 @@ /* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from a single source file called builtins.def. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ -#include +#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 @@ -29,8 +38,10 @@ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #endif #ifndef _MINIX -#include "../bashtypes.h" -#include +# include "../bashtypes.h" +# if defined (HAVE_SYS_FILE_H) +# include +# endif #endif #include "posixstat.h" @@ -60,6 +71,9 @@ extern char *strcpy (); /* 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 /* If this stream descriptor is non-zero, then write texinfo documentation to it. */ @@ -75,6 +89,10 @@ int inhibit_production = 0; 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; @@ -129,7 +147,7 @@ ARRAY *saved_builtins = (ARRAY *)NULL; char *special_builtins[] = { ":", ".", "source", "break", "continue", "eval", "exec", "exit", - "export", "readonly", "return", "set", "shift", "trap", "unset", + "export", "readonly", "return", "set", "shift", "times", "trap", "unset", (char *)NULL }; @@ -140,9 +158,18 @@ char *assignment_builtins[] = (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 +}; + /* Forward declarations. */ static int is_special_builtin (); static int is_assignment_builtin (); +static int is_posix_builtin (); #if !defined (HAVE_RENAME) static int rename (); @@ -242,6 +269,8 @@ main (argc, argv) 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); @@ -390,14 +419,8 @@ array_add (element, array) array->array = (char **)xrealloc (array->array, (array->size += array->growth_rate) * array->width); -#if defined (HAVE_BCOPY) - bcopy (&element, (char *) &(array->array[array->sindex]), array->width); - array->sindex++; - bzero ((char *) &(array->array[array->sindex]), array->width); -#else array->array[array->sindex++] = element; array->array[array->sindex] = (char *)NULL; -#endif /* !HAVE_BCOPY */ } /* Free an allocated array and data pointer. */ @@ -806,6 +829,8 @@ builtin_handler (self, defs, arg) new->flags |= BUILTIN_FLAG_SPECIAL; if (is_assignment_builtin (name)) new->flags |= BUILTIN_FLAG_ASSIGNMENT; + if (is_posix_builtin (name)) + new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; array_add ((char *)new, defs->builtins); building_builtin = 1; @@ -927,7 +952,7 @@ produces_handler (self, defs, arg) line_error (defs, "%s already has a %s definition", defs->filename, self); else { - char path[255]; + char path[255]; defs->production = get_arg (self, defs, arg); if (inhibit_production) @@ -1078,9 +1103,10 @@ save_builtin (builtin) } /* Flags that mean something to write_documentation (). */ -#define STRING_ARRAY 1 -#define TEXINFO 2 -#define PLAINTEXT 4 +#define STRING_ARRAY 0x01 +#define TEXINFO 0x02 +#define PLAINTEXT 0x04 +#define HELPFILE 0x08 char *structfile_header[] = { "/* builtins.c -- the built in shell commands. */", @@ -1088,23 +1114,23 @@ char *structfile_header[] = { "/* This file is manufactured by ./mkbuiltins, and should not be", " edited by hand. See the source to mkbuiltins for details. */", "", - "/* Copyright (C) 1987-2002 Free Software Foundation, Inc.", + "/* 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 2, or (at your option)", - " any later version.", + " Bash is free software: you can redistribute it and/or modify", + " it under the terms of the GNU General Public License as published by", + " the Free Software Foundation, either version 3 of the License, or", + " (at your option) any later version.", "", - " Bash is distributed in the hope that it will be useful, but WITHOUT", - " ANY WARRANTY; without even the implied warranty of MERCHANTABILITY", - " or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public", - " License for more details.", + " Bash is distributed in the hope that it will be useful,", + " but WITHOUT ANY WARRANTY; without even the implied warranty of", + " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the", + " GNU General Public License for more details.", "", " You should have received a copy of the GNU General Public License", - " along with Bash; see the file COPYING. If not, write to the Free", - " Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */", + " 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", @@ -1149,6 +1175,9 @@ write_file_headers (structfile, externfile) 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"); } @@ -1222,14 +1251,15 @@ write_builtins (defs, structfile, externfile) else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); - fprintf (structfile, "%s%s%s, %s_doc,\n", + fprintf (structfile, "%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_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", document_name (builtin)); fprintf - (structfile, " \"%s\", (char *)NULL },\n", + (structfile, " N_(\"%s\"), (char *)NULL },\n", builtin->shortdoc ? builtin->shortdoc : builtin->name); } @@ -1288,7 +1318,7 @@ write_longdocs (stream, builtins) 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); + write_documentation (stream, sarray, 0, STRING_ARRAY|HELPFILE); free (sarray[0]); } else @@ -1360,8 +1390,10 @@ write_endifs (stream, defines) fprintf (stream, " */\n"); } -/* Write DOCUMENTAION to STREAM, perhaps surrounding it with double-quotes - and quoting special characters in the string. */ +/* 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; @@ -1370,32 +1402,69 @@ write_documentation (stream, documentation, indentation, flags) { register int i, j; register char *line; - int string_array, texinfo; + int string_array, texinfo, base_indent, last_cpp, filename_p; - if (!stream) + if (stream == 0) return; string_array = flags & STRING_ARRAY; - if (string_array) - fprintf (stream, " {\n#if defined (HELP_BUILTIN)\n"); + filename_p = flags & HELPFILE; - for (i = 0, texinfo = (flags & TEXINFO); line = documentation[i]; i++) + if (string_array) { - /* Allow #ifdef's to be written out verbatim. */ + fprintf (stream, " {\n#if defined (HELP_BUILTIN)\n"); /* } */ + if (single_longdoc_strings) + { + if (filename_p == 0) + { + if (documentation && documentation[0] && documentation[0][0]) + fprintf (stream, "N_(\""); + else + fprintf (stream, "N_(\" "); /* the empty string translates specially. */ + } + else + fprintf (stream, "\""); + } + } + + base_indent = (string_array && single_longdoc_strings && filename_p == 0) ? BASE_INDENT : 0; + + for (i = last_cpp = 0, texinfo = (flags & TEXINFO); line = documentation[i]; i++) + { + /* Allow #ifdef's to be written out verbatim, but don't put them into + separate help files. */ if (*line == '#') { - if (string_array) + if (string_array && filename_p == 0 && single_longdoc_strings == 0) fprintf (stream, "%s\n", line); + last_cpp = 1; continue; } + else + last_cpp = 0; - if (string_array) - fprintf (stream, " \""); + /* 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++) @@ -1412,7 +1481,17 @@ write_documentation (stream, documentation, indentation, flags) } } - fprintf (stream, "\",\n"); + /* 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) { @@ -1436,6 +1515,15 @@ write_documentation (stream, documentation, indentation, flags) 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"); } @@ -1508,6 +1596,13 @@ is_assignment_builtin (name) return (_find_in_table (name, assignment_builtins)); } +static int +is_posix_builtin (name) + char *name; +{ + return (_find_in_table (name, posix_builtins)); +} + #if !defined (HAVE_RENAME) static int rename (from, to) diff --git a/src/bin/bash/builtins/printf.def b/src/bin/bash/builtins/printf.def index 8821ecb245..757fcea2cd 100644 --- a/src/bin/bash/builtins/printf.def +++ b/src/bin/bash/builtins/printf.def @@ -1,37 +1,49 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2002 Free Software Foundation, Inc. +Copyright (C) 1997-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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA +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 format [arguments] -printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT -is a character string which contains three types of objects: plain -characters, which are simply copied to standard output, character escape -sequences which are converted and copied to the standard output, and +$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 printf(1) formats, %b means to -expand backslash escape sequences in the corresponding argument, and %q -means to quote the argument in a way that can be reused as shell input. +argument. + +In addition to the standard format specifications described in printf(1) +and printf(3), 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 + +Exit Status: +Returns success unless an invalid option is given or a write or assignment +error occurs. $END #include @@ -47,6 +59,12 @@ $END # define INT_MIN (-2147483647-1) #endif +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + #include #include @@ -55,12 +73,18 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #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" @@ -73,29 +97,68 @@ $END extern int errno; #endif +#define PC(c) \ + do { \ + char b[2]; \ + tw++; \ + b[0] = c; b[1] = '\0'; \ + if (vflag) \ + vbadd (b, 1); \ + else \ + putchar (c); \ + } while (0) + #define PF(f, func) \ do { \ + int nw; \ + clearerr (stdout); \ if (have_fieldwidth && have_precision) \ - tw += printf(f, fieldwidth, precision, func); \ + nw = vflag ? vbprintf (f, fieldwidth, precision, func) : printf (f, fieldwidth, precision, func); \ else if (have_fieldwidth) \ - tw += printf(f, fieldwidth, func); \ + nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \ else if (have_precision) \ - tw += printf(f, precision, func); \ + nw = vflag ? vbprintf (f, precision, func) : printf (f, fieldwidth, func); \ else \ - tw += printf(f, func); \ + nw = vflag ? vbprintf (f, func) : printf (f, func); \ + tw += nw; \ + 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 \ { \ + if (vflag) \ + { \ + bind_variable (vname, vbuf, 0); \ + stupidly_hack_special_variables (vname); \ + } \ if (conv_bufsize > 4096 ) \ { \ - free(conv_buf); \ + free (conv_buf); \ conv_bufsize = 0; \ conv_buf = 0; \ } \ + if (vbsize > 4096) \ + { \ + free (vbuf); \ + vbsize = 0; \ + vbuf = 0; \ + } \ + else if (vbuf) \ + vbuf[0] = 0; \ + terminate_immediately--; \ fflush (stdout); \ + if (ferror (stdout)) \ + { \ + clearerr (stdout); \ + return (EXECUTION_FAILURE); \ + } \ return (value); \ } \ while (0) @@ -103,10 +166,20 @@ extern int errno; #define SKIP1 "#'-+ 0" #define LENMODS "hjlLtz" +#ifndef HAVE_ASPRINTF +extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +#endif + +#ifndef HAVE_VSNPRINTF +extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4))); +#endif + static void printf_erange __P((char *)); -static void printstr __P((char *, char *, int, int, int)); -static int tescape __P((char *, int, char *, int *)); +static int printstr __P((char *, char *, int, int, int)); +static int tescape __P((char *, char *, int *)); static char *bexpand __P((char *, int, int *, int *)); +static char *vbadd __P((char *, int)); +static int vbprintf __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); static char *mklong __P((char *, char *, size_t)); static int getchr __P((void)); static char *getstr __P((void)); @@ -114,7 +187,7 @@ static int getint __P((void)); static intmax_t getintmax __P((void)); static uintmax_t getuintmax __P((void)); -#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD +#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) typedef long double floatmax_t; # define FLOATMAX_CONV "L" # define strtofltmax strtold @@ -125,12 +198,20 @@ typedef double floatmax_t; #endif static floatmax_t getfloatmax __P((void)); -static int asciicode __P((void)); +static intmax_t asciicode __P((void)); static WORD_LIST *garglist; static int retval; static int conversion_error; +/* printf -v var support */ +static int vflag = 0; +static char *vbuf, *vname; +static size_t vbsize; +static int vblen; + +static intmax_t tw; + static char *conv_buf; static size_t conv_bufsize; @@ -140,14 +221,37 @@ printf_builtin (list) { int ch, fieldwidth, precision; int have_fieldwidth, have_precision; - intmax_t tw; char convch, thisch, nextch, *format, *modstart, *fmt, *start; conversion_error = 0; retval = EXECUTION_SUCCESS; - if (no_options (list)) - return (EX_USAGE); + vflag = 0; + + reset_internal_getopt (); + while ((ch = internal_getopt (list, "v:")) != -1) + { + switch (ch) + { + case 'v': + if (legal_identifier (vname = list_optarg)) + { + vflag = 1; + vblen = 0; + if (vbuf) + vbuf[0] = 0; + } + else + { + sh_invalidid (vname); + return (EX_USAGE); + } + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } list = loptend; /* skip over possible `--' */ if (list == 0) @@ -160,12 +264,15 @@ printf_builtin (list) return (EXECUTION_SUCCESS); format = list->word->word; + tw = 0; garglist = list->next; /* If the format string is empty after preprocessing, return immediately. */ if (format == 0 || *format == 0) return (EXECUTION_SUCCESS); + + terminate_immediately++; /* Basic algorithm is to scan the format string for conversion specifications -- once one is found, find out if the field @@ -182,21 +289,20 @@ printf_builtin (list) precision = fieldwidth = 0; have_fieldwidth = have_precision = 0; - if (*fmt == '\\') { fmt++; - /* A NULL fourth argument to tescape means to not do special - processing for \c. */ - fmt += tescape (fmt, 1, &nextch, (int *)NULL); - putchar (nextch); + /* A NULL third argument to tescape means to bypass the + special processing for arguments to %b. */ + fmt += tescape (fmt, &nextch, (int *)NULL); + PC (nextch); fmt--; /* for loop will increment it for us again */ continue; } if (*fmt != '%') { - putchar (*fmt); + PC (*fmt); continue; } @@ -205,7 +311,7 @@ printf_builtin (list) if (*fmt == '%') /* %% prints a % */ { - putchar ('%'); + PC ('%'); continue; } @@ -235,8 +341,20 @@ printf_builtin (list) precision = getint (); } else - while (DIGIT (*fmt)) - fmt++; + { + /* 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 */ @@ -246,7 +364,7 @@ printf_builtin (list) if (*fmt == 0) { - builtin_error ("`%s': missing format character", start); + builtin_error (_("`%s': missing format character"), start); PRETURN (EXECUTION_FAILURE); } @@ -297,21 +415,27 @@ printf_builtin (list) case 'b': /* expand escapes in argument */ { char *p, *xp; - int rlen; + int rlen, r; p = getstr (); - ch = rlen = 0; + 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. */ - printstr (start, xp, rlen, fieldwidth, precision); + r = printstr (start, xp, rlen, fieldwidth, precision); + if (r < 0) + { + sh_wrerror (); + clearerr (stdout); + retval = EXECUTION_FAILURE; + } free (xp); } - if (ch) + if (ch || r < 0) PRETURN (retval); break; } @@ -319,18 +443,30 @@ printf_builtin (list) case 'q': /* print with shell quoting */ { char *p, *xp; + int r; + r = 0; p = getstr (); - if (ansic_shouldquote (p)) + 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); if (xp) { /* Use printstr to get fieldwidth and precision right. */ - printstr (start, xp, strlen (xp), fieldwidth, precision); + r = printstr (start, xp, strlen (xp), fieldwidth, precision); + if (r < 0) + { + sh_wrerror (); + clearerr (stdout); + } free (xp); } + + if (r < 0) + PRETURN (EXECUTION_FAILURE); break; } @@ -405,13 +541,20 @@ printf_builtin (list) /* 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); + builtin_error (_("`%c': invalid format character"), convch); PRETURN (EXECUTION_FAILURE); } modstart[0] = thisch; modstart[1] = nextch; } + + if (ferror (stdout)) + { + sh_wrerror (); + clearerr (stdout); + PRETURN (EXECUTION_FAILURE); + } } while (garglist && garglist != list->next); @@ -425,11 +568,11 @@ static void printf_erange (s) char *s; { - builtin_error ("warning: %s: %s", s, strerror(ERANGE)); + builtin_error (_("warning: %s: %s"), s, strerror(ERANGE)); } /* We duplicate a lot of what printf(3) does here. */ -static void +static int printstr (fmt, string, len, fieldwidth, precision) char *fmt; /* format */ char *string; /* expanded string argument */ @@ -443,8 +586,12 @@ printstr (fmt, string, len, fieldwidth, precision) int padlen, nc, ljust, i; int fw, pr; /* fieldwidth and precision */ +#if 0 if (string == 0 || *string == '\0') - return; +#else + if (string == 0 || len == 0) +#endif + return 0; #if 0 s = fmt; @@ -518,19 +665,22 @@ printstr (fmt, string, len, fieldwidth, precision) /* leading pad characters */ for (; padlen > 0; padlen--) - putchar (' '); + PC (' '); /* output NC characters from STRING */ for (i = 0; i < nc; i++) - putchar (string[i]); + PC (string[i]); /* output any necessary trailing padding */ for (; padlen < 0; padlen++) - putchar (' '); + 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. */ @@ -540,11 +690,10 @@ printstr (fmt, string, len, fieldwidth, precision) 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. */ + sequence; we also bypass the other processing specific to %b arguments. */ static int -tescape (estart, trans_squote, cp, sawc) +tescape (estart, cp, sawc) char *estart; - int trans_squote; char *cp; int *sawc; { @@ -576,14 +725,13 @@ tescape (estart, trans_squote, cp, sawc) case 'v': *cp = '\v'; break; - /* %b octal constants are `\0' followed by one, two, or three - octal digits... */ - case '0': - /* but, as an extension, the other echo-like octal escape - sequences are supported as well. */ - case '1': case '2': case '3': case '4': - case '5': case '6': case '7': - for (temp = 2+(c=='0'), evalue = c - '0'; ISOCTAL (*p) && temp--; p++) + /* 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; @@ -591,11 +739,15 @@ tescape (estart, trans_squote, cp, sawc) /* And, as another extension, we allow \xNNN, where each N is a hex digit. */ case 'x': +#if 0 + for (evalue = 0; ISXDIGIT ((unsigned char)*p); p++) +#else for (temp = 2, evalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++) +#endif evalue = (evalue * 16) + HEXVALUE (*p); - if (temp == 2) + if (p == estart + 1) { - builtin_error ("missing hex digit for \\x"); + builtin_error (_("missing hex digit for \\x")); *cp = '\\'; return 0; } @@ -606,8 +758,11 @@ tescape (estart, trans_squote, cp, sawc) *cp = c; break; - case '\'': /* TRANS_SQUOTE != 0 means \' -> ' */ - if (trans_squote) + /* 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 { @@ -638,7 +793,11 @@ bexpand (string, len, sawc, lenp) int temp; char *ret, *r, *s, c; +#if 0 if (string == 0 || *string == '\0') +#else + if (string == 0 || len == 0) +#endif { if (sawc) *sawc = 0; @@ -657,7 +816,7 @@ bexpand (string, len, sawc, lenp) continue; } temp = 0; - s += tescape (s, 0, &c, &temp); + s += tescape (s, &c, &temp); if (temp) { if (sawc) @@ -674,6 +833,75 @@ bexpand (string, len, sawc, lenp) 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:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf)); +#endif + + return (blen); +} + static char * mklong (str, modifiers, mlen) char *str; @@ -838,12 +1066,28 @@ getfloatmax () } /* NO check is needed for garglist here. */ -static int +static intmax_t asciicode () { - register int ch; + register intmax_t ch; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc; + size_t mblength, slen; +#endif + DECLARE_MBSTATE; + +#if defined (HANDLE_MULTIBYTE) + slen = strlen (garglist->word->word+1); + mblength = MBLEN (garglist->word->word+1, slen); + if (mblength > 1) + { + mblength = mbtowc (&wc, garglist->word->word+1, slen); + ch = wc; /* XXX */ + } + else +#endif + ch = (unsigned char)garglist->word->word[1]; - ch = garglist->word->word[1]; garglist = garglist->next; return (ch); } diff --git a/src/bin/bash/builtins/psize.c b/src/bin/bash/builtins/psize.c index c21547289e..30881fb3f6 100644 --- a/src/bin/bash/builtins/psize.c +++ b/src/bin/bash/builtins/psize.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -40,7 +40,10 @@ #include "../command.h" #include "../general.h" #include "../sig.h" + +#ifndef errno extern int errno; +#endif int nw; diff --git a/src/bin/bash/builtins/pushd.def b/src/bin/bash/builtins/pushd.def index 2bb72ffa4d..05b7529279 100644 --- a/src/bin/bash/builtins/pushd.def +++ b/src/bin/bash/builtins/pushd.def @@ -1,94 +1,114 @@ This file is pushd.def, from which is created pushd.c. It implements the builtins "pushd", "popd", and "dirs" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [dir | +N | -N] [-n] +$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. -+N Rotates the stack so that the Nth directory (counting +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 + -N Rotates the stack so that the Nth directory (counting from the right of the list shown by `dirs', starting with zero) is at the top. --n suppress the normal change of directory when adding directories - to the stack, so only the stack is manipulated. - -dir adds DIR to the directory stack at the top, making it the + dir Adds DIR to the directory stack at the top, making it the new current working directory. -You can see the directory stack with the `dirs' command. +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] -Removes entries from the directory stack. With no arguments, -removes the top directory from the stack, and cd's to the new -top directory. +$SHORT_DOC popd [-n] [+N | -N] +Remove directories from stack. -+N removes the Nth entry counting from the left of the list +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 + -N Removes the Nth entry counting from the right of the list shown by `dirs', starting with zero. For example: `popd -0' removes the last directory, `popd -1' the next to last. --n suppress the normal change of directory when removing directories - from the stack, so only the stack is manipulated. +The `dirs' builtin displays the directory stack. -You can see the directory stack with the `dirs' command. +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. -The -l flag specifies that `dirs' should not print shorthand versions -of directories which are relative to your home directory. This means -that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag -causes `dirs' to print the directory stack with one entry per line, -prepending the directory name with its position in the stack. The -p -flag does the same thing, but the stack position is not prepended. -The -c flag clears the directory stack by deleting all of the elements. +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 -+N displays the Nth entry counting from the left of the list shown by +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 + -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 @@ -107,6 +127,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include @@ -150,13 +171,20 @@ int pushd_builtin (list) WORD_LIST *list; { + WORD_LIST *orig_list; char *temp, *current_directory, *top; - int j, flags; + int j, flags, skipopt; intmax_t num; char direction; + orig_list = list; if (list && list->word && ISOPTION (list->word->word, '-')) - list = list->next; + { + list = list->next; + skipopt = 1; + } + else + skipopt = 0; /* If there is no argument list then switch current and top of list. */ @@ -164,7 +192,7 @@ pushd_builtin (list) { if (directory_list_offset == 0) { - builtin_error ("no other directory"); + builtin_error (_("no other directory")); return (EXECUTION_FAILURE); } @@ -180,7 +208,7 @@ pushd_builtin (list) return j; } - for (flags = 0; list; list = list->next) + for (flags = 0; skipopt == 0 && list; list = list->next) { if (ISOPTION (list->word->word, 'n')) { @@ -264,7 +292,7 @@ pushd_builtin (list) if (current_directory == 0) return (EXECUTION_FAILURE); - j = ((flags & NOCD) == 0) ? cd_builtin (list) : EXECUTION_SUCCESS; + 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); @@ -431,7 +459,7 @@ dirs_builtin (list) { temp = get_working_directory ("dirs"); if (temp == 0) - temp = savestring (""); + temp = savestring (_("")); if (vflag & 2) printf ("%2d %s", 0, DIRSTACK_FORMAT (temp)); else @@ -440,7 +468,7 @@ dirs_builtin (list) if (index_flag) { putchar ('\n'); - return EXECUTION_SUCCESS; + return (sh_chkwrite (EXECUTION_SUCCESS)); } } @@ -465,8 +493,8 @@ dirs_builtin (list) printf ("%s%s", (vflag & 1) ? "\n" : " ", DIRSTACK_ENTRY (i)); putchar ('\n'); - fflush (stdout); - return (EXECUTION_SUCCESS); + + return (sh_chkwrite (EXECUTION_SUCCESS)); } static void @@ -475,9 +503,9 @@ pushd_error (offset, arg) char *arg; { if (offset == 0) - builtin_error ("directory stack empty"); + builtin_error (_("directory stack empty")); else - sh_erange (arg, "directory stack index"); + sh_erange (arg, _("directory stack index")); } static void @@ -498,9 +526,11 @@ cd_to_string (name) char *name; { WORD_LIST *tlist; + WORD_LIST *dir; int result; - tlist = make_word_list (make_word (name), NULL); + dir = make_word_list (make_word (name), NULL); + tlist = make_word_list (make_word ("--"), dir); result = cd_builtin (tlist); dispose_words (tlist); return (result); @@ -610,7 +640,8 @@ set_dirstack_element (ind, sign, value) } WORD_LIST * -get_directory_stack () +get_directory_stack (flags) + int flags; { register int i; WORD_LIST *ret; @@ -618,7 +649,8 @@ get_directory_stack () for (ret = (WORD_LIST *)NULL, i = 0; i < directory_list_offset; i++) { - d = polite_directory_format (pushd_directory_list[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. */ @@ -647,67 +679,71 @@ get_directory_stack () } #ifdef LOADABLE_BUILTIN -static char *dirs_doc[] = { - "Display the list of currently remembered directories. Directories", - "find their way onto the list with the `pushd' command; you can get", - "back up through the list with the `popd' command.", - "", - "The -l flag specifies that `dirs' should not print shorthand versions", - "of directories which are relative to your home directory. This means", - "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag", - "causes `dirs' to print the directory stack with one entry per line,", - "prepending the directory name with its position in the stack. The -p", - "flag does the same thing, but the stack position is not prepended.", - "The -c flag clears the directory stack by deleting all of the elements.", - "", - "+N displays the Nth entry counting from the left of the list shown by", - " dirs when invoked without options, starting with zero.", - "", - "-N displays the Nth entry counting from the right of the list shown by", - " dirs when invoked without options, starting with zero.", +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 }; -static char *pushd_doc[] = { - "Adds a directory to the top of the directory stack, or rotates", - "the stack, making the new top of the stack the current working", - "directory. With no arguments, exchanges the top two directories.", - "", - "+N Rotates the stack so that the Nth directory (counting", - " from the left of the list shown by `dirs', starting with", - " zero) is at the top.", - "", - "-N Rotates the stack so that the Nth directory (counting", - " from the right of the list shown by `dirs', starting with", - " zero) is at the top.", - "", - "-n suppress the normal change of directory when adding directories", - " to the stack, so only the stack is manipulated.", - "", - "dir adds DIR to the directory stack at the top, making it the", - " new current working directory.", - "", - "You can see the directory stack with the `dirs' command.", +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 }; -static char *popd_doc[] = { - "Removes entries from the directory stack. With no arguments,", - "removes the top directory from the stack, and cd's to the new", - "top directory.", - "", - "+N removes the Nth entry counting from the left of the list", - " shown by `dirs', starting with zero. For example: `popd +0'", - " removes the first directory, `popd +1' the second.", - "", - "-N removes the Nth entry counting from the right of the list", - " shown by `dirs', starting with zero. For example: `popd -0'", - " removes the last directory, `popd -1' the next to last.", - "", - "-n suppress the normal change of directory when removing directories", - " from the stack, so only the stack is manipulated.", - "", - "You can see the directory stack with the `dirs' command.", +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 }; diff --git a/src/bin/bash/builtins/read.def b/src/bin/bash/builtins/read.def index 46a0407bf8..fb4366febe 100644 --- a/src/bin/bash/builtins/read.def +++ b/src/bin/bash/builtins/read.def @@ -1,50 +1,63 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...] -One line is read from the standard input, or from file descriptor FD if the --u option is supplied, and the first word is assigned to the first NAME, -the second word to the second NAME, and so on, with leftover words assigned -to the last NAME. Only the characters found in $IFS are recognized as word -delimiters. If no NAMEs are supplied, the line read is stored in the REPLY -variable. If the -r option is given, this signifies `raw' input, and -backslash escaping is disabled. The -d option causes read to continue -until the first character of DELIM is read, rather than newline. If the -p -option is supplied, the string PROMPT is output without a trailing newline -before attempting to read. If -a is supplied, the words read are assigned -to sequential indices of ARRAY, starting at zero. If -e is supplied and -the shell is interactive, readline is used to obtain the line. If -n is -supplied with a non-zero NCHARS argument, read returns after NCHARS -characters have been read. The -s option causes input coming from a -terminal to not be echoed. +$SHORT_DOC read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...] +Read a line from the standard input and split it into fields. -The -t option causes read to time out and return failure if a complete line -of input is not read within TIMEOUT seconds. If the TMOUT variable is set, -its value is the default timeout. The return code is zero, unless end-of-file -is encountered, read times out, or an invalid file descriptor is supplied as -the argument to -u. +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 in an interactive shell + -i text Use TEXT as the initial text for Readline + -n nchars return after reading NCHARS characters rather than waiting + for a newline + -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 withint TIMEOUT seconds. The value of the TMOUT + variable is the default timeout. TIMEOUT may be a + fractional number. If TIMEOUT is 0, read returns success only + if input is available on the specified file descriptor. The + 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, +or an invalid file descriptor is supplied as the argument to -u. $END #include @@ -54,6 +67,8 @@ $END #include +#include "bashansi.h" + #if defined (HAVE_UNISTD_H) # include #endif @@ -66,6 +81,8 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "common.h" #include "bashgetopt.h" @@ -77,18 +94,32 @@ $END #include #endif +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + #if !defined(errno) extern int errno; #endif -extern int interrupt_immediately; +struct ttsave +{ + int fd; + TTYSTRUCT *attrs; +}; #if defined (READLINE) -static char *edit_line __P((char *)); +static void reset_attempted_completion_function __P((char *)); +static int set_itext __P((void)); +static char *edit_line __P((char *, char *)); static void set_eol_delim __P((int)); static void reset_eol_delim __P((char *)); #endif static SHELL_VAR *bind_read_variable __P((char *, char *)); +#if defined (HANDLE_MULTIBYTE) +static int read_mbchar __P((int, char *, int, int, int)); +#endif +static void ttyrestore __P((struct ttsave *)); static sighandler sigalrm __P((int)); static void reset_alarm __P((void)); @@ -108,7 +139,7 @@ static void reset_alarm () { set_signal_handler (SIGALRM, old_alrm); - alarm (0); + falarm (0, 0); } /* Read the value of the shell variables whose names follow. @@ -122,32 +153,37 @@ read_builtin (list) WORD_LIST *list; { register char *varname; - int size, i, pass_next, saw_escape, eof, opt, retval, code; - int input_is_tty, input_is_pipe, unbuffered_read; + int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; + int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; int raw, edit, nchars, silent, have_timeout, fd; - unsigned int tmout; + 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; + char *e, *t, *t1, *ps2, *tofree; struct stat tsb; SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; + struct ttsave termsave; #if defined (ARRAY_VARS) WORD_LIST *alist; #endif #if defined (READLINE) - char *rlbuf; + char *rlbuf, *itext; int rlind; #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(tmout); + USE_VAR(tmsec); + USE_VAR(tmusec); USE_VAR(nchars); USE_VAR(silent); USE_VAR(ifs_chars); @@ -156,8 +192,10 @@ read_builtin (list) #if defined (READLINE) USE_VAR(rlbuf); USE_VAR(rlind); + USE_VAR(itext); #endif USE_VAR(list); + USE_VAR(ps2); i = 0; /* Index into the string that we are reading. */ raw = edit = 0; /* Not reading raw input by default. */ @@ -166,16 +204,16 @@ read_builtin (list) fd = 0; /* file descriptor to read from */ #if defined (READLINE) - rlbuf = (char *)0; + rlbuf = itext = (char *)0; rlind = 0; #endif - tmout = 0; /* no timeout */ - nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; + tmsec = tmusec = 0; /* no timeout */ + nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; delim = '\n'; /* read until newline */ reset_internal_getopt (); - while ((opt = internal_getopt (list, "ersa:d:n:p:t:u:")) != -1) + while ((opt = internal_getopt (list, "ersa:d:i:n:p:t:u:")) != -1) { switch (opt) { @@ -191,6 +229,11 @@ read_builtin (list) case 'e': #if defined (READLINE) edit = 1; +#endif + break; + case 'i': +#if defined (READLINE) + itext = list_optarg; #endif break; #if defined (ARRAY_VARS) @@ -199,16 +242,17 @@ read_builtin (list) break; #endif case 't': - code = legal_number (list_optarg, &intval); - if (code == 0 || intval < 0 || intval != (unsigned int)intval) + code = uconvert (list_optarg, &ival, &uval); + if (code == 0 || ival < 0 || uval < 0) { - builtin_error ("%s: invalid timeout specification", list_optarg); + builtin_error (_("%s: invalid timeout specification"), list_optarg); return (EXECUTION_FAILURE); } else { have_timeout = 1; - tmout = intval; + tmsec = ival; + tmusec = uval; } break; case 'n': @@ -225,14 +269,14 @@ read_builtin (list) code = legal_number (list_optarg, &intval); if (code == 0 || intval < 0 || intval != (int)intval) { - builtin_error ("%s: invalid file descriptor specification", list_optarg); + 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)); + builtin_error (_("%d: invalid file descriptor: %s"), fd, strerror (errno)); return (EXECUTION_FAILURE); } break; @@ -246,35 +290,49 @@ read_builtin (list) } list = loptend; - /* `read -t 0 var' returns failure immediately. XXX - should it test - whether input is available with select/FIONREAD, and fail if those - are unavailable? */ - if (have_timeout && tmout == 0) + /* `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 /* IF IFS is unset, we use the default of " \t\n". */ ifs_chars = getifs (); if (ifs_chars == 0) /* XXX - shouldn't happen */ 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'; /* $TMOUT, if set, is the default timeout for read. */ if (have_timeout == 0 && (e = get_string_value ("TMOUT"))) { - code = legal_number (e, &intval); - if (code == 0 || intval < 0 || intval != (unsigned int)intval) - tmout = 0; + code = uconvert (e, &ival, &uval); + if (code == 0 || ival < 0 || uval < 0) + tmsec = tmusec = 0; else - tmout = intval; + { + 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 + input_is_tty = isatty (fd); if (input_is_tty == 0) #ifndef __CYGWIN__ - input_is_pipe = (lseek (0, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); + input_is_pipe = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); #else input_is_pipe = 1; #endif @@ -284,6 +342,9 @@ read_builtin (list) if ((prompt || edit || silent) && input_is_tty == 0) { prompt = (char *)NULL; +#if defined (READLINE) + itext = (char *)NULL; +#endif edit = silent = 0; } @@ -292,34 +353,38 @@ read_builtin (list) add_unwind_protect (xfree, rlbuf); #endif - if (prompt && edit == 0) - { - fprintf (stderr, "%s", prompt); - fflush (stderr); - } - pass_next = 0; /* Non-zero signifies last char was backslash. */ saw_escape = 0; /* Non-zero signifies that we saw an escape char */ - if (tmout > 0) + 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)) - tmout = 0; + tmsec = tmusec = 0; } - if (tmout > 0) + if (tmsec > 0 || tmusec > 0) { code = setjmp (alrmbuf); if (code) { +#if 0 run_unwind_frame ("read_builtin"); return (EXECUTION_FAILURE); +#else + input_string[i] = '\0'; /* make sure it's terminated */ + retval = 128+SIGALRM;; + goto assign_vars; +#endif } old_alrm = set_signal_handler (SIGALRM, sigalrm); add_unwind_protect (reset_alarm, (char *)NULL); - alarm (tmout); +#if defined (READLINE) + if (edit) + add_unwind_protect (reset_attempted_completion_function, (char *)NULL); +#endif + falarm (tmsec, tmusec); } /* If we've been asked to read only NCHARS chars, or we're using some @@ -345,33 +410,53 @@ read_builtin (list) #endif if (input_is_tty) { - ttsave (); - if (silent) - ttcbreak (); - else - ttonechar (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + /* 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); + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } } else if (silent) /* turn off echo but leave term in canonical mode */ { - ttsave (); - ttnoecho (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + /* ttsave (); */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = &ttattrs; + + ttset = ttattrs; + i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ + if (i < 0) + sh_ttyerror (1); + + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } /* This *must* be the top unwind-protect on the stack, so the manipulation of the unwind-protect stack after the realloc() works right. */ add_unwind_protect (xfree, input_string); interrupt_immediately++; + terminate_immediately++; unbuffered_read = (nchars > 0) || (delim != '\n') || input_is_pipe; + if (prompt && edit == 0) + { + fprintf (stderr, "%s", prompt); + fflush (stderr); + } + #if defined (__CYGWIN__) && defined (O_TEXT) setmode (0, O_TEXT); #endif - for (eof = retval = 0;;) + ps2 = 0; + for (print_ps2 = eof = retval = 0;;) { #if defined (READLINE) if (edit) @@ -383,7 +468,7 @@ read_builtin (list) } if (rlbuf == 0) { - rlbuf = edit_line (prompt ? prompt : ""); + rlbuf = edit_line (prompt ? prompt : "", itext); rlind = 0; } if (rlbuf == 0) @@ -397,6 +482,15 @@ read_builtin (list) { #endif + if (print_ps2) + { + if (ps2 == 0) + ps2 = get_string_value ("PS2"); + fprintf (stderr, "%s", ps2 ? ps2 : ""); + fflush (stderr); + print_ps2 = 0; + } + if (unbuffered_read) retval = zread (fd, &c, 1); else @@ -412,7 +506,7 @@ read_builtin (list) } #endif - if (i + 2 >= size) + if (i + 4 >= size) /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */ { input_string = (char *)xrealloc (input_string, size += 128); remove_unwind_protect (); @@ -423,34 +517,53 @@ read_builtin (list) newline pair still disappears from the input. */ if (pass_next) { - if (c == '\n') - i--; /* back up over the CTLESC */ - else - input_string[i++] = c; pass_next = 0; + if (c == '\n') + { + 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++; - saw_escape++; - input_string[i++] = CTLESC; + if (skip_ctlesc == 0) + { + saw_escape++; + input_string[i++] = CTLESC; + } continue; } if ((unsigned char)c == delim) break; - if (c == CTLESC || c == CTLNUL) + if ((skip_ctlesc == 0 && c == CTLESC) || (skip_ctlnul == 0 && c == CTLNUL)) { saw_escape++; input_string[i++] = CTLESC; } +add_char: input_string[i++] = c; - if (nchars > 0 && i >= nchars) +#if defined (HANDLE_MULTIBYTE) + if (nchars > 0 && MB_CUR_MAX > 1) + { + input_string[i] = '\0'; /* for simplicity and debugging */ + i += read_mbchar (fd, input_string, i, c, unbuffered_read); + } +#endif + + nr++; + + if (nchars > 0 && nr >= nchars) break; } input_string[i] = '\0'; @@ -458,12 +571,13 @@ read_builtin (list) #if 1 if (retval < 0) { - builtin_error ("read error: %d: %s", fd, strerror (errno)); + builtin_error (_("read error: %d: %s"), fd, strerror (errno)); + run_unwind_frame ("read_builtin"); return (EXECUTION_FAILURE); } #endif - if (tmout > 0) + if (tmsec > 0 || tmusec > 0) reset_alarm (); if (nchars > 0 || delim != '\n') @@ -479,33 +593,50 @@ read_builtin (list) else #endif if (input_is_tty) - ttrestore (); + ttyrestore (&termsave); } else if (silent) - ttrestore (); + ttyrestore (&termsave); if (unbuffered_read == 0) zsyncfd (fd); interrupt_immediately--; + terminate_immediately--; 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); + xfree (input_string); + return (EXECUTION_FAILURE); + } + var = find_or_make_array_variable (arrayname, 1); if (var == 0) - return EXECUTION_FAILURE; /* readonly or noassign */ + { + xfree (input_string); + return EXECUTION_FAILURE; /* readonly or noassign */ + } array_flush (array_cell (var)); alist = list_string (input_string, ifs_chars, 0); if (alist) { - assign_array_var_from_word_list (var, 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); } xfree (input_string); @@ -534,11 +665,11 @@ read_builtin (list) if (saw_escape) { t = dequote_string (input_string); - var = bind_variable ("REPLY", t); + var = bind_variable ("REPLY", t, 0); free (t); } else - var = bind_variable ("REPLY", input_string); + var = bind_variable ("REPLY", input_string, 0); VUNSETATTR (var, att_invisible); free (input_string); @@ -554,7 +685,6 @@ read_builtin (list) 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; @@ -617,10 +747,25 @@ read_builtin (list) 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); + } +#endif if (saw_escape) { @@ -631,6 +776,8 @@ read_builtin (list) else var = bind_read_variable (list->word->word, input_string); stupidly_hack_special_variables (list->word->word); + FREE (tofree); + if (var) VUNSETATTR (var, att_invisible); xfree (orig_input_string); @@ -644,30 +791,124 @@ bind_read_variable (name, value) { #if defined (ARRAY_VARS) if (valid_array_reference (name) == 0) - return (bind_variable (name, value)); + return (bind_variable (name, value, 0)); else - return (assign_array_element (name, value)); + return (assign_array_element (name, value, 0)); #else /* !ARRAY_VARS */ - return bind_variable (name, value); + return bind_variable (name, value, 0); #endif /* !ARRAY_VARS */ } +#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; + 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); +} + #if defined (READLINE) -static rl_completion_func_t *old_attempted_completion_function; +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) +edit_line (p, itext) char *p; + char *itext; { char *ret; int len; - if (!bash_readline_initialized) + if (bash_readline_initialized == 0) initialize_readline (); + old_attempted_completion_function = rl_attempted_completion_function; rl_attempted_completion_function = (rl_completion_func_t *)NULL; + 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; + if (ret == 0) return ret; len = strlen (ret); diff --git a/src/bin/bash/builtins/reserved.def b/src/bin/bash/builtins/reserved.def index 0f293d3974..2478f1630c 100644 --- a/src/bin/bash/builtins/reserved.def +++ b/src/bin/bash/builtins/reserved.def @@ -2,35 +2,41 @@ 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-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 +$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 @@ -39,10 +45,15 @@ Equivalent to 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 "$@"' @@ -54,112 +65,187 @@ 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 +$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. -The return status is the return status of PIPELINE. The `-p' option -prints the timing summary in a slightly different format. This uses -the value of the TIMEFORMAT variable as the output format. + +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 -The if COMMANDS are executed. If the exit status is zero, then the then -COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed -in turn, and if the exit status is zero, the corresponding then COMMANDS -are executed and the if command completes. Otherwise, the else COMMANDS -are executed, if present. The exit status is the exit status of the last -command executed, or zero if no condition tested true. +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: +Returns the exit status of COMMAND. $END $BUILTIN function -$SHORT_DOC function NAME { COMMANDS ; } or NAME () { COMMANDS ; } -Create a simple command invoked by NAME which runs COMMANDS. -Arguments on the command line along with NAME are passed to the -function as $0 .. $n. +$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 %[DIGITS | WORD] [&] -This is similar to the `fg' command. Resume a stopped or background -job. If you specifiy DIGITS, then that job is used. If you specify -WORD, then the job whose name begins with WORD is used. Following the -job specification with a `&' places the job in the background. +$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 +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 + ( EXPRESSION ) Returns the value of EXPRESSION + ! EXPRESSION True if EXPRESSION is false; else false + EXPR1 && EXPR2 True if both EXPR1 and EXPR2 are true; else false + EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false -When the `==' and `!=' operators are used, the string to the right of the -operator is used as a pattern and pattern matching is performed. The -&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to +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 - Some variable names and meanings -BASH_VERSION Version information for this Bash. -CDPATH A colon separated list of directories to search - when the argument to `cd' is not found in the current - directory. +$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 +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. +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 +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 @@ -168,19 +254,19 @@ 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 +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 +PROMPT_COMMAND A command to be executed before the printing of each primary prompt. -PS1 The primary prompt string. -PS2 The secondary prompt string. +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. +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 +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 @@ -190,7 +276,7 @@ auto_resume Non-null means a command word appearing on a line by the command must be a prefix of a stopped job. #if defined (HISTORY) # if defined (BANG_HISTORY) -histchars Characters controlling history expansion and quick +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 diff --git a/src/bin/bash/builtins/return.def b/src/bin/bash/builtins/return.def index 84a90a3386..641ee16a71 100644 --- a/src/bin/bash/builtins/return.def +++ b/src/bin/bash/builtins/return.def @@ -1,23 +1,22 @@ This file is return.def, from which is created return.c. It implements the builtin "return" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES return.c @@ -25,8 +24,14 @@ $BUILTIN return $FUNCTION return_builtin $SHORT_DOC return [n] -Causes a function to exit with the return value specified by N. If N -is omitted, the return status is that of the last command. +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 @@ -38,8 +43,11 @@ $END # include #endif +#include "../bashintl.h" + #include "../shell.h" #include "common.h" +#include "bashgetopt.h" extern int last_command_exit_value; extern int subshell_environment; @@ -52,13 +60,17 @@ int return_builtin (list) WORD_LIST *list; { + if (no_options (list)) + return (EX_USAGE); + list = loptend; /* skip over possible `--' */ + return_catch_value = get_exitstat (list); if (return_catch_flag) longjmp (return_catch, 1); else { - builtin_error ("can only `return' from a function or sourced script"); + builtin_error (_("can only `return' from a function or sourced script")); return (EXECUTION_FAILURE); } } diff --git a/src/bin/bash/builtins/set.def b/src/bin/bash/builtins/set.def index 10aaf5ff2c..5e550cbc9b 100644 --- a/src/bin/bash/builtins/set.def +++ b/src/bin/bash/builtins/set.def @@ -1,23 +1,22 @@ This file is set.def, from which is created set.c. It implements the "set" and "unset" builtins in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES set.c @@ -33,6 +32,7 @@ $PRODUCES set.c #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../flags.h" @@ -59,78 +59,96 @@ extern int no_line_editing; $BUILTIN set $FUNCTION set_builtin -$SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option] [arg ...] - -a Mark variables which are modified or created for export. - -b Notify of job termination immediately. - -e Exit immediately if a command exits with a non-zero status. - -f Disable file name generation (globbing). - -h Remember the location of commands as they are looked up. - -k All assignment arguments are placed in the environment for a - command, not just those that precede the command name. - -m Job control is enabled. - -n Read commands but do not execute them. - -o option-name - Set the variable corresponding to option-name: - allexport same as -a - braceexpand same as -B +$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 + emacs use an emacs-style line editing interface #endif /* READLINE */ - errexit same as -e - hashall same as -h + errexit same as -e + errtrace same as -E + functrace same as -T + hashall same as -h #if defined (BANG_HISTORY) - histexpand same as -H + histexpand same as -H #endif /* BANG_HISTORY */ #if defined (HISTORY) - history enable command history + history enable command history #endif - ignoreeof the shell will not exit upon reading EOF - interactive-comments - allow comments to appear in interactive commands - keyword same as -k - monitor same as -m - noclobber same as -C - noexec same as -n - noglob same as -f - nolog currently accepted but ignored - notify same as -b - nounset same as -u - onecmd same as -t - physical same as -P - posix change the behavior of bash where the default - operation differs from the 1003.2 standard to - match the standard - privileged same as -p - verbose same as -v + ignoreeof the shell will not exit upon reading EOF + interactive-comments + allow comments to appear in interactive commands + keyword same as -k + monitor same as -m + noclobber same as -C + noexec same as -n + noglob same as -f + nolog currently accepted but ignored + notify same as -b + nounset same as -u + onecmd same as -t + physical same as -P + pipefail the return value of a pipeline is the status of + the last command to exit with a non-zero status, + or zero if no command exited with a non-zero status + posix change the behavior of bash where the default + operation differs from the 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 + 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. + 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 + -B the shell will perform brace expansion #endif /* BRACE_EXPANSION */ - -C If set, disallow existing regular files to be overwritten - by redirection of output. + -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. + -H Enable ! style history substitution. This flag is on + by default when the shell is interactive. #endif /* BANG_HISTORY */ - -P If set, do not follow symbolic links when executing commands - such as cd which change the current directory. + -P If set, do not follow symbolic links when executing commands + such as cd which change the current directory. + -T If set, the DEBUG trap is inherited by shell functions. + - Assign any remaining arguments to the positional parameters. + The -x and -v options are turned off. Using + rather than - causes these flags to be turned off. The flags can also be used upon invocation of the shell. The current set of flags may be found in $-. The remaining n ARGs are positional parameters and are assigned, in order, to $1, $2, .. $n. If no ARGs are given, all shell variables are printed. + +Exit Status: +Returns success unless an invalid option is given. $END typedef int setopt_set_func_t __P((int, char *)); @@ -151,13 +169,13 @@ static int get_edit_mode __P((char *)); static int bash_set_history __P((int, char *)); #endif -static char *on = "on"; -static char *off = "off"; +static const char * const on = "on"; +static const char * const off = "off"; /* A struct used to match long options for set -o to the corresponding option letter or internal variable. The functions can be called to dynamically generate values. */ -struct { +const struct { char *name; int letter; int *variable; @@ -172,12 +190,14 @@ struct { { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, #endif { "errexit", 'e', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "errtrace", 'E', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "functrace", 'T', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, { "hashall", 'h', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, #if defined (BANG_HISTORY) { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, #endif /* BANG_HISTORY */ #if defined (HISTORY) - { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, + { "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 }, @@ -195,6 +215,7 @@ struct { { "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 }, @@ -300,7 +321,7 @@ set_ignoreeof (on_or_off, option_name) ignoreeof = on_or_off == FLAG_ON; unbind_variable ("ignoreeof"); if (ignoreeof) - bind_variable ("IGNOREEOF", "10"); + bind_variable ("IGNOREEOF", "10", 0); else unbind_variable ("IGNOREEOF"); sv_ignoreeof ("IGNOREEOF"); @@ -316,7 +337,7 @@ set_posix_mode (on_or_off, option_name) if (posixly_correct == 0) unbind_variable ("POSIXLY_CORRECT"); else - bind_variable ("POSIXLY_CORRECT", "y"); + bind_variable ("POSIXLY_CORRECT", "y", 0); sv_strict_posix ("POSIXLY_CORRECT"); return (0); } @@ -368,13 +389,17 @@ bash_set_history (on_or_off, option_name) { if (on_or_off == FLAG_ON) { + enable_history_list = 1; bash_history_enable (); if (history_lines_this_session == 0) load_history (); } else - bash_history_disable (); - return (1 - remember_on_history); + { + enable_history_list = 0; + bash_history_disable (); + } + return (1 - enable_history_list); } #endif @@ -409,7 +434,7 @@ set_minus_o_option (on_or_off, option_name) } sh_invalidoptname (option_name); - return (EXECUTION_FAILURE); + return (EX_USAGE); } static void @@ -492,7 +517,7 @@ set_shellopts () else exported = 0; - v = bind_variable ("SHELLOPTS", value); + 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 @@ -532,7 +557,7 @@ initialize_shell_options (no_shellopts) /* set up any shell options we may have inherited. */ if (var && imported_p (var)) { - temp = (array_p (var)) ? (char *)NULL : savestring (value_cell (var)); + temp = (array_p (var) || assoc_p (var)) ? (char *)NULL : savestring (value_cell (var)); if (temp) { parse_shellopts (temp); @@ -552,7 +577,7 @@ void reset_shell_options () { #if defined (HISTORY) - remember_on_history = 1; + remember_on_history = enable_history_list = 1; #endif ignoreeof = 0; } @@ -564,18 +589,18 @@ int set_builtin (list) WORD_LIST *list; { - int on_or_off, flag_name, force_assignment, opts_changed; - WORD_LIST *l; + 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 (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } /* Check validity of flag arguments. */ + rv = EXECUTION_SUCCESS; reset_internal_getopt (); while ((flag_name = internal_getopt (list, optflags)) != -1) { @@ -638,6 +663,7 @@ set_builtin (list) if (opt == 0) { list_minus_o_opts (-1, (on_or_off == '+')); + rv = sh_chkwrite (rv); continue; } @@ -652,10 +678,10 @@ set_builtin (list) list = list->next; /* Skip over option name. */ opts_changed = 1; - if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS) + if ((r = set_minus_o_option (on_or_off, option_name)) != EXECUTION_SUCCESS) { set_shellopts (); - return (EXECUTION_FAILURE); + return (r); } } else if (change_flag (flag_name, on_or_off) == FLAG_ERROR) @@ -684,17 +710,27 @@ set_builtin (list) /* Set up new value of $SHELLOPTS */ if (opts_changed) set_shellopts (); - return (EXECUTION_SUCCESS); + return (rv); } $BUILTIN unset $FUNCTION unset_builtin $SHORT_DOC unset [-f] [-v] [name ...] -For each NAME, remove the corresponding variable or function. Given -the `-v', unset will only act on variables. Given the `-f' flag, -unset will only act on functions. With neither flag, unset first -tries to unset a variable, and if that fails, then tries to unset a -function. Some variables cannot be unset; also see readonly. +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 + +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; @@ -729,7 +765,7 @@ unset_builtin (list) if (unset_function && unset_variable) { - builtin_error ("cannot simultaneously unset a function and a variable"); + builtin_error (_("cannot simultaneously unset a function and a variable")); return (EXECUTION_FAILURE); } @@ -766,14 +802,14 @@ unset_builtin (list) if (var && !unset_function && non_unsettable_p (var)) { - builtin_error ("%s: cannot unset", name); + builtin_error (_("%s: cannot unset"), name); NEXT_VARIABLE (); } /* Posix.2 says that unsetting readonly variables is an error. */ if (var && readonly_p (var)) { - builtin_error ("%s: cannot unset: readonly %s", + builtin_error (_("%s: cannot unset: readonly %s"), name, unset_function ? "function" : "variable"); NEXT_VARIABLE (); } @@ -782,9 +818,9 @@ unset_builtin (list) #if defined (ARRAY_VARS) if (var && unset_array) { - if (array_p (var) == 0) + if (array_p (var) == 0 && assoc_p (var) == 0) { - builtin_error ("%s: not an array variable", name); + builtin_error (_("%s: not an array variable"), name); NEXT_VARIABLE (); } else diff --git a/src/bin/bash/builtins/setattr.def b/src/bin/bash/builtins/setattr.def index 8465e7d3f7..8b4cdf765f 100644 --- a/src/bin/bash/builtins/setattr.def +++ b/src/bin/bash/builtins/setattr.def @@ -1,23 +1,22 @@ This file is setattr.def, from which is created setattr.c. It implements the builtins "export" and "readonly", in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES setattr.c @@ -32,6 +31,7 @@ $PRODUCES setattr.c #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "common.h" @@ -51,14 +51,21 @@ extern int declare_builtin __P((WORD_LIST *)); $BUILTIN export $FUNCTION export_builtin -$SHORT_DOC export [-nf] [name[=value] ...] or export -p -NAMEs are marked for automatic export to the environment of -subsequently executed commands. If the -f option is given, -the NAMEs refer to functions. If no NAMEs are given, or if `-p' -is given, a list of all names that are exported in this shell is -printed. An argument of `-n' says to remove the export property -from subsequent NAMEs. An argument of `--' disables further option -processing. +$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 @@ -75,15 +82,23 @@ export_builtin (list) $BUILTIN readonly $FUNCTION readonly_builtin -$SHORT_DOC readonly [-anf] [name[=value] ...] or readonly -p -The given NAMEs are marked readonly and the values of these NAMEs may -not be changed by subsequent assignment. If the -f option is given, -then functions corresponding to the NAMEs are so marked. If no -arguments are given, or if `-p' is given, a list of all readonly names -is printed. An argument of `-n' says to remove the readonly property -from subsequent NAMEs. The `-a' option means to treat each NAME as -an array variable. An argument of `--' disables further option -processing. +$SHORT_DOC readonly [-af] [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 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 readonly. Given an @@ -96,28 +111,31 @@ readonly_builtin (list) } #if defined (ARRAY_VARS) -# define ATTROPTS "afnp" +# 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. */ + remaining names in LIST (doesn't work for readonly). */ int set_or_show_attributes (list, attribute, nodefs) register WORD_LIST *list; int attribute, nodefs; { register SHELL_VAR *var; - int assign, undo, functions_only, arrays_only, any_failed, assign_error, opt; + int 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; #endif - undo = functions_only = arrays_only = any_failed = assign_error = 0; + 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) @@ -132,8 +150,11 @@ set_or_show_attributes (list, attribute, nodefs) break; #if defined (ARRAY_VARS) case 'a': - arrays_only = 1; - break; + arrays_only = 1; + break; + case 'A': + assoc_only = 1; + break; #endif case 'p': break; @@ -162,7 +183,7 @@ set_or_show_attributes (list, attribute, nodefs) var = find_function (name); if (var == 0) { - builtin_error ("%s: not a function", name); + builtin_error (_("%s: not a function"), name); any_failed++; } else @@ -173,10 +194,18 @@ set_or_show_attributes (list, attribute, nodefs) } /* xxx [-np] name[=value] */ - assign = assignment (name); + assign = assignment (name, 0); + aflags = 0; if (assign) - name[assign] = '\0'; + { + name[assign] = '\0'; + if (name[assign - 1] == '+') + { + aflags |= ASS_APPEND; + name[assign - 1] = '\0'; + } + } if (legal_identifier (name) == 0) { @@ -192,14 +221,16 @@ set_or_show_attributes (list, attribute, nodefs) 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) + if (arrays_only || assoc_only) { tlist = list->next; list->next = (WORD_LIST *)NULL; - w = make_word ("-ra"); + w = arrays_only ? make_word ("-ra") : make_word ("-rA"); nlist = make_word_list (w, list); opt = declare_builtin (nlist); if (opt != EXECUTION_SUCCESS) @@ -217,6 +248,8 @@ set_or_show_attributes (list, attribute, nodefs) 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); @@ -244,6 +277,12 @@ set_or_show_attributes (list, attribute, nodefs) 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) @@ -253,9 +292,15 @@ set_or_show_attributes (list, attribute, nodefs) #if defined (ARRAY_VARS) if (arrays_only && array_p (var) == 0) continue; + else if (assoc_only && assoc_p (var) == 0) + continue; #endif if ((var->attributes & attribute)) - show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + if (any_failed = sh_chkwrite (any_failed)) + break; + } } free (variable_list); } @@ -266,6 +311,30 @@ set_or_show_attributes (list, attribute, nodefs) : 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 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'. @@ -277,7 +346,7 @@ show_var_attributes (var, pattr, nodefs) SHELL_VAR *var; int pattr, nodefs; { - char flags[8], *x; + char flags[16], *x; int i; i = 0; @@ -288,6 +357,9 @@ show_var_attributes (var, pattr, nodefs) #if defined (ARRAY_VARS) if (array_p (var)) flags[i++] = 'a'; + + if (assoc_p (var)) + flags[i++] = 'A'; #endif if (function_p (var)) @@ -304,12 +376,24 @@ show_var_attributes (var, pattr, nodefs) 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)) @@ -323,7 +407,7 @@ show_var_attributes (var, pattr, nodefs) reused as input to recreate the current state. */ if (function_p (var) && nodefs == 0 && (pattr == 0 || posixly_correct == 0)) { - printf ("%s\n", named_function_string (var->name, function_cell (var), 1)); + 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' */ @@ -337,8 +421,10 @@ show_var_attributes (var, pattr, nodefs) printf ("%s ", this_command_name); #if defined (ARRAY_VARS) - if (array_p (var)) + if (array_p (var)) print_array_assignment (var, 1); + else if (assoc_p (var)) + print_assoc_assignment (var, 1); else #endif /* force `readonly' and `export' to not print out function definitions @@ -346,7 +432,7 @@ show_var_attributes (var, pattr, nodefs) if (nodefs || (function_p (var) && pattr != 0 && posixly_correct)) printf ("%s\n", var->name); else if (function_p (var)) - printf ("%s\n", named_function_string (var->name, function_cell (var), 1)); + printf ("%s\n", named_function_string (var->name, function_cell (var), FUNC_MULTILINE|FUNC_EXTERNAL)); else if (invisible_p (var)) printf ("%s\n", var->name); else @@ -396,13 +482,15 @@ set_var_attribute (name, attribute, undo) { tvalue = var_isset (tv) ? savestring (value_cell (tv)) : savestring (""); - var = bind_variable (tv->name, tvalue); + var = bind_variable (tv->name, tvalue, 0); var->attributes |= tv->attributes & ~att_tempvar; VSETATTR (tv, att_propagate); if (var->context != 0) VSETATTR (var, att_propagate); SETVARATTR (tv, attribute, undo); /* XXX */ + stupidly_hack_special_variables (tv->name); + free (tvalue); } else @@ -410,7 +498,7 @@ set_var_attribute (name, attribute, undo) var = find_variable_internal (name, 0); if (var == 0) { - var = bind_variable (name, (char *)NULL); + var = bind_variable (name, (char *)NULL, 0); VSETATTR (var, att_invisible); } else if (var->context != 0) diff --git a/src/bin/bash/builtins/shift.def b/src/bin/bash/builtins/shift.def index dbff062219..32130862a4 100644 --- a/src/bin/bash/builtins/shift.def +++ b/src/bin/bash/builtins/shift.def @@ -1,23 +1,22 @@ This file is shift.def, from which is created shift.c. It implements the builtin "shift" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES shift.c @@ -31,6 +30,7 @@ $PRODUCES shift.c #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "common.h" @@ -38,8 +38,13 @@ $PRODUCES shift.c $BUILTIN shift $FUNCTION shift_builtin $SHORT_DOC shift [n] -The positional parameters from $N+1 ... are renamed to $1 ... If N is +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; @@ -56,19 +61,20 @@ shift_builtin (list) register int count; WORD_LIST *temp; - times = get_numeric_arg (list, 0); + if (get_numeric_arg (list, 0, ×) == 0) + return (EXECUTION_FAILURE); if (times == 0) return (EXECUTION_SUCCESS); else if (times < 0) { - sh_erange (list->word->word, "shift count"); + sh_erange (list ? list->word->word : NULL, _("shift count")); return (EXECUTION_FAILURE); } else if (times > number_of_args ()) { if (print_shift_error) - sh_erange (list->word->word, "shift count"); + sh_erange (list ? list->word->word : NULL, _("shift count")); return (EXECUTION_FAILURE); } diff --git a/src/bin/bash/builtins/shopt.def b/src/bin/bash/builtins/shopt.def index ae15330dd3..d30a869d5d 100644 --- a/src/bin/bash/builtins/shopt.def +++ b/src/bin/bash/builtins/shopt.def @@ -1,37 +1,44 @@ This file is shopt.def, from which is created shopt.c. It implements the Bash `shopt' builtin. -Copyright (C) 1994-2002 Free Software Foundation, Inc. +Copyright (C) 1994-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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 long-option] optname [optname...] -Toggle the values of variables controlling optional behavior. -The -s flag means to enable (set) each OPTNAME; the -u flag -unsets each OPTNAME. The -q flag suppresses output; the exit -status indicates whether each OPTNAME is set or unset. The -o -option restricts the OPTNAMEs to those defined for use with -`set -o'. With no options, or with the -p option, a list of all -settable options is displayed, with an indication of whether or -not each is set. +$SHORT_DOC shopt [-pqsu] [-o] [optname ...] +Set and unset shell options. + +Change the setting of each shell option OPTNAME. Without any option +arguments, list all shell options 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 @@ -45,38 +52,49 @@ $END #include +#include "version.h" + +#include "../bashintl.h" + #include "../shell.h" #include "../flags.h" #include "common.h" #include "bashgetopt.h" +#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, glob_dot_filenames; +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; +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; #if defined (EXTENDED_GLOB) extern int extended_glob; #endif -#if defined (HISTORY) -extern int literal_history, command_oriented_history; -extern int force_append_history; -#endif - #if defined (READLINE) extern int hist_verify, history_reediting, perform_hostname_completion; extern int no_empty_command_completion; +extern int force_fignore; +extern int dircomplete_spelling; + extern int enable_hostname_completion __P((int)); #endif @@ -88,15 +106,23 @@ extern int prog_completion_enabled; extern char *shell_name; #endif +#if defined (DEBUGGER) +extern int debugging_mode; +#endif + static void shopt_error __P((char *)); -static int set_interactive_comments __P((int)); +static int set_shellopts_after_change __P((int)); + +static int set_compatibility_level __P((int)); #if defined (RESTRICTED_SHELL) static int set_restricted_shell __P((int)); #endif static int shopt_login_shell; +static int shopt_compat31; +static int shopt_compat32; typedef int shopt_set_func_t __P((int)); @@ -105,31 +131,48 @@ static struct { int *value; shopt_set_func_t *set_func; } shopt_vars[] = { + { "autocd", &autocd, (shopt_set_func_t *)NULL }, { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, +#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 }, +#if defined (READLINE) + { "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_func_t *)NULL }, +#endif #if defined (EXTENDED_GLOB) { "extglob", &extended_glob, (shopt_set_func_t *)NULL }, #endif + { "extquote", &extended_quote, (shopt_set_func_t *)NULL }, + { "failglob", &fail_glob_expansion, (shopt_set_func_t *)NULL }, #if defined (READLINE) - { "histreedit", &history_reediting, (shopt_set_func_t *)NULL }, + { "force_fignore", &force_fignore, (shopt_set_func_t *)NULL }, #endif + { "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, enable_hostname_completion }, #endif { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, - { "interactive_comments", &interactive_comments, set_interactive_comments }, + { "interactive_comments", &interactive_comments, set_shellopts_after_change }, #if defined (HISTORY) { "lithist", &literal_history, (shopt_set_func_t *)NULL }, #endif @@ -139,6 +182,7 @@ static struct { { "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 }, @@ -153,8 +197,8 @@ static struct { { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; -static char *on = "on"; -static char *off = "off"; +static const char * const on = "on"; +static const char * const off = "off"; static int find_shopt __P((char *)); static int toggle_shopts __P((int, WORD_LIST *, int)); @@ -207,7 +251,7 @@ shopt_builtin (list) if ((flags & (SFLAG|UFLAG)) == (SFLAG|UFLAG)) { - builtin_error ("cannot set and unset shell options simultaneously"); + builtin_error (_("cannot set and unset shell options simultaneously")); return (EXECUTION_FAILURE); } @@ -272,7 +316,7 @@ static void shopt_error (s) char *s; { - builtin_error ("%s: invalid shell option name", s); + builtin_error (_("%s: invalid shell option name"), s); } static int @@ -331,7 +375,7 @@ list_shopts (list, flags) if ((flags & QFLAG) == 0) print_shopt (shopt_vars[i].name, val, flags); } - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) @@ -350,7 +394,7 @@ list_shopts (list, flags) print_shopt (l->word->word, val, flags); } - return (rval); + return (sh_chkwrite (rval)); } static int @@ -365,7 +409,7 @@ list_some_shopts (mode, flags) if (((flags & QFLAG) == 0) && mode == val) print_shopt (shopt_vars[i].name, val, flags); } - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } static int @@ -380,7 +424,7 @@ list_shopt_o_options (list, flags) { if ((flags & QFLAG) == 0) list_minus_o_opts (-1, (flags & PFLAG)); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) @@ -402,7 +446,7 @@ list_shopt_o_options (list, flags) printf (OPTFMT, l->word->word, val ? on : off); } } - return (rval); + return (sh_chkwrite (rval)); } static int @@ -411,7 +455,7 @@ list_some_o_options (mode, flags) { if ((flags & QFLAG) == 0) list_minus_o_opts (mode, (flags & PFLAG)); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } static int @@ -435,13 +479,27 @@ set_shopt_o_options (mode, list, quiet) /* If we set or unset interactive_comments with shopt, make sure the change is reflected in $SHELLOPTS. */ static int -set_interactive_comments (mode) +set_shellopts_after_change (mode) int mode; { set_shellopts (); return (0); } +static int +set_compatibility_level (mode) + int mode; +{ + /* Need to change logic here as we add more compatibility levels */ + if (shopt_compat31) + shell_compatibility_level = 31; + else if (shopt_compat32) + shell_compatibility_level = 32; + else + shell_compatibility_level = DEFAULT_COMPAT_LEVEL; + return 0; +} + #if defined (RESTRICTED_SHELL) /* Don't allow the value of restricted_shell to be modified. */ @@ -519,5 +577,5 @@ shopt_listopt (name, reusable) } print_shopt (name, *shopt_vars[i].value, reusable ? PFLAG : 0); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } diff --git a/src/bin/bash/builtins/source.def b/src/bin/bash/builtins/source.def index 4876284fbb..72627db3a4 100644 --- a/src/bin/bash/builtins/source.def +++ b/src/bin/bash/builtins/source.def @@ -1,47 +1,62 @@ This file is source.def, from which is created source.c. It implements the builtins "." and "source" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 -Read and execute commands from FILENAME and return. The pathnames -in $PATH are used to find the directory containing FILENAME. +$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 -Read and execute commands from FILENAME and return. The pathnames -in $PATH are used to find the directory containing FILENAME. +$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 -/* source.c - Implements the `.' and `source' builtins. */ #include #include "../bashtypes.h" #include "posixstat.h" #include "filecntl.h" -#if defined (HAVE_SYS_FILE_H) +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include @@ -51,19 +66,22 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" +#include "../flags.h" #include "../findcmd.h" #include "common.h" #include "bashgetopt.h" +#include "../trap.h" #if !defined (errno) extern int errno; #endif /* !errno */ -#if defined (RESTRICTED_SHELL) -extern int restricted; -#endif +extern int posixly_correct; + +static void maybe_pop_dollar_vars __P((void)); /* If non-zero, `.' uses $PATH to look up the script to be sourced. */ int source_uses_path = 1; @@ -85,6 +103,8 @@ maybe_pop_dollar_vars () dispose_saved_dollar_vars (); else pop_dollar_vars (); + if (debugging_mode) + pop_args (); /* restore BASH_ARGC and BASH_ARGV */ set_dollar_vars_unchanged (); } @@ -97,7 +117,7 @@ source_builtin (list) WORD_LIST *list; { int result; - char *filename; + char *filename, *debug_trap; if (no_options (list)) return (EX_USAGE); @@ -105,7 +125,7 @@ source_builtin (list) if (list == 0) { - builtin_error ("filename argument required"); + builtin_error (_("filename argument required")); builtin_usage (); return (EX_USAGE); } @@ -119,13 +139,18 @@ source_builtin (list) #endif filename = (char *)NULL; - if (source_uses_path) + /* 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) { - builtin_error ("%s: file not found", list->word->word); + builtin_error (_("%s: file not found"), list->word->word); return (EXECUTION_FAILURE); } else @@ -140,10 +165,24 @@ source_builtin (list) push_dollar_vars (); add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL); remember_args (list->next, 1); + if (debugging_mode) + push_args (list->next); /* Update BASH_ARGV and BASH_ARGC */ } set_dollar_vars_unchanged (); - result = source_file (filename); + /* Don't inherit the DEBUG trap unless function_trace_mode (overloaded) + is set. XXX - should sourced files inherit the RETURN trap? Functions + don't. */ + debug_trap = TRAP_STRING (DEBUG_TRAP); + if (debug_trap && function_trace_mode == 0) + { + debug_trap = savestring (debug_trap); + add_unwind_protect (xfree, debug_trap); + add_unwind_protect (set_debug_trap, debug_trap); + restore_default_signal (DEBUG_TRAP); + } + + result = source_file (filename, (list && list->next)); run_unwind_frame ("source"); diff --git a/src/bin/bash/builtins/suspend.def b/src/bin/bash/builtins/suspend.def index 43391c0d78..8711e68173 100644 --- a/src/bin/bash/builtins/suspend.def +++ b/src/bin/bash/builtins/suspend.def @@ -1,23 +1,22 @@ This file is suspend.def, from which is created suspend.c. It implements the builtin "suspend" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +You should have received a copy of the GNU General Public License +along with Bash. If not, see . $PRODUCES suspend.c @@ -25,9 +24,16 @@ $BUILTIN suspend $DEPENDS_ON JOB_CONTROL $FUNCTION suspend_builtin $SHORT_DOC suspend [-f] -Suspend the execution of this shell until it receives a SIGCONT -signal. The `-f' if specified says not to complain about this -being a login shell if it is; just suspend anyway. +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 @@ -42,18 +48,21 @@ $END #include "../bashtypes.h" #include +#include "../bashintl.h" #include "../shell.h" #include "../jobs.h" #include "common.h" #include "bashgetopt.h" +static sighandler suspend_continue __P((int)); + static SigHandler *old_cont; #if 0 static SigHandler *old_stop; #endif /* Continue handler. */ -sighandler +static sighandler suspend_continue (sig) int sig; { @@ -89,7 +98,7 @@ suspend_builtin (list) if (job_control == 0) { - sh_nojobs ("cannot suspend"); + sh_nojobs (_("cannot suspend")); return (EXECUTION_FAILURE); } @@ -99,11 +108,14 @@ suspend_builtin (list) if (login_shell) { - builtin_error ("cannot suspend a 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); diff --git a/src/bin/bash/builtins/test.def b/src/bin/bash/builtins/test.def index e51d00b7a4..4adff93b65 100644 --- a/src/bin/bash/builtins/test.def +++ b/src/bin/bash/builtins/test.def @@ -1,29 +1,30 @@ This file is test.def, from which is created test.c. It implements the builtin "test" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 @@ -31,27 +32,27 @@ are string operators as well, and numeric comparison operators. File operators: - -a FILE True if file exists. - -b FILE True if file is block special. - -c FILE True if file is character special. - -d FILE True if file is a directory. - -e FILE True if file exists. - -f FILE True if file exists and is a regular file. - -g FILE True if file is set-group-id. - -h FILE True if file is a symbolic link. - -L FILE True if file is a symbolic link. - -k FILE True if file has its `sticky' bit set. - -p FILE True if file is a named pipe. - -r FILE True if file is readable by you. - -s FILE True if file exists and is not empty. - -S FILE True if file is a socket. - -t FD True if FD is opened on a terminal. - -u FILE True if the file is set-user-id. - -w FILE True if the file is writable by you. - -x FILE True if the file is executable by you. - -O FILE True if the file is effectively owned by you. - -G FILE True if the file is effectively owned by your group. - -N FILE True if the file has been modified since it was last read. + -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). @@ -62,41 +63,47 @@ File operators: String operators: - -z STRING True if string is empty. + -z STRING True if string is empty. - -n STRING - STRING True if string is not 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. + STRING1 = STRING2 + True if the strings are equal. + STRING1 != STRING2 + True if the strings are not equal. + STRING1 < STRING2 + True if STRING1 sorts before STRING2 lexicographically. + STRING1 > STRING2 + True if STRING1 sorts after STRING2 lexicographically. Other operators: - -o OPTION True if the shell option OPTION is enabled. - ! EXPR True if expr is false. - EXPR1 -a EXPR2 True if both expr1 AND expr2 are true. - EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. + -o OPTION True if the shell option OPTION is enabled. + ! EXPR True if expr is false. + EXPR1 -a EXPR2 True if both expr1 AND expr2 are true. + EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. - arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne, - -lt, -le, -gt, or -ge. + 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... ] -This is a synonym for the "test" builtin, but the last -argument must be a literal `]', to match the opening `['. +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 @@ -109,6 +116,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../test.h" @@ -131,7 +139,7 @@ test_builtin (list) { if (this_command_name[0] == '[' && !this_command_name[1]) { - builtin_error ("missing `]'"); + builtin_error (_("missing `]'")); return (EX_BADUSAGE); } diff --git a/src/bin/bash/builtins/times.def b/src/bin/bash/builtins/times.def index 22304fc2f9..f31f43331e 100644 --- a/src/bin/bash/builtins/times.def +++ b/src/bin/bash/builtins/times.def @@ -1,31 +1,35 @@ This file is times.def, from which is created times.c. It implements the builtin "times" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 -Print the accumulated user and system times for processes run from -the shell. +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 @@ -111,5 +115,5 @@ times_builtin (list) # endif /* HAVE_TIMES */ #endif /* !HAVE_TIMES */ - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } diff --git a/src/bin/bash/builtins/trap.def b/src/bin/bash/builtins/trap.def index af9e6d6c1b..a8da71dd91 100644 --- a/src/bin/bash/builtins/trap.def +++ b/src/bin/bash/builtins/trap.def @@ -1,42 +1,55 @@ This file is trap.def, from which is created trap.c. It implements the builtin "trap" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [arg] [signal_spec ...] or trap -l -The command ARG is to be read and executed when the shell receives -signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are -reset to their original values. If ARG is the null string each -SIGNAL_SPEC is ignored by the shell and by the commands it invokes. -If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from -the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every -command. If ARG is `-p' then the trap commands associated with -each SIGNAL_SPEC are displayed. If no arguments are supplied or if -only `-p' is given, trap prints the list of commands associated with -each signal number. Each SIGNAL_SPEC is either a signal name in -or a signal number. `trap -l' prints a list of signal names and their -corresponding numbers. Note that a signal can be sent to the shell -with "kill -signal $$". +$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 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 @@ -108,24 +121,43 @@ trap_builtin (list) } list = loptend; + opt = DSIG_NOCASE|DSIG_SIGPREFIX; /* flags for decode_signal */ + if (list_signal_names) - return (display_signal_list ((WORD_LIST *)NULL, 1)); + return (sh_chkwrite (display_signal_list ((WORD_LIST *)NULL, 1))); else if (display || list == 0) - return (display_traps (list)); + return (sh_chkwrite (display_traps (list))); else { char *first_arg; - int operation, sig; + int operation, sig, first_signal; operation = SET; first_arg = list->word->word; - if (first_arg && *first_arg && (*first_arg != '-' || first_arg[1]) && - signal_object_p (first_arg)) + 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 (*first_arg == '\0') + 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; @@ -133,7 +165,7 @@ trap_builtin (list) while (list) { - sig = decode_signal (list->word->word); + sig = decode_signal (list->word->word, opt); if (sig == NO_SIG) { @@ -159,7 +191,7 @@ trap_builtin (list) if (interactive) set_signal_handler (SIGINT, sigint_sighandler); else - set_signal_handler (SIGINT, termination_unwind_protect); + set_signal_handler (SIGINT, termsig_sighandler); break; case SIGQUIT: @@ -197,7 +229,6 @@ showtrap (i) char *t, *p, *sn; p = trap_list[i]; - if (p == (char *)DEFAULT_SIG) return; @@ -235,7 +266,7 @@ display_traps (list) for (result = EXECUTION_SUCCESS; list; list = list->next) { - i = decode_signal (list->word->word); + i = decode_signal (list->word->word, DSIG_NOCASE|DSIG_SIGPREFIX); if (i == NO_SIG) { sh_invalidsig (list->word->word); diff --git a/src/bin/bash/builtins/type.def b/src/bin/bash/builtins/type.def index 2d9d2a56b5..ee341bb8b0 100644 --- a/src/bin/bash/builtins/type.def +++ b/src/bin/bash/builtins/type.def @@ -1,50 +1,53 @@ This file is type.def, from which is created type.c. It implements the builtin "type" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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. -If the -t option is used, `type' outputs a single word which is one of -`alias', `keyword', `function', `builtin', `file' or `', if NAME is an -alias, shell reserved word, shell function, shell builtin, disk file, -or unfound, respectively. +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 -If the -p flag is used, `type' either returns the name of the disk -file that would be executed, or nothing if `type -t NAME' would not -return `file'. +Arguments: + NAME Command name to be interpreted. -If the -a flag is used, `type' displays all of the places that contain -an executable named `file'. This includes aliases, builtins, and -functions, if and only if the -p flag is not also used. - -The -f flag suppresses shell function lookup. - -The -P flag forces a PATH search for each NAME, even if it is an alias, -builtin, or function, and returns the name of the disk file that would -be executed. +Exit Status: +Returns success if all of the NAMEs are found; fails if any are not found. $END #include @@ -58,6 +61,7 @@ $END #include #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "../findcmd.h" @@ -73,6 +77,7 @@ $END extern int find_reserved_word __P((char *)); extern char *this_command_name; +extern int expand_aliases, posixly_correct; /* For each word in LIST, find out what the shell is going to do with it as a simple command. i.e., which file would this shell use to @@ -106,14 +111,14 @@ int type_builtin (list) WORD_LIST *list; { - int dflags, successful_finds, opt; + int dflags, any_failed, opt; WORD_LIST *this; if (list == 0) return (EXECUTION_SUCCESS); dflags = CDESC_SHORTDESC; /* default */ - successful_finds = 0; + any_failed = 0; /* Handle the obsolescent `-type', `-path', and `-all' by prescanning the arguments and converting those options to the form that @@ -179,13 +184,12 @@ type_builtin (list) if (!found && (dflags & (CDESC_PATH_ONLY|CDESC_TYPE)) == 0) sh_notfound (list->word->word); - successful_finds += found; + any_failed += found == 0; list = list->next; } - fflush (stdout); - - return ((successful_finds != 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + opt = (any_failed == 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + return (sh_chkwrite (opt)); } /* @@ -199,6 +203,7 @@ type_builtin (list) * CDESC_PATH_ONLY print the path for type -p * CDESC_FORCE_PATH force a path search for type -P * CDESC_NOFUNCS skip function lookup for type -f + * CDESC_ABSPATH convert to absolute path, no ./ prefix * * CDESC_ALL says whether or not to look for all occurrences of COMMAND, or * return after finding it once. @@ -221,12 +226,12 @@ describe_command (command, dflags) #if defined (ALIAS) /* Command is an alias? */ - if (((dflags & CDESC_FORCE_PATH) == 0) && (alias = find_alias (command))) + 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); + printf (_("%s is aliased to `%s'\n"), command, alias->value); else if (dflags & CDESC_REUSABLE) { x = sh_single_quote (alias->value); @@ -247,7 +252,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("keyword"); else if (dflags & CDESC_SHORTDESC) - printf ("%s is a shell keyword\n", command); + printf (_("%s is a shell keyword\n"), command); else if (dflags & CDESC_REUSABLE) printf ("%s\n", command); @@ -264,18 +269,14 @@ describe_command (command, dflags) puts ("function"); else if (dflags & CDESC_SHORTDESC) { -#define PRETTY_PRINT_FUNC 1 char *result; - printf ("%s is a function\n", command); + printf (_("%s is a function\n"), command); /* We're blowing away THE_PRINTED_COMMAND here... */ - result = named_function_string (command, - (COMMAND *) function_cell (func), - PRETTY_PRINT_FUNC); + result = named_function_string (command, function_cell (func), FUNC_MULTILINE|FUNC_EXTERNAL); printf ("%s\n", result); -#undef PRETTY_PRINT_FUNC } else if (dflags & CDESC_REUSABLE) printf ("%s\n", command); @@ -292,7 +293,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("builtin"); else if (dflags & CDESC_SHORTDESC) - printf ("%s is a shell builtin\n", command); + printf (_("%s is a shell builtin\n"), command); else if (dflags & CDESC_REUSABLE) printf ("%s\n", command); @@ -313,7 +314,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("file"); else if (dflags & CDESC_SHORTDESC) - printf ("%s is %s\n", command, command); + printf (_("%s is %s\n"), command, command); else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) printf ("%s\n", command); @@ -333,7 +334,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("file"); else if (dflags & CDESC_SHORTDESC) - printf ("%s is hashed (%s)\n", command, full_path); + printf (_("%s is hashed (%s)\n"), command, full_path); else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) printf ("%s\n", full_path); @@ -357,8 +358,9 @@ describe_command (command, dflags) /* 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. */ - if (STREQ (full_path, command)) + 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) @@ -368,9 +370,17 @@ describe_command (command, dflags) 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)) - full_path = sh_makepath ((char *)NULL, full_path, MP_DOCWD); + { + f = MP_DOCWD | ((dflags & CDESC_ABSPATH) ? MP_RMDOT : 0); + full_path = sh_makepath ((char *)NULL, full_path, f); + } } + /* If we require a full path and don't have one, make one */ + else if ((dflags & CDESC_ABSPATH) && ABSPATH (full_path) == 0) + full_path = sh_makepath ((char *)NULL, full_path, MP_DOCWD|MP_RMDOT); found_file++; found = 1; @@ -378,7 +388,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("file"); else if (dflags & CDESC_SHORTDESC) - printf ("%s is %s\n", command, full_path); + printf (_("%s is %s\n"), command, full_path); else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) printf ("%s\n", full_path); diff --git a/src/bin/bash/builtins/ulimit.def b/src/bin/bash/builtins/ulimit.def index 3a056298ac..e71452c8e6 100644 --- a/src/bin/bash/builtins/ulimit.def +++ b/src/bin/bash/builtins/ulimit.def @@ -1,57 +1,68 @@ This file is ulimit.def, from which is created ulimit.c. It implements the builtin "ulimit" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [-SHacdflmnpstuv] [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: +$SHORT_DOC ulimit [-SHacdefilmnpqrstuvx] [limit] +Modify shell resource limits. - -S use the `soft' resource limit - -H use the `hard' resource limit - -a all current limits are reported - -c the maximum size of core files created - -d the maximum size of a process's data segment - -f the maximum size of files created by the shell - -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 - -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 +Provides control over the resources available to the shell and processes +it creates, on systems that allow such control. -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. +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 + -l the maximum size a process may lock into memory + -m the maximum resident set size + -n the maximum number of open file descriptors + -p the pipe buffer size + -q the maximum number of bytes in POSIX message queues + -r the maximum real-time scheduling priority + -s the maximum stack size + -t the maximum amount of cpu time in seconds + -u the maximum number of user processes + -v the size of virtual memory + -x the maximum number of file locks + +If LIMIT is given, it is the new value of the specified resource; the +special LIMIT values `soft', `hard', and `unlimited' stand for the +current soft limit, the current hard limit, and no limit, respectively. +Otherwise, the current value of the specified resource is printed. If +no option is given, then -f is assumed. + +Values are in 1024-byte increments, except for -t, which is in seconds, +-p, which is in increments of 512 bytes, and -u, which is an unscaled +number of processes. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. $END #if !defined (_MINIX) @@ -70,6 +81,8 @@ $END #include #include +#include "../bashintl.h" + #include "../shell.h" #include "common.h" #include "bashgetopt.h" @@ -91,7 +104,7 @@ extern int errno; # if defined (HPUX) && defined (RLIMIT_NEEDS_KERNEL) # undef _KERNEL # endif -#else +#elif defined (HAVE_SYS_TIMES_H) # include #endif @@ -165,6 +178,14 @@ extern int errno; #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)) + +extern int posixly_correct; + static int _findlim __P((int)); static int ulimit_internal __P((int, char *, int, int)); @@ -186,18 +207,30 @@ typedef struct { int option; /* The ulimit option for this limit. */ int parameter; /* Parameter to pass to get_limit (). */ int block_factor; /* Blocking factor for specific limit. */ - char *description; /* Descriptive string to output. */ - char *units; /* scale */ + const char * const description; /* Descriptive string to output. */ + const char * const units; /* scale */ } RESOURCE_LIMITS; static RESOURCE_LIMITS limits[] = { +#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, 1024, "core file size", "blocks" }, + { 'c', RLIMIT_CORE, POSIXBLK, "core file size", "blocks" }, #endif #ifdef RLIMIT_DATA { 'd', RLIMIT_DATA, 1024, "data seg size", "kbytes" }, #endif - { 'f', RLIMIT_FILESIZE, 1024, "file size", "blocks" }, +#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_MEMLOCK { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory", "kbytes" }, #endif @@ -206,6 +239,12 @@ static RESOURCE_LIMITS limits[] = { #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 @@ -218,6 +257,9 @@ static RESOURCE_LIMITS limits[] = { #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 } }; @@ -330,14 +372,14 @@ ulimit_builtin (list) { if (STREQ (list->word->word, "unlimited") == 0) { - builtin_error ("%s: invalid limit argument", list->word->word); + builtin_error (_("%s: invalid limit argument"), list->word->word); return (EXECUTION_FAILURE); } return (set_all_limits (mode == 0 ? LIMIT_SOFT|LIMIT_HARD : mode, RLIM_INFINITY)); } #endif print_all_limits (mode == 0 ? LIMIT_SOFT : mode); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } /* default is `ulimit -f' */ @@ -356,7 +398,7 @@ ulimit_builtin (list) limind = _findlim (cmdlist[c].cmd); if (limind == -1) { - builtin_error ("`%c': bad command", cmdlist[c].cmd); + builtin_error (_("`%c': bad command"), cmdlist[c].cmd); return (EX_USAGE); } } @@ -385,7 +427,7 @@ ulimit_internal (cmd, cmdarg, mode, multiple) opt = get_limit (limind, &soft_limit, &hard_limit); if (opt < 0) { - builtin_error ("%s: cannot get limit: %s", limits[limind].description, + builtin_error (_("%s: cannot get limit: %s"), limits[limind].description, strerror (errno)); return (EXECUTION_FAILURE); } @@ -406,12 +448,12 @@ ulimit_internal (cmd, cmdarg, mode, multiple) else if (all_digits (cmdarg)) { limit = string_to_rlimtype (cmdarg); - block_factor = limits[limind].block_factor; + block_factor = BLOCKSIZE(limits[limind].block_factor); real_limit = limit * block_factor; if ((real_limit / block_factor) != limit) { - sh_erange (cmdarg, "limit"); + sh_erange (cmdarg, _("limit")); return (EXECUTION_FAILURE); } } @@ -423,7 +465,7 @@ ulimit_internal (cmd, cmdarg, mode, multiple) if (set_limit (limind, real_limit, mode) < 0) { - builtin_error ("%s: cannot modify limit: %s", limits[limind].description, + builtin_error (_("%s: cannot modify limit: %s"), limits[limind].description, strerror (errno)); return (EXECUTION_FAILURE); } @@ -606,14 +648,19 @@ pipesize (valuep) *valuep = (RLIMTYPE) PIPE_BUF; return 0; #else -# if defined (PIPESIZE) +# 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 +# else errno = EINVAL; return -1; -# endif /* PIPESIZE */ +# endif /* PIPESIZE */ +# endif /* _POSIX_PIPE_BUF */ #endif /* PIPE_BUF */ } @@ -648,11 +695,11 @@ print_all_limits (mode) for (i = 0; limits[i].option > 0; i++) { - if (get_limit (i, &softlim, &hardlim) < 0) + 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)); - else - printone (i, (mode & LIMIT_SOFT) ? softlim : hardlim, 1); } } @@ -663,7 +710,9 @@ printone (limind, curlim, pdesc) int pdesc; { char unitstr[64]; + int factor; + factor = BLOCKSIZE(limits[limind].block_factor); if (pdesc) { if (limits[limind].units) @@ -671,7 +720,7 @@ printone (limind, curlim, pdesc) else sprintf (unitstr, "(-%c) ", limits[limind].option); - printf ("%-18s %16s", limits[limind].description, unitstr); + printf ("%-20s %16s", limits[limind].description, unitstr); } if (curlim == RLIM_INFINITY) puts ("unlimited"); @@ -680,7 +729,7 @@ printone (limind, curlim, pdesc) else if (curlim == RLIM_SAVED_CUR) puts ("soft"); else - print_rlimtype ((curlim / limits[limind].block_factor), 1); + print_rlimtype ((curlim / factor), 1); } /* Set all limits to NEWLIM. NEWLIM currently must be RLIM_INFINITY, which @@ -716,7 +765,7 @@ set_all_limits (mode, newlim) for (retval = i = 0; limits[i].option > 0; i++) if (set_limit (i, newlim, mode) < 0) { - builtin_error ("%s: cannot modify limit: %s", limits[i].description, + builtin_error (_("%s: cannot modify limit: %s"), limits[i].description, strerror (errno)); retval = 1; } diff --git a/src/bin/bash/builtins/umask.def b/src/bin/bash/builtins/umask.def index 822f2b9134..289a0f548e 100644 --- a/src/bin/bash/builtins/umask.def +++ b/src/bin/bash/builtins/umask.def @@ -1,43 +1,49 @@ This file is umask.def, from which is created umask.c. It implements the builtin "umask" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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] -The user file-creation mask is set to MODE. If MODE is omitted, or if -`-S' is supplied, the current value of the mask is printed. The `-S' -option makes the output symbolic; otherwise an octal number is output. -If `-p' is supplied, and MODE is omitted, the output is in a form -that may be used as input. If MODE begins with a digit, it is -interpreted as an octal number, otherwise it is a symbolic mode string -like that accepted by chmod(1). +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 (HAVE_SYS_FILE_H) +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif @@ -48,6 +54,8 @@ $END #include #include +#include "../bashintl.h" + #include "../shell.h" #include "posixstat.h" #include "common.h" @@ -107,7 +115,7 @@ umask_builtin (list) is lousy. */ if (umask_value == -1) { - sh_erange (list->word->word, "octal number"); + sh_erange (list->word->word, _("octal number")); return (EXECUTION_FAILURE); } } @@ -135,8 +143,7 @@ umask_builtin (list) printf ("%04lo\n", (unsigned long)umask_arg); } - fflush (stdout); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } /* Print the umask in a symbolic form. In the output, a letter is @@ -221,7 +228,7 @@ parse_symbolic_mode (mode, initial_bits) case '=': break; default: - builtin_error ("`%c': invalid symbolic mode operator", op); + builtin_error (_("`%c': invalid symbolic mode operator"), op); return (-1); } @@ -260,6 +267,8 @@ parse_symbolic_mode (mode, initial_bits) bits &= ~perm; break; case '=': + if (who == 0) + who = S_IRWXU | S_IRWXG | S_IRWXO; bits &= ~who; bits |= perm; break; @@ -274,7 +283,7 @@ parse_symbolic_mode (mode, initial_bits) } else { - builtin_error ("`%c': invalid symbolic mode character", *s); + builtin_error (_("`%c': invalid symbolic mode character"), *s); return (-1); } } @@ -298,7 +307,7 @@ symbolic_umask (list) /* 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); + bits = parse_symbolic_mode (list->word->word, ~um & 0777); if (bits == -1) return (-1); diff --git a/src/bin/bash/builtins/wait.def b/src/bin/bash/builtins/wait.def index 23c8b19f6b..0206926f3f 100644 --- a/src/bin/bash/builtins/wait.def +++ b/src/bin/bash/builtins/wait.def @@ -1,44 +1,54 @@ This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2002 Free Software Foundation, Inc. +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 2, or (at your option) any later -version. +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. +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 [n] -Wait for the specified process and report its termination status. If -N is not given, all currently active child processes are waited for, -and the return code is zero. N may be a process ID or a job -specification; if a job spec is given, all processes in the job's -pipeline are waited for. +$SHORT_DOC wait [id] +Wait for job completion and return exit status. + +Waits for the process identified by ID, which may be a process ID or a +job specification, and reports its termination status. If ID is not +given, waits for all currently active child processes, and the return +status is zero. If ID is a a job specification, waits for all processes +in the job's pipeline. + +Exit Status: +Returns the status of ID; fails if ID is invalid or an invalid option is +given. $END $BUILTIN wait $FUNCTION wait_builtin $DEPENDS_ON !JOB_CONTROL -$SHORT_DOC wait [n] -Wait for the specified process and report its termination status. If -N is not given, all currently active child processes are waited for, -and the return code is zero. N is a process ID; if it is not given, -all child processes of the shell are waited for. +$SHORT_DOC wait [pid] +Wait for process completion and return exit status. + +Waits for the specified process and reports its termination status. If +PID is not given, all currently active child processes are waited for, +and the return code is zero. PID must be a process ID. + +Exit Status: +Returns the status of ID; fails if ID is invalid or an invalid option is +given. $END #include @@ -59,7 +69,6 @@ $END #include "common.h" #include "bashgetopt.h" -extern int interrupt_immediately; extern int wait_signal_received; procenv_t wait_intr_buf; @@ -141,7 +150,7 @@ wait_builtin (list) } } #if defined (JOB_CONTROL) - else if (job_control && *w) + else if (*w && *w == '%') /* Must be a job spec. Check it out. */ { int job; @@ -150,7 +159,7 @@ wait_builtin (list) BLOCK_CHILD (set, oset); job = get_job_spec (list); - if (job < 0 || job >= job_slots || !jobs[job]) + if (INVALID_JOB (job)) { if (job != DUP_JOB) sh_badjob (list->word->word); @@ -164,12 +173,6 @@ wait_builtin (list) UNBLOCK_CHILD (oset); status = wait_for_job (job); } - else if (job_control == 0 && *w == '%') - { - /* can't use jobspecs as arguments if job control is not active. */ - sh_nojobs ((char *)NULL); - status = EXECUTION_FAILURE; - } #endif /* JOB_CONTROL */ else { diff --git a/src/bin/bash/command.h b/src/bin/bash/command.h index e72b3eedcf..e8a8aa3e3c 100644 --- a/src/bin/bash/command.h +++ b/src/bin/bash/command.h @@ -1,23 +1,23 @@ /* command.h -- The structures used internally to represent commands, and the extern declarations of the functions used to create them. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -31,7 +31,8 @@ enum r_instruction { 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_move_input, r_move_output, r_move_input_word, r_move_output_word, + r_append_err_and_out }; /* Redirection errors. */ @@ -44,7 +45,7 @@ enum r_instruction { (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_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) @@ -54,6 +55,7 @@ enum r_instruction { 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 */ @@ -64,17 +66,32 @@ enum r_instruction { /* 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_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc }; /* Possible values for the `flags' field of a WORD_DESC. */ -#define W_HASDOLLAR 0x01 /* Dollar sign present. */ -#define W_QUOTED 0x02 /* Some form of quote character is present. */ -#define W_ASSIGNMENT 0x04 /* This word is a variable assignment. */ -#define W_GLOBEXP 0x08 /* This word is the result of a glob expansion. */ -#define W_NOSPLIT 0x10 /* Do not perform word splitting on this word. */ -#define W_NOGLOB 0x20 /* Do not perform globbing on this word. */ -#define W_NOSPLIT2 0x40 /* Don't split word except for $@ expansion. */ -#define W_TILDEEXP 0x80 /* Tilde expand this assignment word */ +#define W_HASDOLLAR 0x000001 /* Dollar sign present. */ +#define W_QUOTED 0x000002 /* Some form of quote character is present. */ +#define W_ASSIGNMENT 0x000004 /* This word is a variable assignment. */ +#define W_GLOBEXP 0x000008 /* This word is the result of a glob expansion. */ +#define W_NOSPLIT 0x000010 /* Do not perform word splitting on this word. */ +#define W_NOGLOB 0x000020 /* Do not perform globbing on this word. */ +#define W_NOSPLIT2 0x000040 /* Don't split word except for $@ expansion. */ +#define W_TILDEEXP 0x000080 /* Tilde expand this assignment word */ +#define W_DOLLARAT 0x000100 /* $@ and its special handling */ +#define W_DOLLARSTAR 0x000200 /* $* and its special handling */ +#define W_NOCOMSUB 0x000400 /* Don't perform command substitution on this word */ +#define W_ASSIGNRHS 0x000800 /* Word is rhs of an assignment statement */ +#define W_NOTILDE 0x001000 /* Don't perform tilde expansion on this word */ +#define W_ITILDE 0x002000 /* Internal flag for word expansion */ +#define W_NOEXPAND 0x004000 /* Don't expand at all -- do quote removal */ +#define W_COMPASSIGN 0x008000 /* Compound assignment */ +#define W_ASSNBLTIN 0x010000 /* word is a builtin command that takes assignments */ +#define W_ASSIGNARG 0x020000 /* word is assignment argument to command */ +#define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */ +#define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */ +#define W_NOPROCSUB 0x100000 /* don't perform process substitution */ +#define W_HASCTLESC 0x200000 /* word contains literal CTLESC characters */ +#define W_ASSIGNASSOC 0x400000 /* word looks like associative array assignment */ /* Possible values for subshell_environment */ #define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */ @@ -82,6 +99,8 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #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 */ /* A structure which represents a word. */ typedef struct word_desc { @@ -143,6 +162,7 @@ typedef struct element { #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 -/* 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 it calls popen(), #undef HAVE_GETCWD so - the replacement in getcwd.c will be built. */ -#if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) -# undef HAVE_GETCWD -#endif - #if defined (HAVE_SYS_RESOURCE_H) && defined (HAVE_GETRLIMIT) # define HAVE_RESOURCE #endif @@ -44,15 +36,73 @@ # 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 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 @@ -70,28 +120,6 @@ # undef DEFAULT_ECHO_TO_XPG #endif -#if defined (JOB_CONTROL_MISSING) -# undef JOB_CONTROL -#endif - -#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 - -#if defined (STRCOLL_BROKEN) -# undef HAVE_STRCOLL -#endif - -#if defined (HAVE_SYS_SOCKET_H) && defined (HAVE_GETPEERNAME) && defined (HAVE_NETINET_IN_H) -# define HAVE_NETWORK -#endif - #if !defined (PROMPT_STRING_DECODE) # undef PPROMPT # define PPROMPT "$ " @@ -104,14 +132,33 @@ /* For platforms which support the ISO C amendement 1 functionality we support user defined character classes. */ /* Solaris 2.5 has a bug: must be included before . */ -#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) # include # include -# if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */ +# 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) @@ -137,3 +184,12 @@ /************************************************/ /* 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/src/bin/bash/config-top.h b/src/bin/bash/config-top.h index f0868eb8b7..906128e91b 100644 --- a/src/bin/bash/config-top.h +++ b/src/bin/bash/config-top.h @@ -1,25 +1,22 @@ -/* config-top.h */ +/* config-top.h - various user-settable options not under the control of autoconf. */ -/* This contains various user-settable options not under the control of - autoconf. */ - -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -46,8 +43,13 @@ #define V9_ECHO /* Define DONT_REPORT_SIGPIPE if you don't want to see `Broken pipe' messages - when a job like `cat jobs.c | exit 1' is executed. */ -/* #define DONT_REPORT_SIGPIPE */ + when a job like `cat jobs.c | exit 1' terminates due to a SIGPIPE. */ +#define DONT_REPORT_SIGPIPE + +/* 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 @@ -59,7 +61,7 @@ the Posix.2 confstr () function, or CS_PATH define are not present. */ #ifndef STANDARD_UTILS_PATH #define STANDARD_UTILS_PATH \ - "/bin:/usr/bin:/usr/ucb:/sbin:/usr/sbin:/etc:/usr/etc" + "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" #endif /* Default primary and secondary prompt strings. */ @@ -83,5 +85,16 @@ /* #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). */ + 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-capitalizing operators (~[~]) and the + `capcase' variable attribute (declare -c). */ +#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" */ diff --git a/src/bin/bash/config.h b/src/bin/bash/config.h index 29ff8984e7..e1a2953be0 100644 --- a/src/bin/bash/config.h +++ b/src/bin/bash/config.h @@ -1,23 +1,23 @@ -/* config.h. Generated automatically by configure. */ +/* config.h. Generated from config.h.in by configure. */ /* config.h -- Configuration file for bash. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _CONFIG_H_ #define _CONFIG_H_ @@ -26,9 +26,7 @@ /* Define JOB_CONTROL if your operating system supports BSD-like job control. */ -#if __HAIKU__ #define JOB_CONTROL 1 -#endif /* Define ALIAS if you want the alias features. */ #define ALIAS 1 @@ -122,6 +120,14 @@ command. */ #define COND_COMMAND 1 +/* Define COND_REGEXP if you want extended regular expression matching and the + =~ binary operator in the [[...]] conditional command. */ +#define COND_REGEXP 1 + +/* Define COPROCESS_SUPPORT if you want support for ksh-like coprocesses and + the `coproc' reserved word */ +#define COPROCESS_SUPPORT 1 + /* Define ARITH_FOR_COMMAND if you want the ksh93-style for (( init; test; step )) do list; done arithmetic for command. */ @@ -129,12 +135,24 @@ /* Define NETWORK_REDIRECTIONS if you want /dev/(tcp|udp)/host/port to open socket connections when used in redirections */ -//#define NETWORK_REDIRECTIONS 1 +#define NETWORK_REDIRECTIONS 1 /* Define PROGRAMMABLE_COMPLETION for the programmable completion features and the complete builtin. */ #define PROGRAMMABLE_COMPLETION 1 +/* 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. */ +#define DEBUGGER 1 + +/* 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(). */ #define MEMSCRAMBLE 1 @@ -142,6 +160,15 @@ /* Define AFS if you are using Transarc's AFS. */ /* #undef AFS */ +/* Define for case-modifying variable attributes; variables modified on + assignment */ +#define CASEMOD_ATTRS 1 + +/* Define for case-modifying word expansions */ +#define CASEMOD_EXPANSIONS 1 + +#define ENABLE_NLS 0 + /* End of configuration settings controllable by autoconf. */ /* Other settable options appear in config-top.h. */ @@ -154,11 +181,15 @@ /* #undef inline */ +#define restrict __restrict + +/* #undef volatile */ + /* Define if cpp supports the ANSI-C stringizing `#' operator */ #define HAVE_STRINGIZE 1 /* Define if the compiler supports `long double' variables. */ -#define HAVE_LONG_DOUBLE 1 +/* #undef HAVE_LONG_DOUBLE */ #define PROTOTYPES 1 @@ -207,7 +238,7 @@ /* Memory management functions. */ /* Define if using the bash version of malloc in lib/malloc/malloc.c */ -/* #undef USING_BASH_MALLOC */ +//#define USING_BASH_MALLOC 1 /* #undef DISABLE_MALLOC_WRAPPERS */ @@ -274,7 +305,7 @@ /* Define to `unsigned long' if doesn't define. */ /* #undef uintmax_t */ - + /* Define to `int' if doesn't define. */ /* #undef uid_t */ @@ -288,12 +319,26 @@ /* #undef gid_t */ /* Define to `unsigned int' if doesn't define. */ -// #define socklen_t int +/* #undef socklen_t */ + +/* Define to `int' if doesn't define. */ +/* #undef sig_atomic_t */ + +#define HAVE_MBSTATE_T 1 /* Define if you have quad_t in . */ /* #undef HAVE_QUAD_T */ -/* #undef RLIMTYPE */ +/* Define if you have wchar_t in . */ +#define HAVE_WCHAR_T 1 + +/* Define if you have wctype_t in . */ +#define HAVE_WCTYPE_T 1 + +/* Define if you have wint_t in . */ +#define HAVE_WINT_T 1 + +#define RLIMTYPE rlim_t /* Define to the type of elements in the array set by `getgroups'. Usually this is either `int' or `gid_t'. */ @@ -317,31 +362,32 @@ libraries. */ /* Define if `sys_siglist' is declared by or . */ -#define SYS_SIGLIST_DECLARED 1 +#define HAVE_DECL_SYS_SIGLIST 1 +/* #undef SYS_SIGLIST_DECLARED */ /* Define if `_sys_siglist' is declared by or . */ /* #undef UNDER_SYS_SIGLIST_DECLARED */ #define HAVE_SYS_SIGLIST 1 -#define HAVE_UNDER_SYS_SIGLIST 1 +/* #undef HAVE_UNDER_SYS_SIGLIST */ #define HAVE_SYS_ERRLIST 1 -#define HAVE_TIMEVAL 1 - /* #undef HAVE_TZNAME */ - +/* #undef HAVE_DECL_TZNAME */ /* Characteristics of some of the system structures. */ -#define STRUCT_DIRENT_HAS_D_INO 1 +#define HAVE_STRUCT_DIRENT_D_INO 1 -/* #undef STRUCT_DIRENT_HAS_D_FILENO */ +/* #undef HAVE_STRUCT_DIRENT_D_FILENO */ + +/* #undef HAVE_STRUCT_DIRENT_D_NAMLEN */ /* #undef TIOCSTAT_IN_SYS_IOCTL */ -/* #undef FIONREAD_IN_SYS_IOCTL */ +#define FIONREAD_IN_SYS_IOCTL 1 /* #undef GWINSZ_IN_SYS_IOCTL */ @@ -357,11 +403,15 @@ /* #undef TERMIO_LDISC */ -/* #undef HAVE_STRUCT_STAT_ST_BLOCKS */ +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 #define HAVE_STRUCT_TM_TM_ZONE 1 #define HAVE_TM_ZONE 1 +#define HAVE_TIMEVAL 1 + +#define HAVE_STRUCT_TIMEZONE 1 + /* Characteristics of definitions in the system header files. */ #define HAVE_GETPW_DECLS 1 @@ -370,8 +420,7 @@ /* #undef HAVE_LIBC_FNM_EXTMATCH */ - -#define HAVE_DECL_CONFSTR 0 +#define HAVE_DECL_CONFSTR 1 #define HAVE_DECL_PRINTF 1 @@ -383,8 +432,12 @@ #define HAVE_DECL_STRTOLD 0 +/* #undef PRI_MACROS_BROKEN */ -/* #undef HAVE_MBSTATE_T */ +/* #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 */ @@ -404,7 +457,7 @@ /* #undef OPENDIR_NOT_ROBUST */ -#define PGRP_PIPE 1 +/* #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 @@ -419,11 +472,11 @@ /* #undef HAVE_STD_PUTENV */ -#if __HAIKU__ #define HAVE_STD_UNSETENV 1 -#endif -/* #undef HAVE_PRINTF_A_FORMAT */ +#define HAVE_PRINTF_A_FORMAT 1 + +/* #undef CTYPE_NON_ASCII */ /* Define if you have and nl_langinfo(CODESET). */ /* #undef HAVE_LANGINFO_CODESET */ @@ -470,9 +523,6 @@ /* Define if you have the bcopy function. */ #define HAVE_BCOPY 1 -/* Define if you have the bindtextdomain function. */ -//#define HAVE_BINDTEXTDOMAIN 1 - /* Define if you have the bzero function. */ #define HAVE_BZERO 1 @@ -480,22 +530,36 @@ #define HAVE_CONFSTR 1 /* Define if you have the dlclose function. */ -//#define HAVE_DLCLOSE 1 +#define HAVE_DLCLOSE 1 /* Define if you have the dlopen function. */ -//#define HAVE_DLOPEN 1 +#define HAVE_DLOPEN 1 /* Define if you have the dlsym function. */ #define HAVE_DLSYM 1 /* Define if you don't have vprintf but do have _doprnt. */ -#define HAVE_DOPRNT 1 +/* #undef HAVE_DOPRNT */ /* Define if you have the dup2 function. */ #define HAVE_DUP2 1 +/* Define if you have the eaccess function. */ +/* #undef HAVE_EACCESS */ + +/* Define if you have the fcntl function. */ +#define HAVE_FCNTL 1 + +/* Define if you have the fdprintf function. */ +/* #undef HAVE_FDPRINTF */ + +/* Define if you have the fpurge/__fpurge function. */ +#define HAVE_FPURGE 1 +#define HAVE___FPURGE 1 +#define HAVE_DECL_FPURGE 1 + /* Define if you have the getaddrinfo function. */ -//#define HAVE_GETADDRINFO 1 +/* #undef HAVE_GETADDRINFO */ /* Define if you have the getcwd function. */ #define HAVE_GETCWD 1 @@ -507,7 +571,7 @@ #define HAVE_GETGROUPS 1 /* Define if you have the gethostbyname function. */ -#define HAVE_GETHOSTBYNAME 1 +/* #undef HAVE_GETHOSTBYNAME */ /* Define if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 @@ -516,22 +580,28 @@ #define HAVE_GETPAGESIZE 1 /* Define if you have the getpeername function. */ -#define HAVE_GETPEERNAME 1 +/* #undef HAVE_GETPEERNAME */ + +/* Define if you have the getpwent function. */ +#define HAVE_GETPWENT 1 + +/* Define if you have the getpwnam function. */ +#define HAVE_GETPWNAM 1 + +/* Define if you have the getpwuid function. */ +#define HAVE_GETPWUID 1 /* Define if you have the getrlimit function. */ -//#define HAVE_GETRLIMIT 1 +#define HAVE_GETRLIMIT 1 /* Define if you have the getrusage function. */ #define HAVE_GETRUSAGE 1 /* Define if you have the getservbyname function. */ -#define HAVE_GETSERVBYNAME 1 +/* #undef HAVE_GETSERVBYNAME */ /* Define if you have the getservent function. */ -//#define HAVE_GETSERVENT 1 - -/* Define if you have the gettext function. */ -//#define HAVE_GETTEXT 1 +/* #undef HAVE_GETSERVENT */ /* Define if you have the gettimeofday function. */ #define HAVE_GETTIMEOFDAY 1 @@ -540,7 +610,7 @@ /* #undef HAVE_GETWD */ /* Define if you have the inet_aton function. */ -//#define HAVE_INET_ATON 1 +/* #undef HAVE_INET_ATON */ /* Define if you have the isascii function. */ #define HAVE_ISASCII 1 @@ -551,24 +621,48 @@ /* Define if you have the isgraph function. */ #define HAVE_ISGRAPH 1 -/* Define if you have the isint function in libc */ +/* Define if you have the isinf function in libc */ #define HAVE_ISINF_IN_LIBC 1 +/* Define if you have the isnan function in libc */ +#define HAVE_ISNAN_IN_LIBC 1 + /* Define if you have the isprint function. */ #define HAVE_ISPRINT 1 /* Define if you have the isspace function. */ #define HAVE_ISSPACE 1 +/* Define if you have the iswctype function. */ +#define HAVE_ISWCTYPE 1 + +/* Define if you have the iswlower function. */ +#define HAVE_ISWLOWER 1 + +/* Define if you have the iswupper function. */ +#define HAVE_ISWUPPER 1 + /* Define if you have the isxdigit function. */ #define HAVE_ISXDIGIT 1 +/* Define if you have the kill function. */ +#define HAVE_KILL 1 + /* Define if you have the killpg function. */ -//#define HAVE_KILLPG 1 +#define HAVE_KILLPG 1 /* Define if you have the lstat function. */ #define HAVE_LSTAT 1 +/* Define if you have the mbrlen function. */ +#define HAVE_MBRLEN 1 + +/* Define if you have the mbrtowc function. */ +#define HAVE_MBRTOWC 1 + +/* Define if you have the mbscmp function. */ +/* #undef HAVE_MBSCMP */ + /* Define if you have the mbsrtowcs function. */ #define HAVE_MBSRTOWCS 1 @@ -587,9 +681,18 @@ /* Define if you have the putenv function. */ #define HAVE_PUTENV 1 +/* Define if you have the raise function. */ +#define HAVE_RAISE 1 + /* Define if you have the readlink function. */ #define HAVE_READLINK 1 +/* Define if you have the regcomp function. */ +#define HAVE_REGCOMP 1 + +/* Define if you have the regexec function. */ +#define HAVE_REGEXEC 1 + /* Define if you have the rename function. */ #define HAVE_RENAME 1 @@ -597,14 +700,17 @@ #define HAVE_SBRK 1 /* Define if you have the select function. */ -//#define HAVE_SELECT 1 +#define HAVE_SELECT 1 /* Define if you have the setdtablesize function. */ -//#define HAVE_SETDTABLESIZE 1 +/* #undef HAVE_SETDTABLESIZE */ /* Define if you have the setenv function. */ #define HAVE_SETENV 1 +/* Define if you have the setitimer function. */ +#define HAVE_SETITIMER 1 + /* Define if you have the setlinebuf function. */ #define HAVE_SETLINEBUF 1 @@ -612,13 +718,17 @@ #define HAVE_SETLOCALE 1 /* Define if you have the setostype function. */ -#define HAVE_SETOSTYPE 1 +/* #undef HAVE_SETOSTYPE */ + +/* Define if you have the setregid function. */ +/* #undef HAVE_SETREGID */ +#define HAVE_DECL_SETREGID 1 /* Define if you have the setvbuf function. */ #define HAVE_SETVBUF 1 /* Define if you have the siginterrupt function. */ -//#define HAVE_SIGINTERRUPT 1 +#define HAVE_SIGINTERRUPT 1 /* Define if you have the POSIX.1-style sigsetjmp function. */ #define HAVE_POSIX_SIGSETJMP 1 @@ -641,9 +751,15 @@ /* Define if you have the strftime function. */ #define HAVE_STRFTIME 1 +/* Define if you have the strnlen function. */ +#define HAVE_STRNLEN 1 + /* Define if you have the strpbrk function. */ #define HAVE_STRPBRK 1 +/* Define if you have the strstr function. */ +#define HAVE_STRSTR 1 + /* Define if you have the strtod function. */ #define HAVE_STRTOD 1 @@ -677,12 +793,15 @@ /* Define if you have the tcgetpgrp function. */ #define HAVE_TCGETPGRP 1 -/* Define if you have the textdomain function. */ -//#define HAVE_TEXTDOMAIN 1 - /* Define if you have the times function. */ #define HAVE_TIMES 1 +/* Define if you have the towlower function. */ +#define HAVE_TOWLOWER 1 + +/* Define if you have the towupper function. */ +#define HAVE_TOWUPPER 1 + /* Define if you have the ttyname function. */ #define HAVE_TTYNAME 1 @@ -690,7 +809,7 @@ #define HAVE_TZSET 1 /* Define if you have the ulimit function. */ -//#define HAVE_ULIMIT 1 +/* #undef HAVE_ULIMIT */ /* Define if you have the uname function. */ #define HAVE_UNAME 1 @@ -711,7 +830,19 @@ #define HAVE_WAITPID 1 /* Define if you have the wait3 function. */ -#define HAVE_WAIT3 1 +/* #undef HAVE_WAIT3 */ + +/* Define if you have the wcrtomb function. */ +#define HAVE_WCRTOMB 1 + +/* Define if you have the wcscoll function. */ +#define HAVE_WCSCOLL 1 + +/* Define if you have the wcsdup function. */ +#define HAVE_WCSDUP 1 + +/* Define if you have the wctype function. */ +#define HAVE_WCTYPE 1 /* Define if you have the wcwidth function. */ #define HAVE_WCWIDTH 1 @@ -719,13 +850,13 @@ /* Presence of certain system include files. */ /* Define if you have the header file. */ -/* #undef HAVE_ARPA_INET_H */ +#define HAVE_ARPA_INET_H 1 /* Define if you have the header file. */ #define HAVE_DIRENT_H 1 /* Define if you have the header file. */ -/* #undef HAVE_DLFCN_H */ +#define HAVE_DLFCN_H 1 /* Define if you have the header file. */ #define HAVE_GRP_H 1 @@ -754,6 +885,12 @@ /* Define if you have the header file. */ #define HAVE_NETINET_IN_H 1 +/* Define if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define if you have the header file. */ +#define HAVE_REGEX_H 1 + /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 @@ -779,7 +916,7 @@ /* #undef HAVE_SYS_DIR_H */ /* Define if you have the header file. */ -/* #undef HAVE_SYS_FILE_H */ +#define HAVE_SYS_FILE_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_NDIR_H */ @@ -797,11 +934,14 @@ #define HAVE_SYS_RESOURCE_H 1 /* Define if you have the header file. */ -/* #undef HAVE_SYS_SELECT_H */ +#define HAVE_SYS_SELECT_H 1 /* Define if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + /* Define if you have the header file. */ /* #undef HAVE_SYS_STREAM_H */ @@ -813,6 +953,9 @@ /* Define if you have */ #define HAVE_SYS_TIMES_H 1 +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + /* Define if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 @@ -835,7 +978,7 @@ #define HAVE_WCHAR_H 1 /* Define if you have the header file. */ -/* #undef HAVE_WCTYPE_H */ +#define HAVE_WCTYPE_H 1 /* Presence of certain system libraries. */ @@ -878,6 +1021,64 @@ /* #undef GETCWD_BROKEN */ +/* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARGZ_H */ + +/* Define if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define if you have the header file. */ +#define HAVE_STDIO_EXT_H 1 + +/* Define if you have the `dcgettext' function. */ +/* #undef HAVE_DCGETTEXT */ + +/* Define if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define if your system has a working `malloc' function. */ +/* #undef HAVE_MALLOC */ + +/* Define if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define if you have a working `mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define if you have the `munmap' function. */ +#define HAVE_MUNMAP 1 + +/* Define if you have the `nl_langinfo' function. */ +/* #undef HAVE_NL_LANGINFO */ + +/* Define if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define if you have the `strcspn' function. */ +#define HAVE_STRCSPN 1 + +/* Define if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the `__argz_count' function. */ +/* #undef HAVE___ARGZ_COUNT */ + +/* Define if you have the `__argz_next' function. */ +/* #undef HAVE___ARGZ_NEXT */ + +/* Define if you have the `__argz_stringify' function. */ +/* #undef HAVE___ARGZ_STRINGIFY */ + +/* End additions for lib/intl */ + #include "config-bot.h" #endif /* _CONFIG_H_ */ diff --git a/src/bin/bash/config.h.in b/src/bin/bash/config.h.in index ff28c0d154..14f2c31961 100644 --- a/src/bin/bash/config.h.in +++ b/src/bin/bash/config.h.in @@ -1,22 +1,22 @@ /* config.h -- Configuration file for bash. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _CONFIG_H_ #define _CONFIG_H_ @@ -119,6 +119,14 @@ 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. */ @@ -132,6 +140,18 @@ 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 @@ -139,6 +159,15 @@ /* Define AFS if you are using Transarc's AFS. */ #undef AFS +/* Define for case-modifying variable attributes; variables modified on + assignment */ +#undef CASEMOD_ATTRS + +/* Define for case-modifying word expansions */ +#undef CASEMOD_EXPANSIONS + +#undef ENABLE_NLS + /* End of configuration settings controllable by autoconf. */ /* Other settable options appear in config-top.h. */ @@ -151,6 +180,10 @@ #undef inline +#undef restrict + +#undef volatile + /* Define if cpp supports the ANSI-C stringizing `#' operator */ #undef HAVE_STRINGIZE @@ -287,9 +320,23 @@ /* 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'. @@ -314,6 +361,7 @@ 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 . */ @@ -325,16 +373,16 @@ #undef HAVE_SYS_ERRLIST -#undef HAVE_TIMEVAL - #undef HAVE_TZNAME - +#undef HAVE_DECL_TZNAME /* Characteristics of some of the system structures. */ -#undef STRUCT_DIRENT_HAS_D_INO +#undef HAVE_STRUCT_DIRENT_D_INO -#undef STRUCT_DIRENT_HAS_D_FILENO +#undef HAVE_STRUCT_DIRENT_D_FILENO + +#undef HAVE_STRUCT_DIRENT_D_NAMLEN #undef TIOCSTAT_IN_SYS_IOCTL @@ -359,6 +407,10 @@ #undef HAVE_STRUCT_TM_TM_ZONE #undef HAVE_TM_ZONE +#undef HAVE_TIMEVAL + +#undef HAVE_STRUCT_TIMEZONE + /* Characteristics of definitions in the system header files. */ #undef HAVE_GETPW_DECLS @@ -367,7 +419,6 @@ #undef HAVE_LIBC_FNM_EXTMATCH - #undef HAVE_DECL_CONFSTR #undef HAVE_DECL_PRINTF @@ -380,8 +431,12 @@ #undef HAVE_DECL_STRTOLD +#undef PRI_MACROS_BROKEN -#undef HAVE_MBSTATE_T +#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 */ @@ -420,6 +475,8 @@ #undef HAVE_PRINTF_A_FORMAT +#undef CTYPE_NON_ASCII + /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET @@ -465,9 +522,6 @@ /* Define if you have the bcopy function. */ #undef HAVE_BCOPY -/* Define if you have the bindtextdomain function. */ -#undef HAVE_BINDTEXTDOMAIN - /* Define if you have the bzero function. */ #undef HAVE_BZERO @@ -489,6 +543,20 @@ /* Define if you have the dup2 function. */ #undef HAVE_DUP2 +/* Define if you have the eaccess function. */ +#undef HAVE_EACCESS + +/* Define if you have the fcntl function. */ +#undef HAVE_FCNTL + +/* Define if you have the fdprintf function. */ +#undef HAVE_FDPRINTF + +/* 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 @@ -513,6 +581,15 @@ /* Define if you have the getpeername function. */ #undef HAVE_GETPEERNAME +/* Define if you have the getpwent function. */ +#undef HAVE_GETPWENT + +/* Define if you have the getpwnam function. */ +#undef HAVE_GETPWNAM + +/* Define if you have the getpwuid function. */ +#undef HAVE_GETPWUID + /* Define if you have the getrlimit function. */ #undef HAVE_GETRLIMIT @@ -525,9 +602,6 @@ /* Define if you have the getservent function. */ #undef HAVE_GETSERVENT -/* Define if you have the gettext function. */ -#undef HAVE_GETTEXT - /* Define if you have the gettimeofday function. */ #undef HAVE_GETTIMEOFDAY @@ -546,24 +620,48 @@ /* Define if you have the isgraph function. */ #undef HAVE_ISGRAPH -/* Define if you have the isint function in libc */ +/* Define if you have the isinf function in libc */ #undef HAVE_ISINF_IN_LIBC +/* Define if you have the isnan function in libc */ +#undef HAVE_ISNAN_IN_LIBC + /* Define if you have the isprint function. */ #undef HAVE_ISPRINT /* 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 mbrlen function. */ +#undef HAVE_MBRLEN + +/* Define if you have the mbrtowc function. */ +#undef HAVE_MBRTOWC + +/* Define if you have the mbscmp function. */ +#undef HAVE_MBSCMP + /* Define if you have the mbsrtowcs function. */ #undef HAVE_MBSRTOWCS @@ -582,9 +680,18 @@ /* Define if you have the putenv function. */ #undef HAVE_PUTENV +/* Define if you have the raise function. */ +#undef HAVE_RAISE + /* Define if you have the readlink function. */ #undef HAVE_READLINK +/* Define if you have the regcomp function. */ +#undef HAVE_REGCOMP + +/* Define if you have the regexec function. */ +#undef HAVE_REGEXEC + /* Define if you have the rename function. */ #undef HAVE_RENAME @@ -600,6 +707,9 @@ /* 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 @@ -609,6 +719,10 @@ /* Define if you have the setostype function. */ #undef HAVE_SETOSTYPE +/* Define if you have the setregid function. */ +#undef HAVE_SETREGID +#undef HAVE_DECL_SETREGID + /* Define if you have the setvbuf function. */ #undef HAVE_SETVBUF @@ -636,9 +750,15 @@ /* 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 @@ -672,12 +792,15 @@ /* Define if you have the tcgetpgrp function. */ #undef HAVE_TCGETPGRP -/* Define if you have the textdomain function. */ -#undef HAVE_TEXTDOMAIN - /* 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 @@ -708,6 +831,18 @@ /* 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 wcwidth function. */ #undef HAVE_WCWIDTH @@ -749,6 +884,12 @@ /* 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 @@ -797,6 +938,9 @@ /* 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 @@ -808,6 +952,9 @@ /* 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 @@ -873,6 +1020,64 @@ #undef GETCWD_BROKEN +/* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_STDIO_EXT_H + +/* Define if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define if 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 `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + +/* Define if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* End additions for lib/intl */ + #include "config-bot.h" #endif /* _CONFIG_H_ */ diff --git a/src/bin/bash/configure b/src/bin/bash/configure index 58b0a7fb26..5f2774577e 100644 --- a/src/bin/bash/configure +++ b/src/bin/bash/configure @@ -1,15 +1,38 @@ #! /bin/sh -# From configure.in for Bash 2.05b, version 2.144, from autoconf version 2.52. +# From configure.in for Bash 4.0, version 4.013. # Guess values for system-dependent variables and create Makefiles. -# Generated by Autoconf 2.52 for bash 2.05b. +# Generated by GNU Autoconf 2.63 for bash 4.0-release. # # Report bugs to . # -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 + + + + +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -17,137 +40,831 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +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 +if (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 -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +# 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 -# Be Bourne compatible +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# 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. +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); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +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 + + +# Name of the executable. +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'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + # 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 -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` -if expr a : '\(a\)' >/dev/null 2>&1; then +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: else - as_unset=false + test -d ./-p && rmdir ./-p + as_mkdir_p=false fi -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" +# 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'" -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= -MFLAGS= MAKEFLAGS= +MFLAGS= +MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='4.0-release' +PACKAGE_STRING='bash 4.0-release' +PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" +ac_header_list= +ac_func_list= +ac_subst_vars='LTLIBOBJS +LOCAL_DEFS +LOCAL_LDFLAGS +LOCAL_CFLAGS +LOCAL_LIBS +MALLOC_DEBUG +DEBUG +RELSTATUS +BASHVERS +ARFLAGS +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 +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 +INTLBISON +LTLIBICONV +LIBICONV +GLIBC21 +ALLOCA +MSGMERGE +XGETTEXT +GMSGFMT +MSGFMT +USE_NLS +MKINSTALLDIRS +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 +LDFLAGS_FOR_BUILD +CPPFLAGS_FOR_BUILD +CFLAGS_FOR_BUILD +STATIC_LD +CC_FOR_BUILD +SIGNAMES_O +SIGNAMES_H +CROSS_COMPILE +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +HELPSTRINGS +HELPINSTALL +HELPDIRDEFINE +HELPDIR +MALLOC_DEP +MALLOC_LDFLAGS +MALLOC_LIBRARY +MALLOC_LIB +MALLOC_SRC +MALLOC_TARGET +PURIFY +TESTSCRIPT +DEBUGGER_START_FILE +lispdir +EMACS +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_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_lispdir +with_afs +with_bash_malloc +with_curses +with_gnu_malloc +with_installed_readline +with_purecov +with_purify +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_directory_stack +enable_disabled_builtins +enable_dparen_arithmetic +enable_extended_glob +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 +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_included_gettext +with_libintl_prefix +' + ac_precious_vars='build_alias +host_alias +target_alias +DEBUGGER_START_FILE +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 @@ -170,41 +887,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Identity of this package. -PACKAGE_NAME='bash' -PACKAGE_TARNAME='bash' -PACKAGE_VERSION='2.05b' -PACKAGE_STRING='bash 2.05b' -PACKAGE_BUGREPORT='bug-bash@gnu.org' +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" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -226,33 +950,61 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + 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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + 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_feature='$ac_optarg'" ;; + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -279,6 +1031,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -303,13 +1061,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -322,7 +1083,7 @@ do with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) + | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ @@ -374,6 +1135,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -424,26 +1195,38 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + 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_package='$ac_optarg'" ;; + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + 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. @@ -463,7 +1246,7 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -472,17 +1255,16 @@ Try \`$0 --help' for more information." >&2 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -491,44 +1273,53 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac -done +fi -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# 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=$`echo $ac_var` + eval ac_val=\$$ac_var + # Remove trailing slashes. case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + */ ) + 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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. +# FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias -# FIXME: should be removed in autoconf 3.0. +# FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes @@ -540,62 +1331,77 @@ 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_echo "$as_me: error: working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + # 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 + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + 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. @@ -603,8 +1409,8 @@ ac_cv_env_CPP_value=$CPP 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 < if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor + YACC The `Yet Another C Compiler' implementation to use. Defaults to + the first program found out of: `bison -y', `byacc', `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . -EOF +_ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue - cd $ac_subdir - # A "../" for each directory in /$ac_subdir. - ac_dots=`echo $ac_subdir | - sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + 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 $srcdir in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_subdir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; - esac +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 - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure.gnu; then - echo - $SHELL $ac_sub_srcdir/configure.gnu --help=recursive - elif test -f $ac_sub_srcdir/configure; then - echo - $SHELL $ac_sub_srcdir/configure --help=recursive - elif test -f $ac_sub_srcdir/configure.ac || - test -f $ac_sub_srcdir/configure.in; then - echo - $ac_configure --help +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 - echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 - fi - cd $ac_popdir + $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 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then - cat <<\EOF -bash configure 2.05b -generated by GNU Autoconf 2.52 + cat <<\_ACEOF +bash configure 4.0-release +generated by GNU Autoconf 2.63 -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -EOF - exit 0 +_ACEOF + exit fi -exec 5>config.log -cat >&5 <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 2.05b, which was -generated by GNU Autoconf 2.52. Invocation command line was +It was created by bash $as_me 4.0-release, which was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ -EOF +_ACEOF +exec 5>>config.log { cat <<_ASUNAME -## ---------- ## -## Platform. ## -## ---------- ## +## --------- ## +## Platform. ## +## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` @@ -824,110 +1687,237 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 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` -PATH = $PATH - _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 <&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF -EOF # 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_sep= -for ac_arg +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 do - case $ac_arg in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" - ac_sep=" " ;; - esac - # Get rid of the leading space. + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # 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 >&5 - echo "## ----------------- ##" >&5 - echo "## Cache variables. ##" >&5 - echo "## ----------------- ##" >&5 - echo >&5 - # The following way of writing the cache mishandles newlines in values, -{ + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + 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" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} >&5 - sed "/^$/d" confdefs.h >conftest.log - if test -s conftest.log; then - echo >&5 - echo "## ------------ ##" >&5 - echo "## confdefs.h. ##" >&5 - echo "## ------------ ##" >&5 - echo >&5 - cat conftest.log >&5 - fi - (echo; echo) >&5 - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" >&5 - echo "$as_me: exit $exit_status" >&5 - rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -for ac_site_file in $CONFIG_SITE; do +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then - { echo "$as_me:928: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - cat "$ac_site_file" >&5 + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done @@ -936,183 +1926,244 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:939: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else - { echo "$as_me:947: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +ac_header_list="$ac_header_list sys/time.h" +ac_header_list="$ac_header_list unistd.h" +ac_func_list="$ac_func_list alarm" +ac_func_list="$ac_func_list fpurge" +ac_func_list="$ac_func_list __fpurge" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +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" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:963: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:967: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:973: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:975: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:977: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac - # Pass precious variables to config.status. It doesn't matter if - # we pass some twice (in addition to the command line arguments). + # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" - ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:996: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:998: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac -echo "#! $SHELL" >conftest.sh -echo "exit 0" >>conftest.sh -chmod +x conftest.sh -if { (echo "$as_me:1018: PATH=\".;.\"; conftest.sh") >&5 - (PATH=".;."; conftest.sh) 2>&5 - ac_status=$? - echo "$as_me:1021: \$? = $ac_status" >&5 - (exit $ac_status); }; then - ac_path_separator=';' -else - ac_path_separator=: -fi -PATH_SEPARATOR="$ac_path_separator" -rm -f conftest.sh + + + + ac_aux_dir= -for ac_dir in ./support $srcdir/./support; do - if test -f $ac_dir/install-sh; then +for ac_dir in ./support "$srcdir"/./support; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:1047: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + ac_config_headers="$ac_config_headers config.h" -BASHVERS=2.05b + +BASHVERS=4.0 RELSTATUS=release case "$RELSTATUS" in -alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:1067: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:1071: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:1080: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:1084: error: $ac_config_sub $ac_cv_build_alias failed." >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1089: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +$as_echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -echo "$as_me:1096: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:1105: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + 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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:1110: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +$as_echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + opt_bash_malloc=yes opt_purify=no @@ -1132,6 +2183,7 @@ sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here #*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree *-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines @@ -1140,7 +2192,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) *-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2 +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins *-beos*) opt_bash_malloc=no ;; # they say it's suitable @@ -1154,47 +2206,129 @@ sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; *) opt_memscramble=yes ;; esac -# Check whether --with-afs or --without-afs was given. + +# Check whether --with-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval=$with_lispdir; lispdir="$withval" + { $as_echo "$as_me:$LINENO: checking where .elc files should go" >&5 +$as_echo_n "checking where .elc files should go... " >&6; } + { $as_echo "$as_me:$LINENO: result: $lispdir" >&5 +$as_echo "$lispdir" >&6; } +else + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_EMACS+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_EMACS="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + { $as_echo "$as_me:$LINENO: result: $EMACS" >&5 +$as_echo "$EMACS" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + { $as_echo "$as_me:$LINENO: checking where .elc files should go" >&5 +$as_echo_n "checking where .elc files should go... " >&6; } +if test "${am_cv_lispdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +$as_echo "$am_cv_lispdir" >&6; } + lispdir="$am_cv_lispdir" + fi + fi + +fi + + + + + + +# Check whether --with-afs was given. if test "${with_afs+set}" = set; then - withval="$with_afs" - opt_afs=$withval -fi; + withval=$with_afs; opt_afs=$withval +fi -# Check whether --with-bash-malloc or --without-bash-malloc was given. + +# Check whether --with-bash-malloc was given. if test "${with_bash_malloc+set}" = set; then - withval="$with_bash_malloc" - opt_bash_malloc=$withval -fi; + withval=$with_bash_malloc; opt_bash_malloc=$withval +fi -# Check whether --with-curses or --without-curses was given. + +# Check whether --with-curses was given. if test "${with_curses+set}" = set; then - withval="$with_curses" - opt_curses=$withval -fi; + withval=$with_curses; opt_curses=$withval +fi -# Check whether --with-gnu-malloc or --without-gnu-malloc was given. + +# Check whether --with-gnu-malloc was given. if test "${with_gnu_malloc+set}" = set; then - withval="$with_gnu_malloc" - opt_bash_malloc=$withval -fi; + withval=$with_gnu_malloc; opt_bash_malloc=$withval +fi -# Check whether --with-installed-readline or --without-installed-readline was given. + +# 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; + withval=$with_installed_readline; opt_with_installed_readline=$withval +fi -# Check whether --with-purecov or --without-purecov was given. + +# Check whether --with-purecov was given. if test "${with_purecov+set}" = set; then - withval="$with_purecov" - opt_purecov=$withval -fi; + withval=$with_purecov; opt_purecov=$withval +fi -# Check whether --with-purify or --without-purify was given. + +# Check whether --with-purify was given. if test "${with_purify+set}" = set; then - withval="$with_purify" - opt_purify=$withval -fi; + withval=$with_purify; opt_purify=$withval +fi + if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc @@ -1205,9 +2339,9 @@ if test "$opt_bash_malloc" = yes; then MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' MALLOC_DEP='$(MALLOC_LIBRARY)' - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define USING_BASH_MALLOC 1 -EOF +_ACEOF else MALLOC_LIB= @@ -1218,9 +2352,9 @@ fi if test "$opt_purify" = yes; then PURIFY="purify " - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define DISABLE_MALLOC_WRAPPERS 1 -EOF +_ACEOF else PURIFY= @@ -1231,9 +2365,9 @@ if test "$opt_purecov" = yes; then fi if test "$opt_afs" = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define AFS 1 -EOF +_ACEOF fi @@ -1241,6 +2375,10 @@ 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 @@ -1261,20 +2399,28 @@ 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_static_link=no opt_profiling=no -# Check whether --enable-minimal-config or --disable-minimal-config was given. +# Check whether --enable-minimal-config was given. if test "${enable_minimal_config+set}" = set; then - enableval="$enable_minimal_config" - opt_minimal_config=$enableval -fi; + enableval=$enable_minimal_config; opt_minimal_config=$enableval +fi + if test $opt_minimal_config = yes; then opt_job_control=no opt_alias=no opt_readline=no @@ -1284,258 +2430,344 @@ if test $opt_minimal_config = yes; then 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 fi -# Check whether --enable-alias or --disable-alias was given. +# 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 or --disable-arith-for-command was given. -if test "${enable_arith_for_command+set}" = set; then - enableval="$enable_arith_for_command" - opt_arith_for_command=$enableval -fi; -# Check whether --enable-array-variables or --disable-array-variables was given. -if test "${enable_array_variables+set}" = set; then - enableval="$enable_array_variables" - opt_array_variables=$enableval -fi; -# Check whether --enable-bang-history or --disable-bang-history was given. -if test "${enable_bang_history+set}" = set; then - enableval="$enable_bang_history" - opt_bang_history=$enableval -fi; -# Check whether --enable-brace-expansion or --disable-brace-expansion was given. -if test "${enable_brace_expansion+set}" = set; then - enableval="$enable_brace_expansion" - opt_brace_expansion=$enableval -fi; -# Check whether --enable-command-timing or --disable-command-timing was given. -if test "${enable_command_timing+set}" = set; then - enableval="$enable_command_timing" - opt_command_timing=$enableval -fi; -# Check whether --enable-cond-command or --disable-cond-command was given. -if test "${enable_cond_command+set}" = set; then - enableval="$enable_cond_command" - opt_cond_command=$enableval -fi; -# Check whether --enable-directory-stack or --disable-directory-stack was given. -if test "${enable_directory_stack+set}" = set; then - enableval="$enable_directory_stack" - opt_dirstack=$enableval -fi; -# Check whether --enable-disabled-builtins or --disable-disabled-builtins was given. -if test "${enable_disabled_builtins+set}" = set; then - enableval="$enable_disabled_builtins" - opt_disabled_builtins=$enableval -fi; -# Check whether --enable-dparen-arithmetic or --disable-dparen-arithmetic was given. -if test "${enable_dparen_arithmetic+set}" = set; then - enableval="$enable_dparen_arithmetic" - opt_dparen_arith=$enableval -fi; -# Check whether --enable-extended-glob or --disable-extended-glob was given. -if test "${enable_extended_glob+set}" = set; then - enableval="$enable_extended_glob" - opt_extended_glob=$enableval -fi; -# Check whether --enable-help-builtin or --disable-help-builtin was given. -if test "${enable_help_builtin+set}" = set; then - enableval="$enable_help_builtin" - opt_help=$enableval -fi; -# Check whether --enable-history or --disable-history was given. -if test "${enable_history+set}" = set; then - enableval="$enable_history" - opt_history=$enableval -fi; -# Check whether --enable-job-control or --disable-job-control was given. -if test "${enable_job_control+set}" = set; then - enableval="$enable_job_control" - opt_job_control=$enableval -fi; -# Check whether --enable-net-redirections or --disable-net-redirections was given. -if test "${enable_net_redirections+set}" = set; then - enableval="$enable_net_redirections" - opt_net_redirs=$enableval -fi; -# Check whether --enable-process-substitution or --disable-process-substitution was given. -if test "${enable_process_substitution+set}" = set; then - enableval="$enable_process_substitution" - opt_process_subst=$enableval -fi; -# Check whether --enable-progcomp or --disable-progcomp was given. -if test "${enable_progcomp+set}" = set; then - enableval="$enable_progcomp" - opt_progcomp=$enableval -fi; -# Check whether --enable-prompt-string-decoding or --disable-prompt-string-decoding was given. -if test "${enable_prompt_string_decoding+set}" = set; then - enableval="$enable_prompt_string_decoding" - opt_prompt_decoding=$enableval -fi; -# Check whether --enable-readline or --disable-readline was given. -if test "${enable_readline+set}" = set; then - enableval="$enable_readline" - opt_readline=$enableval -fi; -# Check whether --enable-restricted or --disable-restricted was given. -if test "${enable_restricted+set}" = set; then - enableval="$enable_restricted" - opt_restricted=$enableval -fi; -# Check whether --enable-select or --disable-select was given. -if test "${enable_select+set}" = set; then - enableval="$enable_select" - opt_select=$enableval -fi; -# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. -if test "${enable_separate_helpfiles+set}" = set; then - enableval="$enable_separate_helpfiles" - opt_separate_help=$enableval -fi; -# Check whether --enable-usg-echo-default or --disable-usg-echo-default was given. -if test "${enable_usg_echo_default+set}" = set; then - enableval="$enable_usg_echo_default" - opt_xpg_echo=$enableval -fi; -# Check whether --enable-xpg-echo-default or --disable-xpg-echo-default was given. -if test "${enable_xpg_echo_default+set}" = set; then - enableval="$enable_xpg_echo_default" - opt_xpg_echo=$enableval -fi; + enableval=$enable_alias; opt_alias=$enableval +fi -# Check whether --enable-mem-scramble or --disable-mem-scramble was given. +# 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-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-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 or --disable-profiling was given. + 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 or --disable-static-link was given. + 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; + enableval=$enable_static_link; opt_static_link=$enableval +fi + + + if test $opt_alias = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define ALIAS 1 -EOF +_ACEOF fi if test $opt_dirstack = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define PUSHD_AND_POPD 1 -EOF +_ACEOF fi if test $opt_restricted = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define RESTRICTED_SHELL 1 -EOF +_ACEOF fi if test $opt_process_subst = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define PROCESS_SUBSTITUTION 1 -EOF +_ACEOF fi if test $opt_prompt_decoding = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define PROMPT_STRING_DECODE 1 -EOF +_ACEOF fi if test $opt_select = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define SELECT_COMMAND 1 -EOF +_ACEOF fi if test $opt_help = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HELP_BUILTIN 1 -EOF +_ACEOF fi if test $opt_array_variables = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define ARRAY_VARS 1 -EOF +_ACEOF fi if test $opt_dparen_arith = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define DPAREN_ARITHMETIC 1 -EOF +_ACEOF fi if test $opt_brace_expansion = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define BRACE_EXPANSION 1 -EOF +_ACEOF fi if test $opt_disabled_builtins = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define DISABLED_BUILTINS 1 -EOF +_ACEOF fi if test $opt_command_timing = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define COMMAND_TIMING 1 -EOF +_ACEOF fi if test $opt_xpg_echo = yes ; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define DEFAULT_ECHO_TO_XPG 1 -EOF +_ACEOF + +fi +if test $opt_strict_posix = yes; then +cat >>confdefs.h <<\_ACEOF +#define STRICT_POSIX 1 +_ACEOF fi if test $opt_extended_glob = yes ; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define EXTENDED_GLOB 1 -EOF +_ACEOF fi if test $opt_cond_command = yes ; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define COND_COMMAND 1 -EOF +_ACEOF + +fi +if test $opt_cond_regexp = yes ; then +cat >>confdefs.h <<\_ACEOF +#define COND_REGEXP 1 +_ACEOF + +fi +if test $opt_coproc = yes; then +cat >>confdefs.h <<\_ACEOF +#define COPROCESS_SUPPORT 1 +_ACEOF fi if test $opt_arith_for_command = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define ARITH_FOR_COMMAND 1 -EOF +_ACEOF fi if test $opt_net_redirs = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define NETWORK_REDIRECTIONS 1 -EOF +_ACEOF fi if test $opt_progcomp = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define PROGRAMMABLE_COMPLETION 1 -EOF +_ACEOF + +fi +if test $opt_multibyte = no; then +cat >>confdefs.h <<\_ACEOF +#define NO_MULTIBYTE_SUPPORT 1 +_ACEOF + +fi +if test $opt_debugger = yes; then +cat >>confdefs.h <<\_ACEOF +#define DEBUGGER 1 +_ACEOF + +fi +if test $opt_casemod_attrs = yes; then +cat >>confdefs.h <<\_ACEOF +#define CASEMOD_ATTRS 1 +_ACEOF + +fi +if test $opt_casemod_expansions = yes; then +cat >>confdefs.h <<\_ACEOF +#define CASEMOD_EXPANSIONS 1 +_ACEOF fi if test $opt_memscramble = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define MEMSCRAMBLE 1 -EOF +_ACEOF fi @@ -1555,6 +2787,27 @@ if test "$opt_separate_help" != no; then HELPDIRDEFINE='-H ${HELPDIR}' HELPINSTALL='install-help' fi +HELPSTRINGS= +if test "$opt_single_longdoc_strings" != "yes"; then + HELPSTRINGS='-S' +fi + + + + + + + + + + + + + + + + + echo "" echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" @@ -1568,177 +2821,166 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1571: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_CC="${ac_tool_prefix}gcc" -echo "$as_me:1586: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1594: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:1597: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$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 -echo "$as_me:1606: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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 - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_ac_ct_CC="gcc" -echo "$as_me:1621: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1629: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:1632: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: 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. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1645: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_CC="${ac_tool_prefix}cc" -echo "$as_me:1660: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1668: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:1671: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$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 "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1680: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_ac_ct_CC="cc" -echo "$as_me:1695: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1703: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1706: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -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 -echo "$as_me:1719: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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 - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue -fi -ac_cv_prog_CC="cc" -echo "$as_me:1739: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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. @@ -1749,133 +2991,178 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - set dummy "$ac_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1761: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:1764: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$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 + 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 -echo "$as_me:1775: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1790: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1798: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:1801: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$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 + 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 -echo "$as_me:1814: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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 - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_ac_ct_CC="$ac_prog" -echo "$as_me:1829: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1837: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:1840: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: 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" && { { echo "$as_me:1852: error: no acceptable cc found in \$PATH" >&5 -echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} - { (exit 1); exit 1; }; } + +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } # Provide some information about the compiler. -echo "$as_me:1857:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1860: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:1863: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1865: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:1868: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1870: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:1873: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF -#line 1877 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () @@ -1886,127 +3173,192 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe" +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. -echo "$as_me:1893: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:1896: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:1899: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. -for ac_file in `ls a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +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 | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; + *.$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:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # 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 - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1922: error: C compiler cannot create executables" >&5 -echo "$as_me: error: C compiler cannot create executables" >&2;} - { (exit 77); exit 77; }; } + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:1928: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:1933: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:1939: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:1942: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:1949: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi fi fi -echo "$as_me:1957: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$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 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:1964: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1966: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } -echo "$as_me:1969: checking for executable suffix" >&5 -echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1971: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:1974: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; + break;; * ) break;; esac done else - { { echo "$as_me:1990: error: cannot compute EXEEXT: cannot compile and link" >&5 -echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext -echo "$as_me:1996: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:2002: checking for object suffix" >&5 -echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 2008 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () @@ -2017,40 +3369,55 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:2020: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:2023: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + 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 ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:2035: error: cannot compute OBJEXT: cannot compile" >&5 -echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} - { (exit 1); exit 1; }; } + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:2042: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:2046: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 2052 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () @@ -2064,41 +3431,59 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2067: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2070: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2073: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2076: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:2088: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$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 -CFLAGS="-g" -echo "$as_me:2094: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 2100 "configure" -#include "confdefs.h" + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () @@ -2109,27 +3494,121 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2112: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2115: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2118: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2121: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:2131: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$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 @@ -2145,155 +3624,216 @@ else CFLAGS= fi fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif +/* confdefs.h. */ _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2158: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2161: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2164: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2167: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +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 - cat >conftest.$ac_ext <<_ACEOF -#line 2179 "configure" -#include "confdefs.h" -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2192: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2195: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2198: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2201: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 2211 "configure" -#include "confdefs.h" -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2223: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2226: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2229: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2232: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi +rm -f conftest.$ac_ext +CC=$ac_save_CC -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:2259: checking for POSIXized ISC" >&5 -echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6 -if test -d /etc/conf/kconfig.d && - grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 -then - echo "$as_me:2264: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - ISC=yes # If later tests want to check for ISC. -cat >>confdefs.h <<\EOF -#define _POSIX_SOURCE 1 -EOF - if test "$GCC" = yes; then - CC="$CC -posix" - else - CC="$CC -Xp" - fi + + { $as_echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +$as_echo_n "checking for strerror in -lcposix... " >&6; } +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + $as_echo_n "(cached) " >&6 else - echo "$as_me:2278: result: no" >&5 -echo "${ECHO_T}no" >&6 - ISC= + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any 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 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_cposix_strerror=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_cposix_strerror=no fi +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +$as_echo "$ac_cv_lib_cposix_strerror" >&6; } +if test "x$ac_cv_lib_cposix_strerror" = x""yes; then + LIBS="$LIBS -lcposix" +fi + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:2288: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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" @@ -2303,73 +3843,89 @@ for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line 2309 "configure" -#include "confdefs.h" -#include - Syntax error +/* confdefs.h. */ _ACEOF -if { (eval echo "$as_me:2314: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2320: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 2343 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:2347: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2353: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2387,80 +3943,96 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:2390: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF -#line 2400 "configure" -#include "confdefs.h" -#include - Syntax error +/* confdefs.h. */ _ACEOF -if { (eval echo "$as_me:2405: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2411: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 2434 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:2438: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2444: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2469,9 +4041,13 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:2472: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } fi ac_ext=c @@ -2480,96 +4056,651 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:2483: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 -if test "${ac_cv_header_minix_config_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 2489 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:2493: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:2499: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= + 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" + { test -f "$ac_path_GREP" && $as_test_x "$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 + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } fi else - ac_cpp_err=yes + ac_cv_path_GREP=$GREP fi -if test -z "$ac_cpp_err"; then - ac_cv_header_minix_config_h=yes + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_minix_config_h=no + 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" + { test -f "$ac_path_EGREP" && $as_test_x "$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 + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + 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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP fi + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#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 +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +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` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + if test "${ac_cv_header_minix_config_h+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 +$as_echo_n "checking for minix/config.h... " >&6; } +if test "${ac_cv_header_minix_config_h+set}" = set; then + $as_echo_n "(cached) " >&6 +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +$as_echo "$ac_cv_header_minix_config_h" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +$as_echo_n "checking minix/config.h usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +$as_echo_n "checking minix/config.h presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 +$as_echo_n "checking for minix/config.h... " >&6; } +if test "${ac_cv_header_minix_config_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc fi -echo "$as_me:2518: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 -if test $ac_cv_header_minix_config_h = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +$as_echo "$ac_cv_header_minix_config_h" >&6; } + +fi +if test "x$ac_cv_header_minix_config_h" = x""yes; then MINIX=yes else MINIX= fi -if test "$MINIX" = yes; then -cat >>confdefs.h <<\EOF + if test "$MINIX" = yes; then + +cat >>confdefs.h <<\_ACEOF #define _POSIX_SOURCE 1 -EOF +_ACEOF -cat >>confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define _POSIX_1_SOURCE 2 -EOF +_ACEOF -cat >>confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define _MINIX 1 -EOF +_ACEOF + fi + + + + { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_safe_to_define___extensions__=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_safe_to_define___extensions__=no fi -case $host_os in - *cygwin* ) CYGWIN=yes;; - * ) CYGWIN=no;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + cat >>confdefs.h <<\_ACEOF +#define __EXTENSIONS__ 1 +_ACEOF -case $host_os in - *mingw32* ) MINGW32=yes;; - * ) MINGW32=no;; -esac + cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF -# Check whether --enable-largefile or --disable-largefile was given. + cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _POSIX_PTHREAD_SEMANTICS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _TANDEM_SOURCE 1 +_ACEOF + + + +# Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" + enableval=$enable_largefile; +fi -fi; if test "$enable_largefile" != no; then - echo "$as_me:2559: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } if test "${ac_cv_sys_largefile_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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 >conftest.$ac_ext <<_ACEOF -#line 2571 "configure" -#include "confdefs.h" + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, @@ -2587,65 +4718,85 @@ main () return 0; } _ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:2591: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2594: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2597: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2600: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:2610: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2613: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2616: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2619: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_sys_largefile_CC=' -n32'; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext - break + +rm -f core conftest.err conftest.$ac_objext + break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -echo "$as_me:2633: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 +{ $as_echo "$as_me:$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 - echo "$as_me:2639: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if test "${ac_cv_sys_file_offset_bits+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else while :; do - ac_cv_sys_file_offset_bits=no cat >conftest.$ac_ext <<_ACEOF -#line 2647 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, @@ -2664,26 +4815,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2667: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2670: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2673: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2676: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=no; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line 2685 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. @@ -2703,46 +4866,60 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2706: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2709: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2712: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2715: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_sys_file_offset_bits=64; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown break done fi -echo "$as_me:2726: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 -if test "$ac_cv_sys_file_offset_bits" != no; then - -cat >>confdefs.h <&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 -EOF - -fi -rm -f conftest* - echo "$as_me:2736: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if test "${ac_cv_sys_large_files+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else while :; do - ac_cv_sys_large_files=no cat >conftest.$ac_ext <<_ACEOF -#line 2744 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, @@ -2761,26 +4938,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2764: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2767: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2770: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2773: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=no; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line 2782 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. @@ -2800,49 +4989,68 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2803: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:2806: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2809: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2812: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_sys_large_files=1; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown break done fi -echo "$as_me:2823: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6 -if test "$ac_cv_sys_large_files" != no; then - -cat >>confdefs.h <&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 -EOF - -fi -rm -f conftest* +_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 - SIGNAMES_H='$(srcdir)/cross-build/win32sig.h' + ;; + *-mingw*) + cross_cache=${srcdir}/cross-build/cygwin32.cache ;; i[3456]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache - SIGNAMES_H='${srcdir}/cross-build/beos-sig.h' ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; @@ -2852,8 +5060,13 @@ if test "x$cross_compiling" = "xyes"; then . ${cross_cache} fi unset cross_cache + SIGNAMES_O='signames.o' + CROSS_COMPILE='-DCROSS_COMPILING' + fi + + if test -z "$CC_FOR_BUILD"; then if test "x$cross_compiling" = "xno"; then CC_FOR_BUILD='$(CC)' @@ -2862,6 +5075,8 @@ if test -z "$CC_FOR_BUILD"; then fi fi + + test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" @@ -2886,274 +5101,452 @@ if test "$opt_static_link" = yes; then fi fi -test -z "$CPPFLAGS_FOR_BUILD" && CPPFLAGS_FOR_BUILD="$CPPFLAGS" +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + + + + + + + + + if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:2893: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +$as_echo_n "checking whether $CC needs -traditional... " >&6; } if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat >conftest.$ac_ext <<_ACEOF -#line 2900 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then + $EGREP "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* + if test $ac_cv_prog_gcc_traditional = no; then cat >conftest.$ac_ext <<_ACEOF -#line 2915 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then + $EGREP "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi -echo "$as_me:2928: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 +{ $as_echo "$as_me:$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 -echo "$as_me:2944: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - echo "$as_me:2951: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent" >&5 +$as_echo_n "checking for tgetent... " >&6; } +if test "${ac_cv_func_tgetent+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define tgetent to an innocuous variant, in case declares tgetent. + For example, HP-UX 11i declares gettimeofday. */ +#define tgetent innocuous_tgetent + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char tgetent (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef tgetent + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_tgetent || defined __stub___tgetent +choke me +#endif + +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_tgetent=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_tgetent=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +$as_echo "$ac_cv_func_tgetent" >&6; } +if test "x$ac_cv_func_tgetent" = x""yes; then + bash_cv_termcap_lib=libc +else + { $as_echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } if test "${ac_cv_lib_termcap_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 2959 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:2978: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:2981: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:2984: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2987: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_termcap_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_termcap_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_termcap_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:2998: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 -if test $ac_cv_lib_termcap_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = x""yes; then bash_cv_termcap_lib=libtermcap else - echo "$as_me:3003: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +$as_echo_n "checking for tgetent in -ltinfo... " >&6; } if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 3011 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3030: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:3033: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3036: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3039: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_tinfo_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_tinfo_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_tinfo_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:3050: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 -if test $ac_cv_lib_tinfo_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = x""yes; then bash_cv_termcap_lib=libtinfo else - echo "$as_me:3055: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +$as_echo_n "checking for tgetent in -lcurses... " >&6; } if test "${ac_cv_lib_curses_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 3063 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3082: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:3085: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3088: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3091: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_curses_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_curses_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_curses_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:3102: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 -if test $ac_cv_lib_curses_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +$as_echo "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = x""yes; then bash_cv_termcap_lib=libcurses else - echo "$as_me:3107: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +$as_echo_n "checking for tgetent in -lncurses... " >&6; } if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 3115 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3134: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:3137: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3140: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3143: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_ncurses_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_ncurses_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_ncurses_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:3154: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 -if test $ac_cv_lib_ncurses_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = x""yes; then bash_cv_termcap_lib=libncurses else bash_cv_termcap_lib=gnutermcap @@ -3167,12 +5560,14 @@ fi fi -if test "X$_bash_needmsg" = "Xyes"; then -echo "$as_me:3171: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -echo "$as_me:3174: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 + +if test "X$_bash_needmsg" = "Xyes"; then +{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +fi +{ $as_echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +$as_echo "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" @@ -3186,13 +5581,19 @@ TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= fi -echo "$as_me:3194: checking version of installed readline library" >&5 -echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$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. @@ -3216,48 +5617,78 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" -if test "$cross_compiling" = yes; then +if test "${ac_cv_rl_version+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then ac_cv_rl_version='4.2' else cat >conftest.$ac_ext <<_ACEOF -#line 3223 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include +extern int rl_gnu_readline_p; + main() { FILE *fp; fp = fopen("conftest.rlv", "w"); - if (fp == 0) exit(1); - fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); fclose(fp); exit(0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:3241: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:3244: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:3246: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:3249: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_rl_version=`cat conftest.rlv` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_rl_version='0.0' fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + +fi + + CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" LIBS="$_save_LIBS" @@ -3292,65 +5723,92 @@ RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" # Readline versions greater than 4.2 have these defines in readline.h if test $ac_cv_rl_version = '0.0' ; then - { echo "$as_me:3295: WARNING: Could not test version of installed readline library." >&5 -echo "$as_me: WARNING: Could not test version of installed readline library." >&2;} + { $as_echo "$as_me:$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 - echo "$as_me:3302: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +$as_echo "$ac_cv_rl_version" >&6; } else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define RL_READLINE_VERSION $RL_VERSION -EOF +_ACEOF -cat >>confdefs.h <>confdefs.h <<_ACEOF #define RL_VERSION_MAJOR $RL_MAJOR -EOF +_ACEOF -cat >>confdefs.h <>confdefs.h <<_ACEOF #define RL_VERSION_MINOR $RL_MINOR -EOF +_ACEOF + + + + + # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir -echo "$as_me:3323: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +$as_echo "$ac_cv_rl_version" >&6; } fi + case "$ac_cv_rl_version" in - 4.[3-9]*|5*|6*|7*|8*|9*) ;; + 5*|6*|7*|8*|9*) ;; *) opt_with_installed_readline=no - { echo "$as_me:3331: WARNING: installed readline library is too old to be linked with bash" >&5 -echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} - { echo "$as_me:3333: WARNING: using private bash version" >&5 -echo "$as_me: WARNING: using private bash version" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 +$as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: using private bash version" >&5 +$as_echo "$as_me: WARNING: using private bash version" >&2;} ;; esac fi +TILDE_LIB=-ltilde if test $opt_readline = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define READLINE 1 -EOF +_ACEOF - READLINE_LIB=-lreadline if test "$opt_with_installed_readline" != "no" ; then - case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' + 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]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac fi else RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' @@ -3358,34 +5816,56 @@ else fi if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_history = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HISTORY 1 -EOF +_ACEOF fi if test $opt_bang_history = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define BANG_HISTORY 1 -EOF +_ACEOF fi - HISTORY_LIB=-lhistory if test "$opt_with_installed_readline" != "no"; then HIST_LIBDIR=$RL_LIBDIR HISTORY_DEP= - case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' + 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]*) 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: @@ -3397,58 +5877,79 @@ fi # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:3401: checking for a BSD compatible install" >&5 -echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - ac_save_IFS=$IFS; IFS=$ac_path_separator - for ac_dir in $PATH; do - IFS=$ac_save_IFS - # Account for people who put trailing slashes in PATH elements. - case $ac_dir/ in - / | ./ | .// | /cC/* \ - | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ - | /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if $as_executable_p "$ac_dir/$ac_prog"; then + 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && - grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + 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 "$ac_dir/$ac_prog" >/dev/null 2>&1; then + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 + 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 - ;; - esac - 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. We don't cache a - # path for INSTALL within a source directory, because that will + # 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 path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:3450: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:$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. @@ -3460,108 +5961,131 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo "$as_me:3463: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_AR="" -echo "$as_me:3478: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$as_me:3487: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 + { $as_echo "$as_me:$LINENO: result: $AR" >&5 +$as_echo "$AR" >&6; } else - echo "$as_me:3490: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ARFLAGS" || ARFLAGS="cr" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:3498: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -echo "$as_me:3513: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:3521: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - echo "$as_me:3524: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$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 -echo "$as_me:3533: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $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 - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_ac_ct_RANLIB="ranlib" -echo "$as_me:3548: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:3557: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - echo "$as_me:3560: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: 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 @@ -3570,177 +6094,120 @@ for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:3573: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_YACC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_YACC="$ac_prog" -echo "$as_me:3588: found $ac_dir/$ac_word" >&5 -break +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done +done +IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - echo "$as_me:3596: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6 + { $as_echo "$as_me:$LINENO: result: $YACC" >&5 +$as_echo "$YACC" >&6; } else - echo "$as_me:3599: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -echo "$as_me:3607: checking whether ${MAKE-make} sets \${MAKE}" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else - cat >conftest.make <<\EOF + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh all: - @echo 'ac_maketemp="${MAKE}"' -EOF + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi +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 \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:3627: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - echo "$as_me:3631: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi + case "$host_os" in opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; *) MAKE_SHELL=/bin/sh ;; esac -cat >>confdefs.h <<\EOF + +if test x$SIZE = x; then + if test x$ac_tool_prefix = x; then + SIZE=size + else + SIZE=${ac_tool_prefix}size + save_IFS=$IFS ; IFS=: + size_found=0 + for dir in $PATH; do + if test -x $dir/$SIZE ; then + size_found=1 + break + fi + done + if test $size_found -eq 0; then + SIZE=: + fi + IFS=$save_IFS + fi +fi + + +cat >>confdefs.h <<\_ACEOF #define _GNU_SOURCE 1 -EOF - -echo "$as_me:3645: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line 3653 "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:3702: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3705: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3708: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3711: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC -fi -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:3728: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:3731: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:3736: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 3742 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () @@ -3749,10 +6216,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset x; + const charset cs; /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; + 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}; @@ -3761,16 +6228,17 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; - ccp = &g + (g ? g-g : 0); + pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; 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}; @@ -3789,7 +6257,9 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; + if (!foo) return 0; } + return !cs[0] && !zero.x; #endif ; @@ -3797,233 +6267,536 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:3800: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:3803: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3806: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3809: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:3819: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -cat >>confdefs.h <<\EOF -#define const -EOF +cat >>confdefs.h <<\_ACEOF +#define const /**/ +_ACEOF fi -echo "$as_me:3829: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } if test "${ac_cv_c_inline+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF -#line 3837 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifndef __cplusplus -static $ac_kw int static_foo () {return 0; } -$ac_kw int foo () {return 0; } +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:3846: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:3849: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3852: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3855: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_inline=$ac_kw; break + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_inline=$ac_kw else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break done fi -echo "$as_me:3866: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + + case $ac_cv_c_inline in inline | yes) ;; - no) -cat >>confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >>confdefs.h <>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; esac -echo "$as_me:3881: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 + + { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -#line 3889 "configure" -#include "confdefs.h" + # See if we're dealing with a universal compiler. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + + # Check for potential -arch flags. It is not universal unless + # there are some -arch flags. Note that *ppc* also matches + # ppc64. This check is also rather less than ideal. + case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #( + *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;; + esac +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -#include + #include int main () { -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:3906: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:3909: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3912: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3915: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -#line 3919 "configure" -#include "confdefs.h" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -#include + #include int main () { #if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif + not big endian + #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:3936: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:3939: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3942: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3945: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_bigendian=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_bigendian=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_bigendian=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.$ac_objext conftest.$ac_ext -if test $ac_cv_c_bigendian = unknown; then -if test "$cross_compiling" = yes; then - { { echo "$as_me:3961: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line 3966 "configure" -#include "confdefs.h" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + int main () { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_bigendian=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then + # Try to guess by grepping values from an object file. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* 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 rm -f conftest$ac_exeext -if { (eval echo "$as_me:3982: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:3985: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:3987: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:3990: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -fi -fi -echo "$as_me:4003: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -if test $ac_cv_c_bigendian = yes; then -cat >>confdefs.h <<\EOF + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 -EOF +_ACEOF +;; #( + no) + ;; #( + universal) -fi +cat >>confdefs.h <<\_ACEOF +#define AC_APPLE_UNIVERSAL_BUILD 1 +_ACEOF -echo "$as_me:4013: checking for preprocessor stringizing operator" >&5 -echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 + ;; #( + *) + { { $as_echo "$as_me:$LINENO: error: unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +$as_echo "$as_me: error: unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; + esac + +{ $as_echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +$as_echo_n "checking for preprocessor stringizing operator... " >&6; } if test "${ac_cv_c_stringize+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4019 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #define x(y) #y char *s = x(teststring); _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "#teststring" >/dev/null 2>&1; then + $EGREP "#teststring" >/dev/null 2>&1; then ac_cv_c_stringize=no else ac_cv_c_stringize=yes @@ -4031,789 +6804,915 @@ fi rm -f conftest* fi -echo "$as_me:4034: result: $ac_cv_c_stringize" >&5 -echo "${ECHO_T}$ac_cv_c_stringize" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +$as_echo "$ac_cv_c_stringize" >&6; } if test $ac_cv_c_stringize = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STRINGIZE 1 -EOF - -fi - -echo "$as_me:4044: checking for long double" >&5 -echo $ECHO_N "checking for long double... $ECHO_C" >&6 -if test "${ac_cv_c_long_double+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$GCC" = yes; then - ac_cv_c_long_double=yes -else -if test "$cross_compiling" = yes; then - { { echo "$as_me:4053: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line 4058 "configure" -#include "confdefs.h" -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. */ - exit (sizeof (long double) < sizeof (double)); -} _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:4071: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4074: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:4076: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4079: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_long_double=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_long_double=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:4092: result: $ac_cv_c_long_double" >&5 -echo "${ECHO_T}$ac_cv_c_long_double" >&6 -if test $ac_cv_c_long_double = yes; then - -cat >>confdefs.h <<\EOF -#define HAVE_LONG_DOUBLE 1 -EOF fi -echo "$as_me:4102: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 -if test "$ac_cv_prog_cc_stdc" != no; then - echo "$as_me:4105: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -cat >>confdefs.h <<\EOF -#define PROTOTYPES 1 -EOF -else - echo "$as_me:4113: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:4117: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for long double with more range or precision than double" >&5 +$as_echo_n "checking for long double with more range or precision than double... " >&6; } +if test "${ac_cv_type_long_double_wider+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4123 "configure" -#include "confdefs.h" -#include -#include -#include +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include + long double const a[] = + { + 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, + LDBL_MIN, LDBL_MAX, LDBL_EPSILON + }; + long double + f (long double x) + { + return ((x + (unsigned long int) 10) * (-1 / x) + a[0] + + (x ? f (x) : 'c')); + } -_ACEOF -if { (eval echo "$as_me:4131: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:4137: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line 4159 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line 4177 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line 4198 "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:4224: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4227: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:4229: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4232: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:4245: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then +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 -cat >>confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4261: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 4267 "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4273: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4276: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4279: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4282: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:4292: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 -echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 -if test "${ac_cv_c_char_unsigned+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 4308 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -int _array_ [1 - 2 * !(((char) -1) < 0)] ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:4320: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:4323: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4326: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_long_double_wider=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_long_double_wider=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_double_wider" >&5 +$as_echo "$ac_cv_type_long_double_wider" >&6; } + if test $ac_cv_type_long_double_wider = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE_WIDER 1 +_ACEOF + + fi + + ac_cv_c_long_double=$ac_cv_type_long_double_wider + if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + + fi + +{ $as_echo "$as_me:$LINENO: checking for function prototypes" >&5 +$as_echo_n "checking for function prototypes... " >&6; } +if test "$ac_cv_prog_cc_c89" != no; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +{ $as_echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +$as_echo_n "checking whether char is unsigned... " >&6; } +if test "${ac_cv_c_char_unsigned+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:4329: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_char_unsigned=no else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_char_unsigned=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_char_unsigned=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:4339: result: $ac_cv_c_char_unsigned" >&5 -echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +$as_echo "$ac_cv_c_char_unsigned" >&6; } if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define __CHAR_UNSIGNED__ 1 -EOF +_ACEOF fi -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:4351: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if test "${ac_cv_c_volatile+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4357 "configure" -#include "confdefs.h" -#include -#include <$ac_hdr> +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () { -if ((DIR *) 0) -return 0; + +volatile int x; +int * volatile y = (int *) 0; +return !x && !y; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:4372: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:4375: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4378: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4381: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_volatile=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:4391: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_dirent=$ac_hdr; break + ac_cv_c_volatile=no fi -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - echo "$as_me:4404: checking for opendir in -ldir" >&5 -echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6 -if test "${ac_cv_lib_dir_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldir $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 4412 "configure" -#include "confdefs.h" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } +if test $ac_cv_c_volatile = no; then -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} +cat >>confdefs.h <<\_ACEOF +#define volatile /**/ _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4431: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4434: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4437: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4440: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dir_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dir_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:4451: result: $ac_cv_lib_dir_opendir" >&5 -echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6 -if test $ac_cv_lib_dir_opendir = yes; then - LIBS="$LIBS -ldir" + fi +{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5 +$as_echo_n "checking for C/C++ restrict keyword... " >&6; } +if test "${ac_cv_c_restrict+set}" = set; then + $as_echo_n "(cached) " >&6 else - echo "$as_me:4458: checking for opendir in -lx" >&5 -echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6 -if test "${ac_cv_lib_x_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lx $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 4466 "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} + ac_cv_c_restrict=no + # The order here caters to the fact that C++ does not require restrict. + for ac_kw in __restrict __restrict__ _Restrict restrict; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4485: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4488: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4491: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4494: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_x_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_x_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:4505: result: $ac_cv_lib_x_opendir" >&5 -echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6 -if test $ac_cv_lib_x_opendir = yes; then - LIBS="$LIBS -lx" -fi - -fi - -echo "$as_me:4513: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 4519 "configure" -#include "confdefs.h" -#include -#include -#include - +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +typedef int * int_ptr; + int foo (int_ptr $ac_kw ip) { + return ip[0]; + } int main () { -if ((struct tm *) 0) -return 0; +int s[1]; + int * $ac_kw t = s; + t[0] = 0; + return foo(t) ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:4535: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:4538: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4541: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4544: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:4554: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -for ac_header in inttypes.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4567: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 4573 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:4577: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4583: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_restrict=$ac_kw else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4602: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi -done -for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stddef.h stdint.h netdb.h grp.h strings.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4617: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 4623 "configure" -#include "confdefs.h" -#include <$ac_header> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_restrict" != no && break + done + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5 +$as_echo "$ac_cv_c_restrict" >&6; } + + + case $ac_cv_c_restrict in + restrict) ;; + no) cat >>confdefs.h <<\_ACEOF +#define restrict /**/ _ACEOF -if { (eval echo "$as_me:4627: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ;; + *) cat >>confdefs.h <<_ACEOF +#define restrict $ac_cv_c_restrict +_ACEOF + ;; + esac + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + { $as_echo "$as_me:$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:$LINENO: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGFMT+set}" = set; 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 + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GMSGFMT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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:$LINENO: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_XGETTEXT+set}" = set; 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 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGMERGE+set}" = set; 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 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + { $as_echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + { $as_echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 +$as_echo_n "checking for off_t... " >&6; } +if test "${ac_cv_type_off_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_type_off_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4633: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4652: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >conftest.$ac_ext <<_ACEOF -#line 4673 "configure" -#include "confdefs.h" -#include <$ac_header> +/* confdefs.h. */ _ACEOF -if { (eval echo "$as_me:4677: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((off_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4683: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_off_t=yes fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4702: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi -done -for ac_header in netinet/in.h arpa/inet.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4715: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +$as_echo "$ac_cv_type_off_t" >&6; } +if test "x$ac_cv_type_off_t" = x""yes; then + : else - cat >conftest.$ac_ext <<_ACEOF -#line 4721 "configure" -#include "confdefs.h" -#include <$ac_header> + +cat >>confdefs.h <<_ACEOF +#define off_t long int _ACEOF -if { (eval echo "$as_me:4725: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + +fi + +{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 +$as_echo_n "checking for size_t... " >&6; } +if test "${ac_cv_type_size_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_type_size_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4731: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((size_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_size_t=yes fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4750: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +$as_echo "$ac_cv_type_size_t" >&6; } +if test "x$ac_cv_type_size_t" = x""yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF fi -done # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo "$as_me:4762: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } if test "${ac_cv_working_alloca_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4768 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4780: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:4783: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4786: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4789: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_working_alloca_h=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_working_alloca_h=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:4799: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA_H 1 -EOF +_ACEOF fi -echo "$as_me:4809: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } if test "${ac_cv_func_alloca_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4815 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else @@ -4821,7 +7720,7 @@ else # include # define alloca _alloca # else -# if HAVE_ALLOCA_H +# ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -4839,38 +7738,52 @@ int main () { char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4847: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:4850: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4853: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4856: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_alloca_works=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_alloca_works=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:4866: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA 1 -EOF +_ACEOF else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -4878,21 +7791,25 @@ else # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. -ALLOCA=alloca.$ac_objext +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 -EOF +_ACEOF -echo "$as_me:4887: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if test "${ac_cv_os_cray+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4893 "configure" -#include "confdefs.h" -#if defined(CRAY) && ! defined(CRAY2) +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 webecray #else wenotbecray @@ -4900,7 +7817,7 @@ wenotbecray _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "webecray" >/dev/null 2>&1; then + $EGREP "webecray" >/dev/null 2>&1; then ac_cv_os_cray=yes else ac_cv_os_cray=no @@ -4908,74 +7825,105 @@ fi rm -f conftest* fi -echo "$as_me:4911: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:4916: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4922 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4953: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:4956: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4959: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4962: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:4972: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func -EOF +_ACEOF break fi @@ -4983,17 +7931,21 @@ fi done fi -echo "$as_me:4986: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else cat >conftest.$ac_ext <<_ACEOF -#line 4995 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default int find_stack_direction () { @@ -5011,48 +7963,4433 @@ find_stack_direction () int main () { - exit (find_stack_direction () < 0); + return find_stack_direction () < 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:5018: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:5021: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5023: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:5026: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_stack_direction=1 else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -fi -echo "$as_me:5038: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } + +cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -EOF +_ACEOF + fi -echo "$as_me:5047: checking whether getpgrp takes no argument" >&5 -echo $ECHO_N "checking whether getpgrp takes no argument... $ECHO_C" >&6 + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 1; + if (write (fd, data, pagesize) != pagesize) + return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) + return 1; + data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 1; + if (read (fd, data3, pagesize) != pagesize) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 1; + close (fd); + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } +if test "${ac_cv_gnu_library_2_1+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:$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" + + + + + { $as_echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=yes +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + +fi +{ $as_echo "$as_me:$LINENO: result: $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:$LINENO: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if test "${jm_ac_cv_header_inttypes_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + jm_ac_cv_header_inttypes_h=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + jm_ac_cv_header_inttypes_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +$as_echo "$jm_ac_cv_header_inttypes_h" >&6; } + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:$LINENO: checking for stdint.h" >&5 +$as_echo_n "checking for stdint.h... " >&6; } +if test "${jm_ac_cv_header_stdint_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + jm_ac_cv_header_stdint_h=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + jm_ac_cv_header_stdint_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +$as_echo "$jm_ac_cv_header_stdint_h" >&6; } + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:$LINENO: checking for unsigned long long" >&5 +$as_echo_n "checking for unsigned long long... " >&6; } +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +unsigned long long ull = 1; int i = 63; +int +main () +{ +unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_type_unsigned_long_long=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_unsigned_long_long=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +$as_echo "$ac_cv_type_unsigned_long_long" >&6; } + if test $ac_cv_type_unsigned_long_long = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UNSIGNED_LONG_LONG 1 +_ACEOF + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + { $as_echo "$as_me:$LINENO: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if test "${gt_cv_header_inttypes_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_header_inttypes_h=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_header_inttypes_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +$as_echo "$gt_cv_header_inttypes_h" >&6; } + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + { $as_echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_inttypes_pri_broken=no +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_inttypes_pri_broken=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +$as_echo "$gt_cv_inttypes_pri_broken" >&6; } + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${acl_cv_path_LD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:$LINENO: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${acl_cv_prog_gnu_ld+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if test "${acl_cv_rpath+set}" = set; 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:$LINENO: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:$LINENO: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + am_cv_func_iconv=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if test "${am_cv_proto_iconv+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + am_cv_proto_iconv_arg1="" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + am_cv_proto_iconv_arg1="const" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +$as_echo "${ac_t:- + }$am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + { $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${am_cv_langinfo_codeset+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + am_cv_langinfo_codeset=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + am_cv_langinfo_codeset=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + { $as_echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + am_cv_val_LC_MESSAGES=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + am_cv_val_LC_MESSAGES=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +$as_echo "$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_INTLBISON+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_INTLBISON="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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:$LINENO: result: $INTLBISON" >&5 +$as_echo "$INTLBISON" >&6; } +else + { $as_echo "$as_me:$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:$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;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + { $as_echo "$as_me:$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:$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:$LINENO: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + { $as_echo "$as_me:$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:$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 + + + + + + + { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if test "${gt_cv_func_gnugettext2_libc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + gt_cv_func_gnugettext2_libc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_gnugettext2_libc=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +$as_echo "$gt_cv_func_gnugettext2_libc" >&6; } + + if test "$gt_cv_func_gnugettext2_libc" != "yes"; then + + + + 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/lib" + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + gt_cv_func_gnugettext2_libintl=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_gnugettext2_libintl=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +$as_echo "$gt_cv_func_gnugettext2_libintl" >&6; } + fi + + if test "$gt_cv_func_gnugettext2_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="lib/intl/libintl.a $LIBICONV" + LTLIBINTL="lib/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:$LINENO: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then + { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DCGETTEXT 1 +_ACEOF + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_search_opendir=$ac_res +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_search_opendir=$ac_res +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if test "${ac_cv_header_time+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_time=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_time=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + + + + +for ac_header in inttypes.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + +for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ + memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ + stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + +for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h \ + sys/resource.h sys/param.h sys/socket.h sys/stat.h \ + sys/time.h sys/times.h sys/types.h sys/wait.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in netinet/in.h arpa/inet.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +$as_echo_n "checking for sys/ptem.h... " >&6; } +if test "${ac_cv_header_sys_ptem_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if HAVE_SYS_STREAM_H +# include +#endif + + +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_sys_ptem_h=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_sys_ptem_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +$as_echo "$ac_cv_header_sys_ptem_h" >&6; } + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if test "${ac_cv_working_alloca_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_working_alloca_h=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_working_alloca_h=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if test "${ac_cv_func_alloca_works+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_alloca_works=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_alloca_works=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if test "${ac_cv_os_cray+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if test "${ac_cv_c_stack_direction+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + return find_stack_direction () < 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +{ $as_echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } if test "${ac_cv_func_getpgrp_void+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Use it with a single arg. cat >conftest.$ac_ext <<_ACEOF -#line 5054 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () @@ -5063,362 +12400,265 @@ getpgrp (0); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:5066: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:5069: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5072: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5075: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_func_getpgrp_1=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_func_getpgrp_void=no else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_func_getpgrp_1=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_getpgrp_void=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Use it with no arg. -cat >conftest.$ac_ext <<_ACEOF -#line 5086 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -getpgrp (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5098: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5101: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5104: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5107: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_func_getpgrp_0=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_func_getpgrp_0=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# If both static checks agree, we are done. -case $ac_func_getpgrp_0:$ac_func_getpgrp_1 in - yes:no) ac_cv_func_getpgrp_void=yes;; - no:yes) ac_cv_func_getpgrp_void=false;; - *) if test "$cross_compiling" = yes; then - { { echo "$as_me:5121: error: cannot check getpgrp if cross compiling" >&5 -echo "$as_me: error: cannot check getpgrp if cross compiling" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line 5126 "configure" -#include "confdefs.h" -$ac_includes_default -/* - * If this system has a BSD-style getpgrp(), - * which takes a pid argument, exit unsuccessfully. - * - * Snarfed from Chet Ramey's bash pgrp.c test program - */ - -int pid; -int pg1, pg2, pg3, pg4; -int ng, np, s, child; - -int -main () -{ - pid = getpid (); - pg1 = getpgrp (0); - pg2 = getpgrp (); - pg3 = getpgrp (pid); - pg4 = getpgrp (1); - - /* If all of these values are the same, it's pretty sure that we're - on a system that ignores getpgrp's first argument. */ - if (pg2 == pg4 && pg1 == pg3 && pg2 == pg3) - exit (0); - - child = fork (); - if (child < 0) - exit(1); - else if (child == 0) - { - np = getpid (); - /* If this is Sys V, this will not work; pgrp will be set to np - because setpgrp just changes a pgrp to be the same as the - pid. */ - setpgrp (np, pg1); - ng = getpgrp (0); /* Same result for Sys V and BSD */ - if (ng == pg1) - exit (1); - else - exit (0); - } - else - { - wait (&s); - exit (s>>8); - } -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:5180: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5183: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5185: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5188: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_getpgrp_void=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_getpgrp_void=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi;; -esac # $ac_func_getpgrp_0:$ac_func_getpgrp_1 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:5202: result: $ac_cv_func_getpgrp_void" >&5 -echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +$as_echo "$ac_cv_func_getpgrp_void" >&6; } if test $ac_cv_func_getpgrp_void = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define GETPGRP_VOID 1 -EOF - -fi - -echo "$as_me:5212: checking whether setvbuf arguments are reversed" >&5 -echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 -if test "${ac_cv_func_setvbuf_reversed+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:5218: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line 5223 "configure" -#include "confdefs.h" -#include -/* If setvbuf has the reversed format, exit 0. */ -int -main () -{ - /* This call has the arguments reversed. - A reversed system may check and see that the address of main - is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ - if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) - exit(1); - putc('\r', stdout); - exit(0); /* Non-reversed systems segv here. */ -} _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:5240: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5243: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5245: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5248: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_setvbuf_reversed=yes + +fi + +if test "${ac_cv_func_setvbuf_reversed+set}" = set; then + $as_echo_n "(cached) " >&6 else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_setvbuf_reversed=no + ac_cv_func_setvbuf_reversed=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f core core.* *.core -fi -echo "$as_me:5261: result: $ac_cv_func_setvbuf_reversed" >&5 -echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 -if test $ac_cv_func_setvbuf_reversed = yes; then -cat >>confdefs.h <<\EOF -#define SETVBUF_REVERSED 1 -EOF -fi for ac_func in vprintf do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:5274: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5280 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5311: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5314: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5317: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5320: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:5330: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:5337: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5 +$as_echo_n "checking for _doprnt... " >&6; } if test "${ac_cv_func__doprnt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5343 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define _doprnt to an innocuous variant, in case declares _doprnt. + For example, HP-UX 11i declares gettimeofday. */ +#define _doprnt innocuous__doprnt + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char _doprnt (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef _doprnt + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char _doprnt (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub__doprnt || defined __stub____doprnt +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -f = _doprnt; -#endif - +return _doprnt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5374: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5377: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5380: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5383: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func__doprnt=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func__doprnt=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:5393: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6 -if test $ac_cv_func__doprnt = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <<\EOF + ac_cv_func__doprnt=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +$as_echo "$ac_cv_func__doprnt" >&6; } +if test "x$ac_cv_func__doprnt" = x""yes; then + +cat >>confdefs.h <<\_ACEOF #define HAVE_DOPRNT 1 -EOF +_ACEOF fi fi done -echo "$as_me:5406: checking for working strcoll" >&5 -echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for working strcoll" >&5 +$as_echo_n "checking for working strcoll... " >&6; } if test "${ac_cv_func_strcoll_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then ac_cv_func_strcoll_works=no else cat >conftest.$ac_ext <<_ACEOF -#line 5415 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -exit (strcoll ("abc", "def") >= 0 || +return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || strcoll ("123", "456") >= 0) ; @@ -5426,36 +12666,54 @@ exit (strcoll ("abc", "def") >= 0 || } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:5429: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:5432: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5434: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:5437: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_strcoll_works=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_func_strcoll_works=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:5449: result: $ac_cv_func_strcoll_works" >&5 -echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +$as_echo "$ac_cv_func_strcoll_works" >&6; } if test $ac_cv_func_strcoll_works = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STRCOLL 1 -EOF +_ACEOF fi + + if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then MALLOC_TARGET=alloca MALLOC_SRC=alloca.c @@ -5467,794 +12725,1607 @@ if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; the fi if test "$ac_cv_func_vprintf" = no; then - echo "$as_me:5470: checking for declaration of vprintf in stdio.h" >&5 -echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; } cat >conftest.$ac_ext <<_ACEOF -#line 5473 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then + $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then ac_cv_func_vprintf=yes fi rm -f conftest* - echo "$as_me:5484: result: $ac_cv_func_vprintf" >&5 -echo "${ECHO_T}$ac_cv_func_vprintf" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +$as_echo "$ac_cv_func_vprintf" >&6; } if test $ac_cv_func_vprintf = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_VPRINTF 1 -EOF +_ACEOF fi fi if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then - LIBOBJS="$LIBOBJS vprint.$ac_objext" + case " $LIBOBJS " in + *" vprint.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" + ;; +esac + fi -echo "$as_me:5498: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5504 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif int main () { -int i; +return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:5526: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:5529: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5532: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5535: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_signal=int else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:5545: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal -EOF +_ACEOF -echo "$as_me:5552: checking for __setostype" >&5 -echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for __setostype" >&5 +$as_echo_n "checking for __setostype... " >&6; } if test "${ac_cv_func___setostype+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5558 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define __setostype to an innocuous variant, in case declares __setostype. + For example, HP-UX 11i declares gettimeofday. */ +#define __setostype innocuous___setostype + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char __setostype (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char __setostype (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef __setostype + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char __setostype (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub___setostype || defined __stub_____setostype +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub___setostype) || defined (__stub_____setostype) -choke me -#else -f = __setostype; -#endif - +return __setostype (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5589: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5592: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5595: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5598: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func___setostype=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func___setostype=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func___setostype=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5608: result: $ac_cv_func___setostype" >&5 -echo "${ECHO_T}$ac_cv_func___setostype" >&6 -if test $ac_cv_func___setostype = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +$as_echo "$ac_cv_func___setostype" >&6; } +if test "x$ac_cv_func___setostype" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_SETOSTYPE 1 -EOF +_ACEOF fi -echo "$as_me:5617: checking for wait3" >&5 -echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for wait3" >&5 +$as_echo_n "checking for wait3... " >&6; } if test "${ac_cv_func_wait3+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5623 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wait3 to an innocuous variant, in case declares wait3. + For example, HP-UX 11i declares gettimeofday. */ +#define wait3 innocuous_wait3 + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wait3 (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char wait3 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wait3 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char wait3 (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wait3 || defined __stub___wait3 +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_wait3) || defined (__stub___wait3) -choke me -#else -f = wait3; -#endif - +return wait3 (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5654: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5657: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5660: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5663: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_wait3=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_wait3=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wait3=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5673: result: $ac_cv_func_wait3" >&5 -echo "${ECHO_T}$ac_cv_func_wait3" >&6 -if test $ac_cv_func_wait3 = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +$as_echo "$ac_cv_func_wait3" >&6; } +if test "x$ac_cv_func_wait3" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT3 1 -EOF +_ACEOF fi -echo "$as_me:5682: checking for isinf" >&5 -echo $ECHO_N "checking for isinf... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for isinf" >&5 +$as_echo_n "checking for isinf... " >&6; } if test "${ac_cv_func_isinf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5688 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define isinf to an innocuous variant, in case declares isinf. + For example, HP-UX 11i declares gettimeofday. */ +#define isinf innocuous_isinf + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char isinf (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char isinf (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef isinf + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char isinf (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_isinf || defined __stub___isinf +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_isinf) || defined (__stub___isinf) -choke me -#else -f = isinf; -#endif - +return isinf (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5719: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5722: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5725: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5728: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_isinf=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_isinf=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_isinf=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5738: result: $ac_cv_func_isinf" >&5 -echo "${ECHO_T}$ac_cv_func_isinf" >&6 -if test $ac_cv_func_isinf = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +$as_echo "$ac_cv_func_isinf" >&6; } +if test "x$ac_cv_func_isinf" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_ISINF_IN_LIBC 1 -EOF +_ACEOF fi -echo "$as_me:5747: checking for mkfifo" >&5 -echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 -if test "${ac_cv_func_mkfifo+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for isnan" >&5 +$as_echo_n "checking for isnan... " >&6; } +if test "${ac_cv_func_isnan+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5753 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define isnan to an innocuous variant, in case declares isnan. + For example, HP-UX 11i declares gettimeofday. */ +#define isnan innocuous_isnan + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mkfifo (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char isnan (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef isnan + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char mkfifo (); -char (*f) (); +char isnan (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_isnan || defined __stub___isnan +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_mkfifo) || defined (__stub___mkfifo) -choke me -#else -f = mkfifo; -#endif - +return isnan (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5784: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5787: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5790: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_isnan=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_isnan=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5 +$as_echo "$ac_cv_func_isnan" >&6; } +if test "x$ac_cv_func_isnan" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ISNAN_IN_LIBC 1 +_ACEOF + +fi + + +{ $as_echo "$as_me:$LINENO: checking for mkfifo" >&5 +$as_echo_n "checking for mkfifo... " >&6; } +if test "${ac_cv_func_mkfifo+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define mkfifo to an innocuous variant, in case declares mkfifo. + For example, HP-UX 11i declares gettimeofday. */ +#define mkfifo innocuous_mkfifo + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mkfifo (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mkfifo + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char mkfifo (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_mkfifo || defined __stub___mkfifo +choke me +#endif + +int +main () +{ +return mkfifo (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5793: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_mkfifo=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_mkfifo=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_mkfifo=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5803: result: $ac_cv_func_mkfifo" >&5 -echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 -if test $ac_cv_func_mkfifo = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +$as_echo "$ac_cv_func_mkfifo" >&6; } +if test "x$ac_cv_func_mkfifo" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_MKFIFO 1 -EOF +_ACEOF else - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define MKFIFO_MISSING 1 -EOF +_ACEOF fi -for ac_func in dup2 select getdtablesize getgroups gethostname \ - setdtablesize getpagesize killpg lstat getpeername sbrk \ - getrlimit getrusage gettimeofday waitpid tcgetpgrp \ - readlink + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ + getpagesize getpeername getrlimit getrusage gettimeofday \ + kill killpg lstat readlink sbrk select setdtablesize \ + setitimer tcgetpgrp uname ulimit waitpid do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:5823: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5829 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5860: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5863: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5866: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5869: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5879: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done + for ac_func in rename do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:5892: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5898 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5929: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:5932: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5935: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5938: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:5948: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + fi done -for ac_func in bcopy bzero confstr sysconf pathconf setenv putenv unsetenv \ - setlinebuf setvbuf setlocale strchr tcgetattr uname \ - ulimit tzset siginterrupt memmove ttyname times \ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in bcopy bzero confstr fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ - vsnprintf snprintf vasprintf asprintf fnmatch + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:5967: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 5973 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6004: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6007: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6010: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6013: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6023: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done + + + + + +for ac_func in vsnprintf snprintf vasprintf asprintf +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + for ac_func in isascii isblank isgraph isprint isspace isxdigit do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:6036: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6042 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6073: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6076: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6079: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6082: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6092: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done -for ac_func in getcwd strcasecmp strerror strftime strpbrk memset + + + +for ac_func in getpwent getpwnam getpwuid do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:6105: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6111 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6142: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6145: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6148: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6151: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6161: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" fi done + + + + + + + + +for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + + + + + + + for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:6176: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6182 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6213: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6216: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6219: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6222: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6232: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + fi done -echo "$as_me:6244: checking whether confstr is declared" >&5 -echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_confstr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + +for ac_func in fdprintf +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6250 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + +{ $as_echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +$as_echo_n "checking whether confstr is declared... " >&6; } +if test "${ac_cv_have_decl_confstr+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef confstr - char *p = (char *) confstr; + (void) confstr; #endif ; @@ -6262,54 +14333,68 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6265: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6268: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6271: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6274: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_confstr=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_confstr=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6284: result: $ac_cv_have_decl_confstr" >&5 -echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 -if test $ac_cv_have_decl_confstr = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_confstr" >&6; } +if test "x$ac_cv_have_decl_confstr" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_CONFSTR 1 -EOF +_ACEOF + else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define HAVE_DECL_CONFSTR 0 -EOF +_ACEOF + fi -echo "$as_me:6299: checking whether printf is declared" >&5 -echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether printf is declared" >&5 +$as_echo_n "checking whether printf is declared... " >&6; } if test "${ac_cv_have_decl_printf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6305 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef printf - char *p = (char *) printf; + (void) printf; #endif ; @@ -6317,54 +14402,68 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6320: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6323: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6326: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6329: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_printf=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_printf=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6339: result: $ac_cv_have_decl_printf" >&5 -echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 -if test $ac_cv_have_decl_printf = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_printf" >&6; } +if test "x$ac_cv_have_decl_printf" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PRINTF 1 -EOF +_ACEOF + else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define HAVE_DECL_PRINTF 0 -EOF +_ACEOF + fi -echo "$as_me:6354: checking whether sbrk is declared" >&5 -echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +$as_echo_n "checking whether sbrk is declared... " >&6; } if test "${ac_cv_have_decl_sbrk+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6360 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef sbrk - char *p = (char *) sbrk; + (void) sbrk; #endif ; @@ -6372,54 +14471,137 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6375: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6378: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6381: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6384: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_sbrk=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_sbrk=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6394: result: $ac_cv_have_decl_sbrk" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 -if test $ac_cv_have_decl_sbrk = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_sbrk" >&6; } +if test "x$ac_cv_have_decl_sbrk" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_SBRK 1 -EOF +_ACEOF + else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define HAVE_DECL_SBRK 0 -EOF +_ACEOF + fi -echo "$as_me:6409: checking whether strcpy is declared" >&5 -echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strcpy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether setregid is declared" >&5 +$as_echo_n "checking whether setregid is declared... " >&6; } +if test "${ac_cv_have_decl_setregid+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6415 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef setregid + (void) setregid; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_setregid=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_setregid=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 +$as_echo "$ac_cv_have_decl_setregid" >&6; } +if test "x$ac_cv_have_decl_setregid" = x""yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID 0 +_ACEOF + + +fi + + +{ $as_echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +$as_echo_n "checking whether strcpy is declared... " >&6; } +if test "${ac_cv_have_decl_strcpy+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef strcpy - char *p = (char *) strcpy; + (void) strcpy; #endif ; @@ -6427,54 +14609,68 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6430: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6433: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6436: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6439: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_strcpy=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strcpy=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6449: result: $ac_cv_have_decl_strcpy" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 -if test $ac_cv_have_decl_strcpy = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_strcpy" >&6; } +if test "x$ac_cv_have_decl_strcpy" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_STRCPY 1 -EOF +_ACEOF + else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define HAVE_DECL_STRCPY 0 -EOF +_ACEOF + fi -echo "$as_me:6464: checking whether strsignal is declared" >&5 -echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +$as_echo_n "checking whether strsignal is declared... " >&6; } if test "${ac_cv_have_decl_strsignal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6470 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef strsignal - char *p = (char *) strsignal; + (void) strsignal; #endif ; @@ -6482,54 +14678,69 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6485: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6488: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6491: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6494: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_strsignal=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strsignal=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6504: result: $ac_cv_have_decl_strsignal" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 -if test $ac_cv_have_decl_strsignal = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_strsignal" >&6; } +if test "x$ac_cv_have_decl_strsignal" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_STRSIGNAL 1 -EOF +_ACEOF + else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define HAVE_DECL_STRSIGNAL 0 -EOF +_ACEOF + fi -echo "$as_me:6519: checking whether strtold is declared" >&5 -echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +$as_echo_n "checking whether strtold is declared... " >&6; } if test "${ac_cv_have_decl_strtold+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6525 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { #ifndef strtold - char *p = (char *) strtold; + (void) strtold; #endif ; @@ -6537,48 +14748,127 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:6540: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:6543: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6546: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6549: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_strtold=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtold=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:6559: result: $ac_cv_have_decl_strtold" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 -if test $ac_cv_have_decl_strtold = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_have_decl_strtold" >&6; } +if test "x$ac_cv_have_decl_strtold" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_DECL_STRTOLD 1 -EOF +_ACEOF -else - cat >>confdefs.h <&5 -echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 -if test "${bash_cv_decl_strtoimax+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for broken strtold" >&5 +$as_echo_n "checking for broken strtold... " >&6; } + if test "${bash_cv_strtold_broken+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6580 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bash_cv_strtold_broken=no +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_strtold_broken=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + + { $as_echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +$as_echo "$bash_cv_strtold_broken" >&6; } + if test "$bash_cv_strtold_broken" = "yes" ; then + cat >>confdefs.h <<\_ACEOF +#define STRTOLD_BROKEN 1 +_ACEOF + + fi + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLD 0 +_ACEOF + + +fi + + + + + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +$as_echo_n "checking for declaration of strtoimax... " >&6; } +if test "${bash_cv_decl_strtoimax+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6596,48 +14886,67 @@ return !strtoimax; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6599: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6602: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6605: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6608: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_decl_strtoimax=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtoimax=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtoimax=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6618: result: $bash_cv_decl_strtoimax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoimax" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +$as_echo "$bash_cv_decl_strtoimax" >&6; } bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_strtoimax = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 1 -EOF +_ACEOF else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 0 -EOF +_ACEOF fi -echo "$as_me:6633: checking for declaration of strtol" >&5 -echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +$as_echo_n "checking for declaration of strtol... " >&6; } if test "${bash_cv_decl_strtol+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6639 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6655,48 +14964,67 @@ return !strtol; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6658: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6661: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6664: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6667: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_decl_strtol=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtol=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtol=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6677: result: $bash_cv_decl_strtol" >&5 -echo "${ECHO_T}$bash_cv_decl_strtol" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +$as_echo "$bash_cv_decl_strtol" >&6; } bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_strtol = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 1 -EOF +_ACEOF else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 0 -EOF +_ACEOF fi -echo "$as_me:6692: checking for declaration of strtoll" >&5 -echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +$as_echo_n "checking for declaration of strtoll... " >&6; } if test "${bash_cv_decl_strtoll+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6698 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6714,48 +15042,67 @@ return !strtoll; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6717: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6720: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6723: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6726: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_decl_strtoll=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtoll=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtoll=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6736: result: $bash_cv_decl_strtoll" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoll" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +$as_echo "$bash_cv_decl_strtoll" >&6; } bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_strtoll = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 1 -EOF +_ACEOF else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 0 -EOF +_ACEOF fi -echo "$as_me:6751: checking for declaration of strtoul" >&5 -echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +$as_echo_n "checking for declaration of strtoul... " >&6; } if test "${bash_cv_decl_strtoul+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6757 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6773,48 +15120,67 @@ return !strtoul; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6776: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6779: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6782: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6785: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_decl_strtoul=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtoul=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtoul=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6795: result: $bash_cv_decl_strtoul" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoul" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +$as_echo "$bash_cv_decl_strtoul" >&6; } bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_strtoul = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 1 -EOF +_ACEOF else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 0 -EOF +_ACEOF fi -echo "$as_me:6810: checking for declaration of strtoull" >&5 -echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +$as_echo_n "checking for declaration of strtoull... " >&6; } if test "${bash_cv_decl_strtoull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6816 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6832,48 +15198,67 @@ return !strtoull; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6835: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6838: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6841: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6844: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_decl_strtoull=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtoull=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtoull=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:6854: result: $bash_cv_decl_strtoull" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoull" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +$as_echo "$bash_cv_decl_strtoull" >&6; } bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_strtoull = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 1 -EOF +_ACEOF else - cat >>confdefs.h <>confdefs.h <<_ACEOF #define $bash_tr_func 0 -EOF +_ACEOF fi -echo "$as_me:6869: checking for declaration of strtoumax" >&5 -echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +$as_echo_n "checking for declaration of strtoumax... " >&6; } if test "${bash_cv_decl_strtoumax+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6875 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS # include @@ -6891,185 +15276,366 @@ return !strtoumax; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6894: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:6897: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6900: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6903: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_decl_strtoumax=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_strtoumax=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6913: result: $bash_cv_decl_strtoumax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoumax" >&6 -bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoumax = yes; then - cat >>confdefs.h <>confdefs.h <&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 6937 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:6941: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:6947: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + bash_cv_decl_strtoumax=yes else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_strtoumax=no fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +$as_echo "$bash_cv_decl_strtoumax" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoumax = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:6966: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF fi + + + + + + +for ac_header in $ac_header_list +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done -for ac_func in alarm + + + + + + + + +for ac_func in $ac_func_list do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:6979: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 6985 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7016: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7019: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7022: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7025: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7035: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done -echo "$as_me:7045: checking for working mktime" >&5 -echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:$LINENO: checking for working mktime" >&5 +$as_echo_n "checking for working mktime... " >&6; } if test "${ac_cv_func_working_mktime+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then ac_cv_func_working_mktime=no else cat >conftest.$ac_ext <<_ACEOF -#line 7054 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ -#if TIME_WITH_SYS_TIME +#ifdef TIME_WITH_SYS_TIME # include # include #else -# if HAVE_SYS_TIME_H +# ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif -#if HAVE_UNISTD_H +#include +#include + +#ifdef HAVE_UNISTD_H # include #endif -#if !HAVE_ALARM +#ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif @@ -7077,17 +15643,18 @@ else #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 *const tz_strings[] = { - (const char *) 0, "TZ=GMT0", "TZ=JST-9", +static char *tz_strings[] = { + (char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) -/* Fail if mktime fails to convert a date in the spring-forward gap. +/* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ -static void +static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ @@ -7106,23 +15673,27 @@ spring_forward_gap () tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; - if (mktime (&tm) == (time_t)-1) - exit (1); + return mktime (&tm) != (time_t) -1; } -static void -mktime_test (now) +static int +mktime_test1 (now) time_t now; { struct tm *lt; - if ((lt = localtime (&now)) && mktime (lt) != now) - exit (1); - now = time_t_max - now; - if ((lt = localtime (&now)) && mktime (lt) != now) - exit (1); + return ! (lt = localtime (&now)) || mktime (lt) == now; } -static void +static int +mktime_test (now) + time_t now; +{ + return (mktime_test1 (now) + && mktime_test1 ((time_t) (time_t_max - now)) + && mktime_test1 ((time_t) (time_t_min + now))); +} + +static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ @@ -7135,11 +15706,10 @@ irix_6_4_bug () tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); - if (tm.tm_mon != 2 || tm.tm_mday != 31) - exit (1); + return tm.tm_mon == 2 && tm.tm_mday == 31; } -static void +static int bigtime_test (j) int j; { @@ -7161,8 +15731,39 @@ bigtime_test (j) && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) - exit (1); + return 0; } + return 1; +} + +static int +year_2050_test () +{ + /* The correct answer for 2050-02-01 00:00:00 in Pacific time, + ignoring leap seconds. */ + unsigned long int answer = 2527315200UL; + + struct tm tm; + time_t t; + tm.tm_year = 2050 - 1900; + tm.tm_mon = 2 - 1; + tm.tm_mday = 1; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + tm.tm_isdst = -1; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); + + t = mktime (&tm); + + /* Check that the result is either a failure, or close enough + to the correct answer that we can assume the discrepancy is + due to leap seconds. */ + return (t == (time_t) -1 + || (0 < t && answer - 120 <= t && t <= answer + 120)); } int @@ -7176,9 +15777,15 @@ main () isn't worth using anyway. */ alarm (60); - for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) - continue; - time_t_max--; + 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++) { @@ -7186,631 +15793,2179 @@ main () putenv (tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) - mktime_test (t); - mktime_test ((time_t) 60 * 60); - mktime_test ((time_t) 60 * 60 * 24); + 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; 0 < j; j *= 2) - bigtime_test (j); - bigtime_test (j - 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; } - irix_6_4_bug (); - spring_forward_gap (); - exit (0); + return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:7203: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:7206: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:7208: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:7211: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_working_mktime=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_func_working_mktime=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:7223: result: $ac_cv_func_working_mktime" >&5 -echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 -if test $ac_cv_func_working_mktime = no; then - LIBOBJS="$LIBOBJS mktime.$ac_objext" +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -for ac_header in libintl.h + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +$as_echo "$ac_cv_func_working_mktime" >&6; } +if test $ac_cv_func_working_mktime = no; then + case " $LIBOBJS " in + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" + ;; +esac + +fi + + + + + + + + +for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:7232: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -#line 7238 "configure" -#include "confdefs.h" + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include <$ac_header> _ACEOF -if { (eval echo "$as_me:7242: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:7248: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:7267: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_header_compiler=no fi -done -for ac_func in gettext textdomain bindtextdomain -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:7280: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 7286 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7317: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7320: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7323: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7326: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:7336: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 -echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 -if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF -#line 7356 "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char bindtextdomain (); -int -main () -{ -bindtextdomain (); - ; - return 0; -} +/* confdefs.h. */ _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7375: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? - echo "$as_me:7378: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7381: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7384: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_intl_bindtextdomain=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_intl_bindtextdomain=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:7395: result: $ac_cv_lib_intl_bindtextdomain" >&5 -echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 -if test $ac_cv_lib_intl_bindtextdomain = yes; then - cat >>confdefs.h <&5 +sed 's/^/| /' conftest.$ac_ext >&5 - LIBS="-lintl $LIBS" + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF fi - if test "$ac_cv_lib_intl" = "yes"; then +done -for ac_func in gettext textdomain bindtextdomain + + + +for ac_header in stdlib.h unistd.h do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:7411: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7417 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); - -int -main () -{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -f = $ac_func; #endif +int +main () +{ +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7448: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7451: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7454: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7457: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7467: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done - fi +{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 1; + if (write (fd, data, pagesize) != pagesize) + return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) + return 1; + data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 1; + if (read (fd, data3, pagesize) != pagesize) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 1; + close (fd); + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + + + + + + + + +for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ + munmap stpcpy strcspn strdup +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +INTL_DEP= INTL_INC= LIBINTL_H= +if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then + INTL_DEP='${INTL_LIBDIR}/libintl.a' + INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}' + LIBINTL_H='${INTL_BUILDDIR}/libintl.h' +fi + + + + + + for ac_header in wctype.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:7483: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -#line 7489 "configure" -#include "confdefs.h" + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include <$ac_header> _ACEOF -if { (eval echo "$as_me:7493: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:7499: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:7518: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done + for ac_header in wchar.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:7531: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -#line 7537 "configure" -#include "confdefs.h" + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include <$ac_header> _ACEOF -if { (eval echo "$as_me:7541: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:7547: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:7566: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done + for ac_header in langinfo.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:7579: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -#line 7585 "configure" -#include "confdefs.h" + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default #include <$ac_header> _ACEOF -if { (eval echo "$as_me:7589: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:7595: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes else - ac_cpp_err=yes + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:7614: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done -echo "$as_me:7624: checking for mbsrtowcs" >&5 -echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 -if test "${ac_cv_func_mbsrtowcs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for mbrlen" >&5 +$as_echo_n "checking for mbrlen... " >&6; } +if test "${ac_cv_func_mbrlen+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7630 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define mbrlen to an innocuous variant, in case declares mbrlen. + For example, HP-UX 11i declares gettimeofday. */ +#define mbrlen innocuous_mbrlen + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbsrtowcs (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char mbrlen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbrlen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char mbsrtowcs (); -char (*f) (); +char mbrlen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_mbrlen || defined __stub___mbrlen +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs) -choke me -#else -f = mbsrtowcs; -#endif - +return mbrlen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7661: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7664: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7667: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_mbrlen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_mbrlen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +$as_echo "$ac_cv_func_mbrlen" >&6; } +if test "x$ac_cv_func_mbrlen" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRLEN 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for mbscmp" >&5 +$as_echo_n "checking for mbscmp... " >&6; } +if test "${ac_cv_func_mbscmp+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define mbscmp to an innocuous variant, in case declares mbscmp. + For example, HP-UX 11i declares gettimeofday. */ +#define mbscmp innocuous_mbscmp + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbscmp (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbscmp + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char mbscmp (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_mbscmp || defined __stub___mbscmp +choke me +#endif + +int +main () +{ +return mbscmp (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7670: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_mbscmp=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_mbscmp=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbscmp" >&5 +$as_echo "$ac_cv_func_mbscmp" >&6; } +if test "x$ac_cv_func_mbscmp" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSCMP 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +$as_echo_n "checking for mbsrtowcs... " >&6; } +if test "${ac_cv_func_mbsrtowcs+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define mbsrtowcs to an innocuous variant, in case declares mbsrtowcs. + For example, HP-UX 11i declares gettimeofday. */ +#define mbsrtowcs innocuous_mbsrtowcs + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbsrtowcs (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbsrtowcs + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char mbsrtowcs (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_mbsrtowcs || defined __stub___mbsrtowcs +choke me +#endif + +int +main () +{ +return mbsrtowcs (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_mbsrtowcs=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_mbsrtowcs=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_mbsrtowcs=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7680: result: $ac_cv_func_mbsrtowcs" >&5 -echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 -if test $ac_cv_func_mbsrtowcs = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +$as_echo "$ac_cv_func_mbsrtowcs" >&6; } +if test "x$ac_cv_func_mbsrtowcs" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_MBSRTOWCS 1 -EOF +_ACEOF fi -echo "$as_me:7689: checking for wcwidth" >&5 -echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 -if test "${ac_cv_func_wcwidth+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for wcrtomb" >&5 +$as_echo_n "checking for wcrtomb... " >&6; } +if test "${ac_cv_func_wcrtomb+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7695 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wcrtomb to an innocuous variant, in case declares wcrtomb. + For example, HP-UX 11i declares gettimeofday. */ +#define wcrtomb innocuous_wcrtomb + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcwidth (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char wcrtomb (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wcrtomb + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wcwidth (); -char (*f) (); +char wcrtomb (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wcrtomb || defined __stub___wcrtomb +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_wcwidth) || defined (__stub___wcwidth) -choke me -#else -f = wcwidth; -#endif - +return wcrtomb (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7726: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7729: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7732: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7735: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_wcwidth=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_wcrtomb=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_wcwidth=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wcrtomb=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7745: result: $ac_cv_func_wcwidth" >&5 -echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 -if test $ac_cv_func_wcwidth = yes; then - cat >>confdefs.h <<\EOF -#define HAVE_WCWIDTH 1 -EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5 +$as_echo "$ac_cv_func_wcrtomb" >&6; } +if test "x$ac_cv_func_wcrtomb" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCRTOMB 1 +_ACEOF fi -echo "$as_me:7754: checking for mbstate_t" >&5 -echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -if test "${bash_cv_have_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:7760: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking for wcscoll" >&5 +$as_echo_n "checking for wcscoll... " >&6; } +if test "${ac_cv_func_wcscoll+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7765 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wcscoll to an innocuous variant, in case declares wcscoll. + For example, HP-UX 11i declares gettimeofday. */ +#define wcscoll innocuous_wcscoll +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wcscoll (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wcscoll + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char wcscoll (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wcscoll || defined __stub___wcscoll +choke me +#endif + +int +main () +{ +return wcscoll (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_wcscoll=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wcscoll=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5 +$as_echo "$ac_cv_func_wcscoll" >&6; } +if test "x$ac_cv_func_wcscoll" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCSCOLL 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for wcsdup" >&5 +$as_echo_n "checking for wcsdup... " >&6; } +if test "${ac_cv_func_wcsdup+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wcsdup to an innocuous variant, in case declares wcsdup. + For example, HP-UX 11i declares gettimeofday. */ +#define wcsdup innocuous_wcsdup + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wcsdup (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wcsdup + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char wcsdup (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wcsdup || defined __stub___wcsdup +choke me +#endif + +int +main () +{ +return wcsdup (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_wcsdup=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wcsdup=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +$as_echo "$ac_cv_func_wcsdup" >&6; } +if test "x$ac_cv_func_wcsdup" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCSDUP 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for wcwidth" >&5 +$as_echo_n "checking for wcwidth... " >&6; } +if test "${ac_cv_func_wcwidth+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wcwidth to an innocuous variant, in case declares wcwidth. + For example, HP-UX 11i declares gettimeofday. */ +#define wcwidth innocuous_wcwidth + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wcwidth (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wcwidth + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char wcwidth (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wcwidth || defined __stub___wcwidth +choke me +#endif + +int +main () +{ +return wcwidth (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_wcwidth=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wcwidth=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +$as_echo "$ac_cv_func_wcwidth" >&6; } +if test "x$ac_cv_func_wcwidth" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCWIDTH 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for wctype" >&5 +$as_echo_n "checking for wctype... " >&6; } +if test "${ac_cv_func_wctype+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define wctype to an innocuous variant, in case declares wctype. + For example, HP-UX 11i declares gettimeofday. */ +#define wctype innocuous_wctype + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wctype (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wctype + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char wctype (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_wctype || defined __stub___wctype +choke me +#endif + +int +main () +{ +return wctype (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_wctype=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_wctype=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 +$as_echo "$ac_cv_func_wctype" >&6; } +if test "x$ac_cv_func_wctype" = x""yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCTYPE 1 +_ACEOF + +fi + + + + { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 +$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if test "${ac_cv_func_mbrtowc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () { - mbstate_t ps; +wchar_t wc; + char const s[] = ""; + size_t n = 1; + mbstate_t state; + return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); + ; return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:7777: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7780: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:7782: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7785: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_have_mbstate_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_mbrtowc=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_have_mbstate_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_mbrtowc=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -fi -echo "$as_me:7797: result: $bash_cv_have_mbstate_t" >&5 -echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 -if test $bash_cv_have_mbstate_t = yes; then - cat >>confdefs.h <<\EOF +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +$as_echo "$ac_cv_func_mbrtowc" >&6; } + if test $ac_cv_func_mbrtowc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRTOWC 1 +_ACEOF + + fi + +if test $ac_cv_func_mbrtowc = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_MBSTATE_T 1 -EOF +_ACEOF fi -echo "$as_me:7806: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 -if test "${bash_cv_langinfo_codeset+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + + + + +for ac_func in iswlower iswupper towlower towupper iswctype +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7812 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${bash_cv_langinfo_codeset+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -7821,228 +17976,504 @@ char* cs = nl_langinfo(CODESET); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7824: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7827: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7830: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7833: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_langinfo_codeset=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_langinfo_codeset=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_langinfo_codeset=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7843: result: $bash_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +$as_echo "$bash_cv_langinfo_codeset" >&6; } if test $bash_cv_langinfo_codeset = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_LANGINFO_CODESET 1 -EOF +_ACEOF fi +{ $as_echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5 +$as_echo_n "checking for wchar_t in wchar.h... " >&6; } +if test "${bash_cv_type_wchar_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ + + wchar_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bash_cv_type_wchar_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_type_wchar_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5 +$as_echo "$bash_cv_type_wchar_t" >&6; } +if test $bash_cv_type_wchar_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WCHAR_T 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5 +$as_echo_n "checking for wctype_t in wctype.h... " >&6; } +if test "${bash_cv_type_wctype_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + + wctype_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bash_cv_type_wctype_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_type_wctype_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5 +$as_echo "$bash_cv_type_wctype_t" >&6; } +if test $bash_cv_type_wctype_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WCTYPE_T 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5 +$as_echo_n "checking for wint_t in wctype.h... " >&6; } +if test "${bash_cv_type_wint_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + + wint_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bash_cv_type_wint_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_type_wint_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5 +$as_echo "$bash_cv_type_wint_t" >&6; } +if test $bash_cv_type_wint_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WINT_T 1 +_ACEOF + +fi + + + if test "$opt_static_link" != yes; then -echo "$as_me:7854: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 7862 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -dlopen (); +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7881: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7884: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7887: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7890: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dl_dlopen=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:7901: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then + cat >>confdefs.h <<_ACEOF #define HAVE_LIBDL 1 -EOF +_ACEOF LIBS="-ldl $LIBS" fi + + + for ac_func in dlopen dlclose dlsym do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:7915: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7921 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif int main () { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7952: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:7955: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7958: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7961: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:7971: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi done fi -echo "$as_me:7983: checking for sys_siglist declaration in signal.h or unistd.h" >&5 -echo $ECHO_N "checking for sys_siglist declaration in signal.h or unistd.h... $ECHO_C" >&6 -if test "${ac_cv_decl_sys_siglist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +$as_echo_n "checking whether sys_siglist is declared... " >&6; } +if test "${ac_cv_have_decl_sys_siglist+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 7989 "configure" -#include "confdefs.h" -#include +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include /* NetBSD declares sys_siglist in unistd.h. */ -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H # include #endif + int main () { -char *msg = *(sys_siglist + 1); +#ifndef sys_siglist + (void) sys_siglist; +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8007: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8010: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8013: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8016: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_decl_sys_siglist=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_sys_siglist=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_decl_sys_siglist=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8026: result: $ac_cv_decl_sys_siglist" >&5 -echo "${ECHO_T}$ac_cv_decl_sys_siglist" >&6 -if test $ac_cv_decl_sys_siglist = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_sys_siglist=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +$as_echo "$ac_cv_have_decl_sys_siglist" >&6; } +if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SYS_SIGLIST 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SYS_SIGLIST 0 +_ACEOF -cat >>confdefs.h <<\EOF -#define SYS_SIGLIST_DECLARED 1 -EOF fi + + + if test "$ac_cv_func_inet_aton" != 'yes'; then -echo "$as_me:8038: checking for inet_aton" >&5 -echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for inet_aton" >&5 +$as_echo_n "checking for inet_aton... " >&6; } if test "${bash_cv_func_inet_aton+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8044 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -8057,93 +18488,127 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8060: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8063: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8066: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8069: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_func_inet_aton=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_func_inet_aton=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_func_inet_aton=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:8079: result: $bash_cv_func_inet_aton" >&5 -echo "${ECHO_T}$bash_cv_func_inet_aton" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +$as_echo "$bash_cv_func_inet_aton" >&6; } if test $bash_cv_func_inet_aton = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_INET_ATON 1 -EOF +_ACEOF else - LIBOBJS="$LIBOBJS inet_aton.$ac_objext" + case " $LIBOBJS " in + *" inet_aton.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" + ;; +esac + fi fi case "$host_os" in irix4*) -echo "$as_me:8094: checking for getpwent in -lsun" >&5 -echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +$as_echo_n "checking for getpwent in -lsun... " >&6; } if test "${ac_cv_lib_sun_getpwent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsun $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 8102 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char getpwent (); int main () { -getpwent (); +return getpwent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8121: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8124: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8127: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8130: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_sun_getpwent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_sun_getpwent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_sun_getpwent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:8141: result: $ac_cv_lib_sun_getpwent" >&5 -echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 -if test $ac_cv_lib_sun_getpwent = yes; then - cat >>confdefs.h <&5 +$as_echo "$ac_cv_lib_sun_getpwent" >&6; } +if test "x$ac_cv_lib_sun_getpwent" = x""yes; then + cat >>confdefs.h <<_ACEOF #define HAVE_LIBSUN 1 -EOF +_ACEOF LIBS="-lsun $LIBS" @@ -8156,63 +18621,79 @@ if test "$ac_cv_func_getpeername" = no; then if test "X$bash_cv_have_socklib" = "X"; then _bash_needmsg= else -echo "$as_me:8159: checking for socket library" >&5 -echo $ECHO_N "checking for socket library... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for socket library" >&5 +$as_echo_n "checking for socket library... " >&6; } _bash_needmsg=yes fi if test "${bash_cv_have_socklib+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - echo "$as_me:8166: checking for getpeername in -lsocket" >&5 -echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +$as_echo_n "checking for getpeername in -lsocket... " >&6; } if test "${ac_cv_lib_socket_getpeername+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 8174 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char getpeername (); int main () { -getpeername (); +return getpeername (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8193: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8196: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8199: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8202: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_socket_getpeername=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_socket_getpeername=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_socket_getpeername=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:8213: result: $ac_cv_lib_socket_getpeername" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 -if test $ac_cv_lib_socket_getpeername = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +$as_echo "$ac_cv_lib_socket_getpeername" >&6; } +if test "x$ac_cv_lib_socket_getpeername" = x""yes; then bash_cv_have_socklib=yes else bash_cv_have_socklib=no @@ -8221,8 +18702,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - echo "$as_me:8224: result: $bash_cv_have_socklib" >&5 -echo "${ECHO_T}$bash_cv_have_socklib" >&6 + { $as_echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +$as_echo "$bash_cv_have_socklib" >&6; } _bash_needmsg= fi if test $bash_cv_have_socklib = yes; then @@ -8230,63 +18711,79 @@ if test $bash_cv_have_socklib = yes; then if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else - echo "$as_me:8233: checking for libnsl" >&5 -echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for libnsl" >&5 +$as_echo_n "checking for libnsl... " >&6; } _bash_needmsg=yes fi if test "${bash_cv_have_libnsl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - echo "$as_me:8240: checking for t_open in -lnsl" >&5 -echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +$as_echo_n "checking for t_open in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_t_open+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 8248 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char t_open (); int main () { -t_open (); +return t_open (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8267: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8270: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8273: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8276: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_nsl_t_open=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_nsl_t_open=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_nsl_t_open=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:8287: result: $ac_cv_lib_nsl_t_open" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 -if test $ac_cv_lib_nsl_t_open = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +$as_echo "$ac_cv_lib_nsl_t_open" >&6; } +if test "x$ac_cv_lib_nsl_t_open" = x""yes; then bash_cv_have_libnsl=yes else bash_cv_have_libnsl=no @@ -8295,8 +18792,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - echo "$as_me:8298: result: $bash_cv_have_libnsl" >&5 -echo "${ECHO_T}$bash_cv_have_libnsl" >&6 + { $as_echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +$as_echo "$bash_cv_have_libnsl" >&6; } _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then @@ -8304,13 +18801,13 @@ echo "${ECHO_T}$bash_cv_have_libnsl" >&6 else LIBS="-lsocket $LIBS" fi - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_LIBSOCKET 1 -EOF +_ACEOF - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_GETPEERNAME 1 -EOF +_ACEOF fi @@ -8319,16 +18816,19 @@ if test "$ac_cv_func_gethostbyname" = no; then if test "X$bash_cv_have_gethostbyname" = "X"; then _bash_needmsg=yes else -echo "$as_me:8322: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } _bash_needmsg= fi if test "${bash_cv_have_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8330 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -8341,55 +18841,71 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8344: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8347: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8350: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8353: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_have_gethostbyname=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_have_gethostbyname=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_have_gethostbyname=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi if test "X$_bash_needmsg" = Xyes; then - echo "$as_me:8366: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } fi -echo "$as_me:8369: result: $bash_cv_have_gethostbyname" >&5 -echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +$as_echo "$bash_cv_have_gethostbyname" >&6; } if test "$bash_cv_have_gethostbyname" = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME 1 -EOF +_ACEOF fi fi -echo "$as_me:8380: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } if test "${ac_cv_type_uid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8386 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then + $EGREP "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no @@ -8397,33 +18913,37 @@ fi rm -f conftest* fi -echo "$as_me:8400: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define uid_t int -EOF +_ACEOF -cat >>confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define gid_t int -EOF +_ACEOF fi -echo "$as_me:8414: checking type of array argument to getgroups" >&5 -echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +$as_echo_n "checking type of array argument to getgroups... " >&6; } if test "${ac_cv_type_getgroups+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then ac_cv_type_getgroups=cross else cat >conftest.$ac_ext <<_ACEOF -#line 8423 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ -#include +$ac_includes_default #define NGID 256 #undef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) @@ -8433,47 +18953,67 @@ main () { gid_t gidset[NGID]; int i, n; - union { gid_t gval; long lval; } val; + 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); + gidset); /* Exit non-zero if getgroups seems to require an array of ints. This - happens when gid_t is short but getgroups modifies an array of ints. */ - exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); + happens when gid_t is short int but getgroups modifies an array + of ints. */ + return n > 0 && gidset[n] != val.gval; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:8449: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:8452: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:8454: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:8457: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_getgroups=gid_t else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) ac_cv_type_getgroups=int fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + if test $ac_cv_type_getgroups = cross; then cat >conftest.$ac_ext <<_ACEOF -#line 8470 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "getgroups.*int.*gid_t" >/dev/null 2>&1; then + $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then ac_cv_type_getgroups=gid_t else ac_cv_type_getgroups=int @@ -8482,130 +19022,238 @@ rm -f conftest* fi fi -echo "$as_me:8485: result: $ac_cv_type_getgroups" >&5 -echo "${ECHO_T}$ac_cv_type_getgroups" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +$as_echo "$ac_cv_type_getgroups" >&6; } -cat >>confdefs.h <>confdefs.h <<_ACEOF #define GETGROUPS_T $ac_cv_type_getgroups -EOF +_ACEOF -echo "$as_me:8492: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 +$as_echo_n "checking for off_t... " >&6; } if test "${ac_cv_type_off_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 8498 "configure" -#include "confdefs.h" + ac_cv_type_off_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((off_t *) 0) - return 0; if (sizeof (off_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8513: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8516: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8519: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8522: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_off_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_off_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8532: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6 -if test $ac_cv_type_off_t = yes; then - : -else - -cat >>confdefs.h <&5 -echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 -if test "${ac_cv_type_mode_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >conftest.$ac_ext <<_ACEOF -#line 8550 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((mode_t *) 0) - return 0; -if (sizeof (mode_t)) - return 0; +if (sizeof ((off_t))) + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8565: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8568: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8571: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8574: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_mode_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_mode_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_off_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:8584: result: $ac_cv_type_mode_t" >&5 -echo "${ECHO_T}$ac_cv_type_mode_t" >&6 -if test $ac_cv_type_mode_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +$as_echo "$ac_cv_type_off_t" >&6; } +if test "x$ac_cv_type_off_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF fi -echo "$as_me:8596: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for mode_t" >&5 +$as_echo_n "checking for mode_t... " >&6; } +if test "${ac_cv_type_mode_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_type_mode_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((mode_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_mode_t=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +$as_echo "$ac_cv_type_mode_t" >&6; } +if test "x$ac_cv_type_mode_t" = x""yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } if test "${ac_cv_type_uid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8602 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then + $EGREP "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no @@ -8613,236 +19261,450 @@ fi rm -f conftest* fi -echo "$as_me:8616: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define uid_t int -EOF +_ACEOF -cat >>confdefs.h <<\EOF + +cat >>confdefs.h <<\_ACEOF #define gid_t int -EOF +_ACEOF fi -echo "$as_me:8630: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5 +$as_echo_n "checking for pid_t... " >&6; } if test "${ac_cv_type_pid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 8636 "configure" -#include "confdefs.h" + ac_cv_type_pid_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((pid_t *) 0) - return 0; if (sizeof (pid_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8651: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8654: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8657: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((pid_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8660: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pid_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_pid_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_pid_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:8670: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6 -if test $ac_cv_type_pid_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +$as_echo "$ac_cv_type_pid_t" >&6; } +if test "x$ac_cv_type_pid_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define pid_t int -EOF +_ACEOF fi -echo "$as_me:8682: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 +$as_echo_n "checking for size_t... " >&6; } if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 8688 "configure" -#include "confdefs.h" + ac_cv_type_size_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((size_t *) 0) - return 0; if (sizeof (size_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8703: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8706: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8709: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((size_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8712: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_size_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_size_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_size_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:8722: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 -if test $ac_cv_type_size_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +$as_echo "$ac_cv_type_size_t" >&6; } +if test "x$ac_cv_type_size_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF fi -echo "$as_me:8734: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for ssize_t" >&5 +$as_echo_n "checking for ssize_t... " >&6; } if test "${ac_cv_type_ssize_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 8740 "configure" -#include "confdefs.h" + ac_cv_type_ssize_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((ssize_t *) 0) - return 0; if (sizeof (ssize_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8755: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8758: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8761: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8764: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ssize_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ssize_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8774: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 -if test $ac_cv_type_ssize_t = yes; then - : -else - -cat >>confdefs.h <&5 -echo $ECHO_N "checking for time_t... $ECHO_C" >&6 -if test "${ac_cv_type_time_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >conftest.$ac_ext <<_ACEOF -#line 8792 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((time_t *) 0) - return 0; -if (sizeof (time_t)) - return 0; +if (sizeof ((ssize_t))) + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8807: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8810: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8813: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8816: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_time_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_time_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ssize_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:8826: result: $ac_cv_type_time_t" >&5 -echo "${ECHO_T}$ac_cv_type_time_t" >&6 -if test $ac_cv_type_time_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +$as_echo "$ac_cv_type_ssize_t" >&6; } +if test "x$ac_cv_type_ssize_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF fi -echo "$as_me:8838: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for time_t" >&5 +$as_echo_n "checking for time_t... " >&6; } +if test "${ac_cv_type_time_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_type_time_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof (time_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((time_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_time_t=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +$as_echo "$ac_cv_type_time_t" >&6; } +if test "x$ac_cv_type_time_t" = x""yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define time_t long +_ACEOF + +fi + + + +{ $as_echo "$as_me:$LINENO: checking for long long" >&5 +$as_echo_n "checking for long long... " >&6; } if test "${bash_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8844 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ long long ll = 1; int i = 63; int @@ -8857,42 +19719,59 @@ return ll << i | ll >> i | llm / ll | llm % ll; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8860: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8863: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8866: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8869: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_type_long_long='long long' else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_type_long_long='long' + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_type_long_long='long' fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:8879: result: $bash_cv_type_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_long_long" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +$as_echo "$bash_cv_type_long_long" >&6; } if test "$bash_cv_type_long_long" = 'long long'; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_LONG 1 -EOF +_ACEOF fi -echo "$as_me:8888: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for unsigned long long" >&5 +$as_echo_n "checking for unsigned long long... " >&6; } if test "${bash_cv_type_unsigned_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8894 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ unsigned long long ull = 1; int i = 63; int @@ -8907,3041 +19786,5300 @@ return ull << i | ull >> i | ullmax / ull | ullmax % ull; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8910: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:8913: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8916: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8919: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_type_unsigned_long_long='unsigned long long' else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_type_unsigned_long_long='unsigned long' + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_type_unsigned_long_long='unsigned long' fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:8929: result: $bash_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_unsigned_long_long" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +$as_echo "$bash_cv_type_unsigned_long_long" >&6; } if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_UNSIGNED_LONG_LONG 1 -EOF +_ACEOF fi -echo "$as_me:8938: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8944 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif int main () { -int i; +return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:8966: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:8969: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8972: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8975: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_signal=int else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8985: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal -EOF +_ACEOF -echo "$as_me:8992: checking for char" >&5 -echo $ECHO_N "checking for char... $ECHO_C" >&6 -if test "${ac_cv_type_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for sig_atomic_t in signal.h" >&5 +$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } +if test "${ac_cv_have_sig_atomic_t+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 8998 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + +int +main () +{ + sig_atomic_t x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_have_sig_atomic_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_sig_atomic_t=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_sig_atomic_t" >&5 +$as_echo "$ac_cv_have_sig_atomic_t" >&6; } +if test "$ac_cv_have_sig_atomic_t" = "no" +then + { $as_echo "$as_me:$LINENO: checking for sig_atomic_t" >&5 +$as_echo_n "checking for sig_atomic_t... " >&6; } +if test "${ac_cv_type_sig_atomic_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_type_sig_atomic_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((char *) 0) - return 0; -if (sizeof (char)) - return 0; +if (sizeof (sig_atomic_t)) + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9013: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9016: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9019: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((sig_atomic_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9022: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_char=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_char=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:9032: result: $ac_cv_type_char" >&5 -echo "${ECHO_T}$ac_cv_type_char" >&6 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:9035: checking size of char" >&5 -echo $ECHO_N "checking size of char... $ECHO_C" >&6 -if test "${ac_cv_sizeof_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_cv_type_sig_atomic_t=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5 +$as_echo "$ac_cv_type_sig_atomic_t" >&6; } +if test "x$ac_cv_type_sig_atomic_t" = x""yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define sig_atomic_t int +_ACEOF + +fi + +fi + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of char" >&5 +$as_echo_n "checking size of char... " >&6; } +if test "${ac_cv_sizeof_char+set}" = set; then + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_char" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 9044 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (char))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9056: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9059: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9062: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9065: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 9070 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9082: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9085: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9088: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9091: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 9107 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9119: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9122: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9125: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (char))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9128: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 9144 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9156: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9159: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9162: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9165: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_char=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:9178: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_char=$ac_lo;; +'') if test "$ac_cv_type_char" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (char) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_char=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 9183 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (char)); } +static unsigned long int ulongval () { return (long int) (sizeof (char)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (char))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (char))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (char)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (char)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:9199: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:9202: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:9204: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:9207: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_char=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_char" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (char) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_char=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_char=0 fi -fi -echo "$as_me:9223: result: $ac_cv_sizeof_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_char" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char -EOF - -echo "$as_me:9229: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6 -if test "${ac_cv_type_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9235 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((short *) 0) - return 0; -if (sizeof (short)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9250: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9253: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9256: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9259: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_short=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_short=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:9269: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6 -echo "$as_me:9272: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } if test "${ac_cv_sizeof_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_short" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 9281 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (short)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9293: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9296: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9299: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9302: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 9307 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (short)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9319: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9322: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9325: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9328: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 9344 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (short)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (short))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9356: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9359: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9362: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9365: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 9381 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (short)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9393: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9396: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9399: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9402: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_short=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:9415: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (short) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_short=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 9420 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (short)); } +static unsigned long int ulongval () { return (long int) (sizeof (short)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (short))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (short))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (short)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (short)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:9436: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:9439: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:9441: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:9444: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_short=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (short) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_short=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_short=0 fi -fi -echo "$as_me:9460: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short -EOF - -echo "$as_me:9466: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 -if test "${ac_cv_type_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9472 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((int *) 0) - return 0; -if (sizeof (int)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9487: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9490: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9493: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9496: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_int=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:9506: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 -echo "$as_me:9509: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } if test "${ac_cv_sizeof_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_int" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 9518 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (int)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9530: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9533: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9536: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9539: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 9544 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9556: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9559: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9562: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9565: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 9581 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (int)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9593: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9596: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9599: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9602: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 9618 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9630: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9633: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9636: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9639: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_int=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:9652: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (int) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_int=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 9657 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (int)); } +static unsigned long int ulongval () { return (long int) (sizeof (int)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (int))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (int))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (int)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (int)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:9673: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:9676: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:9678: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:9681: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_int=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (int) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_int=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_int=0 fi -fi -echo "$as_me:9697: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int -EOF - -echo "$as_me:9703: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 -if test "${ac_cv_type_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9709 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((long *) 0) - return 0; -if (sizeof (long)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9724: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9727: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9730: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9733: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_long=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:9743: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 -echo "$as_me:9746: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } if test "${ac_cv_sizeof_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_long" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 9755 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9767: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9770: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9773: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9776: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 9781 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9793: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9796: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9799: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9802: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 9818 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9830: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9833: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9836: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9839: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 9855 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:9867: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:9870: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9873: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9876: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_long=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:9889: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (long) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_long=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 9894 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (long)); } +static unsigned long int ulongval () { return (long int) (sizeof (long)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (long))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (long))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (long)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (long)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:9910: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:9913: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:9915: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:9918: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (long) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_long=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long=0 fi -fi -echo "$as_me:9934: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long -EOF - -echo "$as_me:9940: checking for char *" >&5 -echo $ECHO_N "checking for char *... $ECHO_C" >&6 -if test "${ac_cv_type_char_p+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9946 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((char * *) 0) - return 0; -if (sizeof (char *)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9961: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9964: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9967: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9970: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_char_p=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_char_p=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:9980: result: $ac_cv_type_char_p" >&5 -echo "${ECHO_T}$ac_cv_type_char_p" >&6 -echo "$as_me:9983: checking size of char *" >&5 -echo $ECHO_N "checking size of char *... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of char *" >&5 +$as_echo_n "checking size of char *... " >&6; } if test "${ac_cv_sizeof_char_p+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_char_p" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 9992 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char *)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (char *))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10004: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10007: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10010: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10013: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 10018 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char *)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10030: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10033: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10036: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10039: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 10055 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char *)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char *))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10067: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10070: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10073: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (char *))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10076: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 10092 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (char *)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10104: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10107: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10110: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10113: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_char_p=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:10126: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_char_p=$ac_lo;; +'') if test "$ac_cv_type_char_p" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (char *) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_char_p=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 10131 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (char *)); } +static unsigned long int ulongval () { return (long int) (sizeof (char *)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (char *))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (char *))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (char *)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (char *)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:10147: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:10150: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10152: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:10155: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_char_p=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_char_p" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (char *) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_char_p=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_char_p=0 fi -fi -echo "$as_me:10171: result: $ac_cv_sizeof_char_p" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_char_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR_P $ac_cv_sizeof_char_p -EOF - -echo "$as_me:10177: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 -if test "${ac_cv_type_double+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 10183 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((double *) 0) - return 0; -if (sizeof (double)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10198: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10201: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10204: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10207: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_double=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_double=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10217: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 -echo "$as_me:10220: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of double" >&5 +$as_echo_n "checking size of double... " >&6; } if test "${ac_cv_sizeof_double+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_double" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 10229 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (double)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10241: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10244: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10247: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10250: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 10255 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (double)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10267: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10270: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10273: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10276: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 10292 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (double)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (double))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10304: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10307: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10310: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10313: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 10329 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (double)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10341: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10344: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10347: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10350: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_double=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:10363: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') if test "$ac_cv_type_double" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (double) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_double=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 10368 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (double)); } +static unsigned long int ulongval () { return (long int) (sizeof (double)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (double))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (double))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (double)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (double)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:10384: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:10387: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10389: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:10392: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_double=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_double" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (double) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_double=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_double=0 fi -fi -echo "$as_me:10408: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_double" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double -EOF - -echo "$as_me:10414: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 10420 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((long long *) 0) - return 0; -if (sizeof (long long)) - return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10435: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10438: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10441: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10444: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_long_long=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10454: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 -echo "$as_me:10457: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6 + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:$LINENO: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } if test "${ac_cv_sizeof_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test "$ac_cv_type_long_long" = yes; then if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line 10466 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long long)) >= 0)] +static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10478: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10481: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10484: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10487: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line 10492 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long long)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10504: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10507: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10510: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10513: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 10529 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long long)) >= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long long))) < 0)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10541: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10544: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10547: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10550: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line 10566 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -int _array_ [1 - 2 * !((sizeof (long long)) <= $ac_mid)] +static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10578: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10581: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10584: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10587: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -ac_cv_sizeof_long_long=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:10600: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} - { (exit 1); exit 1; }; } +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (long long) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_long_long=0 + fi ;; +esac else cat >conftest.$ac_ext <<_ACEOF -#line 10605 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default +static long int longval () { return (long int) (sizeof (long long)); } +static unsigned long int ulongval () { return (long int) (sizeof (long long)); } +#include +#include int main () { -FILE *f = fopen ("conftest.val", "w"); -if (!f) - exit (1); -fprintf (f, "%d", (sizeof (long long))); -fclose (f); + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (long long))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (long long)))) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (long long)))) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:10621: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:10624: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10626: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:10629: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long_long=`cat conftest.val` else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute sizeof (long long) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } + else + ac_cv_sizeof_long_long=0 + fi fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long_long=0 fi -fi -echo "$as_me:10645: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 -cat >>confdefs.h <&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -EOF +_ACEOF -echo "$as_me:10651: checking for u_int" >&5 -echo $ECHO_N "checking for u_int... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for u_int" >&5 +$as_echo_n "checking for u_int... " >&6; } if test "${ac_cv_type_u_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10657 "configure" -#include "confdefs.h" + ac_cv_type_u_int=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_int *) 0) - return 0; if (sizeof (u_int)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10672: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10675: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10678: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_int))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10681: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_int=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_int=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_int=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10691: result: $ac_cv_type_u_int" >&5 -echo "${ECHO_T}$ac_cv_type_u_int" >&6 -if test $ac_cv_type_u_int = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +$as_echo "$ac_cv_type_u_int" >&6; } +if test "x$ac_cv_type_u_int" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_int unsigned int -EOF +_ACEOF fi -echo "$as_me:10703: checking for u_long" >&5 -echo $ECHO_N "checking for u_long... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for u_long" >&5 +$as_echo_n "checking for u_long... " >&6; } if test "${ac_cv_type_u_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10709 "configure" -#include "confdefs.h" + ac_cv_type_u_long=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_long *) 0) - return 0; if (sizeof (u_long)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10724: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10727: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10730: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_long))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10733: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_long=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_long=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_long=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10743: result: $ac_cv_type_u_long" >&5 -echo "${ECHO_T}$ac_cv_type_u_long" >&6 -if test $ac_cv_type_u_long = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +$as_echo "$ac_cv_type_u_long" >&6; } +if test "x$ac_cv_type_u_long" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_long unsigned long -EOF +_ACEOF fi + + if test "$ac_cv_sizeof_short" = 2; then - echo "$as_me:10756: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 +$as_echo_n "checking for bits16_t... " >&6; } if test "${ac_cv_type_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10762 "configure" -#include "confdefs.h" + ac_cv_type_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits16_t *) 0) - return 0; if (sizeof (bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10777: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10780: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10783: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10786: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10796: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 -if test $ac_cv_type_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +$as_echo "$ac_cv_type_bits16_t" >&6; } +if test "x$ac_cv_type_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits16_t short -EOF +_ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - echo "$as_me:10809: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 +$as_echo_n "checking for bits16_t... " >&6; } if test "${ac_cv_type_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10815 "configure" -#include "confdefs.h" + ac_cv_type_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits16_t *) 0) - return 0; if (sizeof (bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10830: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10833: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10836: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10839: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10849: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 -if test $ac_cv_type_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +$as_echo "$ac_cv_type_bits16_t" >&6; } +if test "x$ac_cv_type_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits16_t char -EOF +_ACEOF fi else - echo "$as_me:10862: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 +$as_echo_n "checking for bits16_t... " >&6; } if test "${ac_cv_type_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10868 "configure" -#include "confdefs.h" + ac_cv_type_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits16_t *) 0) - return 0; if (sizeof (bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10883: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10886: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10889: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10892: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10902: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 -if test $ac_cv_type_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +$as_echo "$ac_cv_type_bits16_t" >&6; } +if test "x$ac_cv_type_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits16_t short -EOF +_ACEOF fi fi + if test "$ac_cv_sizeof_short" = 2; then - echo "$as_me:10917: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +$as_echo_n "checking for u_bits16_t... " >&6; } if test "${ac_cv_type_u_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10923 "configure" -#include "confdefs.h" + ac_cv_type_u_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits16_t *) 0) - return 0; if (sizeof (u_bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10938: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10941: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10944: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10947: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:10957: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 -if test $ac_cv_type_u_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +$as_echo "$ac_cv_type_u_bits16_t" >&6; } +if test "x$ac_cv_type_u_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits16_t unsigned short -EOF +_ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - echo "$as_me:10970: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +$as_echo_n "checking for u_bits16_t... " >&6; } if test "${ac_cv_type_u_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 10976 "configure" -#include "confdefs.h" + ac_cv_type_u_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits16_t *) 0) - return 0; if (sizeof (u_bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10991: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:10994: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10997: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11000: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11010: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 -if test $ac_cv_type_u_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +$as_echo "$ac_cv_type_u_bits16_t" >&6; } +if test "x$ac_cv_type_u_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits16_t unsigned char -EOF +_ACEOF fi else - echo "$as_me:11023: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +$as_echo_n "checking for u_bits16_t... " >&6; } if test "${ac_cv_type_u_bits16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11029 "configure" -#include "confdefs.h" + ac_cv_type_u_bits16_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits16_t *) 0) - return 0; if (sizeof (u_bits16_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11044: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11047: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11050: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits16_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11053: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits16_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits16_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits16_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11063: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 -if test $ac_cv_type_u_bits16_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +$as_echo "$ac_cv_type_u_bits16_t" >&6; } +if test "x$ac_cv_type_u_bits16_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits16_t unsigned short -EOF +_ACEOF fi fi + if test "$ac_cv_sizeof_int" = 4; then - echo "$as_me:11078: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 +$as_echo_n "checking for bits32_t... " >&6; } if test "${ac_cv_type_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11084 "configure" -#include "confdefs.h" + ac_cv_type_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits32_t *) 0) - return 0; if (sizeof (bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11099: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11102: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11105: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11108: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11118: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 -if test $ac_cv_type_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +$as_echo "$ac_cv_type_bits32_t" >&6; } +if test "x$ac_cv_type_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits32_t int -EOF +_ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - echo "$as_me:11131: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 +$as_echo_n "checking for bits32_t... " >&6; } if test "${ac_cv_type_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11137 "configure" -#include "confdefs.h" + ac_cv_type_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits32_t *) 0) - return 0; if (sizeof (bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11152: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11155: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11158: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11161: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11171: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 -if test $ac_cv_type_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +$as_echo "$ac_cv_type_bits32_t" >&6; } +if test "x$ac_cv_type_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits32_t long -EOF +_ACEOF fi else - echo "$as_me:11184: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 +$as_echo_n "checking for bits32_t... " >&6; } if test "${ac_cv_type_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11190 "configure" -#include "confdefs.h" + ac_cv_type_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits32_t *) 0) - return 0; if (sizeof (bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11205: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11208: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11211: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11214: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11224: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 -if test $ac_cv_type_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +$as_echo "$ac_cv_type_bits32_t" >&6; } +if test "x$ac_cv_type_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits32_t int -EOF +_ACEOF fi fi + if test "$ac_cv_sizeof_int" = 4; then - echo "$as_me:11239: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +$as_echo_n "checking for u_bits32_t... " >&6; } if test "${ac_cv_type_u_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11245 "configure" -#include "confdefs.h" + ac_cv_type_u_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits32_t *) 0) - return 0; if (sizeof (u_bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11260: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11263: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11266: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11269: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11279: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 -if test $ac_cv_type_u_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +$as_echo "$ac_cv_type_u_bits32_t" >&6; } +if test "x$ac_cv_type_u_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits32_t unsigned int -EOF +_ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - echo "$as_me:11292: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +$as_echo_n "checking for u_bits32_t... " >&6; } if test "${ac_cv_type_u_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11298 "configure" -#include "confdefs.h" + ac_cv_type_u_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits32_t *) 0) - return 0; if (sizeof (u_bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11313: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11316: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11319: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11322: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11332: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 -if test $ac_cv_type_u_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +$as_echo "$ac_cv_type_u_bits32_t" >&6; } +if test "x$ac_cv_type_u_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits32_t unsigned long -EOF +_ACEOF fi else - echo "$as_me:11345: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +$as_echo_n "checking for u_bits32_t... " >&6; } if test "${ac_cv_type_u_bits32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11351 "configure" -#include "confdefs.h" + ac_cv_type_u_bits32_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((u_bits32_t *) 0) - return 0; if (sizeof (u_bits32_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11366: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11369: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11372: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((u_bits32_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11375: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_bits32_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_u_bits32_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_bits32_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11385: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 -if test $ac_cv_type_u_bits32_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +$as_echo "$ac_cv_type_u_bits32_t" >&6; } +if test "x$ac_cv_type_u_bits32_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define u_bits32_t unsigned int -EOF +_ACEOF fi fi + if test "$ac_cv_sizeof_char_p" = 8; then - echo "$as_me:11400: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 +$as_echo_n "checking for bits64_t... " >&6; } if test "${ac_cv_type_bits64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11406 "configure" -#include "confdefs.h" + ac_cv_type_bits64_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits64_t *) 0) - return 0; if (sizeof (bits64_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11421: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11424: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11427: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits64_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11430: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits64_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits64_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits64_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11440: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 -if test $ac_cv_type_bits64_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +$as_echo "$ac_cv_type_bits64_t" >&6; } +if test "x$ac_cv_type_bits64_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits64_t char * -EOF +_ACEOF fi elif test "$ac_cv_sizeof_double" = 8; then - echo "$as_me:11453: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 +$as_echo_n "checking for bits64_t... " >&6; } if test "${ac_cv_type_bits64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11459 "configure" -#include "confdefs.h" + ac_cv_type_bits64_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits64_t *) 0) - return 0; if (sizeof (bits64_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11474: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11477: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11480: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits64_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11483: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits64_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits64_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits64_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11493: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 -if test $ac_cv_type_bits64_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +$as_echo "$ac_cv_type_bits64_t" >&6; } +if test "x$ac_cv_type_bits64_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits64_t double -EOF +_ACEOF fi elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then - echo "$as_me:11506: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 +$as_echo_n "checking for bits64_t... " >&6; } if test "${ac_cv_type_bits64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11512 "configure" -#include "confdefs.h" + ac_cv_type_bits64_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits64_t *) 0) - return 0; if (sizeof (bits64_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11527: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11530: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11533: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits64_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11536: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits64_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits64_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits64_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11546: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 -if test $ac_cv_type_bits64_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +$as_echo "$ac_cv_type_bits64_t" >&6; } +if test "x$ac_cv_type_bits64_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits64_t long long -EOF +_ACEOF fi elif test "$ac_cv_sizeof_long" = 8; then - echo "$as_me:11559: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 +$as_echo_n "checking for bits64_t... " >&6; } if test "${ac_cv_type_bits64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11565 "configure" -#include "confdefs.h" + ac_cv_type_bits64_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits64_t *) 0) - return 0; if (sizeof (bits64_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11580: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11583: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11586: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits64_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11589: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits64_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits64_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits64_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11599: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 -if test $ac_cv_type_bits64_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +$as_echo "$ac_cv_type_bits64_t" >&6; } +if test "x$ac_cv_type_bits64_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits64_t long -EOF +_ACEOF fi else - echo "$as_me:11612: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 +$as_echo_n "checking for bits64_t... " >&6; } if test "${ac_cv_type_bits64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11618 "configure" -#include "confdefs.h" + ac_cv_type_bits64_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((bits64_t *) 0) - return 0; if (sizeof (bits64_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11633: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11636: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11639: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((bits64_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11642: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_bits64_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_bits64_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_bits64_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11652: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 -if test $ac_cv_type_bits64_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +$as_echo "$ac_cv_type_bits64_t" >&6; } +if test "x$ac_cv_type_bits64_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define bits64_t double -EOF +_ACEOF fi fi + + if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then - echo "$as_me:11667: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +$as_echo_n "checking for ptrdiff_t... " >&6; } if test "${ac_cv_type_ptrdiff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11673 "configure" -#include "confdefs.h" + ac_cv_type_ptrdiff_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((ptrdiff_t *) 0) - return 0; if (sizeof (ptrdiff_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11688: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11691: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11694: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((ptrdiff_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11697: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ptrdiff_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ptrdiff_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ptrdiff_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11707: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +$as_echo "$ac_cv_type_ptrdiff_t" >&6; } +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define ptrdiff_t int -EOF +_ACEOF fi elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then - echo "$as_me:11720: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +$as_echo_n "checking for ptrdiff_t... " >&6; } if test "${ac_cv_type_ptrdiff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11726 "configure" -#include "confdefs.h" + ac_cv_type_ptrdiff_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((ptrdiff_t *) 0) - return 0; if (sizeof (ptrdiff_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11741: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11744: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11747: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((ptrdiff_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11750: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ptrdiff_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ptrdiff_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ptrdiff_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11760: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +$as_echo "$ac_cv_type_ptrdiff_t" >&6; } +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define ptrdiff_t long -EOF +_ACEOF fi elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then - echo "$as_me:11773: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +$as_echo_n "checking for ptrdiff_t... " >&6; } if test "${ac_cv_type_ptrdiff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11779 "configure" -#include "confdefs.h" + ac_cv_type_ptrdiff_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((ptrdiff_t *) 0) - return 0; if (sizeof (ptrdiff_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11794: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11797: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11800: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((ptrdiff_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11803: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ptrdiff_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ptrdiff_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ptrdiff_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11813: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +$as_echo "$ac_cv_type_ptrdiff_t" >&6; } +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define ptrdiff_t long long -EOF +_ACEOF fi else - echo "$as_me:11826: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +$as_echo_n "checking for ptrdiff_t... " >&6; } if test "${ac_cv_type_ptrdiff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line 11832 "configure" -#include "confdefs.h" + ac_cv_type_ptrdiff_t=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () { -if ((ptrdiff_t *) 0) - return 0; if (sizeof (ptrdiff_t)) - return 0; + return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11847: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11850: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11853: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if (sizeof ((ptrdiff_t))) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:11856: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ptrdiff_t=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ptrdiff_t=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ptrdiff_t=yes fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -echo "$as_me:11866: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +$as_echo "$ac_cv_type_ptrdiff_t" >&6; } +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : else -cat >>confdefs.h <>confdefs.h <<_ACEOF #define ptrdiff_t int -EOF +_ACEOF fi fi -echo "$as_me:11880: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } if test "${ac_cv_header_stat_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11886 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#if defined(S_ISBLK) && defined(S_IFDIR) -# if S_ISBLK (S_IFDIR) -You lose. -# endif +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif -#if defined(S_ISBLK) && defined(S_IFCHR) -# if S_ISBLK (S_IFCHR) -You lose. -# 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) -# if S_ISLNK (S_IFREG) -You lose. -# 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) -# if S_ISSOCK (S_IFREG) -You lose. -# endif +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "You lose" >/dev/null 2>&1; then - ac_cv_header_stat_broken=yes -else +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stat_broken=no -fi -rm -f conftest* +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_header_stat_broken=yes fi -echo "$as_me:11925: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +$as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define STAT_MACROS_BROKEN 1 -EOF +_ACEOF fi -echo "$as_me:11935: checking whether #! works in shell scripts" >&5 -echo $ECHO_N "checking whether #! works in shell scripts... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 +$as_echo_n "checking whether #! works in shell scripts... " >&6; } if test "${ac_cv_sys_interpreter+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else echo '#! /bin/cat exit 69 ' >conftest chmod u+x conftest -(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null 2>&1) if test $? -ne 69; then ac_cv_sys_interpreter=yes else @@ -11949,26 +25087,29 @@ else fi rm -f conftest fi -echo "$as_me:11952: result: $ac_cv_sys_interpreter" >&5 -echo "${ECHO_T}$ac_cv_sys_interpreter" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +$as_echo "$ac_cv_sys_interpreter" >&6; } interpval=$ac_cv_sys_interpreter if test $ac_cv_sys_interpreter = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_HASH_BANG_EXEC 1 -EOF +_ACEOF fi if test "$ac_cv_func_lstat" = "no"; then -echo "$as_me:11964: checking for lstat" >&5 -echo $ECHO_N "checking for lstat... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for lstat" >&5 +$as_echo_n "checking for lstat... " >&6; } if test "${bash_cv_func_lstat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11970 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -11982,49 +25123,162 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11985: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:11988: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11991: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11994: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_func_lstat=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_func_lstat=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_func_lstat=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:12004: result: $bash_cv_func_lstat" >&5 -echo "${ECHO_T}$bash_cv_func_lstat" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +$as_echo "$bash_cv_func_lstat" >&6; } if test $bash_cv_func_lstat = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_LSTAT 1 -EOF +_ACEOF fi fi -echo "$as_me:12015: checking if dup2 fails to clear the close-on-exec flag" >&5 -echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 -if test "${bash_cv_dup2_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +$as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } +if test "${bash_cv_func_ctype_nonascii+set}" = set; then + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:12021: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} + bash_cv_func_ctype_nonascii=no + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_ctype_nonascii=yes +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_ctype_nonascii=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +$as_echo "$bash_cv_func_ctype_nonascii" >&6; } +if test $bash_cv_func_ctype_nonascii = yes; then +cat >>confdefs.h <<\_ACEOF +#define CTYPE_NON_ASCII 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +$as_echo_n "checking if dup2 fails to clear the close-on-exec flag... " >&6; } +if test "${bash_cv_dup2_broken+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then + { $as_echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} bash_cv_dup2_broken=no else cat >conftest.$ac_ext <<_ACEOF -#line 12026 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -12044,50 +25298,70 @@ main() _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:12047: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:12050: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12052: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:12055: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_dup2_broken=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_dup2_broken=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:12069: result: $bash_cv_dup2_broken" >&5 -echo "${ECHO_T}$bash_cv_dup2_broken" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +$as_echo "$bash_cv_dup2_broken" >&6; } if test $bash_cv_dup2_broken = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define DUP2_BROKEN 1 -EOF +_ACEOF fi -echo "$as_me:12078: checking whether pgrps need synchronization" >&5 -echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +$as_echo_n "checking whether pgrps need synchronization... " >&6; } if test "${bash_cv_pgrp_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:12084: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} bash_cv_pgrp_pipe=no else cat >conftest.$ac_ext <<_ACEOF -#line 12089 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef HAVE_UNISTD_H # include @@ -12139,46 +25413,66 @@ main() _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:12142: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:12145: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12147: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:12150: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_pgrp_pipe=no else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_pgrp_pipe=yes fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:12164: result: $bash_cv_pgrp_pipe" >&5 -echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +$as_echo "$bash_cv_pgrp_pipe" >&6; } if test $bash_cv_pgrp_pipe = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define PGRP_PIPE 1 -EOF +_ACEOF fi -echo "$as_me:12173: checking for type of signal functions" >&5 -echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for type of signal functions" >&5 +$as_echo_n "checking for type of signal functions... " >&6; } if test "${bash_cv_signal_vintage+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12180 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -12195,25 +25489,38 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12198: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:12201: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12204: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12207: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_signal_vintage=posix else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF -#line 12215 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -12227,25 +25534,38 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12230: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:12233: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12236: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12239: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_signal_vintage=4.2bsd else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF -#line 12247 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include RETSIGTYPE foo() { } @@ -12262,61 +25582,84 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12265: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:12268: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12271: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12274: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_signal_vintage=svr3 else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_signal_vintage=v7 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + bash_cv_signal_vintage=v7 fi -echo "$as_me:12293: result: $bash_cv_signal_vintage" >&5 -echo "${ECHO_T}$bash_cv_signal_vintage" >&6 +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +$as_echo "$bash_cv_signal_vintage" >&6; } if test "$bash_cv_signal_vintage" = posix; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_SIGNALS 1 -EOF +_ACEOF elif test "$bash_cv_signal_vintage" = "4.2bsd"; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_BSD_SIGNALS 1 -EOF +_ACEOF elif test "$bash_cv_signal_vintage" = svr3; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_USG_SIGHOLD 1 -EOF +_ACEOF fi -echo "$as_me:12312: checking for sys_errlist and sys_nerr" >&5 -echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +$as_echo_n "checking for sys_errlist and sys_nerr... " >&6; } if test "${bash_cv_sys_errlist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12318 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -12329,54 +25672,71 @@ extern char *sys_errlist[]; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12332: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:12335: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12338: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12341: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_sys_errlist=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_sys_errlist=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_sys_errlist=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:12351: result: $bash_cv_sys_errlist" >&5 -echo "${ECHO_T}$bash_cv_sys_errlist" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +$as_echo "$bash_cv_sys_errlist" >&6; } if test $bash_cv_sys_errlist = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_ERRLIST 1 -EOF +_ACEOF fi -echo "$as_me:12360: checking for sys_siglist in system C library" >&5 -echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +$as_echo_n "checking for sys_siglist in system C library... " >&6; } if test "${bash_cv_sys_siglist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:12366: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} bash_cv_sys_siglist=no else cat >conftest.$ac_ext <<_ACEOF -#line 12371 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #ifdef HAVE_UNISTD_H #include #endif -#ifndef SYS_SIGLIST_DECLARED +#if !HAVE_DECL_SYS_SIGLIST extern char *sys_siglist[]; #endif main() @@ -12386,44 +25746,63 @@ exit(msg == 0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:12389: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:12392: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12394: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:12397: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_sys_siglist=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_sys_siglist=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:12410: result: $bash_cv_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_sys_siglist" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +$as_echo "$bash_cv_sys_siglist" >&6; } if test $bash_cv_sys_siglist = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST 1 -EOF +_ACEOF fi -echo "$as_me:12419: checking for _sys_siglist in signal.h or unistd.h" >&5 -echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +$as_echo_n "checking for _sys_siglist in signal.h or unistd.h... " >&6; } if test "${bash_cv_decl_under_sys_siglist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12425 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -12439,47 +25818,59 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:12442: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:12445: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12448: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12451: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_decl_under_sys_siglist=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_decl_under_sys_siglist=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_decl_under_sys_siglist=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:12461: result: $bash_cv_decl_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_decl_under_sys_siglist" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +$as_echo "$bash_cv_decl_under_sys_siglist" >&6; } if test $bash_cv_decl_under_sys_siglist = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define UNDER_SYS_SIGLIST_DECLARED 1 -EOF +_ACEOF fi -echo "$as_me:12470: checking for _sys_siglist in system C library" >&5 -echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +$as_echo_n "checking for _sys_siglist in system C library... " >&6; } if test "${bash_cv_under_sys_siglist+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:12476: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} bash_cv_under_sys_siglist=no else cat >conftest.$ac_ext <<_ACEOF -#line 12481 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -12496,44 +25887,64 @@ exit(msg == 0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:12499: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:12502: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12504: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:12507: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_under_sys_siglist=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_under_sys_siglist=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:12520: result: $bash_cv_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_under_sys_siglist" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +$as_echo "$bash_cv_under_sys_siglist" >&6; } if test $bash_cv_under_sys_siglist = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_UNDER_SYS_SIGLIST 1 -EOF +_ACEOF fi -echo "$as_me:12529: checking whether signal handlers are of type void" >&5 -echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +$as_echo_n "checking whether signal handlers are of type void... " >&6; } if test "${bash_cv_void_sighandler+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12535 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #ifdef signal @@ -12552,42 +25963,55 @@ int i; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:12555: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:12558: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12561: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12564: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_void_sighandler=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_void_sighandler=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_void_sighandler=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:12574: result: $bash_cv_void_sighandler" >&5 -echo "${ECHO_T}$bash_cv_void_sighandler" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +$as_echo "$bash_cv_void_sighandler" >&6; } if test $bash_cv_void_sighandler = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define VOID_SIGHANDLER 1 -EOF +_ACEOF fi -echo "$as_me:12583: checking for clock_t" >&5 -echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for clock_t" >&5 +$as_echo_n "checking for clock_t... " >&6; } if test "${bash_cv_type_clock_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12589 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12600,7 +26024,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "clock_t" >/dev/null 2>&1; then + $EGREP "clock_t" >/dev/null 2>&1; then bash_cv_type_clock_t=yes else bash_cv_type_clock_t=no @@ -12609,24 +26033,29 @@ rm -f conftest* fi -echo "$as_me:12612: result: $bash_cv_type_clock_t" >&5 -echo "${ECHO_T}$bash_cv_type_clock_t" >&6 +{ $as_echo "$as_me:$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 <>confdefs.h <<_ACEOF #define clock_t long -EOF +_ACEOF fi -echo "$as_me:12622: checking for sigset_t" >&5 -echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for sigset_t" >&5 +$as_echo_n "checking for sigset_t... " >&6; } if test "${bash_cv_type_sigset_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12628 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12639,7 +26068,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "sigset_t" >/dev/null 2>&1; then + $EGREP "sigset_t" >/dev/null 2>&1; then bash_cv_type_sigset_t=yes else bash_cv_type_sigset_t=no @@ -12648,24 +26077,29 @@ rm -f conftest* fi -echo "$as_me:12651: result: $bash_cv_type_sigset_t" >&5 -echo "${ECHO_T}$bash_cv_type_sigset_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +$as_echo "$bash_cv_type_sigset_t" >&6; } if test $bash_cv_type_sigset_t = no; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define sigset_t int -EOF +_ACEOF fi -echo "$as_me:12661: checking for quad_t" >&5 -echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for quad_t" >&5 +$as_echo_n "checking for quad_t... " >&6; } if test "${bash_cv_type_quad_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12667 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12675,9 +26109,10 @@ else #include #endif + _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "quad_t" >/dev/null 2>&1; then + $EGREP "quad_t" >/dev/null 2>&1; then bash_cv_type_quad_t=yes else bash_cv_type_quad_t=no @@ -12686,29 +26121,34 @@ rm -f conftest* fi -echo "$as_me:12689: result: $bash_cv_type_quad_t" >&5 -echo "${ECHO_T}$bash_cv_type_quad_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +$as_echo "$bash_cv_type_quad_t" >&6; } if test $bash_cv_type_quad_t = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_QUAD_T 1 -EOF +_ACEOF fi if test $bash_cv_type_quad_t = no; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define quad_t long -EOF +_ACEOF fi -echo "$as_me:12704: checking for intmax_t" >&5 -echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } if test "${bash_cv_type_intmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12710 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12718,9 +26158,10 @@ else #include #endif + _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "intmax_t" >/dev/null 2>&1; then + $EGREP "intmax_t" >/dev/null 2>&1; then bash_cv_type_intmax_t=yes else bash_cv_type_intmax_t=no @@ -12729,24 +26170,29 @@ rm -f conftest* fi -echo "$as_me:12732: result: $bash_cv_type_intmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_intmax_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +$as_echo "$bash_cv_type_intmax_t" >&6; } if test $bash_cv_type_intmax_t = no; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define intmax_t $bash_cv_type_long_long -EOF +_ACEOF fi -echo "$as_me:12742: checking for uintmax_t" >&5 -echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for uintmax_t" >&5 +$as_echo_n "checking for uintmax_t... " >&6; } if test "${bash_cv_type_uintmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12748 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12756,9 +26202,10 @@ else #include #endif + _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uintmax_t" >/dev/null 2>&1; then + $EGREP "uintmax_t" >/dev/null 2>&1; then bash_cv_type_uintmax_t=yes else bash_cv_type_uintmax_t=no @@ -12767,26 +26214,30 @@ rm -f conftest* fi -echo "$as_me:12770: result: $bash_cv_type_uintmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +$as_echo "$bash_cv_type_uintmax_t" >&6; } if test $bash_cv_type_uintmax_t = no; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define uintmax_t $bash_cv_type_unsigned_long_long -EOF +_ACEOF fi if test "$ac_cv_header_sys_socket_h" = "yes"; then -echo "$as_me:12782: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } if test "${bash_cv_type_socklen_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12788 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if STDC_HEADERS #include @@ -12799,7 +26250,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "socklen_t" >/dev/null 2>&1; then + $EGREP "socklen_t" >/dev/null 2>&1; then bash_cv_type_socklen_t=yes else bash_cv_type_socklen_t=no @@ -12808,30 +26259,33 @@ rm -f conftest* fi -echo "$as_me:12811: result: $bash_cv_type_socklen_t" >&5 -echo "${ECHO_T}$bash_cv_type_socklen_t" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +$as_echo "$bash_cv_type_socklen_t" >&6; } if test $bash_cv_type_socklen_t = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_SOCKLEN_T 1 -EOF +_ACEOF fi if test $bash_cv_type_socklen_t = no; then - cat >>confdefs.h <>confdefs.h <<_ACEOF #define socklen_t int -EOF +_ACEOF fi fi -echo "$as_me:12827: checking for size and type of struct rlimit fields" >&5 -echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +$as_echo_n "checking for size and type of struct rlimit fields... " >&6; } if test "${bash_cv_type_rlimit+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12833 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -12843,30 +26297,40 @@ rlim_t xxx; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:12846: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:12849: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12852: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12855: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_type_rlimit=rlim_t else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + if test "$cross_compiling" = yes; then - { echo "$as_me:12863: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 -echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} bash_cv_type_rlimit=long else cat >conftest.$ac_ext <<_ACEOF -#line 12868 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -12882,56 +26346,79 @@ main() } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:12885: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:12888: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12890: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:12893: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_type_rlimit=quad_t else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_type_rlimit=long fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -fi -rm -f conftest.$ac_objext conftest.$ac_ext + fi -echo "$as_me:12909: result: $bash_cv_type_rlimit" >&5 -echo "${ECHO_T}$bash_cv_type_rlimit" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +$as_echo "$bash_cv_type_rlimit" >&6; } if test $bash_cv_type_rlimit = quad_t; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define RLIMTYPE quad_t -EOF +_ACEOF elif test $bash_cv_type_rlimit = rlim_t; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define RLIMTYPE rlim_t -EOF +_ACEOF fi -echo "$as_me:12923: checking for struct termios.c_line" >&5 -echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +$as_echo_n "checking for struct termios.c_line... " >&6; } if test "${ac_cv_member_struct_termios_c_line+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12929 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include + int main () { @@ -12943,46 +26430,107 @@ return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:12946: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:12949: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12952: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12955: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_termios_c_line=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_termios_c_line=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + + +int +main () +{ +static struct termios ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_termios_c_line=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_termios_c_line=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:12965: result: $ac_cv_member_struct_termios_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 -if test $ac_cv_member_struct_termios_c_line = yes; then - cat >>confdefs.h <<\EOF + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +$as_echo "$ac_cv_member_struct_termios_c_line" >&6; } +if test "x$ac_cv_member_struct_termios_c_line" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define TERMIOS_LDISC 1 -EOF +_ACEOF fi -echo "$as_me:12974: checking for struct termio.c_line" >&5 -echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +$as_echo_n "checking for struct termio.c_line... " >&6; } if test "${ac_cv_member_struct_termio_c_line+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 12980 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include + int main () { @@ -12994,42 +26542,102 @@ return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:12997: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13000: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13003: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13006: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_termio_c_line=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_termio_c_line=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + + +int +main () +{ +static struct termio ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_termio_c_line=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_termio_c_line=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13016: result: $ac_cv_member_struct_termio_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 -if test $ac_cv_member_struct_termio_c_line = yes; then - cat >>confdefs.h <<\EOF + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +$as_echo "$ac_cv_member_struct_termio_c_line" >&6; } +if test "x$ac_cv_member_struct_termio_c_line" = x""yes; then + cat >>confdefs.h <<\_ACEOF #define TERMIO_LDISC 1 -EOF +_ACEOF fi -echo "$as_me:13025: checking if struct dirent has a d_ino member" >&5 -echo $ECHO_N "checking if struct dirent has a d_ino member... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +$as_echo_n "checking for struct dirent.d_ino... " >&6; } if test "${bash_cv_dirent_has_dino+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13031 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -13062,43 +26670,55 @@ struct dirent d; int z; z = d.d_ino; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13065: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13068: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13071: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13074: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_dirent_has_dino=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_dirent_has_dino=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_dirent_has_dino=no fi -echo "$as_me:13085: result: $bash_cv_dirent_has_dino" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +$as_echo "$bash_cv_dirent_has_dino" >&6; } if test $bash_cv_dirent_has_dino = yes; then -cat >>confdefs.h <<\EOF -#define STRUCT_DIRENT_HAS_D_INO 1 -EOF +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_DIRENT_D_INO 1 +_ACEOF fi -echo "$as_me:13094: checking if struct dirent has a d_fileno member" >&5 -echo $ECHO_N "checking if struct dirent has a d_fileno member... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +$as_echo_n "checking for struct dirent.d_fileno... " >&6; } if test "${bash_cv_dirent_has_d_fileno+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13100 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -13131,43 +26751,135 @@ struct dirent d; int z; z = d.d_fileno; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13134: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13137: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13140: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13143: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_dirent_has_d_fileno=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_dirent_has_d_fileno=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_dirent_has_d_fileno=no fi -echo "$as_me:13154: result: $bash_cv_dirent_has_d_fileno" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +$as_echo "$bash_cv_dirent_has_d_fileno" >&6; } if test $bash_cv_dirent_has_d_fileno = yes; then -cat >>confdefs.h <<\EOF -#define STRUCT_DIRENT_HAS_D_FILENO 1 -EOF +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_DIRENT_D_FILENO 1 +_ACEOF fi -echo "$as_me:13163: checking for struct winsize in sys/ioctl.h and termios.h" >&5 -echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 -if test "${bash_cv_struct_winsize_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +$as_echo_n "checking for struct dirent.d_namlen... " >&6; } +if test "${bash_cv_dirent_has_d_namlen+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13169 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_namlen; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bash_cv_dirent_has_d_namlen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_dirent_has_d_namlen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +$as_echo "$bash_cv_dirent_has_d_namlen" >&6; } +if test $bash_cv_dirent_has_d_namlen = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_DIRENT_D_NAMLEN 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +$as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } +if test "${bash_cv_struct_winsize_header+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -13179,24 +26891,34 @@ struct winsize x; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13182: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13185: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13188: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13191: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_struct_winsize_header=ioctl_h else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF -#line 13198 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -13208,72 +26930,87 @@ struct winsize x; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13211: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13214: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13217: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13220: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_struct_winsize_header=termios_h else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_struct_winsize_header=other + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_struct_winsize_header=other fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - echo "$as_me:13235: result: sys/ioctl.h" >&5 -echo "${ECHO_T}sys/ioctl.h" >&6 - cat >>confdefs.h <<\EOF + { $as_echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +$as_echo "sys/ioctl.h" >&6; } + cat >>confdefs.h <<\_ACEOF #define STRUCT_WINSIZE_IN_SYS_IOCTL 1 -EOF +_ACEOF elif test $bash_cv_struct_winsize_header = termios_h; then - echo "$as_me:13242: result: termios.h" >&5 -echo "${ECHO_T}termios.h" >&6 - cat >>confdefs.h <<\EOF + { $as_echo "$as_me:$LINENO: result: termios.h" >&5 +$as_echo "termios.h" >&6; } + cat >>confdefs.h <<\_ACEOF #define STRUCT_WINSIZE_IN_TERMIOS 1 -EOF +_ACEOF else - echo "$as_me:13249: result: not found" >&5 -echo "${ECHO_T}not found" >&6 + { $as_echo "$as_me:$LINENO: result: not found" >&5 +$as_echo "not found" >&6; } fi -echo "$as_me:13253: checking for struct timeval in sys/time.h and time.h" >&5 -echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; } if test "${bash_cv_struct_timeval+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13260 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "struct timeval" >/dev/null 2>&1; then + $EGREP "struct timeval" >/dev/null 2>&1; then bash_cv_struct_timeval=yes else cat >conftest.$ac_ext <<_ACEOF -#line 13270 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "struct timeval" >/dev/null 2>&1; then + $EGREP "struct timeval" >/dev/null 2>&1; then bash_cv_struct_timeval=yes else bash_cv_struct_timeval=no @@ -13283,25 +27020,29 @@ rm -f conftest* fi rm -f conftest* + fi -echo "$as_me:13288: result: $bash_cv_struct_timeval" >&5 -echo "${ECHO_T}$bash_cv_struct_timeval" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +$as_echo "$bash_cv_struct_timeval" >&6; } if test $bash_cv_struct_timeval = yes; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_TIMEVAL 1 -EOF +_ACEOF fi -echo "$as_me:13297: checking for struct stat.st_blocks" >&5 -echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +$as_echo_n "checking for struct stat.st_blocks... " >&6; } if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13303 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default int main () @@ -13314,95 +27055,164 @@ return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13317: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13320: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13323: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13326: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_blocks=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_blocks=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:13336: result: $ac_cv_member_struct_stat_st_blocks" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 -if test $ac_cv_member_struct_stat_st_blocks = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (sizeof ac_aggr.st_blocks) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_stat_st_blocks=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_stat_st_blocks=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +$as_echo "$ac_cv_member_struct_stat_st_blocks" >&6; } +if test "x$ac_cv_member_struct_stat_st_blocks" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_BLOCKS 1 -EOF +_ACEOF + fi -echo "$as_me:13346: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13352 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int main () { -struct tm *tp; tp->tm_sec; +struct tm tm; + int *p = &tm.tm_sec; + return !p; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13366: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13369: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13372: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13375: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_struct_tm=time.h else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_struct_tm=sys/time.h + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_struct_tm=sys/time.h fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13385: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define TM_IN_SYS_TIME 1 -EOF +_ACEOF fi -echo "$as_me:13395: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +$as_echo_n "checking for struct tm.tm_zone... " >&6; } if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13401 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include <$ac_cv_struct_tm> + int main () { @@ -13414,102 +27224,298 @@ return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:13417: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:13420: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13423: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13426: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_tm_tm_zone=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_tm_tm_zone=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:13436: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 -if test $ac_cv_member_struct_tm_tm_zone = yes; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_tm_tm_zone=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_tm_tm_zone=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +$as_echo "$ac_cv_member_struct_tm_tm_zone" >&6; } +if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then + +cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_TM_TM_ZONE 1 -EOF +_ACEOF + fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_TM_ZONE 1 -EOF +_ACEOF else - echo "$as_me:13453: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6 -if test "${ac_cv_var_tzname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether tzname is declared" >&5 +$as_echo_n "checking whether tzname is declared... " >&6; } +if test "${ac_cv_have_decl_tzname+set}" = set; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 13459 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ + +int +main () +{ +#ifndef tzname + (void) tzname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_tzname=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 +$as_echo "$ac_cv_have_decl_tzname" >&6; } +if test "x$ac_cv_have_decl_tzname" = x""yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 0 +_ACEOF + + +fi + + + { $as_echo "$as_me:$LINENO: checking for tzname" >&5 +$as_echo_n "checking for tzname... " >&6; } +if test "${ac_cv_var_tzname+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; #endif int main () { -atoi(*tzname); +return tzname[0][0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13475: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:13478: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13481: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13484: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_var_tzname=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_var_tzname=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_var_tzname=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:13494: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +$as_echo "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_TZNAME 1 -EOF +_ACEOF fi fi -echo "$as_me:13505: checking for the existence of strsignal" >&5 -echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 -if test "${bash_cv_have_strsignal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +$as_echo_n "checking for struct timezone in sys/time.h and time.h... " >&6; } +if test "${bash_cv_struct_timezone+set}" = set; then + $as_echo_n "(cached) " >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes else cat >conftest.$ac_ext <<_ACEOF -#line 13511 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +$as_echo "$bash_cv_struct_timezone" >&6; } +if test $bash_cv_struct_timezone = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_TIMEZONE 1 +_ACEOF + +fi + + +{ $as_echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +$as_echo_n "checking for the existence of strsignal... " >&6; } +if test "${bash_cv_have_strsignal+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -13521,49 +27527,65 @@ char *s = (char *)strsignal(2); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13524: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:13527: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13530: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13533: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_have_strsignal=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_have_strsignal=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_have_strsignal=no fi -echo "$as_me:13544: result: $bash_cv_have_strsignal" >&5 -echo "${ECHO_T}$bash_cv_have_strsignal" >&6 +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +$as_echo "$bash_cv_have_strsignal" >&6; } if test $bash_cv_have_strsignal = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STRSIGNAL 1 -EOF +_ACEOF fi -echo "$as_me:13553: checking if opendir() opens non-directories" >&5 -echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +$as_echo_n "checking if opendir() opens non-directories... " >&6; } if test "${bash_cv_opendir_not_robust+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13559: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} bash_cv_opendir_not_robust=no else cat >conftest.$ac_ext <<_ACEOF -#line 13565 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -13589,66 +27611,85 @@ main() { DIR *dir; int fd, err; -err = mkdir("/tmp/bash-aclocal", 0700); +err = mkdir("bash-aclocal", 0700); if (err < 0) { perror("mkdir"); exit(1); } -unlink("/tmp/bash-aclocal/not_a_directory"); -fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +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("/tmp/bash-aclocal/not_a_directory"); -unlink("/tmp/bash-aclocal/not_a_directory"); -rmdir("/tmp/bash-aclocal"); +dir = opendir("bash-aclocal/not_a_directory"); +unlink("bash-aclocal/not_a_directory"); +rmdir("bash-aclocal"); exit (dir == 0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:13608: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:13611: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13613: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:13616: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_opendir_not_robust=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_opendir_not_robust=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13629: result: $bash_cv_opendir_not_robust" >&5 -echo "${ECHO_T}$bash_cv_opendir_not_robust" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +$as_echo "$bash_cv_opendir_not_robust" >&6; } if test $bash_cv_opendir_not_robust = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define OPENDIR_NOT_ROBUST 1 -EOF +_ACEOF fi -echo "$as_me:13638: checking whether ulimit can substitute for getdtablesize" >&5 -echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +$as_echo_n "checking whether ulimit can substitute for getdtablesize... " >&6; } if test "${bash_cv_ulimit_maxfds+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13644: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} bash_cv_ulimit_maxfds=no else cat >conftest.$ac_ext <<_ACEOF -#line 13650 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ main() { @@ -13658,50 +27699,157 @@ exit (maxfds == -1L); _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:13661: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:13664: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13666: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:13669: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_ulimit_maxfds=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_ulimit_maxfds=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13682: result: $bash_cv_ulimit_maxfds" >&5 -echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +$as_echo "$bash_cv_ulimit_maxfds" >&6; } if test $bash_cv_ulimit_maxfds = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define ULIMIT_MAXFDS 1 -EOF +_ACEOF fi -echo "$as_me:13691: checking to see if getenv can be redefined" >&5 -echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:$LINENO: checking whether fpurge is declared" >&5 +$as_echo_n "checking whether fpurge is declared... " >&6; } +if test "${ac_cv_have_decl_fpurge+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef fpurge + (void) fpurge; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_fpurge=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_fpurge=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fpurge" >&5 +$as_echo "$ac_cv_have_decl_fpurge" >&6; } +if test "x$ac_cv_have_decl_fpurge" = x""yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPURGE 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPURGE 0 +_ACEOF + + +fi + + + +{ $as_echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +$as_echo_n "checking to see if getenv can be redefined... " >&6; } if test "${bash_cv_getenv_redef+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13697: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 -echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +$as_echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} bash_cv_getenv_redef=yes else cat >conftest.$ac_ext <<_ACEOF -#line 13703 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef HAVE_UNISTD_H # include @@ -13736,152 +27884,156 @@ exit(s == 0); /* force optimizer to leave getenv in */ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:13739: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:13742: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13744: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:13747: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_getenv_redef=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_getenv_redef=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13760: result: $bash_cv_getenv_redef" >&5 -echo "${ECHO_T}$bash_cv_getenv_redef" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +$as_echo "$bash_cv_getenv_redef" >&6; } if test $bash_cv_getenv_redef = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define CAN_REDEFINE_GETENV 1 -EOF +_ACEOF fi if test "$ac_cv_func_getcwd" = "yes"; then -echo "$as_me:13770: checking if getcwd() calls popen()" >&5 -echo $ECHO_N "checking if getcwd() calls popen()... $ECHO_C" >&6 -if test "${bash_cv_getcwd_calls_popen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory with 0 size" >&5 +$as_echo_n "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; } +if test "${bash_cv_getcwd_malloc+set}" = set; then + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13776: WARNING: cannot check whether getcwd calls popen if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check whether getcwd calls popen if cross compiling -- defaulting to no" >&2;} - bash_cv_getcwd_calls_popen=no + { $as_echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;} + bash_cv_getcwd_malloc=no else cat >conftest.$ac_ext <<_ACEOF -#line 13782 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif -#ifndef __STDC__ -#ifndef const -#define const -#endif -#endif - -int popen_called; - -FILE * -popen(command, type) - const char *command; - const char *type; -{ - popen_called = 1; - return (FILE *)NULL; -} - -FILE *_popen(command, type) - const char *command; - const char *type; -{ - return (popen (command, type)); -} - -int -pclose(stream) -FILE *stream; -{ - return 0; -} - -int -_pclose(stream) -FILE *stream; -{ - return 0; -} - main() { - char lbuf[32]; - popen_called = 0; - getcwd(lbuf, 32); - exit (popen_called); + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:13838: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:13841: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13843: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:13846: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - bash_cv_getcwd_calls_popen=no + bash_cv_getcwd_malloc=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_getcwd_calls_popen=yes -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getcwd_malloc=no fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13859: result: $bash_cv_getcwd_calls_popen" >&5 -echo "${ECHO_T}$bash_cv_getcwd_calls_popen" >&6 -if test $bash_cv_getcwd_calls_popen = yes; then -cat >>confdefs.h <<\EOF + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +$as_echo "$bash_cv_getcwd_malloc" >&6; } +if test $bash_cv_getcwd_malloc = no; then +cat >>confdefs.h <<\_ACEOF #define GETCWD_BROKEN 1 -EOF +_ACEOF + +case " $LIBOBJS " in + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" + ;; +esac -LIBOBJS="$LIBOBJS getcwd.$ac_objext" fi fi -echo "$as_me:13871: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 -echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +$as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } if test "${bash_cv_func_sigsetjmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13877: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 -echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +$as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} bash_cv_func_sigsetjmp=missing else cat >conftest.$ac_ext <<_ACEOF -#line 13883 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef HAVE_UNISTD_H #include @@ -13922,50 +28074,70 @@ exit(1); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:13925: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:13928: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13930: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:13933: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_func_sigsetjmp=present else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_func_sigsetjmp=missing fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:13946: result: $bash_cv_func_sigsetjmp" >&5 -echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +$as_echo "$bash_cv_func_sigsetjmp" >&6; } if test $bash_cv_func_sigsetjmp = present; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_SIGSETJMP 1 -EOF +_ACEOF fi -echo "$as_me:13955: checking whether or not strcoll and strcmp differ" >&5 -echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +$as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } if test "${bash_cv_func_strcoll_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:13961: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} bash_cv_func_strcoll_broken=no else cat >conftest.$ac_ext <<_ACEOF -#line 13967 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if defined (HAVE_LOCALE_H) @@ -14004,46 +28176,69 @@ char *v[]; _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14007: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14010: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14012: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14015: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_func_strcoll_broken=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_func_strcoll_broken=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14028: result: $bash_cv_func_strcoll_broken" >&5 -echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +$as_echo "$bash_cv_func_strcoll_broken" >&6; } if test $bash_cv_func_strcoll_broken = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define STRCOLL_BROKEN 1 -EOF +_ACEOF fi + + if test "$ac_cv_func_putenv" = "yes"; then -echo "$as_me:14039: checking for standard-conformant putenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +$as_echo_n "checking for standard-conformant putenv declaration... " >&6; } if test "${bash_cv_std_putenv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14045 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS #include @@ -14069,51 +28264,69 @@ return (putenv == 0); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14072: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:14075: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14078: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14081: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_std_putenv=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_std_putenv=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_std_putenv=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:14092: result: $bash_cv_std_putenv" >&5 -echo "${ECHO_T}$bash_cv_std_putenv" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +$as_echo "$bash_cv_std_putenv" >&6; } if test $bash_cv_std_putenv = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STD_PUTENV 1 -EOF +_ACEOF fi else -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STD_PUTENV 1 -EOF +_ACEOF fi if test "$ac_cv_func_unsetenv" = "yes"; then -echo "$as_me:14109: checking for standard-conformant unsetenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +$as_echo_n "checking for standard-conformant unsetenv declaration... " >&6; } if test "${bash_cv_std_unsetenv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14115 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if STDC_HEADERS #include @@ -14139,56 +28352,72 @@ return (unsetenv == 0); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14142: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:14145: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14148: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14151: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then bash_cv_std_unsetenv=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_std_unsetenv=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_std_unsetenv=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:14162: result: $bash_cv_std_unsetenv" >&5 -echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +$as_echo "$bash_cv_std_unsetenv" >&6; } if test $bash_cv_std_unsetenv = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STD_UNSETENV 1 -EOF +_ACEOF fi else -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_STD_UNSETENV 1 -EOF +_ACEOF fi -echo "$as_me:14178: checking for printf floating point output in hex notation" >&5 -echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +$as_echo_n "checking for printf floating point output in hex notation... " >&6; } if test "${bash_cv_printf_a_format+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:14184: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} bash_cv_printf_a_format=no else cat >conftest.$ac_ext <<_ACEOF -#line 14190 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -14205,50 +28434,72 @@ main() _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14208: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14211: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14213: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14216: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_printf_a_format=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_printf_a_format=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14229: result: $bash_cv_printf_a_format" >&5 -echo "${ECHO_T}$bash_cv_printf_a_format" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +$as_echo "$bash_cv_printf_a_format" >&6; } if test $bash_cv_printf_a_format = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_PRINTF_A_FORMAT 1 -EOF +_ACEOF fi -echo "$as_me:14238: checking if signal handlers must be reinstalled when invoked" >&5 -echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 + + + +{ $as_echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +$as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:14244: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} bash_cv_must_reinstall_sighandlers=no else cat >conftest.$ac_ext <<_ACEOF -#line 14250 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H @@ -14295,50 +28546,70 @@ main() _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14298: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14301: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14303: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14306: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_must_reinstall_sighandlers=no else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_must_reinstall_sighandlers=yes fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14319: result: $bash_cv_must_reinstall_sighandlers" >&5 -echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +$as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } if test $bash_cv_must_reinstall_sighandlers = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define MUST_REINSTALL_SIGHANDLERS 1 -EOF +_ACEOF fi -echo "$as_me:14328: checking for presence of necessary job control definitions" >&5 -echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +$as_echo_n "checking for presence of necessary job control definitions... " >&6; } if test "${bash_cv_job_control_missing+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:14334: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 -echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 +$as_echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;} bash_cv_job_control_missing=missing else cat >conftest.$ac_ext <<_ACEOF -#line 14340 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #ifdef HAVE_SYS_WAIT_H @@ -14385,50 +28656,69 @@ exit(0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14388: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14391: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14393: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14396: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_job_control_missing=present else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_job_control_missing=missing fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14409: result: $bash_cv_job_control_missing" >&5 -echo "${ECHO_T}$bash_cv_job_control_missing" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +$as_echo "$bash_cv_job_control_missing" >&6; } if test $bash_cv_job_control_missing = missing; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define JOB_CONTROL_MISSING 1 -EOF +_ACEOF fi -echo "$as_me:14418: checking for presence of named pipes" >&5 -echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +$as_echo_n "checking for presence of named pipes... " >&6; } if test "${bash_cv_sys_named_pipes+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:14424: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 -echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +$as_echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} bash_cv_sys_named_pipes=missing else cat >conftest.$ac_ext <<_ACEOF -#line 14430 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -14452,105 +28742,81 @@ exit (1); #if defined (NeXT) exit (1); #endif -err = mkdir("/tmp/bash-aclocal", 0700); +err = mkdir("bash-aclocal", 0700); if (err < 0) { perror ("mkdir"); exit(1); } -fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); if (fd == -1) { - rmdir ("/tmp/bash-aclocal"); + rmdir ("bash-aclocal"); exit (1); } close(fd); -unlink ("/tmp/bash-aclocal/sh-np-autoconf"); -rmdir ("/tmp/bash-aclocal"); +unlink ("bash-aclocal/sh-np-autoconf"); +rmdir ("bash-aclocal"); exit(0); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14472: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14475: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14477: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14480: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_sys_named_pipes=present else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_sys_named_pipes=missing fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14493: result: $bash_cv_sys_named_pipes" >&5 -echo "${ECHO_T}$bash_cv_sys_named_pipes" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +$as_echo "$bash_cv_sys_named_pipes" >&6; } if test $bash_cv_sys_named_pipes = missing; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define NAMED_PIPES_MISSING 1 -EOF - -fi - -echo "$as_me:14502: checking POSIX termios" >&5 -echo $ECHO_N "checking POSIX termios... $ECHO_C" >&6 -if test "${ac_cv_sys_posix_termios+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 14508 "configure" -#include "confdefs.h" -#include -#include -#include -int -main () -{ -/* SunOS 4.0.3 has termios.h but not the library calls. */ - tcgetattr(0, 0); - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14523: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14526: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14529: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14532: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_posix_termios=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_sys_posix_termios=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:14542: result: $ac_cv_sys_posix_termios" >&5 -echo "${ECHO_T}$ac_cv_sys_posix_termios" >&6 -if test $ac_cv_sys_posix_termios = yes; then - echo "$as_me:14546: checking whether termios.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 +fi + + +{ $as_echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14552 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #ifdef TIOCGWINSZ @@ -14559,7 +28825,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then + $EGREP "yes" >/dev/null 2>&1; then ac_cv_sys_tiocgwinsz_in_termios_h=yes else ac_cv_sys_tiocgwinsz_in_termios_h=no @@ -14567,19 +28833,21 @@ fi rm -f conftest* fi -echo "$as_me:14570: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } -fi if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - echo "$as_me:14575: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14581 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #ifdef TIOCGWINSZ @@ -14588,7 +28856,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then + $EGREP "yes" >/dev/null 2>&1; then ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes else ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no @@ -14596,26 +28864,29 @@ fi rm -f conftest* fi -echo "$as_me:14599: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define GWINSZ_IN_SYS_IOCTL 1 -EOF +_ACEOF fi fi -echo "$as_me:14611: checking for TIOCSTAT in sys/ioctl.h" >&5 -echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14617 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -14627,43 +28898,54 @@ int x = TIOCSTAT; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:14630: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:14633: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14636: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14639: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_tiocstat_in_ioctl=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_tiocstat_in_ioctl=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_tiocstat_in_ioctl=no fi -echo "$as_me:14650: result: $bash_cv_tiocstat_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +$as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } if test $bash_cv_tiocstat_in_ioctl = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define TIOCSTAT_IN_SYS_IOCTL 1 -EOF +_ACEOF fi -echo "$as_me:14659: checking for FIONREAD in sys/ioctl.h" >&5 -echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +$as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } if test "${bash_cv_fionread_in_ioctl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14665 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include int @@ -14675,43 +28957,142 @@ int x = FIONREAD; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:14678: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:14681: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14684: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14687: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_fionread_in_ioctl=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_fionread_in_ioctl=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_fionread_in_ioctl=no fi -echo "$as_me:14698: result: $bash_cv_fionread_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +$as_echo "$bash_cv_fionread_in_ioctl" >&6; } if test $bash_cv_fionread_in_ioctl = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define FIONREAD_IN_SYS_IOCTL 1 -EOF +_ACEOF fi -echo "$as_me:14707: checking for speed_t in sys/types.h" >&5 -echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 -if test "${bash_cv_speed_t_in_sys_types+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +$as_echo_n "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; } +if test "${bash_cv_wcontinued_broken+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then + { $as_echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;} + bash_cv_wcontinued_broken=no + else cat >conftest.$ac_ext <<_ACEOF -#line 14713 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_wcontinued_broken=no +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_wcontinued_broken=yes +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +$as_echo "$bash_cv_wcontinued_broken" >&6; } +if test $bash_cv_wcontinued_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define WCONTINUED_BROKEN 1 +_ACEOF + +fi + + +{ $as_echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +$as_echo_n "checking for speed_t in sys/types.h... " >&6; } +if test "${bash_cv_speed_t_in_sys_types+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main () @@ -14722,43 +29103,54 @@ speed_t x; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:14725: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:14728: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14731: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14734: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_speed_t_in_sys_types=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_speed_t_in_sys_types=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bash_cv_speed_t_in_sys_types=no fi -echo "$as_me:14745: result: $bash_cv_speed_t_in_sys_types" >&5 -echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +$as_echo "$bash_cv_speed_t_in_sys_types" >&6; } if test $bash_cv_speed_t_in_sys_types = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define SPEED_T_IN_SYS_TYPES 1 -EOF +_ACEOF fi -echo "$as_me:14754: checking whether getpw functions are declared in pwd.h" >&5 -echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +$as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } if test "${bash_cv_getpw_declared+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14760 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H @@ -14768,7 +29160,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "getpwuid" >/dev/null 2>&1; then + $EGREP "getpwuid" >/dev/null 2>&1; then bash_cv_getpw_declared=yes else bash_cv_getpw_declared=no @@ -14777,29 +29169,32 @@ rm -f conftest* fi -echo "$as_me:14780: result: $bash_cv_getpw_declared" >&5 -echo "${ECHO_T}$bash_cv_getpw_declared" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +$as_echo "$bash_cv_getpw_declared" >&6; } if test $bash_cv_getpw_declared = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define HAVE_GETPW_DECLS 1 -EOF +_ACEOF fi -echo "$as_me:14789: checking for unusable real-time signals due to large values" >&5 -echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +$as_echo_n "checking for unusable real-time signals due to large values... " >&6; } if test "${bash_cv_unusable_rtsigs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then - { echo "$as_me:14795: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 -echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +$as_echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} bash_cv_unusable_rtsigs=yes else cat >conftest.$ac_ext <<_ACEOF -#line 14801 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -14821,51 +29216,76 @@ main () } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:14824: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:14827: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14829: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:14832: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then bash_cv_unusable_rtsigs=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) bash_cv_unusable_rtsigs=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:14845: result: $bash_cv_unusable_rtsigs" >&5 -echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 + +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +$as_echo "$bash_cv_unusable_rtsigs" >&6; } if test $bash_cv_unusable_rtsigs = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define UNUSABLE_RT_SIGNALS 1 -EOF +_ACEOF fi + + + + if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then SIGLIST_O=siglist.o else SIGLIST_O= fi + + case "$host_os" in -hpux*) echo "$as_me:14861: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 -echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 +hpux*) { $as_echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +$as_echo_n "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; } if test "${bash_cv_kernel_rlimit+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 14867 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -14882,24 +29302,34 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:14885: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:14888: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14891: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14894: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_kernel_rlimit=no else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF -#line 14901 "configure" -#include "confdefs.h" + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #define _KERNEL @@ -14918,35 +29348,44 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:14921: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:14924: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14927: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14930: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then bash_cv_kernel_rlimit=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_kernel_rlimit=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext + bash_cv_kernel_rlimit=no fi -echo "$as_me:14944: result: $bash_cv_kernel_rlimit" >&5 -echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +$as_echo "$bash_cv_kernel_rlimit" >&6; } if test $bash_cv_kernel_rlimit = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define RLIMIT_NEEDS_KERNEL 1 -EOF +_ACEOF fi ;; @@ -14960,219 +29399,371 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -echo "$as_me:14963: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - echo "$as_me:14970: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent" >&5 +$as_echo_n "checking for tgetent... " >&6; } +if test "${ac_cv_func_tgetent+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define tgetent to an innocuous variant, in case declares tgetent. + For example, HP-UX 11i declares gettimeofday. */ +#define tgetent innocuous_tgetent + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char tgetent (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef tgetent + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_tgetent || defined __stub___tgetent +choke me +#endif + +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_tgetent=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_tgetent=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +$as_echo "$ac_cv_func_tgetent" >&6; } +if test "x$ac_cv_func_tgetent" = x""yes; then + bash_cv_termcap_lib=libc +else + { $as_echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } if test "${ac_cv_lib_termcap_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 14978 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14997: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:15000: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15003: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15006: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_termcap_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_termcap_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_termcap_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:15017: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 -if test $ac_cv_lib_termcap_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = x""yes; then bash_cv_termcap_lib=libtermcap else - echo "$as_me:15022: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +$as_echo_n "checking for tgetent in -ltinfo... " >&6; } if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 15030 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15049: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:15052: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15055: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15058: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_tinfo_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_tinfo_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_tinfo_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:15069: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 -if test $ac_cv_lib_tinfo_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = x""yes; then bash_cv_termcap_lib=libtinfo else - echo "$as_me:15074: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +$as_echo_n "checking for tgetent in -lcurses... " >&6; } if test "${ac_cv_lib_curses_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 15082 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15101: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:15104: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15107: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15110: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_curses_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_curses_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_curses_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:15121: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 -if test $ac_cv_lib_curses_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +$as_echo "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = x""yes; then bash_cv_termcap_lib=libcurses else - echo "$as_me:15126: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +$as_echo_n "checking for tgetent in -lncurses... " >&6; } if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 15134 "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* 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 -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -tgetent (); +return tgetent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15153: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:15156: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15159: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15162: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_ncurses_tgetent=yes else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_ncurses_tgetent=no + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_ncurses_tgetent=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:15173: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 -if test $ac_cv_lib_ncurses_tgetent = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = x""yes; then bash_cv_termcap_lib=libncurses else bash_cv_termcap_lib=gnutermcap @@ -15186,12 +29777,14 @@ fi fi -if test "X$_bash_needmsg" = "Xyes"; then -echo "$as_me:15190: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -echo "$as_me:15193: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 + +if test "X$_bash_needmsg" = "Xyes"; then +{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +fi +{ $as_echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +$as_echo "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" @@ -15205,6 +29798,9 @@ 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= @@ -15212,51 +29808,62 @@ fi fi -echo "$as_me:15215: checking whether /dev/fd is available" >&5 -echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 + + +{ $as_echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +$as_echo_n "checking whether /dev/fd is available... " >&6; } if test "${bash_cv_dev_fd+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test -d /dev/fd && test -r /dev/fd/0; then - bash_cv_dev_fd=standard - elif test -d /proc/self/fd && test -r /proc/self/fd/0; then - bash_cv_dev_fd=whacky - else - bash_cv_dev_fd=absent - fi + 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 -echo "${ECHO_T}$bash_cv_dev_fd" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +$as_echo "$bash_cv_dev_fd" >&6; } if test $bash_cv_dev_fd = "standard"; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_FD 1 -EOF +_ACEOF - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define DEV_FD_PREFIX "/dev/fd/" -EOF +_ACEOF elif test $bash_cv_dev_fd = "whacky"; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_FD 1 -EOF +_ACEOF - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define DEV_FD_PREFIX "/proc/self/fd/" -EOF +_ACEOF fi -echo "$as_me:15252: checking whether /dev/stdin stdout stderr are available" >&5 -echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +$as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } if test "${bash_cv_dev_stdin+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - if test -d /dev/fd && test -r /dev/stdin; then + if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present - elif test -d /proc/self/fd && test -r /dev/stdin; then + elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -15264,19 +29871,19 @@ else fi -echo "$as_me:15267: result: $bash_cv_dev_stdin" >&5 -echo "${ECHO_T}$bash_cv_dev_stdin" >&6 +{ $as_echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +$as_echo "$bash_cv_dev_stdin" >&6; } if test $bash_cv_dev_stdin = "present"; then - cat >>confdefs.h <<\EOF + cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_STDIN 1 -EOF +_ACEOF fi -echo "$as_me:15276: checking for default mail directory" >&5 -echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for default mail directory" >&5 +$as_echo_n "checking for default mail directory... " >&6; } if test "${bash_cv_mail_dir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -d /var/mail; then bash_cv_mail_dir=/var/mail @@ -15292,44 +29899,50 @@ else fi -echo "$as_me:15295: result: $bash_cv_mail_dir" >&5 -echo "${ECHO_T}$bash_cv_mail_dir" >&6 -cat >>confdefs.h <&5 +$as_echo "$bash_cv_mail_dir" >&6; } +cat >>confdefs.h <<_ACEOF #define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" -EOF +_ACEOF + + if test "$bash_cv_job_control_missing" = missing; then opt_job_control=no fi if test "$opt_job_control" = yes; then -cat >>confdefs.h <<\EOF +cat >>confdefs.h <<\_ACEOF #define JOB_CONTROL 1 -EOF +_ACEOF JOBS_O=jobs.o else JOBS_O=nojobs.o fi + + + LOCAL_DEFS=-DSHELL -case "${host_os}" in -sysv4.2*) cat >>confdefs.h <<\EOF -#define SVR4_2 1 -EOF - cat >>confdefs.h <<\EOF +case "${host_os}" in +sysv4.2*) cat >>confdefs.h <<\_ACEOF +#define SVR4_2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF #define SVR4 1 -EOF +_ACEOF ;; -sysv4*) cat >>confdefs.h <<\EOF +sysv4*) cat >>confdefs.h <<\_ACEOF #define SVR4 1 -EOF +_ACEOF ;; -sysv5*) cat >>confdefs.h <<\EOF +sysv5*) cat >>confdefs.h <<\_ACEOF #define SVR5 1 -EOF +_ACEOF ;; hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;; hpux*) LOCAL_CFLAGS=-DHPUX ;; @@ -15341,13 +29954,24 @@ 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 ;; +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 +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + case "`uname -r`" in + 2.[456789]*|3*) cat >>confdefs.h <<\_ACEOF +#define PGRP_PIPE 1 +_ACEOF + ;; + esac ;; +*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; -cygwin*) LOCAL_LIBS="-luser32" ;; -opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO" ;; +cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE" ;; esac case "${host_os}-${CC}" in @@ -15362,6 +29986,7 @@ freebsd[3-9]*) 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 @@ -15383,12 +30008,18 @@ esac # if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf then - echo "$as_me:15386: checking shared object configuration for loadable builtins" >&5 -echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 + { $as_echo "$as_me:$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}"` - echo "$as_me:15390: result: $SHOBJ_STATUS" >&5 -echo "${ECHO_T}$SHOBJ_STATUS" >&6 + + + + + + + { $as_echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +$as_echo "$SHOBJ_STATUS" >&6; } fi # try to create a directory tree if the source is elsewhere @@ -15407,12 +30038,52 @@ case "$srcdir" in 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 + + + + + + + + + + + + + + + + + + + + #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile examples/loadables/Makefile examples/loadables/perl/Makefile" +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile" + ac_config_commands="$ac_config_commands default" + 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 @@ -15423,7 +30094,7 @@ cat >confcache <<\_ACEOF # 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 +# `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. @@ -15431,39 +30102,59 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# 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:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + 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" - ;; + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -15472,141 +30163,394 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +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" -{ echo "$as_me:15495: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL -# Generated automatically by configure. +# 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} -ac_cs_invocation="\$0 \$@" - _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# Be Bourne compatible +cat >>$CONFIG_STATUS <<\_ACEOF || ac_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=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + # 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 -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` -if expr a : '\(a\)' >/dev/null 2>&1; then + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# 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 +if (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 + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# 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. +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); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +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 + + +# Name of the executable. +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'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: else - as_unset=false + test -d ./-p && rmdir ./-p + as_mkdir_p=false fi -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" +# 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'" -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } exec 6>&1 +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by bash $as_me 4.0-release, which was +generated by GNU Autoconf 2.63. 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. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\EOF +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, 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] + --file=FILE[:TEMPLATE] instantiate the configuration file FILE - --header=FILE[:TEMPLATE] + --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: @@ -15619,129 +30563,162 @@ Configuration commands: $config_commands Report bugs to ." -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bash config.status 2.05b -configured by $0, generated by GNU Autoconf 2.52, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +bash config.status 4.0-release +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -EOF -cat >>$CONFIG_STATUS <<\EOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +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[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; esac - case $1 in + case $ac_option in # Handling of the options. -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:15671: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { $as_echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --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. - -*) { { echo "$as_me:15690: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift done -exec 5>>config.log -cat >&5 << _ACEOF +ac_configure_extra_args= -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by $as_me (bash 2.05b) 2.52, executed with - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - > $ac_cs_invocation -on `(hostname || uname -n) 2>/dev/null | sed 1q` +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi _ACEOF -EOF +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 -cat >>$CONFIG_STATUS <<\EOF +_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, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; - "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; - "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; - "lib/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" ;; - "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; - "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:15739: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile") CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile") CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile") CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile") CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile") CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile") CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 @@ -15752,564 +30729,723 @@ if $ac_need_defaults; then test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi -# Create a temporary directory, and hook for its removal unless debugging. +# 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 || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} + { - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -EOF +# 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 -cat >>$CONFIG_STATUS </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 -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@DEFS@,$DEFS,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@TESTSCRIPT@,$TESTSCRIPT,;t t -s,@PURIFY@,$PURIFY,;t t -s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t -s,@MALLOC_SRC@,$MALLOC_SRC,;t t -s,@MALLOC_LIB@,$MALLOC_LIB,;t t -s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t -s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t -s,@MALLOC_DEP@,$MALLOC_DEP,;t t -s,@htmldir@,$htmldir,;t t -s,@HELPDIR@,$HELPDIR,;t t -s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t -s,@HELPINSTALL@,$HELPINSTALL,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@SIGNAMES_H@,$SIGNAMES_H,;t t -s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t -s,@STATIC_LD@,$STATIC_LD,;t t -s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t -s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t -s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t -s,@RL_VERSION@,$RL_VERSION,;t t -s,@RL_MAJOR@,$RL_MAJOR,;t t -s,@RL_MINOR@,$RL_MINOR,;t t -s,@READLINE_LIB@,$READLINE_LIB,;t t -s,@READLINE_DEP@,$READLINE_DEP,;t t -s,@RL_LIBDIR@,$RL_LIBDIR,;t t -s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t -s,@RL_INCLUDE@,$RL_INCLUDE,;t t -s,@HISTORY_LIB@,$HISTORY_LIB,;t t -s,@HISTORY_DEP@,$HISTORY_DEP,;t t -s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@AR@,$AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@YACC@,$YACC,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@MAKE_SHELL@,$MAKE_SHELL,;t t -s,@ALLOCA@,$ALLOCA,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@SIGLIST_O@,$SIGLIST_O,;t t -s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t -s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t -s,@JOBS_O@,$JOBS_O,;t t -s,@SHOBJ_CC@,$SHOBJ_CC,;t t -s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t -s,@SHOBJ_LD@,$SHOBJ_LD,;t t -s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t -s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t -s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t -s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t -s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t -s,@incdir@,$incdir,;t t -s,@BUILD_DIR@,$BUILD_DIR,;t t -s,@ARFLAGS@,$ARFLAGS,;t t -s,@BASHVERS@,$BASHVERS,;t t -s,@RELSTATUS@,$RELSTATUS,;t t -s,@DEBUG@,$DEBUG,;t t -s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t -s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t -s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t -s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t -s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t -CEOF +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF -EOF - cat >>$CONFIG_STATUS <<\EOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + 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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" -EOF -cat >>$CONFIG_STATUS <<\EOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac +# 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 >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" +# 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_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + 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_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $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:$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 >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac ;; esac -done; } - ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` - else - ac_dir_suffix= ac_dots= - fi - - case $srcdir in - .) ac_srcdir=. - if test -z "$ac_dots"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_dots$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_dots$srcdir ;; + 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" + case $as_dir in #( + -*) as_dir=./$as_dir;; esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + 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_dots$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac +_ACEOF - if test x"$ac_file" != x-; then - { echo "$as_me:16014: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - configure_input="Generated automatically from `echo $ac_file_in | - sed 's,.*/,,'` by configure." +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= - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:16032: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:16045: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -EOF -cat >>$CONFIG_STATUS <&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 -EOF -cat >>$CONFIG_STATUS <<\EOF +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi +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 +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } -done -EOF -cat >>$CONFIG_STATUS <<\EOF +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$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;} -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:16106: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:16117: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:16130: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -EOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\EOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -EOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\EOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -EOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # egrep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\EOF - # 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 automatically by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated automatically by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in + ;; + :H) + # + # CONFIG_HEADER + # if test x"$ac_file" != x-; then - if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:16247: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - fi - rm -f $ac_file - mv $tmp/config.h $ac_file + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } fi else - cat $tmp/config.h - rm -f $tmp/config.h + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } fi -done -EOF -cat >>$CONFIG_STATUS <<\EOF + ;; -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - case $ac_dest in - default ) + + case $ac_file$ac_mode in + "default-1":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 + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + "default":C) # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h ;; - esac -done -EOF -cat >>$CONFIG_STATUS <<\EOF + esac +done # for ac_tag + { (exit 0); exit 0; } -EOF +_ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + # 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 @@ -16320,11 +31456,18 @@ ac_clean_files=$ac_clean_files_save # 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_cs_success=false + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi diff --git a/src/bin/bash/configure.in b/src/bin/bash/configure.in index cb9652ac3e..e881d37708 100644 --- a/src/bin/bash/configure.in +++ b/src/bin/bash/configure.in @@ -1,30 +1,32 @@ dnl -dnl Configure script for bash-2.05 +dnl Configure script for bash-4.0 dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2002 Free Software Foundation, Inc. +# Copyright (C) 1987-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 2, or (at your option) -# any later version. +# +# 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 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. +AC_REVISION([for Bash 4.0, version 4.013])dnl -# 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. +define(bashvers, 4.0) +define(relstatus, release) -AC_REVISION([for Bash 2.05b, version 2.144, from autoconf version] AC_ACVERSION)dnl - -AC_INIT(bash, 2.05b, bug-bash@gnu.org) +AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) dnl make sure we are using a recent autoconf version AC_PREREQ(2.50) @@ -35,12 +37,12 @@ AC_CONFIG_AUX_DIR(./support) AC_CONFIG_HEADERS(config.h) dnl checks for version info -BASHVERS=2.05b -RELSTATUS=release +BASHVERS=bashvers +RELSTATUS=relstatus dnl defaults for debug settings case "$RELSTATUS" in -alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac @@ -70,6 +72,7 @@ sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here #*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree *-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines @@ -78,7 +81,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) *-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2 +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins *-beos*) opt_bash_malloc=no ;; # they say it's suitable @@ -92,6 +95,12 @@ sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; *) opt_memscramble=yes ;; esac +dnl +dnl macros for the bash debugger +dnl +AM_PATH_LISPDIR +AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file]) + dnl arguments to configure dnl packages AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval) @@ -138,6 +147,10 @@ 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 @@ -159,11 +172,19 @@ 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 dnl options that affect how bash is compiled and linked opt_static_link=no @@ -182,6 +203,8 @@ if test $opt_minimal_config = yes; then 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 fi AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) @@ -189,8 +212,13 @@ AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [e 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(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) @@ -198,6 +226,7 @@ AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include k 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) @@ -206,6 +235,8 @@ AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command lin 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) @@ -259,12 +290,21 @@ fi if test $opt_xpg_echo = yes ; then AC_DEFINE(DEFAULT_ECHO_TO_XPG) fi +if test $opt_strict_posix = yes; then +AC_DEFINE(STRICT_POSIX) +fi if test $opt_extended_glob = yes ; then AC_DEFINE(EXTENDED_GLOB) fi if test $opt_cond_command = yes ; then AC_DEFINE(COND_COMMAND) fi +if test $opt_cond_regexp = yes ; then +AC_DEFINE(COND_REGEXP) +fi +if test $opt_coproc = yes; then +AC_DEFINE(COPROCESS_SUPPORT) +fi if test $opt_arith_for_command = yes; then AC_DEFINE(ARITH_FOR_COMMAND) fi @@ -274,6 +314,18 @@ 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_memscramble = yes; then AC_DEFINE(MEMSCRAMBLE) @@ -295,6 +347,10 @@ if test "$opt_separate_help" != no; then HELPDIRDEFINE='-H ${HELPDIR}' HELPINSTALL='install-help' fi +HELPSTRINGS= +if test "$opt_single_longdoc_strings" != "yes"; then + HELPSTRINGS='-S' +fi dnl now substitute in the values generated by arguments AC_SUBST(TESTSCRIPT) @@ -312,6 +368,7 @@ AC_SUBST(htmldir) AC_SUBST(HELPDIR) AC_SUBST(HELPDIRDEFINE) AC_SUBST(HELPINSTALL) +AC_SUBST(HELPSTRINGS) echo "" echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" @@ -326,14 +383,12 @@ dnl test for Unix variants AC_ISC_POSIX AC_MINIX -dnl test for non-Unix variants -AC_CYGWIN -AC_MINGW32 - AC_SYS_LARGEFILE -dnl BEGIN changes for cross-building for cygwin and BeOS +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 @@ -343,15 +398,17 @@ 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 - SIGNAMES_H='$(srcdir)/cross-build/win32sig.h' + ;; + *-mingw*) + cross_cache=${srcdir}/cross-build/cygwin32.cache ;; i[[3456]]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache - SIGNAMES_H='${srcdir}/cross-build/beos-sig.h' ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; @@ -361,8 +418,12 @@ if test "x$cross_compiling" = "xyes"; then . ${cross_cache} fi unset cross_cache + SIGNAMES_O='signames.o' + CROSS_COMPILE='-DCROSS_COMPILING' + AC_SUBST(CROSS_COMPILE) fi AC_SUBST(SIGNAMES_H) +AC_SUBST(SIGNAMES_O) if test -z "$CC_FOR_BUILD"; then if test "x$cross_compiling" = "xno"; then @@ -403,7 +464,14 @@ if test "$opt_static_link" = yes; then fi fi -test -z "$CPPFLAGS_FOR_BUILD" && CPPFLAGS_FOR_BUILD="$CPPFLAGS" +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" AC_SUBST(CFLAGS) @@ -430,7 +498,7 @@ then RL_LIB_READLINE_VERSION case "$ac_cv_rl_version" in - 4.[[3-9]]*|5*|6*|7*|8*|9*) ;; + 5*|6*|7*|8*|9*) ;; *) opt_with_installed_readline=no AC_MSG_WARN(installed readline library is too old to be linked with bash) AC_MSG_WARN(using private bash version) @@ -438,18 +506,36 @@ then esac fi +TILDE_LIB=-ltilde if test $opt_readline = yes; then AC_DEFINE(READLINE) - READLINE_LIB=-lreadline if test "$opt_with_installed_readline" != "no" ; then - case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' + 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]]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac fi else RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' @@ -462,17 +548,29 @@ if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_bang_history = yes; then AC_DEFINE(BANG_HISTORY) fi - HISTORY_LIB=-lhistory if test "$opt_with_installed_readline" != "no"; then HIST_LIBDIR=$RL_LIBDIR HISTORY_DEP= - case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' + 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]]*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac fi else HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' @@ -486,6 +584,7 @@ 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 @@ -505,6 +604,28 @@ opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; esac AC_SUBST(MAKE_SHELL) +dnl this is similar to the expanded AC_PROG_RANLIB +if test x$SIZE = x; then + if test x$ac_tool_prefix = x; then + SIZE=size + else + SIZE=${ac_tool_prefix}size + save_IFS=$IFS ; IFS=: + size_found=0 + for dir in $PATH; do + if test -x $dir/$SIZE ; then + size_found=1 + break + fi + done + if test $size_found -eq 0; then + SIZE=: + fi + IFS=$save_IFS + fi +fi +AC_SUBST(SIZE) + dnl Turn on any extensions available in the GNU C library. AC_DEFINE(_GNU_SOURCE, 1) @@ -516,6 +637,11 @@ 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 @@ -525,12 +651,20 @@ BASH_HEADER_INTTYPES AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stddef.h stdint.h netdb.h grp.h strings.h) -AC_CHECK_HEADERS(sys/ptem.h sys/pte.h sys/stream.h sys/select.h sys/file.h \ - sys/resource.h sys/param.h sys/socket.h \ - sys/time.h sys/times.h sys/wait.h) + stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h) +AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \ + sys/resource.h sys/param.h sys/socket.h sys/stat.h \ + sys/time.h sys/times.h sys/types.h sys/wait.h) AC_CHECK_HEADERS(netinet/in.h arpa/inet.h) +dnl sys/ptem.h requires definitions from sys/stream.h on systems where it +dnl exists +AC_CHECK_HEADER(sys/ptem.h, , ,[[ +#if HAVE_SYS_STREAM_H +# include +#endif +]]) + dnl special checks for libc functions AC_FUNC_ALLOCA AC_FUNC_GETPGRP @@ -572,33 +706,56 @@ dnl checks for certain version-specific system calls and libc functions AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE)) AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3)) AC_CHECK_FUNC(isinf, AC_DEFINE(HAVE_ISINF_IN_LIBC)) +AC_CHECK_FUNC(isnan, AC_DEFINE(HAVE_ISNAN_IN_LIBC)) dnl checks for missing libc functions AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) dnl checks for system calls -AC_CHECK_FUNCS(dup2 select getdtablesize getgroups gethostname \ - setdtablesize getpagesize killpg lstat getpeername sbrk \ - getrlimit getrusage gettimeofday waitpid tcgetpgrp \ - readlink) +AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ + getpagesize getpeername getrlimit getrusage gettimeofday \ + kill killpg lstat readlink sbrk select setdtablesize \ + setitimer tcgetpgrp uname ulimit waitpid) AC_REPLACE_FUNCS(rename) dnl checks for c library functions -AC_CHECK_FUNCS(bcopy bzero confstr sysconf pathconf setenv putenv unsetenv \ - setlinebuf setvbuf setlocale strchr tcgetattr uname \ - ulimit tzset siginterrupt memmove ttyname times \ +AC_CHECK_FUNCS(bcopy bzero confstr fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ - vsnprintf snprintf vasprintf asprintf fnmatch) + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv) + +AC_CHECK_FUNCS(vsnprintf snprintf vasprintf asprintf) AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) -AC_REPLACE_FUNCS(getcwd strcasecmp strerror strftime strpbrk memset) +AC_CHECK_FUNCS(getpwent getpwnam getpwuid) +AC_REPLACE_FUNCS(getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr) AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) +AC_REPLACE_FUNCS(fdprintf) AC_CHECK_DECLS([confstr]) AC_CHECK_DECLS([printf]) AC_CHECK_DECLS([sbrk]) +AC_CHECK_DECLS([setregid]) AC_CHECK_DECLS([strcpy]) AC_CHECK_DECLS([strsignal]) -AC_CHECK_DECLS([strtold]) + +dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3) +AC_CHECK_DECLS([strtold], [ + AC_MSG_CHECKING([for broken strtold]) + AC_CACHE_VAL(bash_cv_strtold_broken, + [AC_TRY_COMPILE( + [#include ], + [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}], + bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes, + [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)]) + ] + ) + AC_MSG_RESULT($bash_cv_strtold_broken) + if test "$bash_cv_strtold_broken" = "yes" ; then + AC_DEFINE(STRTOLD_BROKEN) + fi +]) + BASH_CHECK_DECL(strtoimax) BASH_CHECK_DECL(strtol) @@ -609,22 +766,31 @@ BASH_CHECK_DECL(strtoumax) AC_FUNC_MKTIME -dnl checks for locale functions -AC_CHECK_HEADERS(libintl.h) -AC_CHECK_FUNCS(gettext textdomain bindtextdomain) +dnl +dnl Checks for lib/intl and related code (uses some of the output from +dnl AM_GNU_GETTEXT) +dnl -dnl check for GNU libintl if gettext/textdomain/bindtextdomain -dnl are not found in libc -if test "$ac_cv_func_bindtextdomain" = "no"; then - AC_CHECK_LIB(intl,bindtextdomain) - if test "$ac_cv_lib_intl_bindtextdomain" = "yes"; then - dnl undo caching - unset ac_cv_func_gettext - unset ac_cv_func_textdomain - unset ac_cv_func_bindtextdomain - AC_CHECK_FUNCS(gettext textdomain bindtextdomain) - fi +AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) + +dnl AC_FUNC_MALLOC +AC_FUNC_MMAP +AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ + munmap stpcpy strcspn strdup]) + +INTL_DEP= INTL_INC= LIBINTL_H= +if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then + INTL_DEP='${INTL_LIBDIR}/libintl.a' + INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}' + LIBINTL_H='${INTL_BUILDDIR}/libintl.h' fi +AC_SUBST(INTL_DEP) +AC_SUBST(INTL_INC) +AC_SUBST(LIBINTL_H) + +dnl +dnl End of checks needed by files in lib/intl +dnl BASH_CHECK_MULTIBYTE @@ -634,7 +800,7 @@ AC_CHECK_LIB(dl, dlopen) AC_CHECK_FUNCS(dlopen dlclose dlsym) fi -dnl this defines SYS_SIGLIST_DECLARED +dnl this defines HAVE_DECL_SYS_SIGLIST AC_DECL_SYS_SIGLIST dnl libraries @@ -673,6 +839,7 @@ 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) @@ -708,6 +875,7 @@ 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 @@ -734,16 +902,19 @@ BASH_STRUCT_TERMIOS_LDISC BASH_STRUCT_TERMIO_LDISC BASH_STRUCT_DIRENT_D_INO BASH_STRUCT_DIRENT_D_FILENO +BASH_STRUCT_DIRENT_D_NAMLEN BASH_STRUCT_WINSIZE BASH_STRUCT_TIMEVAL AC_CHECK_MEMBERS([struct stat.st_blocks]) AC_STRUCT_TM AC_STRUCT_TIMEZONE +BASH_STRUCT_TIMEZONE dnl presence and behavior of C library functions BASH_FUNC_STRSIGNAL BASH_FUNC_OPENDIR_CHECK BASH_FUNC_ULIMIT_MAXFDS +BASH_FUNC_FPURGE BASH_FUNC_GETENV if test "$ac_cv_func_getcwd" = "yes"; then BASH_FUNC_GETCWD @@ -765,18 +936,6 @@ else AC_DEFINE(HAVE_STD_UNSETENV) fi -dnl I have removed this check. The existing libc FNM_EXTMATCH implementation -dnl (glibc-2.2.4) disagrees with bash on the matching of incorrectly-formed -dnl patterns (bash treats them as strings or characters to be matched without -dnl any special meaning) and has one outright bug: a[X-]b should match -dnl both a-b and aXb. -dnl -dnl Once Ulrich and I get together on this, the check can return -dnl -dnl chet 10/31/2001 -dnl -dnl BASH_FUNC_FNMATCH_EXTMATCH - BASH_FUNC_PRINTF_A_FORMAT dnl presence and behavior of OS functions @@ -789,6 +948,8 @@ AC_HEADER_TIOCGWINSZ BASH_HAVE_TIOCSTAT BASH_HAVE_FIONREAD +BASH_CHECK_WCONTINUED + dnl miscellaneous BASH_CHECK_SPEED_T BASH_CHECK_GETPW_FUNCS @@ -833,7 +994,7 @@ dnl like glob and readline LOCAL_DEFS=-DSHELL dnl use this section to possibly define more cpp variables, specify local -dnl libraries, and specify any additional local cc flags +dnl libraries, and specify any additional local cc or ld flags dnl dnl this should really go away someday @@ -852,13 +1013,21 @@ 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 ;; +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 +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + case "`uname -r`" in + 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;; + esac ;; +*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; -cygwin*) LOCAL_LIBS="-luser32" ;; -opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO" ;; +cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE" ;; esac dnl Stanza for OS/compiler pair-specific flags @@ -875,6 +1044,7 @@ freebsd[[3-9]]*) 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 @@ -924,12 +1094,27 @@ case "$srcdir" in esac BUILD_DIR=`pwd` +case "$BUILD_DIR" in +*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; +*) ;; +esac + +if test -z "$localedir"; then + localedir='${datarootdir}/locale' +fi +if test -z "$datarootdir"; then + datarootdir='${prefix}/share' +fi AC_SUBST(PROFILE_FLAGS) AC_SUBST(incdir) AC_SUBST(BUILD_DIR) +# Some versions of autoconf don't substitute these automatically +AC_SUBST(datarootdir) +AC_SUBST(localedir) + AC_SUBST(YACC) AC_SUBST(AR) AC_SUBST(ARFLAGS) @@ -952,8 +1137,9 @@ AC_SUBST(LOCAL_DEFS) #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 \ + lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ examples/loadables/Makefile examples/loadables/perl/Makefile], [ # Makefile uses this timestamp file to record whether config.h is up to date. diff --git a/src/bin/bash/conftypes.h b/src/bin/bash/conftypes.h index e5e18736f3..1c8c5480a4 100644 --- a/src/bin/bash/conftypes.h +++ b/src/bin/bash/conftypes.h @@ -1,22 +1,22 @@ /* conftypes.h -- defines for build and host system. */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_CONFTYPES_H_) #define _CONFTYPES_H_ @@ -24,7 +24,7 @@ /* 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) +#if !defined (RHAPSODY) && !defined (MACOSX) # define HOSTTYPE CONF_HOSTTYPE # define OSTYPE CONF_OSTYPE # define MACHTYPE CONF_MACHTYPE diff --git a/src/bin/bash/copy_cmd.c b/src/bin/bash/copy_cmd.c index 07c0693fa1..7020c60dcd 100644 --- a/src/bin/bash/copy_cmd.c +++ b/src/bin/bash/copy_cmd.c @@ -2,23 +2,23 @@ primarily for making function definitions, but I'm not sure that anyone else will need it. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -40,6 +40,7 @@ static ARITH_FOR_COM *copy_arith_for_command __P((ARITH_FOR_COM *)); #endif static GROUP_COM *copy_group_command __P((GROUP_COM *)); static SUBSHELL_COM *copy_subshell_command __P((SUBSHELL_COM *)); +static COPROC_COM *copy_coproc_command __P((COPROC_COM *)); static CASE_COM *copy_case_command __P((CASE_COM *)); static WHILE_COM *copy_while_command __P((WHILE_COM *)); static IF_COM *copy_if_command __P((IF_COM *)); @@ -50,7 +51,6 @@ static ARITH_COM *copy_arith_command __P((ARITH_COM *)); static COND_COM *copy_cond_command __P((COND_COM *)); #endif static SIMPLE_COM *copy_simple_command __P((SIMPLE_COM *)); -static FUNCTION_DEF *copy_function_def __P((FUNCTION_DEF *)); WORD_DESC * copy_word (w) @@ -86,6 +86,7 @@ copy_case_clause (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); } @@ -125,6 +126,7 @@ copy_redirect (redirect) 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: @@ -166,6 +168,7 @@ copy_for_command (com) 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); @@ -213,6 +216,19 @@ copy_subshell_command (com) 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; @@ -221,6 +237,7 @@ copy_case_command (com) 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); @@ -302,17 +319,26 @@ copy_simple_command (com) return (new_simple); } -static FUNCTION_DEF * +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->name = copy_word (com->name); - new_def->command = copy_command (com->command); - new_def->flags = com->flags; - new_def->line = com->line; + new_def = copy_function_def_contents (com, new_def); return (new_def); } @@ -363,6 +389,10 @@ copy_command (command) 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; diff --git a/src/bin/bash/dispose_cmd.c b/src/bin/bash/dispose_cmd.c index 90515df8f4..4c25ae5396 100644 --- a/src/bin/bash/dispose_cmd.c +++ b/src/bin/bash/dispose_cmd.c @@ -1,22 +1,22 @@ /* dispose_command.c -- dispose of a COMMAND structure. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -92,6 +92,14 @@ dispose_command (command) 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; @@ -186,9 +194,7 @@ dispose_command (command) register FUNCTION_DEF *c; c = command->value.Function_def; - dispose_word (c->name); - dispose_command (c->command); - free (c); + dispose_function_def (c); break; } @@ -218,17 +224,39 @@ dispose_cond_node (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); -#if 0 - free (w); -#else ocache_free (wdcache, WORD_DESC, w); -#endif +} + +/* 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. */ @@ -293,6 +321,7 @@ dispose_redirects (list) 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: diff --git a/src/bin/bash/dispose_cmd.h b/src/bin/bash/dispose_cmd.h index 595a6ad75e..0a3889c10d 100644 --- a/src/bin/bash/dispose_cmd.h +++ b/src/bin/bash/dispose_cmd.h @@ -1,22 +1,22 @@ /* dispose_cmd.h -- Functions appearing in dispose_cmd.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -24,6 +24,7 @@ #include "stdc.h" extern void dispose_command __P((COMMAND *)); +extern void dispose_word_desc __P((WORD_DESC *)); extern void dispose_word __P((WORD_DESC *)); extern void dispose_words __P((WORD_LIST *)); extern void dispose_word_array __P((char **)); @@ -33,4 +34,7 @@ extern void dispose_redirects __P((REDIRECT *)); extern void dispose_cond_node __P((COND_COM *)); #endif +extern void dispose_function_def_contents __P((FUNCTION_DEF *)); +extern void dispose_function_def __P((FUNCTION_DEF *)); + #endif /* !_DISPOSE_CMD_H_ */ diff --git a/src/bin/bash/error.c b/src/bin/bash/error.c index 837a3e2b4b..2ae4854306 100644 --- a/src/bin/bash/error.c +++ b/src/bin/bash/error.c @@ -1,21 +1,22 @@ /* error.c -- Functions for handling errors. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. + +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -40,11 +41,10 @@ extern int errno; #endif /* !errno */ #include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" #include "flags.h" -#include "error.h" -#include "command.h" -#include "general.h" -#include "externs.h" #include "input.h" #if defined (HISTORY) @@ -53,14 +53,16 @@ extern int errno; extern int executing_line_number __P((void)); -extern int interactive_shell, interactive, startup_state; -extern char *dollar_vars[]; extern char *shell_name; #if defined (JOB_CONTROL) extern pid_t shell_pgrp; extern int give_terminal_to __P((pid_t, int)); #endif /* JOB_CONTROL */ +#if defined (ARRAY_VARS) +extern const char * const bash_badsub_errmsg; +#endif + static void error_prolog __P((int)); /* The current maintainer of the shell. You change this in the @@ -69,22 +71,24 @@ static void error_prolog __P((int)); #define MAINTAINER "bash-maintainers@gnu.org" #endif -char *the_current_maintainer = MAINTAINER; +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; - fprintf (stderr, "%s: ", get_name_for_error ()); + ename = get_name_for_error (); + line = (print_lineno && interactive_shell == 0) ? executing_line_number () : -1; - if (print_lineno && interactive_shell == 0) - { - line = executing_line_number (); - if (line > 0) - fprintf (stderr, "line %d: ", line); - } + 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. */ @@ -92,10 +96,23 @@ 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) - name = dollar_vars[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) @@ -144,7 +161,7 @@ programming_error (format, va_alist) if (remember_on_history) { h = last_history_line (); - fprintf (stderr, "last command: %s\n", h ? h : "(null)"); + fprintf (stderr, _("last command: %s\n"), h ? h : "(null)"); } #endif @@ -152,7 +169,7 @@ programming_error (format, va_alist) fprintf (stderr, "Report this to %s\n", the_current_maintainer); #endif - fprintf (stderr, "Stopping myself..."); + fprintf (stderr, _("Aborting...")); fflush (stderr); abort (); @@ -182,7 +199,7 @@ report_error (format, va_alist) va_end (args); if (exit_immediately_on_error) - sh_exit (1); + exit_shell (1); } void @@ -239,7 +256,8 @@ internal_warning (format, va_alist) { va_list args; - fprintf (stderr, "%s: warning: ", get_name_for_error ()); + error_prolog (1); + fprintf (stderr, _("warning: ")); SH_VA_START (args, format); @@ -299,11 +317,11 @@ parser_error (lineno, format, va_alist) if (interactive) fprintf (stderr, "%s: ", ename); else if (interactive_shell) - fprintf (stderr, "%s: %s: line %d: ", ename, iname, lineno); + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); else if (STREQ (ename, iname)) - fprintf (stderr, "%s: line %d: ", ename, lineno); + fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : _(" line "), lineno); else - fprintf (stderr, "%s: %s: line %d: ", ename, iname, lineno); + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); SH_VA_START (args, format); @@ -313,7 +331,7 @@ parser_error (lineno, format, va_alist) va_end (args); if (exit_immediately_on_error) - sh_exit (2); + exit_shell (2); } #ifdef DEBUG @@ -383,11 +401,11 @@ trace (format, va_alist) /* **************************************************************** */ -static char *cmd_error_table[] = { - "unknown command error", /* CMDERR_DEFAULT */ - "bad command type", /* CMDERR_BADTYPE */ - "bad connector", /* CMDERR_BADCONN */ - "bad jump", /* CMDERR_BADJUMP */ +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 }; @@ -399,7 +417,7 @@ command_error (func, code, e, flags) if (code > CMDERR_LAST) code = CMDERR_DEFAULT; - programming_error ("%s: %s: %d", func, cmd_error_table[code], e); + programming_error ("%s: %s: %d", func, _(cmd_error_table[code]), e); } char * @@ -409,7 +427,7 @@ command_errstr (code) if (code > CMDERR_LAST) code = CMDERR_DEFAULT; - return (cmd_error_table[code]); + return (_(cmd_error_table[code])); } #ifdef ARRAY_VARS @@ -417,7 +435,7 @@ void err_badarraysub (s) const char *s; { - report_error ("%s: bad array subscript", s); + report_error ("%s: %s", s, _(bash_badsub_errmsg)); } #endif @@ -425,12 +443,12 @@ void err_unboundvar (s) const char *s; { - report_error ("%s: unbound variable", s); + report_error (_("%s: unbound variable"), s); } void err_readonly (s) const char *s; { - report_error ("%s: readonly variable", s); + report_error (_("%s: readonly variable"), s); } diff --git a/src/bin/bash/error.h b/src/bin/bash/error.h index 64dc27e15c..e79ba3ee74 100644 --- a/src/bin/bash/error.h +++ b/src/bin/bash/error.h @@ -1,22 +1,22 @@ /* error.h -- External declarations of functions appearing in error.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -50,8 +50,9 @@ extern void internal_error __P((const char *, ...)) __attribute__((__format__ ( /* Report an internal warning. */ extern void internal_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); -/* Debugging function, not enabled in released version. */ +/* Debugging functions, not enabled in released version. */ extern void itrace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2))); +extern void trace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2))); /* Report an error having to do with command parsing or execution. */ extern void command_error __P((const char *, int, int, int)); diff --git a/src/bin/bash/eval.c b/src/bin/bash/eval.c index 179ecd4bbc..9011e0bf46 100644 --- a/src/bin/bash/eval.c +++ b/src/bin/bash/eval.c @@ -1,22 +1,22 @@ /* eval.c -- reading and evaluating commands. */ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -30,6 +30,8 @@ #include "bashansi.h" #include +#include "bashintl.h" + #include "shell.h" #include "flags.h" #include "trap.h" @@ -43,7 +45,7 @@ # include "bashhist.h" #endif -extern int EOF_Reached; +extern int EOF_reached; extern int indirection_level; extern int posixly_correct; extern int subshell_environment, running_under_emacs; @@ -61,10 +63,12 @@ int reader_loop () { int our_indirection_level; - COMMAND *current_command = (COMMAND *)NULL; + COMMAND * volatile current_command; USE_VAR(current_command); + current_command = (COMMAND *)NULL; + our_indirection_level = ++indirection_level; while (EOF_Reached == 0) @@ -88,6 +92,7 @@ reader_loop () { /* Some kind of throw to top_level has occured. */ case FORCE_EOF: + case ERREXIT: case EXITPROG: current_command = (COMMAND *)NULL; if (exit_immediately_on_error) @@ -96,7 +101,11 @@ reader_loop () goto exec_done; case DISCARD: - last_command_exit_value = 1; + /* 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) + last_command_exit_value = EXECUTION_FAILURE; if (subshell_environment) { current_command = (COMMAND *)NULL; @@ -143,13 +152,13 @@ reader_loop () execute_command (current_command); exec_done: + QUIT; + if (current_command) { dispose_command (current_command); current_command = (COMMAND *)NULL; } - - QUIT; } } else @@ -169,7 +178,9 @@ static sighandler alrm_catcher(i) int i; { - printf ("\007timed out waiting for input: auto-logout\n"); + printf (_("\007timed out waiting for input: auto-logout\n")); + fflush (stdout); + bash_logout (); /* run ~/.bash_logout if this is a login shell */ jump_to_top_level (EXITPROG); SIGRETURN (0); } @@ -207,7 +218,7 @@ parse_command () { command_to_execute = get_string_value ("PROMPT_COMMAND"); if (command_to_execute) - execute_prompt_command (command_to_execute); + execute_variable_command (command_to_execute, "PROMPT_COMMAND"); if (running_under_emacs == 2) send_pwd_to_eterm (); /* Yuck */ diff --git a/src/bin/bash/execute_cmd.c b/src/bin/bash/execute_cmd.c index c8c2566c20..9bb965052e 100644 --- a/src/bin/bash/execute_cmd.c +++ b/src/bin/bash/execute_cmd.c @@ -1,22 +1,23 @@ -/* execute_command.c -- Execute a COMMAND structure. */ +/* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ + #include "config.h" #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) @@ -26,13 +27,13 @@ #include #include "chartypes.h" #include "bashtypes.h" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "filecntl.h" #include "posixstat.h" #include -#ifdef HAVE_SYS_PARAM_H +#ifndef _MINIX # include #endif @@ -57,6 +58,7 @@ extern int errno; #endif #include "bashansi.h" +#include "bashintl.h" #include "memalloc.h" #include "shell.h" @@ -95,12 +97,14 @@ extern int errno; #endif extern int posixly_correct; -extern int breaking, continuing, loop_level; extern int expand_aliases; -extern int parse_and_execute_level, running_trap, trap_line_number; +extern int autocd; +extern int breaking, continuing, loop_level; +extern int parse_and_execute_level, running_trap; extern int command_string_index, line_number; extern int dot_found_in_search; extern int already_making_children; +extern int tempenv_assign_error; extern char *the_printed_command, *shell_name; extern pid_t last_command_subst_pid; extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; @@ -158,7 +162,7 @@ static int execute_while_command __P((WHILE_COM *)); static int execute_until_command __P((WHILE_COM *)); static int execute_while_or_until __P((WHILE_COM *, int)); static int execute_if_command __P((IF_COM *)); -static int execute_null_command __P((REDIRECT *, int, int, int, pid_t)); +static int execute_null_command __P((REDIRECT *, int, int, int)); static void fix_assignment_words __P((WORD_LIST *)); static int execute_simple_command __P((SIMPLE_COM *, int, int, int, struct fd_bitmap *)); static int execute_builtin __P((sh_builtin_func_t *, WORD_LIST *, int, int)); @@ -178,6 +182,9 @@ static void execute_disk_command __P((WORD_LIST *, REDIRECT *, char *, static char *getinterp __P((char *, int, int *)); static void initialize_subshell __P((void)); static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *)); +#if defined (COPROCESS_SUPPORT) +static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *)); +#endif static int execute_pipeline __P((COMMAND *, int, int, int, struct fd_bitmap *)); @@ -185,9 +192,6 @@ static int execute_connection __P((COMMAND *, int, int, int, struct fd_bitmap *) static int execute_intern_function __P((WORD_DESC *, COMMAND *)); -/* The line number that the currently executing function starts on. */ -static int function_line_number; - /* 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; @@ -196,11 +200,10 @@ int stdin_redir; `test' needs this, for example. */ char *this_command_name; -static COMMAND *currently_executing_command; - -struct stat SB; /* used for debugging */ - -static int special_builtin_failed; +/* 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; @@ -210,6 +213,10 @@ procenv_t return_catch; /* The value returned by the last synchronous command. */ int last_command_exit_value; +/* Whether or not the last command (corresponding to last_command_exit_value) + was terminated by a signal, and, if so, which one. */ +int last_command_exit_signal; + /* The list of redirections to perform which will undo the redirections that I made in the shell. */ REDIRECT *redirection_undo_list = (REDIRECT *)NULL; @@ -219,13 +226,47 @@ REDIRECT *redirection_undo_list = (REDIRECT *)NULL; 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; + +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 line_number_for_err_trap; + struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL; #define FD_BITMAP_DEFAULT_SIZE 32 @@ -282,21 +323,25 @@ close_fd_bitmap (fdbp) int executing_line_number () { - if (executing && (variable_context == 0 || interactive_shell == 0) && currently_executing_command) + if (executing && showing_function_line == 0 && + (variable_context == 0 || interactive_shell == 0) && + currently_executing_command) { - if (currently_executing_command->type == cm_simple) - return currently_executing_command->value.Simple->line; - else if (currently_executing_command->type == cm_cond) +#if defined (COND_COMMAND) + if (currently_executing_command->type == cm_cond) return currently_executing_command->value.Cond->line; +#endif +#if defined (DPAREN_ARITHMETIC) else if (currently_executing_command->type == cm_arith) return currently_executing_command->value.Arith->line; +#endif +#if defined (ARITH_FOR_COMMAND) else if (currently_executing_command->type == cm_arith_for) return currently_executing_command->value.ArithFor->line; - else +#endif + return line_number; } - else if (running_trap) - return trap_line_number; else return line_number; } @@ -333,6 +378,7 @@ execute_command (command) unlink_fifo_list (); #endif /* PROCESS_SUBSTITUTION */ + QUIT; return (result); } @@ -343,7 +389,6 @@ shell_control_structure (type) { switch (type) { - case cm_for: #if defined (ARITH_FOR_COMMAND) case cm_arith_for: #endif @@ -360,7 +405,9 @@ shell_control_structure (type) case cm_while: case cm_until: case cm_if: + case cm_for: case cm_group: + case cm_function_def: return (1); default: @@ -374,7 +421,7 @@ static void cleanup_redirects (list) REDIRECT *list; { - do_redirections (list, 1, 0, 0); + do_redirections (list, RX_ACTIVE); dispose_redirects (list); } @@ -384,7 +431,7 @@ static void cleanup_func_redirects (list) REDIRECT *list; { - do_redirections (list, 1, 0, 0); + do_redirections (list, RX_ACTIVE); } #endif @@ -441,7 +488,7 @@ async_redirect_stdin () close (fd); } else if (fd < 0) - internal_error ("cannot redirect standard input from /dev/null: %s", strerror (errno)); + internal_error (_("cannot redirect standard input from /dev/null: %s"), strerror (errno)); } #define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0) @@ -466,16 +513,27 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, int pipe_in, pipe_out; struct fd_bitmap *fds_to_close; { - int exec_result, invert, ignore_return, was_error_trap; + int exec_result, user_subshell, invert, ignore_return, was_error_trap; REDIRECT *my_undo_list, *exec_undo_list; - volatile pid_t last_pid; + volatile int last_pid; + volatile int save_line_number; +#if 0 if (command == 0 || breaking || continuing || read_but_dont_execute) return (EXECUTION_SUCCESS); +#else + if (breaking || continuing) + return (last_command_exit_value); + if (command == 0 || read_but_dont_execute) + return (EXECUTION_SUCCESS); +#endif + QUIT; run_pending_traps (); +#if 0 if (running_trap == 0) +#endif currently_executing_command = command; invert = (command->flags & CMD_INVERT_RETURN) != 0; @@ -494,6 +552,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (command->type == cm_subshell && (command->flags & CMD_NO_FORK)) return (execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)); +#if defined (COPROCESS_SUPPORT) + if (command->type == cm_coproc) + return (execute_coproc (command, pipe_in, pipe_out, fds_to_close)); +#endif + + user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0); + if (command->type == cm_subshell || (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) || (shell_control_structure (command->type) && @@ -527,6 +592,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, 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; + last_command_exit_value = wait_for (paren_pid); /* If we have to, invert the return value. */ @@ -537,6 +606,20 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, else exec_result = last_command_exit_value; + + if (user_subshell && was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + run_error_trap (); + } + + if (user_subshell && 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); + } + return (last_command_exit_value = exec_result); } else @@ -561,7 +644,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, 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); @@ -573,12 +658,12 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, /* Handle WHILE FOR CASE etc. with redirections. (Also '&' input redirection.) */ - if (do_redirections (command->redirects, 1, 1, 0) != 0) + if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { cleanup_redirects (redirection_undo_list); redirection_undo_list = (REDIRECT *)NULL; dispose_exec_redirects (); - return (EXECUTION_FAILURE); + return (last_command_exit_value = EXECUTION_FAILURE); } if (redirection_undo_list) @@ -616,9 +701,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, { case cm_simple: { - /* We can't rely on this variable retaining its value across a + save_line_number = line_number; + /* We can't rely on variables retaining their values across a call to execute_simple_command if a longjmp occurs as the result of a `return' builtin. This is true for sure with gcc. */ +#if defined (RECYCLES_PIDS) + last_made_pid = NO_PID; +#endif last_pid = last_made_pid; was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; @@ -626,9 +715,12 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, 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. */ @@ -646,7 +738,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, /* XXX - this is something to watch out for if there are problems when the shell is compiled without job control. */ if (already_making_children && pipe_out == NO_PIPE && - last_pid != last_made_pid) + last_made_pid != last_pid) { stop_pipeline (asynchronous, (COMMAND *)NULL); @@ -662,19 +754,16 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, #endif /* When executing a shell function that executes other commands, this causes the last simple command in - the function to be waited for twice. */ + 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); -#if defined (RECYCLES_PIDS) - /* LynxOS, for one, recycles pids very quickly -- so quickly - that a new process may have the same pid as the last one - created. This has been reported to fix the problem. */ - if (exec_result == 0) - last_made_pid = NO_PID; -#endif } } - if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + /* 2009/02/13 -- pipeline failure is processed elsewhere. This handles + only the failure of a simple command. */ + if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS) { last_command_exit_value = exec_result; run_error_trap (); @@ -682,11 +771,11 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (ignore_return == 0 && invert == 0 && ((posixly_correct && interactive == 0 && special_builtin_failed) || - (exit_immediately_on_error && (exec_result != EXECUTION_SUCCESS)))) + (exit_immediately_on_error && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS))) { last_command_exit_value = exec_result; run_pending_traps (); - jump_to_top_level (EXITPROG); + jump_to_top_level (ERREXIT); } break; @@ -798,7 +887,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, case cm_cond: if (ignore_return) command->value.Cond->flags |= CMD_IGNORE_RETURN; + save_line_number = line_number; exec_result = execute_cond_command (command->value.Cond); + line_number = save_line_number; break; #endif @@ -813,7 +904,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (my_undo_list) { - do_redirections (my_undo_list, 1, 0, 0); + do_redirections (my_undo_list, RX_ACTIVE); dispose_redirects (my_undo_list); } @@ -829,9 +920,29 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, ? EXECUTION_FAILURE : EXECUTION_SUCCESS; +#if defined (DPAREN_ARITHMETIC) || defined (COND_COMMAND) + /* This is where we set PIPESTATUS from the exit status of the appropriate + compound commands (the ones that look enough like simple commands to + cause confusion). We might be able to optimize by not doing this if + subshell_environment != 0. */ + switch (command->type) + { +# if defined (DPAREN_ARITHMETIC) + case cm_arith: +# endif +# if defined (COND_COMMAND) + case cm_cond: +# endif + set_pipestatus_from_exit (exec_result); + break; + } +#endif + last_command_exit_value = exec_result; run_pending_traps (); +#if 0 if (running_trap == 0) +#endif currently_executing_command = (COMMAND *)NULL; return (last_command_exit_value); } @@ -847,7 +958,7 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva #define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S" #define BASH_TIMEFORMAT "\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS" -static int precs[] = { 0, 100, 10, 1 }; +static const int precs[] = { 0, 100, 10, 1 }; /* Expand one `%'-prefixed escape sequence from a time format string. */ static int @@ -963,8 +1074,11 @@ print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu) 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); @@ -995,7 +1109,7 @@ print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu) len = mkfmt (ts, prec, lng, ss, ssf); else { - internal_error ("bad format character in time format: %c", *s); + internal_error (_("TIMEFORMAT: `%c': invalid format character"), *s); free (str); return; } @@ -1027,7 +1141,9 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) #if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) struct timeval real, user, sys; struct timeval before, after; - struct timezone dtz; +# 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) @@ -1037,7 +1153,11 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) #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 @@ -1057,7 +1177,11 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) 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); @@ -1117,20 +1241,23 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) struct fd_bitmap *fds_to_close; { int user_subshell, return_code, function_value, should_redir_stdin, invert; - int ois; + int ois, user_coproc; 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); @@ -1138,6 +1265,10 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) the special case of an asynchronous GROUP command where the the subshell bit is turned on down in case cm_group: below), turn off `asynchronous', so that two subshells aren't spawned. + XXX - asynchronous used to be set to 0 in this block, but that + means that setup_async_signals was never run. Now it's set to + 0 after subshell_environment is set appropriately and setup_async_signals + is run. This seems semantically correct to me. For example, ( foo ) & seems to say ``do the command `foo' in a subshell @@ -1165,19 +1296,37 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) aliases. */ if (ois != interactive_shell) expand_aliases = 0; - asynchronous = 0; } /* Subshells are neither login nor interactive. */ login_shell = interactive = 0; - subshell_environment = user_subshell ? SUBSHELL_PAREN : SUBSHELL_ASYNC; + if (user_subshell) + subshell_environment = SUBSHELL_PAREN; + else + { + subshell_environment = 0; /* XXX */ + if (asynchronous) + subshell_environment |= SUBSHELL_ASYNC; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + if (user_coproc) + subshell_environment |= SUBSHELL_COPROC; + } reset_terminating_signals (); /* in sig.c */ /* Cancel traps, in trap.c. */ restore_original_signals (); + + /* Make sure restore_original_signals doesn't undo the work done by + make_child to ensure that asynchronous children are immune to SIGINT + and SIGQUIT. Turn off asynchronous to make sure more subshells are + not spawned. */ if (asynchronous) - setup_async_signals (); + { + setup_async_signals (); + asynchronous = 0; + } #if defined (JOB_CONTROL) set_sigchld_handler (); @@ -1196,6 +1345,10 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) do_piping (pipe_in, pipe_out); +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif + /* If this is a user subshell, set a flag if stdin was redirected. This is used later to decide whether to redirect fd 0 to /dev/null for async commands in the subshell. This adds more @@ -1215,15 +1368,25 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* Do redirections, then dispose of them before recursive call. */ if (command->redirects) { - if (do_redirections (command->redirects, 1, 0, 0) != 0) + if (do_redirections (command->redirects, RX_ACTIVE) != 0) exit (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); dispose_redirects (command->redirects); command->redirects = (REDIRECT *)NULL; } - tcom = (command->type == cm_subshell) ? command->value.Subshell->command : command; + 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; @@ -1233,7 +1396,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) 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 && (tcom->type == cm_simple || tcom->type == cm_subshell) && + 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)) { @@ -1254,8 +1417,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (function_value) return_code = return_catch_value; else - return_code = execute_command_internal - (tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); + return_code = execute_command_internal (tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); /* If we are asked to, invert the return value. */ if (invert) @@ -1270,10 +1432,556 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) return_code = run_exit_trap (); } + subshell_level--; return (return_code); /* NOTREACHED */ } +#if defined (COPROCESS_SUPPORT) +#define COPROC_MAX 16 + +typedef struct cpelement + { + struct cpelement *next; + struct coproc *coproc; + } +cpelement_t; + +typedef struct cplist + { + struct cpelement *head; + struct cpelement *tail; + int ncoproc; + } +cplist_t; + +static struct cpelement *cpe_alloc __P((struct coproc *)); +static void cpe_dispose __P((struct cpelement *)); +static struct cpelement *cpl_add __P((struct coproc *)); +static struct cpelement *cpl_delete __P((pid_t)); +static void cpl_reap __P((void)); +static void cpl_flush __P((void)); +static struct cpelement *cpl_search __P((pid_t)); +static struct cpelement *cpl_searchbyname __P((char *)); +static void cpl_prune __P((void)); + +Coproc sh_coproc = { 0, NO_PID, -1, -1, 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 *prev, *p; + + for (prev = p = coproc_list.head; p; prev = p, p = p->next) + if (p->coproc->c_flags & COPROC_DEAD) + { + prev->next = p->next; /* remove from list */ + + /* 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 */ + +#if defined (DEBUG) + itrace("cpl_reap: deleting %d", p->coproc->c_pid); +#endif + + coproc_dispose (p->coproc); + cpe_dispose (p); + } +} + +/* 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; +} + +/* 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 *cp; + + for (cp = coproc_list.head ; cp; cp = cp->next) + if (cp->coproc->c_pid == pid) + return cp; + 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) + char *name; +{ + struct cpelement *cp; + + for (cp = coproc_list.head ; cp; cp = cp->next) + if (STREQ (cp->coproc->c_name, name)) + return cp; + return (struct cpelement *)NULL; +} + +#if 0 +static void +cpl_prune () +{ + struct cpelement *cp; + + while (coproc_list.head && coproc_list.ncoproc > COPROC_MAX) + { + cp = coproc_list.head; + coproc_list.head = coproc_list.head->next; + coproc_dispose (cp->coproc); + cpe_dispose (cp); + coproc_list.ncoproc--; + } +} +#endif + +/* These currently use a single global "shell coproc" but are written in a + way to not preclude additional coprocs later (using the list management + package above). */ + +struct coproc * +getcoprocbypid (pid) + pid_t pid; +{ + return (pid == sh_coproc.c_pid ? &sh_coproc : 0); +} + +struct coproc * +getcoprocbyname (name) + const char *name; +{ + return ((sh_coproc.c_name && STREQ (sh_coproc.c_name, name)) ? &sh_coproc : 0); +} + +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 = 0; +} + +struct coproc * +coproc_alloc (name, pid) + char *name; + pid_t pid; +{ + struct coproc *cp; + + cp = &sh_coproc; /* XXX */ + coproc_init (cp); + + cp->c_name = savestring (name); + cp->c_pid = pid; + + return (cp); +} + +void +coproc_dispose (cp) + struct coproc *cp; +{ + if (cp == 0) + return; + + coproc_unsetvars (cp); + FREE (cp->c_name); + coproc_close (cp); + coproc_init (cp); +} + +/* Placeholder for now. */ +void +coproc_flush () +{ + coproc_dispose (&sh_coproc); +} + +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 () +{ + coproc_close (&sh_coproc); +} + +void +coproc_reap () +{ + struct coproc *cp; + + cp = &sh_coproc; + if (cp && (cp->c_flags & COPROC_DEAD)) + coproc_dispose (cp); +} + +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; +{ + coproc_checkfd (&sh_coproc, fd); +} + +void +coproc_fdclose (cp, fd) + struct coproc *cp; + int fd; +{ + coproc_rclose (cp, fd); + coproc_wclose (cp, fd); + coproc_setvars (cp); +} + +void +coproc_fdsave (cp) + struct coproc *cp; +{ + cp->c_rsave = cp->c_rfd; + cp->c_wsave = cp->c_wfd; +} + +void +coproc_fdrestore (cp) + struct coproc *cp; +{ + cp->c_rfd = cp->c_rsave; + cp->c_wfd = cp->c_wsave; +} + +void +coproc_pidchk (pid, status) + pid_t pid; +{ + struct coproc *cp; + + cp = getcoprocbypid (pid); +#if 0 + if (cp) + itrace("coproc_pidchk: pid %d has died", pid); +#endif + if (cp) + { + cp->c_status = status; + cp->c_flags |= COPROC_DEAD; + cp->c_flags &= ~COPROC_RUNNING; +#if 0 + coproc_dispose (cp); +#endif + } +} + +void +coproc_setvars (cp) + struct coproc *cp; +{ + SHELL_VAR *v; + char *namevar, *t; + int l; +#if defined (ARRAY_VARS) + arrayind_t ind; +#endif + + if (cp->c_name == 0) + return; + + l = strlen (cp->c_name); + namevar = xmalloc (l + 16); + +#if defined (ARRAY_VARS) + v = find_variable (cp->c_name); + if (v == 0) + v = make_new_array_variable (cp->c_name); + if (array_p (v) == 0) + v = convert_var_to_array (v); + + t = itos (cp->c_rfd); + ind = 0; + v = bind_array_variable (cp->c_name, ind, t, 0); + free (t); + + t = itos (cp->c_wfd); + ind = 1; + bind_array_variable (cp->c_name, ind, t, 0); + free (t); +#else + sprintf (namevar, "%s_READ", cp->c_name); + t = itos (cp->c_rfd); + bind_variable (namevar, t, 0); + free (t); + sprintf (namevar, "%s_WRITE", cp->c_name); + t = itos (cp->c_wfd); + bind_variable (namevar, t, 0); + free (t); +#endif + + sprintf (namevar, "%s_PID", cp->c_name); + t = itos (cp->c_pid); + bind_variable (namevar, t, 0); + free (t); + + free (namevar); +} + +void +coproc_unsetvars (cp) + struct coproc *cp; +{ + int l; + char *namevar; + + if (cp->c_name == 0) + return; + + l = strlen (cp->c_name); + namevar = xmalloc (l + 16); + + sprintf (namevar, "%s_PID", cp->c_name); + unbind_variable (namevar); + +#if defined (ARRAY_VARS) + unbind_variable (cp->c_name); +#else + sprintf (namevar, "%s_READ", cp->c_name); + unbind_variable (namevar); + sprintf (namevar, "%s_WRITE", cp->c_name); + unbind_variable (namevar); +#endif + + free (namevar); +} + +static int +execute_coproc (command, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int rpipe[2], wpipe[2]; + pid_t coproc_pid; + Coproc *cp; + char *tcmd; + + /* XXX -- will require changes to handle multiple coprocs */ + if (sh_coproc.c_pid != NO_PID) + { +#if 0 + internal_error ("execute_coproc: coproc [%d:%s] already exists", sh_coproc.c_pid, sh_coproc.c_name); + return (last_command_exit_value = EXECUTION_FAILURE); +#else + internal_warning ("execute_coproc: coproc [%d:%s] still exists", sh_coproc.c_pid, sh_coproc.c_name); +#endif + } + coproc_init (&sh_coproc); + + 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 */ + + coproc_pid = make_child (savestring (tcmd), 1); + if (coproc_pid == 0) + { + close (rpipe[0]); + close (wpipe[1]); + + exit (execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close)); + } + + 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]; + + SET_CLOSE_ON_EXEC (cp->c_rfd); + SET_CLOSE_ON_EXEC (cp->c_wfd); + + coproc_setvars (cp); + +#if 0 + itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command); +#endif + + close_pipes (pipe_in, pipe_out); +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) + unlink_fifo_list (); +#endif + stop_pipeline (1, (COMMAND *)NULL); + DESCRIBE_PID (coproc_pid); + run_pending_traps (); + + return (EXECUTION_SUCCESS); +} +#endif + static int execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) COMMAND *command; @@ -1300,10 +2008,11 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* Make a pipeline between the two commands. */ if (pipe (fildes) < 0) { - sys_error ("pipe error"); + sys_error (_("pipe error")); #if defined (JOB_CONTROL) terminate_current_pipeline (); kill_current_pipeline (); + UNBLOCK_CHILD (oset); #endif /* JOB_CONTROL */ last_command_exit_value = EXECUTION_FAILURE; /* The unwind-protects installed below will take care @@ -1383,6 +2092,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) UNBLOCK_CHILD (oset); #endif + QUIT; return (exec_result); } @@ -1394,7 +2104,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) { REDIRECT *rp; COMMAND *tc, *second; - int ignore_return, exec_result; + int ignore_return, exec_result, was_error_trap, invert; ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; @@ -1424,6 +2134,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) 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; @@ -1448,16 +2159,36 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (command->value.Connection->second) command->value.Connection->second->flags |= CMD_IGNORE_RETURN; } + executing_list++; QUIT; execute_command (command->value.Connection->first); QUIT; exec_result = execute_command_internal (command->value.Connection->second, asynchronous, pipe_in, pipe_out, fds_to_close); + executing_list--; break; case '|': + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; + invert = (command->flags & CMD_INVERT_RETURN) != 0; + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close); + + if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + run_error_trap (); + } + + 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: @@ -1479,6 +2210,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) 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; @@ -1494,6 +2226,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) exec_result = execute_command (command->value.Connection->second); } + executing_list--; break; default: @@ -1522,17 +2255,18 @@ execute_for_command (for_command) register WORD_LIST *releaser, *list; SHELL_VAR *v; char *identifier; - int retval; + int retval, save_line_number; #if 0 SHELL_VAR *old_value = (SHELL_VAR *)NULL; /* Remember the old value of x. */ #endif + save_line_number = line_number; if (check_identifier (for_command->name, 1) == 0) { if (posixly_correct && interactive_shell == 0) { - last_command_exit_value = EX_USAGE; - jump_to_top_level (EXITPROG); + last_command_exit_value = EX_BADUSAGE; + jump_to_top_level (ERREXIT); } return (EXECUTION_FAILURE); } @@ -1560,10 +2294,41 @@ execute_for_command (for_command) 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 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) + continue; +#endif + this_command_name = (char *)NULL; - v = bind_variable (identifier, list->word->word); + v = bind_variable (identifier, list->word->word, 0); if (readonly_p (v) || noassign_p (v)) { + line_number = save_line_number; if (readonly_p (v) && interactive_shell == 0 && posixly_correct) { last_command_exit_value = EXECUTION_FAILURE; @@ -1571,7 +2336,8 @@ execute_for_command (for_command) } else { - run_unwind_frame ("for"); + dispose_words (releaser); + discard_unwind_frame ("for"); loop_level--; return (EXECUTION_FAILURE); } @@ -1595,6 +2361,7 @@ execute_for_command (for_command) } loop_level--; + line_number = save_line_number; #if 0 if (lexical_scoping) @@ -1605,7 +2372,7 @@ execute_for_command (for_command) { SHELL_VAR *new_value; - new_value = bind_variable (identifier, value_cell(old_value)); + new_value = bind_variable (identifier, value_cell(old_value), 0); new_value->attributes = old_value->attributes; dispose_variable (old_value); } @@ -1640,6 +2407,7 @@ eval_arith_for_expr (l, okp) { WORD_LIST *new; intmax_t expresult; + int r; new = expand_words_no_vars (l); if (new) @@ -1647,9 +2415,30 @@ eval_arith_for_expr (l, okp) if (echo_command_at_execute) xtrace_print_arith_cmd (new); this_command_name = "(("; /* )) for expression error messages */ - if (signal_is_trapped (DEBUG_TRAP) && signal_is_ignored (DEBUG_TRAP) == 0) - run_debug_trap (); + + command_string_index = 0; + print_arith_command (new); + if (signal_in_progress (DEBUG_TRAP) == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + r = run_debug_trap (); + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ +#if defined (DEBUGGER) + if (debugging_mode == 0 || r == EXECUTION_SUCCESS) + expresult = evalexp (new->word->word, okp); + else + { + expresult = 0; + if (okp) + *okp = 1; + } +#else expresult = evalexp (new->word->word, okp); +#endif dispose_words (new); } else @@ -1670,6 +2459,7 @@ execute_arith_for_command (arith_for_command) 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; @@ -1679,19 +2469,21 @@ execute_arith_for_command (arith_for_command) /* save the starting line number of the command so we can reset line_number before executing each expression -- for $LINENO and the DEBUG trap. */ - arith_lineno = arith_for_command->line; + line_number = arith_lineno = arith_for_command->line; if (variable_context && interactive_shell) - line_number = arith_lineno -= function_line_number; + line_number -= function_line_number; /* Evaluate the initialization expression. */ expresult = eval_arith_for_expr (arith_for_command->init, &expok); if (expok == 0) - return (EXECUTION_FAILURE); + { + line_number = save_lineno; + return (EXECUTION_FAILURE); + } while (1) { /* Evaluate the test expression. */ - save_lineno = line_number; line_number = arith_lineno; expresult = eval_arith_for_expr (arith_for_command->test, &expok); line_number = save_lineno; @@ -1725,7 +2517,6 @@ execute_arith_for_command (arith_for_command) } /* Evaluate the step expression. */ - save_lineno = line_number; line_number = arith_lineno; expresult = eval_arith_for_expr (arith_for_command->step, &expok); line_number = save_lineno; @@ -1738,6 +2529,8 @@ execute_arith_for_command (arith_for_command) } loop_level--; + line_number = save_lineno; + return (body_status); } #endif @@ -1922,11 +2715,38 @@ execute_select_command (select_command) WORD_LIST *releaser, *list; SHELL_VAR *v; char *identifier, *ps3_prompt, *selection; - int retval, list_len, show_menu; + 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; @@ -1938,6 +2758,7 @@ execute_select_command (select_command) { if (list) dispose_words (list); + line_number = save_line_number; return (EXECUTION_SUCCESS); } @@ -1952,6 +2773,7 @@ execute_select_command (select_command) while (1) { + line_number = select_command->line; ps3_prompt = get_string_value ("PS3"); if (ps3_prompt == 0) ps3_prompt = "#? "; @@ -1967,7 +2789,7 @@ execute_select_command (select_command) break; } - v = bind_variable (identifier, selection); + v = bind_variable (identifier, selection, 0); if (readonly_p (v) || noassign_p (v)) { if (readonly_p (v) && interactive_shell == 0 && posixly_correct) @@ -1977,7 +2799,10 @@ execute_select_command (select_command) } else { - run_unwind_frame ("select"); + dispose_words (releaser); + discard_unwind_frame ("select"); + loop_level--; + line_number = save_line_number; return (EXECUTION_FAILURE); } } @@ -2009,8 +2834,10 @@ execute_select_command (select_command) } loop_level--; + line_number = save_line_number; - run_unwind_frame ("select"); + dispose_words (releaser); + discard_unwind_frame ("select"); return (retval); } #endif /* SELECT_COMMAND */ @@ -2027,16 +2854,38 @@ execute_case_command (case_command) WORD_LIST *wlist, *es; PATTERN_LIST *clauses; char *word, *pattern; - int retval, match, ignore_return; + int retval, match, ignore_return, save_line_number; - /* Posix.2 specifies that the WORD is tilde expanded. */ - if (member ('~', case_command->word->word)) + 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 { - word = bash_tilde_expand (case_command->word->word, 0); - free (case_command->word->word); - case_command->word->word = word; + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); } + retval = run_debug_trap(); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + { + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } +#endif + wlist = expand_word_unsplit (case_command->word, 0); word = wlist ? string_list (wlist) : savestring (""); dispose_words (wlist); @@ -2054,15 +2903,6 @@ execute_case_command (case_command) QUIT; for (list = clauses->patterns; list; list = list->next) { - /* Posix.2 specifies to tilde expand each member of the pattern - list. */ - if (member ('~', list->word->word)) - { - pattern = bash_tilde_expand (list->word->word, 0); - free (list->word->word); - list->word->word = pattern; - } - es = expand_word_leave_quoted (list->word, 0); if (es && es->word && es->word->word && *(es->word->word)) @@ -2076,17 +2916,24 @@ execute_case_command (case_command) /* 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) != FNM_NOMATCH; + match = strmatch (pattern, word, FNMATCH_EXTFLAG|FNMATCH_IGNCASE) != FNM_NOMATCH; free (pattern); dispose_words (es); if (match) { - if (clauses->action && ignore_return) - clauses->action->flags |= CMD_IGNORE_RETURN; - retval = execute_command (clauses->action); - EXIT_CASE (); + 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->flags & CASEPAT_TESTNEXT) == 0) + EXIT_CASE (); + else + break; } QUIT; @@ -2096,6 +2943,7 @@ execute_case_command (case_command) exit_case_command: free (word); discard_unwind_frame ("case"); + line_number = save_line_number; return (retval); } @@ -2191,10 +3039,12 @@ static int execute_if_command (if_command) IF_COM *if_command; { - int return_value; + 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) { @@ -2221,32 +3071,64 @@ static int execute_arith_command (arith_command) ARITH_COM *arith_command; { - int expok; + int expok, save_line_number, retval; intmax_t expresult; WORD_LIST *new; + char *exp; expresult = 0; + save_line_number = line_number; this_command_name = "(("; /* )) */ + line_number = arith_command->line; /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell) - line_number = arith_command->line - function_line_number; + line_number -= function_line_number; + + command_string_index = 0; + print_arith_command (arith_command->exp); + + if (signal_in_progress (DEBUG_TRAP) == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } /* Run the debug trap before each arithmetic command, but do it after we update the line number information and before we expand the various words in the expression. */ - if (signal_is_trapped (DEBUG_TRAP) && signal_is_ignored (DEBUG_TRAP) == 0) - run_debug_trap (); + retval = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + { + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } +#endif - new = expand_words (arith_command->exp); + new = expand_words_no_vars (arith_command->exp); /* If we're tracing, make a new word list with `((' at the front and `))' at the back and print it. */ if (echo_command_at_execute) xtrace_print_arith_cmd (new); - expresult = evalexp (new->word->word, &expok); - dispose_words (new); + if (new) + { + exp = new->next ? string_list (new) : new->word->word; + expresult = evalexp (exp, &expok); + line_number = save_line_number; + if (exp != new->word->word) + free (exp); + dispose_words (new); + } + else + { + expresult = 0; + expok = 1; + } if (expok == 0) return (EXECUTION_FAILURE); @@ -2257,13 +3139,13 @@ execute_arith_command (arith_command) #if defined (COND_COMMAND) -static char *nullstr = ""; +static char * const nullstr = ""; static int execute_cond_node (cond) COND_COM *cond; { - int result, invert, patmatch; + int result, invert, patmatch, rmatch, mflags; char *arg1, *arg2; invert = (cond->flags & CMD_INVERT_RETURN); @@ -2295,23 +3177,47 @@ execute_cond_node (cond) } else if (cond->type == COND_BINARY) { + rmatch = 0; patmatch = ((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') && (cond->op->word[0] == '!' || cond->op->word[0] == '=') || (cond->op->word[0] == '=' && cond->op->word[1] == '\0')); +#if defined (COND_REGEXP) + rmatch = (cond->op->word[0] == '=' && cond->op->word[1] == '~' && + cond->op->word[2] == '\0'); +#endif arg1 = cond_expand_word (cond->left->op, 0); if (arg1 == 0) arg1 = nullstr; - arg2 = cond_expand_word (cond->right->op, patmatch); + arg2 = cond_expand_word (cond->right->op, + (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); if (arg2 == 0) arg2 = nullstr; if (echo_command_at_execute) xtrace_print_cond_term (cond->type, invert, cond->op, arg1, arg2); - result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP) - ? EXECUTION_SUCCESS - : EXECUTION_FAILURE; +#if defined (COND_REGEXP) + if (rmatch) + { + mflags = SHMAT_PWARN; +#if defined (ARRAY_VARS) + mflags |= SHMAT_SUBEXP; +#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) + ? EXECUTION_SUCCESS + : EXECUTION_FAILURE; + extended_glob = oe; + } if (arg1 != nullstr) free (arg1); if (arg2 != nullstr) @@ -2334,25 +3240,46 @@ static int execute_cond_command (cond_command) COND_COM *cond_command; { - int result; + int retval, save_line_number; - result = EXECUTION_SUCCESS; + retval = EXECUTION_SUCCESS; + save_line_number = line_number; this_command_name = "[["; + line_number = cond_command->line; /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell) - line_number = cond_command->line - function_line_number; + line_number -= function_line_number; + + command_string_index = 0; + print_cond_command (cond_command); + + if (signal_in_progress (DEBUG_TRAP) == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } /* Run the debug trap before each conditional command, but do it after we update the line number information. */ - if (signal_is_trapped (DEBUG_TRAP) && signal_is_ignored (DEBUG_TRAP) == 0) - run_debug_trap (); + 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 = result = execute_cond_node (cond_command); - return (result); + + last_command_exit_value = retval = execute_cond_node (cond_command); + line_number = save_line_number; + return (retval); } #endif /* COND_COMMAND */ @@ -2364,7 +3291,7 @@ bind_lastarg (arg) if (arg == 0) arg = ""; - var = bind_variable ("_", arg); + var = bind_variable ("_", arg, 0); VUNSETATTR (var, att_exported); } @@ -2372,11 +3299,12 @@ bind_lastarg (arg) 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, old_last_command_subst_pid) +execute_null_command (redirects, pipe_in, pipe_out, async) REDIRECT *redirects; int pipe_in, pipe_out, async; - pid_t old_last_command_subst_pid; { + int r; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE || async) { /* We have a null command, but we really want a subshell to take @@ -2388,9 +3316,17 @@ execute_null_command (redirects, pipe_in, pipe_out, async, old_last_command_subs do_piping (pipe_in, pipe_out); - subshell_environment = SUBSHELL_ASYNC; +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif - if (do_redirections (redirects, 1, 0, 0) == 0) + 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); @@ -2413,9 +3349,13 @@ execute_null_command (redirects, pipe_in, pipe_out, async, old_last_command_subs expanding the command or a redirection, return the value of that substitution. Otherwise, return EXECUTION_SUCCESS. */ - if (do_redirections (redirects, 0, 0, 0) != 0) + 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 (old_last_command_subst_pid != last_command_subst_pid) + else if (last_command_subst_pid != NO_PID) return (last_command_exit_value); else return (EXECUTION_SUCCESS); @@ -2430,11 +3370,13 @@ fix_assignment_words (words) { WORD_LIST *w; struct builtin *b; + int assoc; if (words == 0) return; b = 0; + assoc = 0; for (w = words; w; w = w->next) if (w->word->flags & W_ASSIGNMENT) @@ -2444,9 +3386,43 @@ fix_assignment_words (words) b = builtin_address_internal (words->word->word, 0); if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) return; + else if (b && (b->flags & ASSIGNMENT_BUILTIN)) + words->word->flags |= W_ASSNBLTIN; } - w->word->flags |= (W_NOSPLIT|W_NOGLOB|W_TILDEEXP); + w->word->flags |= (W_NOSPLIT|W_NOGLOB|W_TILDEEXP|W_ASSIGNARG); +#if defined (ARRAY_VARS) + if (assoc) + w->word->flags |= W_ASSIGNASSOC; +#endif } +#if defined (ARRAY_VARS) + /* Note that we saw an associative array option to a builtin that takes + assignment statements. This is a bit of a kludge. */ + else if (w->word->word[0] == '-' && strchr (w->word->word, 'A')) + { + if (b == 0) + { + b = builtin_address_internal (words->word->word, 0); + if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) + return; + else if (b && (b->flags & ASSIGNMENT_BUILTIN)) + words->word->flags |= W_ASSNBLTIN; + } + if (words->word->flags & W_ASSNBLTIN) + assoc = 1; + } +#endif +} + +/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting + to PATHNAME, is a directory. Used by the autocd code below. */ +static int +is_dirname (pathname) + char *pathname; +{ + char *temp; + temp = search_for_command (pathname); + return (temp ? file_isdir (temp) : file_isdir (pathname)); } /* The meaty part of all the executions. We have to start hacking the @@ -2461,7 +3437,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) WORD_LIST *words, *lastword; char *command_line, *lastarg, *temp; int first_word_quoted, result, builtin_is_special, already_forked, dofork; - pid_t old_last_command_subst_pid, old_last_async_pid; + pid_t old_last_async_pid; sh_builtin_func_t *builtin; SHELL_VAR *func; @@ -2471,21 +3447,36 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell) - line_number = simple_command->line - function_line_number; - - /* Run the debug trap before each simple command, but do it after we - update the line number information. */ - if (signal_is_trapped (DEBUG_TRAP) && signal_is_ignored (DEBUG_TRAP) == 0) - run_debug_trap (); + line_number -= function_line_number; /* Remember what this command line looks like at invocation. */ command_string_index = 0; print_simple_command (simple_command); - first_word_quoted = - simple_command->words ? (simple_command->words->word->flags & W_QUOTED): 0; +#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; + } - old_last_command_subst_pid = last_command_subst_pid; + /* Run the debug trap before each simple command, but do it after we + update the line number information. */ + result = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && result != EXECUTION_SUCCESS) + return (EXECUTION_SUCCESS); +#endif + + first_word_quoted = + simple_command->words ? (simple_command->words->word->flags & W_QUOTED) : 0; + + last_command_subst_pid = NO_PID; old_last_async_pid = last_asynchronous_pid; already_forked = dofork = 0; @@ -2506,21 +3497,22 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (dofork) { - /* XXX memory leak if expand_words() error causes a jump_to_top_level */ - command_line = savestring (the_printed_command); - /* Do this now, because execute_disk_command will do it anyway in the vast majority of cases. */ maybe_make_export_env (); - if (make_child (command_line, async) == 0) + /* Don't let a DEBUG trap overwrite the command string to be saved with + the process/job associated with this child. */ + if (make_child (savestring (the_printed_command_except_trap), async) == 0) { already_forked = 1; simple_command->flags |= CMD_NO_FORK; - subshell_environment = (pipe_in != NO_PIPE || pipe_out != NO_PIPE) - ? (SUBSHELL_PIPE|SUBSHELL_FORK) - : (SUBSHELL_ASYNC|SUBSHELL_FORK); + subshell_environment = SUBSHELL_FORK; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + if (async) + subshell_environment |= SUBSHELL_ASYNC; /* We need to do this before piping to handle some really pathological cases where one of the pipe file descriptors @@ -2530,6 +3522,9 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) do_piping (pipe_in, pipe_out); pipe_in = pipe_out = NO_PIPE; +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif last_asynchronous_pid = old_last_async_pid; } @@ -2551,7 +3546,12 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) { current_fds_to_close = fds_to_close; fix_assignment_words (simple_command->words); + /* Pass the ignore return flag down to command substitutions */ + if (simple_command->flags & CMD_IGNORE_RETURN) /* XXX */ + comsub_ignore_return++; words = expand_words (simple_command->words); + if (simple_command->flags & CMD_IGNORE_RETURN) + comsub_ignore_return--; current_fds_to_close = (struct fd_bitmap *)NULL; } else @@ -2562,10 +3562,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) 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, - old_last_command_subst_pid); + already_forked ? 0 : async); if (already_forked) exit (result); else @@ -2581,7 +3581,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) begin_unwind_frame ("simple-command"); if (echo_command_at_execute) - xtrace_print_word_list (words); + xtrace_print_word_list (words, 1); builtin = (sh_builtin_func_t *)NULL; func = (SHELL_VAR *)NULL; @@ -2603,6 +3603,14 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) func = find_function (words->word->word); } + /* In POSIX mode, assignment errors in the temporary environment cause a + non-interactive shell to exit. */ + if (builtin_is_special && interactive_shell == 0 && tempenv_assign_error) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (ERREXIT); + } + add_unwind_protect (dispose_words, words); QUIT; @@ -2657,6 +3665,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) } #endif /* JOB_CONTROL */ +run_builtin: /* Remember the name of this command globally. */ this_command_name = words->word->word; @@ -2675,6 +3684,8 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (builtin || func) { + if (builtin) + unwind_protect_int (executing_builtin); /* modified in execute_builtin */ if (already_forked) { /* reset_terminating_signals (); */ /* XXX */ @@ -2690,10 +3701,12 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) setup_async_signals (); } + subshell_level++; execute_subshell_builtin_or_function (words, simple_command->redirects, builtin, func, pipe_in, pipe_out, async, fds_to_close, simple_command->flags); + subshell_level--; } else { @@ -2728,8 +3741,20 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) } } + if (autocd && interactive && words->word && is_dirname (words->word->word)) + { + words = make_word_list (make_word ("cd"), words); + xtrace_print_word_list (words, 0); + goto run_builtin; + } + if (command_line == 0) - command_line = savestring (the_printed_command); + command_line = savestring (the_printed_command_except_trap); + +#if defined (PROCESS_SUBSTITUTION) + if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) + simple_command->flags &= ~CMD_NO_FORK; +#endif execute_disk_command (words, simple_command->redirects, command_line, pipe_in, pipe_out, async, fds_to_close, @@ -2738,7 +3763,9 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) return_result: bind_lastarg (lastarg); FREE (command_line); - run_unwind_frame ("simple-command"); + dispose_words (words); + discard_unwind_frame ("simple-command"); + this_command_name = (char *)NULL; /* points to freed memory now */ return (result); } @@ -2777,14 +3804,21 @@ execute_builtin (builtin, words, flags, subshell) int old_e_flag, result, eval_unwind; int isbltinenv; +#if 0 + /* XXX -- added 12/11 */ + terminate_immediately++; +#endif + old_e_flag = exit_immediately_on_error; /* The eval builtin calls parse_and_execute, which does not know about the setting of flags, and always calls the execution functions with flags that will exit the shell on an error if -e is set. If the eval builtin is being called, and we're supposed to ignore the exit value of the command, we turn the -e flag off ourselves, then - restore it when the command completes. */ - if (subshell == 0 && builtin == eval_builtin && (flags & CMD_IGNORE_RETURN)) + restore it when the command completes. This is also a problem (as + below) for the command and source/. builtins. */ + if (subshell == 0 && (flags & CMD_IGNORE_RETURN) && + (builtin == eval_builtin || builtin == command_builtin || builtin == source_builtin)) { begin_unwind_frame ("eval_builtin"); unwind_protect_int (exit_immediately_on_error); @@ -2796,8 +3830,10 @@ execute_builtin (builtin, words, flags, subshell) /* 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 `source' and `eval' builtins. */ - isbltinenv = (builtin == source_builtin || builtin == eval_builtin); + problem only with the `unset', `source' and `eval' builtins. */ + + isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin); + if (isbltinenv) { if (subshell == 0) @@ -2807,7 +3843,7 @@ execute_builtin (builtin, words, flags, subshell) { push_scope (VC_BLTNENV, temporary_env); if (subshell == 0) - add_unwind_protect (pop_scope, "1"); + add_unwind_protect (pop_scope, (flags & CMD_COMMAND_BUILTIN) ? 0 : "1"); temporary_env = (HASH_TABLE *)NULL; } } @@ -2822,6 +3858,7 @@ execute_builtin (builtin, words, flags, subshell) add_unwind_protect (merge_temporary_env, (char *)NULL); } + executing_builtin++; result = ((*builtin) (words->next)); /* This shouldn't happen, but in case `return' comes back instead of @@ -2838,6 +3875,11 @@ execute_builtin (builtin, words, flags, subshell) discard_unwind_frame ("eval_builtin"); } +#if 0 + /* XXX -- added 12/11 */ + terminate_immediately--; +#endif + return (result); } @@ -2850,11 +3892,24 @@ execute_function (var, words, flags, fds_to_close, async, subshell) int async, subshell; { int return_val, result; - COMMAND *tc, *fc; - char *debug_trap, *error_trap; + COMMAND *tc, *fc, *save_current; + char *debug_trap, *error_trap, *return_trap; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; +#endif + FUNCTION_DEF *shell_fn; + char *sfile, *t; + static int funcnest = 0; USE_VAR(fc); +#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; @@ -2881,12 +3936,16 @@ execute_function (var, words, flags, fds_to_close, async, subshell) 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 and error_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. */ - if (debug_trap && (trace_p (var) == 0)) + /* 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) { @@ -2897,7 +3956,8 @@ execute_function (var, words, flags, fds_to_close, async, subshell) restore_default_signal (DEBUG_TRAP); } - if (error_trap) + /* error_trace_mode != 0 means that functions inherit the ERR trap. */ + if (error_trap && error_trace_mode == 0) { if (subshell == 0) { @@ -2908,39 +3968,118 @@ execute_function (var, words, flags, fds_to_close, async, subshell) restore_default_signal (ERROR_TRAP); } + /* Shell functions inherit the RETURN trap if function tracing is on + globally or on individually for this function. */ +#if 0 + if (return_trap && ((trace_p (var) == 0) && function_trace_mode == 0)) +#else + if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0))) +#endif + { + if (subshell == 0) + { + return_trap = savestring (return_trap); + add_unwind_protect (xfree, return_trap); + add_unwind_protect (set_return_trap, return_trap); + } + restore_default_signal (RETURN_TRAP); + } + + funcnest++; +#if defined (ARRAY_VARS) + /* This is quite similar to the code in shell.c and elsewhere. */ + shell_fn = find_function_def (this_shell_function->name); + sfile = shell_fn ? shell_fn->source_file : ""; + array_push (funcname_a, this_shell_function->name); + + array_push (bash_source_a, sfile); + t = itos (executing_line_number ()); + array_push (bash_lineno_a, t); + free (t); +#endif + /* The temporary environment for a function is supposed to apply to all commands executed within the function body. */ remember_args (words->next, 1); + /* Update BASH_ARGV and BASH_ARGC */ + if (debugging_mode) + push_args (words->next); + /* Number of the line on which the function body starts. */ - if (interactive_shell) - line_number = function_line_number = tc->line; + line_number = function_line_number = tc->line; - if (subshell) - { #if defined (JOB_CONTROL) - stop_pipeline (async, (COMMAND *)NULL); + if (subshell) + stop_pipeline (async, (COMMAND *)NULL); #endif - fc = (tc->type == cm_group) ? tc->value.Group->command : tc; - if (fc && (flags & CMD_IGNORE_RETURN)) - fc->flags |= CMD_IGNORE_RETURN; - } - else - fc = tc; + fc = tc; return_catch_flag++; return_val = setjmp (return_catch); if (return_val) - result = return_catch_value; + { + result = return_catch_value; + /* Run the RETURN trap in the function's context. */ + save_current = currently_executing_command; + run_return_trap (); + currently_executing_command = save_current; + } else - result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + { + /* Run the debug trap here so we can trap at the start of a function's + execution rather than the execution of the body's first command. */ + showing_function_line = 1; + save_current = currently_executing_command; + result = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode == 0 || result == EXECUTION_SUCCESS) + { + showing_function_line = 0; + currently_executing_command = save_current; + result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + /* Run the RETURN trap in the function's context */ + save_current = currently_executing_command; + run_return_trap (); + currently_executing_command = save_current; + } +#else + result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + save_current = currently_executing_command; + run_return_trap (); + currently_executing_command = save_current; +#endif + showing_function_line = 0; + } + + /* Restore BASH_ARGC and BASH_ARGV */ + if (debugging_mode) + pop_args (); if (subshell == 0) run_unwind_frame ("function_calling"); + funcnest--; +#if defined (ARRAY_VARS) + /* These two variables cannot be unset, and cannot be affected by the + function. */ + array_pop (bash_source_a); + array_pop (bash_lineno_a); + + /* FUNCNAME can be unset, and so can potentially be changed by the + function. */ + GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); + if (nfv == funcname_v) + array_pop (funcname_a); +#endif + if (variable_context == 0 || this_shell_function == 0) make_funcname_visible (0); @@ -2987,7 +4126,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, struct fd_bitmap *fds_to_close; int flags; { - int result, r; + int result, r, funcvalue; #if defined (JOB_CONTROL) int jobs_hack; @@ -2998,7 +4137,10 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, /* A subshell is neither a login shell nor interactive. */ login_shell = interactive = 0; - subshell_environment = SUBSHELL_ASYNC; + 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? */ @@ -3023,7 +4165,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, do_piping (pipe_in, pipe_out); - if (do_redirections (redirects, 1, 0, 0) != 0) + if (do_redirections (redirects, RX_ACTIVE) != 0) exit (EXECUTION_FAILURE); if (builtin) @@ -3032,20 +4174,33 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, so we don't go back up to main(). */ result = setjmp (top_level); + /* Give the return builtin a place to jump to when executed in a subshell + or pipeline */ + funcvalue = 0; + if (return_catch_flag && builtin == return_builtin) + funcvalue = setjmp (return_catch); + if (result == EXITPROG) exit (last_command_exit_value); else if (result) exit (EXECUTION_FAILURE); + else if (funcvalue) + exit (return_catch_value); else { r = execute_builtin (builtin, words, flags, 1); + fflush (stdout); if (r == EX_USAGE) r = EX_BADUSAGE; exit (r); } } else - exit (execute_function (var, words, flags, fds_to_close, async, 1)); + { + r = execute_function (var, words, flags, fds_to_close, async, 1); + fflush (stdout); + exit (r); + } } /* Execute a builtin or function in the current shell context. If BUILTIN @@ -3070,7 +4225,7 @@ execute_builtin_or_function (words, builtin, var, redirects, REDIRECT *saved_undo_list; sh_builtin_func_t *saved_this_shell_builtin; - if (do_redirections (redirects, 1, 1, 0) != 0) + if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { cleanup_redirects (redirection_undo_list); redirection_undo_list = (REDIRECT *)NULL; @@ -3104,6 +4259,12 @@ execute_builtin_or_function (words, builtin, var, redirects, 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 @@ -3167,7 +4328,15 @@ setup_async_signals () 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. */ + 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 void execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, async, fds_to_close, cmdflags) @@ -3181,17 +4350,26 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, char *pathname, *command, **args; int nofork; pid_t pid; + SHELL_VAR *hookf; + WORD_LIST *wl; nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ pathname = words->word->word; #if defined (RESTRICTED_SHELL) + command = (char *)NULL; if (restricted && xstrchr (pathname, '/')) { - internal_error ("%s: restricted: cannot specify `/' in command names", + internal_error (_("%s: restricted: cannot specify `/' in command names"), pathname); last_command_exit_value = EXECUTION_FAILURE; - return; + + /* 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 */ @@ -3255,7 +4433,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, subshell_environment = SUBSHELL_FORK; - if (redirects && (do_redirections (redirects, 1, 0, 0) != 0)) + if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0)) { #if defined (PROCESS_SUBSTITUTION) /* Try to remove named pipes that may have been created as the @@ -3270,8 +4448,15 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, if (command == 0) { - internal_error ("%s: command not found", pathname); - exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ + hookf = find_function (NOTFOUND_HOOK); + if (hookf == 0) + { + internal_error (_("%s: command not found"), pathname); + exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ + } + + 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 @@ -3282,6 +4467,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, } else { +parent_return: /* Make sure that the pipes are closed in the parent. */ close_pipes (pipe_in, pipe_out); #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) @@ -3413,6 +4599,7 @@ initialize_subshell () /* Forget about the way job control was working. We are in a subshell. */ without_job_control (); set_sigchld_handler (); + init_job_stats (); #endif /* JOB_CONTROL */ /* Reset the values of the shell flags and options. */ @@ -3429,14 +4616,18 @@ initialize_subshell () 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 = 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 (1); + unset_bash_input (0); } #if defined (HAVE_SETOSTYPE) && defined (_POSIX_SOURCE) @@ -3466,7 +4657,6 @@ shell_execve (command, args, env) char *command; char **args, **env; { - struct stat finfo; int larray, i, fd; char sample[80]; int sample_len; @@ -3474,19 +4664,26 @@ shell_execve (command, args, env) SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */ execve (command, args, env); i = errno; /* error from execve() */ + CHECK_TERMSIG; SETOSTYPE (1); /* If we get to this point, then start checking out the file. Maybe it is something we can hack ourselves. */ if (i != ENOEXEC) { - if ((stat (command, &finfo) == 0) && (S_ISDIR (finfo.st_mode))) - internal_error ("%s: is a directory", command); + if (file_isdir (command)) + internal_error (_("%s: is a directory"), command); 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 @@ -3496,10 +4693,19 @@ shell_execve (command, args, env) if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') { char *interp; + int ilen; interp = getinterp (sample, sample_len, (int *)NULL); + ilen = strlen (interp); errno = i; - sys_error ("%s: %s: bad interpreter", command, interp ? interp : ""); + 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); } @@ -3536,7 +4742,7 @@ shell_execve (command, args, env) #endif if (check_binary_file (sample, sample_len)) { - internal_error ("%s: cannot execute binary file", command); + internal_error (_("%s: cannot execute binary file"), command); return (EX_BINARY_FILE); } } @@ -3599,8 +4805,8 @@ execute_intern_function (name, function) { if (posixly_correct && interactive_shell == 0) { - last_command_exit_value = EX_USAGE; - jump_to_top_level (EXITPROG); + last_command_exit_value = EX_BADUSAGE; + jump_to_top_level (ERREXIT); } return (EXECUTION_FAILURE); } @@ -3609,7 +4815,7 @@ execute_intern_function (name, function) if (var && (readonly_p (var) || noassign_p (var))) { if (readonly_p (var)) - internal_error ("%s: readonly function", var->name); + internal_error (_("%s: readonly function"), var->name); return (EXECUTION_FAILURE); } @@ -3644,6 +4850,13 @@ close_pipes (in, out) 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 @@ -3653,7 +4866,7 @@ do_piping (pipe_in, pipe_out) if (pipe_in != NO_PIPE) { if (dup2 (pipe_in, 0) < 0) - sys_error ("cannot duplicate fd %d to fd 0", pipe_in); + dup_error (pipe_in, 0); if (pipe_in > 0) close (pipe_in); } @@ -3662,14 +4875,14 @@ do_piping (pipe_in, pipe_out) if (pipe_out != REDIRECT_BOTH) { if (dup2 (pipe_out, 1) < 0) - sys_error ("cannot duplicate fd %d to fd 1", pipe_out); + dup_error (pipe_out, 1); if (pipe_out == 0 || pipe_out > 1) close (pipe_out); } else { if (dup2 (1, 2) < 0) - sys_error ("cannot duplicate fd 1 to fd 2"); + dup_error (1, 2); } } } diff --git a/src/bin/bash/execute_cmd.h b/src/bin/bash/execute_cmd.h index 6de86be9c4..67ae93afcd 100644 --- a/src/bin/bash/execute_cmd.h +++ b/src/bin/bash/execute_cmd.h @@ -1,22 +1,22 @@ /* execute_cmd.h - functions from execute_cmd.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -35,6 +35,32 @@ extern void dispose_exec_redirects __P ((void)); extern int execute_shell_function __P((SHELL_VAR *, WORD_LIST *)); +extern struct coproc *getcoprocbypid __P((pid_t)); +extern struct coproc *getcoprocbyname __P((const char *)); + +extern void coproc_init __P((struct coproc *)); +extern struct coproc *coproc_alloc __P((char *, pid_t)); +extern void coproc_dispose __P((struct coproc *)); +extern void coproc_flush __P((void)); +extern void coproc_close __P((struct coproc *)); +extern void coproc_closeall __P((void)); +extern void coproc_reap __P((void)); + +extern void coproc_rclose __P((struct coproc *, int)); +extern void coproc_wclose __P((struct coproc *, int)); +extern void coproc_fdclose __P((struct coproc *, int)); + +extern void coproc_checkfd __P((struct coproc *, int)); +extern void coproc_fdchk __P((int)); + +extern void coproc_pidchk __P((pid_t, int)); + +extern void coproc_fdsave __P((struct coproc *)); +extern void coproc_fdrestore __P((struct coproc *)); + +extern void coproc_setvars __P((struct coproc *)); +extern void coproc_unsetvars __P((struct coproc *)); + #if defined (PROCESS_SUBSTITUTION) extern void close_all_files __P((void)); #endif diff --git a/src/bin/bash/expr.c b/src/bin/bash/expr.c index a4a3ae8ad5..c25160051e 100644 --- a/src/bin/bash/expr.c +++ b/src/bin/bash/expr.c @@ -1,22 +1,22 @@ /* expr.c -- arithmetic expression evaluation. */ -/* Copyright (C) 1990-2002 Free Software Foundation, Inc. +/* Copyright (C) 1990-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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* All arithmetic is done as intmax_t integers with no checking for overflow @@ -42,6 +42,7 @@ "||" "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 @@ -78,6 +79,7 @@ #endif #include "chartypes.h" +#include "bashintl.h" #include "shell.h" @@ -146,15 +148,17 @@ static intmax_t tokval; /* current token value */ static int noeval; /* set to 1 if no assignment to be done */ static procenv_t evalbuf; +static int _is_arithop __P((int)); static void readtok __P((void)); /* lexical analyzer */ static intmax_t expr_streval __P((char *, int)); static intmax_t strlong __P((char *)); -static void evalerror __P((char *)); +static void evalerror __P((const char *)); static void pushexp __P((void)); static void popexp __P((void)); static void expr_unwind __P((void)); +static void expr_bind_variable __P((char *, char *)); static intmax_t subexpr __P((char *)); @@ -200,6 +204,10 @@ static int expr_stack_size; /* Number of slots already allocated. */ extern char *this_command_name; extern int unbound_vars_is_error; +#if defined (ARRAY_VARS) +extern const char * const bash_badsub_errmsg; +#endif + #define SAVETOK(X) \ do { \ (X)->curtok = curtok; \ @@ -230,7 +238,7 @@ pushexp () EXPR_CONTEXT *context; if (expr_depth >= MAX_EXPR_RECURSION_LEVEL) - evalerror ("expression recursion level exceeded"); + evalerror (_("expression recursion level exceeded")); if (expr_depth >= expr_stack_size) { @@ -254,7 +262,7 @@ popexp () EXPR_CONTEXT *context; if (expr_depth == 0) - evalerror ("recursion stack underflow"); + evalerror (_("recursion stack underflow")); context = expr_stack[--expr_depth]; @@ -278,6 +286,16 @@ expr_unwind () free (expr_stack[expr_depth]); } free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ + + noeval = 0; /* XXX */ +} + +static void +expr_bind_variable (lhs, rhs) + char *lhs, *rhs; +{ + (void)bind_int_variable (lhs, rhs); + stupidly_hack_special_variables (lhs); } /* Evaluate EXPR, and return the arithmetic result. If VALIDP is @@ -299,10 +317,17 @@ evalexp (expr, validp) int *validp; { intmax_t val; + int c; + procenv_t oevalbuf; val = 0; + noeval = 0; - if (setjmp (evalbuf)) + FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); + + c = setjmp (evalbuf); + + if (c) { FREE (tokstr); FREE (expression); @@ -320,6 +345,8 @@ evalexp (expr, validp) if (validp) *validp = 1; + FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf)); + return (val); } @@ -349,7 +376,7 @@ subexpr (expr) val = EXP_HIGHEST (); if (curtok != 0) - evalerror ("syntax error in expression"); + evalerror (_("syntax error in expression")); FREE (tokstr); FREE (expression); @@ -389,7 +416,7 @@ expassign () special = curtok == OP_ASSIGN; if (lasttok != STR) - evalerror ("attempted assignment to non-variable"); + evalerror (_("attempted assignment to non-variable")); if (special) { @@ -410,12 +437,12 @@ expassign () break; case DIV: if (value == 0) - evalerror ("division by 0"); + evalerror (_("division by 0")); lvalue /= value; break; case MOD: if (value == 0) - evalerror ("division by 0"); + evalerror (_("division by 0")); lvalue %= value; break; case PLUS: @@ -441,7 +468,7 @@ expassign () break; default: free (lhs); - evalerror ("bug: bad expassign token"); + evalerror (_("bug: bad expassign token")); break; } value = lvalue; @@ -449,7 +476,7 @@ expassign () rhs = itos (value); if (noeval == 0) - (void)bind_int_variable (lhs, rhs); + expr_bind_variable (lhs, rhs); free (rhs); free (lhs); FREE (tokstr); @@ -471,7 +498,7 @@ expcond () { readtok (); if (curtok == 0 || curtok == COL) - evalerror ("expression expected"); + evalerror (_("expression expected")); if (cval == 0) { set_noeval = 1; @@ -483,17 +510,18 @@ expcond () if (set_noeval) noeval--; if (curtok != COL) - evalerror ("`:' expected for conditional expression"); + evalerror (_("`:' expected for conditional expression")); readtok (); if (curtok == 0) - evalerror ("expression expected"); + evalerror (_("expression expected")); set_noeval = 0; if (cval) { set_noeval = 1; noeval++; } - val2 = explor (); + + val2 = expcond (); if (set_noeval) noeval--; rval = cval ? val1 : val2; @@ -725,7 +753,7 @@ exp2 () val2 = exppower (); if (((op == DIV) || (op == MOD)) && (val2 == 0)) - evalerror ("division by 0"); + evalerror (_("division by 0")); if (op == MUL) val1 *= val2; @@ -743,14 +771,14 @@ exppower () register intmax_t val1, val2, c; val1 = exp1 (); - if (curtok == POWER) + while (curtok == POWER) { readtok (); - val2 = exp1 (); + val2 = exppower (); /* exponentiation is right-associative */ if (val2 == 0) return (1); if (val2 < 0) - evalerror ("exponent less than 0"); + evalerror (_("exponent less than 0")); for (c = 1; val2--; c *= val1) ; val1 = c; @@ -785,6 +813,7 @@ 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. */ @@ -794,12 +823,12 @@ exp0 () readtok (); if (curtok != STR) /* readtok() catches this */ - evalerror ("identifier expected after pre-increment or pre-decrement"); + evalerror (_("identifier expected after pre-increment or pre-decrement")); v2 = tokval + ((stok == PREINC) ? 1 : -1); vincdec = itos (v2); if (noeval == 0) - (void)bind_int_variable (tokstr, vincdec); + expr_bind_variable (tokstr, vincdec); free (vincdec); val = v2; @@ -821,8 +850,8 @@ exp0 () readtok (); val = EXP_HIGHEST (); - if (curtok != RPAR) - evalerror ("missing `)'"); + if (curtok != RPAR) /* ( */ + evalerror (_("missing `)'")); /* Skip over closing paren. */ readtok (); @@ -830,23 +859,42 @@ exp0 () else if ((curtok == NUM) || (curtok == STR)) { val = tokval; - if (curtok == STR && (*tp == '+' || *tp == '-') && tp[1] == *tp && - (tp[2] == '\0' || (ISALNUM ((unsigned char)tp[2]) == 0))) + if (curtok == STR) { + SAVETOK (&ec); + tokstr = (char *)NULL; /* keep it from being freed */ + noeval = 1; + readtok (); + stok = curtok; + /* post-increment or post-decrement */ - v2 = val + ((*tp == '+') ? 1 : -1); - vincdec = itos (v2); - if (noeval == 0) - (void)bind_int_variable (tokstr, vincdec); - free (vincdec); - tp += 2; - curtok = NUM; /* make sure x++=7 is flagged as an error */ + if (stok == POSTINC || stok == POSTDEC) + { + /* restore certain portions of EC */ + tokstr = ec.tokstr; + noeval = ec.noeval; + lasttok = STR; /* ec.curtok */ + + v2 = val + ((stok == POSTINC) ? 1 : -1); + vincdec = itos (v2); + if (noeval == 0) + expr_bind_variable (tokstr, vincdec); + free (vincdec); + curtok = NUM; /* make sure x++=7 is flagged as an error */ + } + else + { + if (stok == STR) /* free new tokstr before old one is restored */ + FREE (tokstr); + RESTORETOK (&ec); + } + } readtok (); } else - evalerror ("syntax error: operand expected"); + evalerror (_("syntax error: operand expected")); return (val); } @@ -885,6 +933,7 @@ expr_streval (tok, e) if (interactive_shell) { expr_unwind (); + top_level_cleanup (); jump_to_top_level (DISCARD); } else @@ -906,6 +955,64 @@ expr_streval (tok, e) 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 @@ -913,7 +1020,7 @@ expr_streval (tok, e) static void readtok () { - register char *cp; + register char *cp, *xp; register unsigned char c, c1; register int e; @@ -926,8 +1033,6 @@ readtok () if (c) cp++; - lasttp = tp = cp - 1; - if (c == '\0') { lasttok = curtok; @@ -935,6 +1040,7 @@ readtok () tp = cp; return; } + lasttp = tp = cp - 1; if (legal_variable_starter (c)) { @@ -959,7 +1065,7 @@ readtok () e = ']'; } else - evalerror ("bad array subscript"); + evalerror (bash_badsub_errmsg); } #endif /* ARRAY_VARS */ @@ -972,6 +1078,7 @@ readtok () 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 */ @@ -1041,17 +1148,41 @@ readtok () c = LOR; else if ((c == '*') && (c1 == '*')) c = POWER; - else if ((c == '-') && (c1 == '-') && legal_variable_starter ((unsigned char)*cp)) - c = PREDEC; - else if ((c == '+') && (c1 == '+') && legal_variable_starter ((unsigned char)*cp)) - c = PREINC; + else if ((c == '-' || c == '+') && c1 == c && curtok == STR) + c = (c == '-') ? POSTDEC : POSTINC; + 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 + cp--; /* not preinc or predec, so unget the character */ + } 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; } @@ -1060,14 +1191,14 @@ readtok () static void evalerror (msg) - char *msg; + const char *msg; { char *name, *t; name = this_command_name; for (t = expression; whitespace (*t); t++) ; - internal_error ("%s%s%s: %s (error token is \"%s\")", + internal_error (_("%s%s%s: %s (error token is \"%s\")"), name ? name : "", name ? ": " : "", t, msg, (lasttp && *lasttp) ? lasttp : ""); longjmp (evalbuf, 1); @@ -1081,7 +1212,7 @@ evalerror (msg) 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 interchangably. 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 -- + from [0-9][a-z][A-Z]_@ (a = 10, z = 35, A = 36, Z = 61, @ = 62, _ = 63 -- you get the picture). */ static intmax_t @@ -1121,11 +1252,11 @@ strlong (num) if (c == '#') { if (foundbase) - evalerror ("bad number"); + evalerror (_("invalid number")); /* Illegal base specifications raise an evaluation error. */ if (val < 2 || val > 64) - evalerror ("illegal arithmetic base"); + evalerror (_("invalid arithmetic base")); base = val; val = 0; @@ -1145,13 +1276,14 @@ strlong (num) c = 63; if (c >= base) - evalerror ("value too great for base"); + evalerror (_("value too great for base")); val = (val * base) + c; } else break; } + return (val); } @@ -1193,7 +1325,7 @@ main (argc, argv) { v = evalexp (argv[i], &expok); if (expok == 0) - fprintf (stderr, "%s: expression error\n", argv[i]); + fprintf (stderr, _("%s: expression error\n"), argv[i]); else printf ("'%s' -> %ld\n", argv[i], v); } diff --git a/src/bin/bash/externs.h b/src/bin/bash/externs.h index 1da16f74ed..1079e72725 100644 --- a/src/bin/bash/externs.h +++ b/src/bin/bash/externs.h @@ -1,23 +1,23 @@ /* externs.h -- extern function declarations which do not appear in their own header file. */ -/* Copyright (C) 1993-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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! */ @@ -30,13 +30,38 @@ extern intmax_t evalexp __P((char *, int *)); /* Functions from print_cmd.c. */ +#define FUNC_MULTILINE 0x01 +#define FUNC_EXTERNAL 0x02 + extern char *make_command_string __P((COMMAND *)); +extern char *named_function_string __P((char *, COMMAND *, int)); + extern void print_command __P((COMMAND *)); extern void print_simple_command __P((SIMPLE_COM *)); -extern char *named_function_string __P((char *, COMMAND *, int)); extern void print_word_list __P((WORD_LIST *, char *)); + +/* debugger support */ +extern void print_for_command_head __P((FOR_COM *)); +#if defined (SELECT_COMMAND) +extern void print_select_command_head __P((SELECT_COM *)); +#endif +extern void print_case_command_head __P((CASE_COM *)); +#if defined (DPAREN_ARITHMETIC) +extern void print_arith_command __P((WORD_LIST *)); +#endif +#if defined (COND_COMMAND) +extern void print_cond_command __P((COND_COM *)); +#endif + +/* set -x support */ extern char *indirection_level_string __P((void)); -extern void xtrace_print_word_list __P((WORD_LIST *)); +extern void xtrace_print_assignment __P((char *, char *, int, int)); +extern void xtrace_print_word_list __P((WORD_LIST *, int)); +extern void xtrace_print_for_command_head __P((FOR_COM *)); +#if defined (SELECT_COMMAND) +extern void xtrace_print_select_command_head __P((SELECT_COM *)); +#endif +extern void xtrace_print_case_command_head __P((CASE_COM *)); #if defined (DPAREN_ARITHMETIC) extern void xtrace_print_arith_cmd __P((WORD_LIST *)); #endif @@ -71,8 +96,11 @@ extern char **brace_expand __P((char *)); /* Miscellaneous functions from parse.y */ extern int yyparse __P((void)); extern int return_EOF __P((void)); +extern char *xparse_dolparen __P((char *, char *, int *, int)); extern void reset_parser __P((void)); -extern WORD_LIST *parse_string_to_word_list __P((char *, const char *)); +extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *)); + +extern void free_pushed_string_input __P((void)); extern char *decode_prompt_string __P((char *)); @@ -88,6 +116,7 @@ extern void set_default_locale __P((void)); extern void set_default_locale_vars __P((void)); extern int set_locale_var __P((char *, char *)); extern int set_lang __P((char *, char *)); +extern void set_default_lang __P((void)); extern char *get_locale_var __P((char *)); extern char *localetrans __P((char *, int, int *)); extern char *mk_msgstr __P((char *, int *)); @@ -113,9 +142,29 @@ extern void strip_leading __P((char *)); extern void strip_trailing __P((char *, int, int)); extern void xbcopy __P((char *, char *, int)); +/* Functions from version.c. */ +extern char *shell_version_string __P((void)); +extern void show_shell_version __P((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 __P((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 __P((void)); @@ -123,6 +172,9 @@ extern long get_clk_tck __P((void)); extern void clock_t_to_secs (); extern void print_clock_t (); +/* Declarations for functions defined in lib/sh/fdprintf.c */ +extern void fdprintf __P((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + /* 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 */ @@ -139,11 +191,25 @@ extern char *fmtullong __P((unsigned long long int, int, char *, size_t, int)); /* Declarations for functions defined in lib/sh/fmtumax.c */ extern char *fmtumax __P((uintmax_t, int, char *, size_t, int)); +/* Declarations for functions defined in lib/sh/fpurge.c */ +#if !HAVE_DECL_FPURGE + +#if HAVE_FPURGE +# define fpurge _bash_fpurge +#endif +extern int fpurge __P((FILE *stream)); + +#endif /* HAVE_DECL_FPURGE */ + + /* Declarations for functions defined in lib/sh/getcwd.c */ #if !defined (HAVE_GETCWD) extern char *getcwd __P((char *, size_t)); #endif +/* Declarations for functions defined in lib/sh/input_avail.c */ +extern int input_avail __P((int)); + /* Declarations for functions defined in lib/sh/itos.c */ extern char *inttostr __P((intmax_t, char *, size_t)); extern char *itos __P((intmax_t)); @@ -154,6 +220,7 @@ extern char *uitos __P((uintmax_t)); #define MP_DOTILDE 0x01 #define MP_DOCWD 0x02 #define MP_RMDOT 0x04 +#define MP_IGNDOT 0x08 extern char *sh_makepath __P((const char *, const char *, int)); @@ -197,9 +264,20 @@ extern char *sh_realpath __P((const char *, char *)); extern int sh_setlinebuf __P((FILE *)); #endif +/* declarations for functions defined in lib/sh/shaccess.c */ +extern int sh_eaccess __P((char *, int)); + +/* declarations for functions defined in lib/sh/shmatch.c */ +extern int sh_regmatch __P((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/shquote.c */ extern char *sh_single_quote __P((char *)); extern char *sh_double_quote __P((char *)); +extern char *sh_mkdoublequoted __P((const char *, int, int)); extern char *sh_un_double_quote __P((char *)); extern char *sh_backslash_quote __P((char *)); extern char *sh_backslash_quote_for_double_quotes __P((char *)); @@ -207,6 +285,7 @@ extern int sh_contains_shell_metas __P((char *)); /* declarations for functions defined in lib/sh/spell.c */ extern int spname __P((char *, char *)); +extern char *dirspell __P((char *)); /* declarations for functions defined in lib/sh/strcasecmp.c */ #if !defined (HAVE_STRCASECMP) @@ -215,7 +294,7 @@ extern int strcasecmp __P((const char *, const char *)); #endif /* HAVE_STRCASECMP */ /* declarations for functions defined in lib/sh/strerror.c */ -#if !defined (strerror) +#if !defined (HAVE_STRERROR) && !defined (strerror) extern char *strerror __P((int)); #endif @@ -267,6 +346,16 @@ extern void strvec_sort __P((char **)); extern char **strvec_from_word_list __P((WORD_LIST *, int, int, int *)); extern WORD_LIST *strvec_to_word_list __P((char **, int, int)); +/* declarations for functions defined in lib/sh/strnlen.c */ +#if !defined (HAVE_STRNLEN) +extern size_t strnlen __P((const char *, size_t)); +#endif + +/* declarations for functions defined in lib/sh/strpbrk.c */ +#if !defined (HAVE_STRPBRK) +extern char *strpbrk __P((const char *, const char *)); +#endif + /* declarations for functions defined in lib/sh/strtod.c */ #if !defined (HAVE_STRTOD) extern double strtod __P((const char *, char **)); @@ -323,14 +412,35 @@ extern char *sh_mktmpname __P((char *, int)); extern int sh_mktmpfd __P((char *, int, char **)); /* extern FILE *sh_mktmpfp __P((char *, int, char **)); */ +/* declarations for functions defined in lib/sh/uconvert.c */ +extern int uconvert __P((char *, long *, long *)); + +/* declarations for functions defined in lib/sh/ufuncs.c */ +extern unsigned int falarm __P((unsigned int, unsigned int)); +extern unsigned int fsleep __P((unsigned int, unsigned int)); + +/* declarations for functions defined in lib/sh/winsize.c */ +extern void get_new_window_size __P((int, int *, int *)); + /* declarations for functions defined in lib/sh/xstrchr.c */ #undef xstrchr extern char *xstrchr __P((const char *, int)); +/* declarations for functions defined in lib/sh/zcatfd.c */ +extern int zcatfd __P((int, int, char *)); + +/* declarations for functions defined in lib/sh/zgetline.c */ +extern ssize_t zgetline __P((int, char **, size_t *, int)); + +/* declarations for functions defined in lib/sh/zmapfd.c */ +extern int zmapfd __P((int, char **, char *)); + /* declarations for functions defined in lib/sh/zread.c */ extern ssize_t zread __P((int, char *, size_t)); +extern ssize_t zreadretry __P((int, char *, size_t)); extern ssize_t zreadintr __P((int, char *, size_t)); extern ssize_t zreadc __P((int, char *)); +extern ssize_t zreadcintr __P((int, char *)); extern void zreset __P((void)); extern void zsyncfd __P((int)); diff --git a/src/bin/bash/findcmd.c b/src/bin/bash/findcmd.c index f3431a1be1..1f05394141 100644 --- a/src/bin/bash/findcmd.c +++ b/src/bin/bash/findcmd.c @@ -1,30 +1,29 @@ /* findcmd.c -- Functions to search for commands by name. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the - Free Software Foundation Inc., - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ + along with Bash. If not, see . +*/ #include "config.h" #include #include "chartypes.h" #include "bashtypes.h" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "filecntl.h" @@ -72,11 +71,6 @@ int check_hashed_filenames; containing the file of interest. */ int dot_found_in_search = 0; -#define u_mode_bits(x) (((x) & 0000700) >> 6) -#define g_mode_bits(x) (((x) & 0000070) >> 3) -#define o_mode_bits(x) (((x) & 0000007) >> 0) -#define X_BIT(x) ((x) & 1) - /* Return some flags based on information about this file. The EXISTS bit is non-zero if the file is found. The EXECABLE bit is non-zero the file is executble. @@ -86,6 +80,7 @@ file_status (name) const char *name; { struct stat finfo; + int r; /* Determine whether this file exists or not. */ if (stat (name, &finfo) < 0) @@ -96,48 +91,62 @@ file_status (name) if (S_ISDIR (finfo.st_mode)) return (FS_EXISTS|FS_DIRECTORY); + r = FS_EXISTS; + #if 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 (access (name, X_OK) == 0) - return (FS_EXISTS | FS_EXECABLE); - else - return (FS_EXISTS); + r |= FS_EXECABLE; + if (access (name, R_OK) == 0) + r |= FS_READABLE; + + return r; #else /* !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. */ + 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. */ + others to be able to exec a file, and can read any file. */ if (current_user.euid == (uid_t)0) { - int bits; - - bits = (u_mode_bits (finfo.st_mode) | - g_mode_bits (finfo.st_mode) | - o_mode_bits (finfo.st_mode)); - - if (X_BIT (bits)) - return (FS_EXISTS | FS_EXECABLE); + r |= FS_READABLE; + if (finfo.st_mode & S_IXUGO) + r |= FS_EXECABLE; + return r; } - /* If we are the owner of the file, the owner execute bit applies. */ - if (current_user.euid == finfo.st_uid && X_BIT (u_mode_bits (finfo.st_mode))) - return (FS_EXISTS | FS_EXECABLE); + /* If we are the owner of the file, the owner bits apply. */ + if (current_user.euid == finfo.st_uid) + { + if (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. */ - if (group_member (finfo.st_gid) && X_BIT (g_mode_bits (finfo.st_mode))) - return (FS_EXISTS | FS_EXECABLE); + else if (group_member (finfo.st_gid)) + { + if (finfo.st_mode & S_IXGRP) + r |= FS_EXECABLE; + if (finfo.st_mode & S_IRGRP) + r |= FS_READABLE; + } - /* If `others' have execute permission to the file, then so do we, - since we are also `others'. */ - if (X_BIT (o_mode_bits (finfo.st_mode))) - return (FS_EXISTS | FS_EXECABLE); + /* Else we check whether `others' have permission to execute the file */ + else + { + if (finfo.st_mode & S_IXOTH) + r |= FS_EXECABLE; + if (finfo.st_mode & S_IROTH) + r |= FS_READABLE; + } - return (FS_EXISTS); + return r; #endif /* !AFS */ } @@ -187,12 +196,13 @@ find_user_command (name) /* Locate the file referenced by NAME, searching along the contents of the shell PATH variable. Return a new string which is the full pathname to the file, or NULL if the file couldn't be found. This - returns the first file found. */ + 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_EXISTS)); + return (find_user_command_internal (name, FS_READABLE)); } static char * @@ -297,7 +307,7 @@ search_for_command (pathname) if (hashed_file && (posixly_correct || check_hashed_filenames)) { st = file_status (hashed_file); - if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0) + if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) { phash_remove (pathname); free (hashed_file); @@ -467,9 +477,14 @@ find_in_path_element (name, path, flags, name_len, dotinfop) 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) && + if ((status & FS_EXECABLE) && (flags & (FS_EXEC_ONLY|FS_EXEC_PREFERRED)) && (((flags & FS_NODIRS) == 0) || ((status & FS_DIRECTORY) == 0))) { FREE (file_to_lose_on); @@ -484,9 +499,11 @@ find_in_path_element (name, path, flags, name_len, dotinfop) 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, fail. */ - if ((flags & FS_EXEC_ONLY) || (flags & FS_EXEC_PREFERRED) || - ((flags & FS_NODIRS) && (status & FS_DIRECTORY))) + 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); diff --git a/src/bin/bash/findcmd.h b/src/bin/bash/findcmd.h index ae8015e9cf..db74c1cb47 100644 --- a/src/bin/bash/findcmd.h +++ b/src/bin/bash/findcmd.h @@ -1,22 +1,22 @@ /* findcmd.h - functions from findcmd.c. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/flags.c b/src/bin/bash/flags.c index 8846ba3077..d3b38ad37b 100644 --- a/src/bin/bash/flags.c +++ b/src/bin/bash/flags.c @@ -1,25 +1,24 @@ /* flags.c -- Everything about flags except the `set' command. That is in builtins.c */ -/* Copyright (C) 1987,1989 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ -/* Flags hacking. */ #include "config.h" #if defined (HAVE_UNISTD_H) # include @@ -40,12 +39,14 @@ extern int set_job_control __P((int)); extern char *shell_name; #endif +extern int shell_initialized; + /* -c, -s invocation options -- not really flags, but they show up in $- */ extern int want_pending_command, read_from_stdin; /* **************************************************************** */ /* */ -/* The Standard Sh Flags. */ +/* The Standard sh Flags. */ /* */ /* **************************************************************** */ @@ -151,13 +152,24 @@ int privileged_mode = 0; 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. */ /* */ /* **************************************************************** */ -struct flags_alist shell_flags[] = { +const struct flags_alist shell_flags[] = { /* Standard sh flags. */ { 'a', &mark_modified_vars }, #if defined (JOB_CONTROL) @@ -180,24 +192,22 @@ struct flags_alist shell_flags[] = { { 'u', &unbound_vars_is_error }, { 'v', &echo_input_at_read }, { 'x', &echo_command_at_execute }, - { 'C', &noclobber }, /* New flags that control non-standard things. */ #if 0 { 'l', &lexical_scoping }, #endif - { 'I', &no_invisible_vars }, - - { 'P', &no_symbolic_links }, - #if defined (BRACE_EXPANSION) { 'B', &brace_expansion }, #endif - + { 'C', &noclobber }, + { 'E', &error_trace_mode }, #if defined (BANG_HISTORY) { 'H', &history_expansion }, #endif /* BANG_HISTORY */ - + { 'I', &no_invisible_vars }, + { 'P', &no_symbolic_links }, + { 'T', &function_trace_mode }, {0, (int *)NULL} }; @@ -271,7 +281,7 @@ change_flag (flag, on_or_off) #if defined (RESTRICTED_SHELL) case 'r': - if (on_or_off == FLAG_ON) + if (on_or_off == FLAG_ON && shell_initialized) maybe_make_restricted (shell_name); break; #endif @@ -310,7 +320,7 @@ reset_shell_flags () place_keywords_in_env = read_but_dont_execute = just_one_command = 0; noclobber = unbound_vars_is_error = echo_input_at_read = 0; echo_command_at_execute = jobs_m_flag = forced_interactive = 0; - no_symbolic_links = no_invisible_vars = privileged_mode = 0; + no_symbolic_links = no_invisible_vars = privileged_mode = pipefail_opt = 0; hashing_enabled = interactive_comments = 1; diff --git a/src/bin/bash/flags.h b/src/bin/bash/flags.h index decfe693dc..d8fa757063 100644 --- a/src/bin/bash/flags.h +++ b/src/bin/bash/flags.h @@ -1,23 +1,23 @@ /* 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 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -37,7 +37,7 @@ struct flags_alist { int *value; }; -extern struct flags_alist shell_flags[]; +extern const struct flags_alist shell_flags[]; extern char optflags[]; extern int @@ -46,7 +46,8 @@ extern int just_one_command, unbound_vars_is_error, echo_input_at_read, echo_command_at_execute, no_invisible_vars, noclobber, hashing_enabled, forced_interactive, privileged_mode, - asynchronous_notification, interactive_comments, no_symbolic_links; + asynchronous_notification, interactive_comments, no_symbolic_links, + function_trace_mode, error_trace_mode, pipefail_opt; #if 0 extern int lexical_scoping; diff --git a/src/bin/bash/general.c b/src/bin/bash/general.c index 7bd4bad531..612e5d2d3f 100644 --- a/src/bin/bash/general.c +++ b/src/bin/bash/general.c @@ -1,22 +1,22 @@ /* general.c -- Stuff that is used by all files. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -36,7 +36,11 @@ #include "chartypes.h" #include +#include "bashintl.h" + #include "shell.h" +#include "test.h" + #include #if !defined (errno) @@ -44,7 +48,6 @@ extern int errno; #endif /* !errno */ extern int expand_aliases; -extern int interrupt_immediately; extern int interactive_comments; extern int check_hashed_filenames; extern int source_uses_path; @@ -55,7 +58,7 @@ static int unquoted_tilde_word __P((const char *)); static void initialize_group_array __P((void)); /* A standard error message to use when getcwd() returns NULL. */ -char *bash_getcwd_errstr = "getcwd: cannot access parent directories"; +const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); /* Do whatever is necessary to initialize `Posix mode'. */ void @@ -66,6 +69,7 @@ posix_initialize (on) if (on != 0) { interactive_comments = source_uses_path = expand_aliases = 1; + source_searches_cwd = 0; } /* Things that should be turned on when posix mode is disabled. */ @@ -158,7 +162,7 @@ all_digits (string) not null. */ int legal_number (string, result) - char *string; + const char *string; intmax_t *result; { intmax_t value; @@ -169,7 +173,7 @@ legal_number (string, result) errno = 0; value = strtoimax (string, &ep, 10); - if (errno) + if (errno || ep == string) return 0; /* errno is set on overflow or underflow */ /* Skip any trailing whitespace, since strtoimax does not. */ @@ -224,30 +228,51 @@ check_identifier (word, check_word) { if ((word->flags & (W_HASDOLLAR|W_QUOTED)) || all_digits (word->word)) { - internal_error ("`%s': not a valid identifier", word->word); + internal_error (_("`%s': not a valid identifier"), word->word); return (0); } else if (check_word && legal_identifier (word->word) == 0) { - internal_error ("`%s': not a valid identifier", word->word); + internal_error (_("`%s': not a valid identifier"), word->word); return (0); } else 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) + char *string; + int flags; +{ + register 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. */ int -assignment (string) +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 ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ +#else if (legal_variable_starter (c) == 0) +#endif return (0); while (c = string[indx]) @@ -263,10 +288,16 @@ assignment (string) newi = skipsubscript (string, indx); 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) @@ -445,8 +476,7 @@ check_binary_file (sample, sample_len) c = sample[i]; if (c == '\n') return (0); - - if (ISSPACE (c) == 0 && ISPRINT (c) == 0) + if (c == '\0') return (1); } @@ -455,26 +485,68 @@ check_binary_file (sample, sample_len) /* **************************************************************** */ /* */ -/* Functions to manipulate pathnames */ +/* Functions to manipulate pipes */ /* */ /* **************************************************************** */ -/* 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) - char *string, *dot_path; +int +sh_openpipe (pv) + int *pv; { - char *result; + int r; - if (dot_path == 0 || ABSPATH(string)) - result = savestring (string); - else - result = sh_makepath (dot_path, string, 0); + if ((r = pipe (pv)) < 0) + return r; - return (result); + 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) + char *fn; +{ + struct stat sb; + + return (stat (fn, &sb) == 0); +} + +int +file_isdir (fn) + char *fn; +{ + struct stat sb; + + return ((stat (fn, &sb) == 0) && S_ISDIR (sb.st_mode)); +} + +int +file_iswdir (fn) + char *fn; +{ + return (file_isdir (fn) && sh_eaccess (fn, W_OK) == 0); } /* Return 1 if STRING contains an absolute pathname, else 0. Used by `cd' @@ -508,16 +580,54 @@ absolute_program (string) return ((char *)xstrchr (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) + char *string, *dot_path; +{ + char *result; + + if (dot_path == 0 || ABSPATH(string)) +#ifdef __CYGWIN__ + { + char pathbuf[PATH_MAX + 1]; + + cygwin_conv_to_full_posix_path (string, pathbuf); + 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 not a full pathname, simply return it. */ + 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); @@ -570,6 +680,72 @@ polite_directory_format (name) 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; + memcpy (nbeg, ntail, nlen); + nbeg[nlen] = '\0'; + + return name; +} + /* 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. */ @@ -628,7 +804,9 @@ extern char *get_dirstack_from_string __P((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 @@ -676,6 +854,10 @@ tilde_initialize () 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); @@ -684,6 +866,10 @@ tilde_initialize () 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; } } @@ -715,23 +901,70 @@ unquoted_tilde_word (s) 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). */ + 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 old_immed, r; + int old_immed, old_term, r; char *ret; old_immed = interrupt_immediately; - interrupt_immediately = 1; - tilde_additional_prefixes = assign_p ? bash_tilde_prefixes : (char **)0; + old_term = terminate_immediately; + interrupt_immediately = terminate_immediately = 1; + + 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); interrupt_immediately = old_immed; + terminate_immediately = old_term; return (ret); } diff --git a/src/bin/bash/general.h b/src/bin/bash/general.h index 71f787c651..5ea0d45591 100644 --- a/src/bin/bash/general.h +++ b/src/bin/bash/general.h @@ -1,22 +1,22 @@ /* general.h -- defines that everybody likes to use. */ -/* Copyright (C) 1993-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -24,6 +24,7 @@ #include "stdc.h" #include "bashtypes.h" +#include "chartypes.h" #if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) # if defined (HAVE_SYS_TIME_H) @@ -129,16 +130,16 @@ typedef struct { : (type)(list)) #if __GNUC__ > 1 -# define FASTCOPY(s, d, n) __builtin_memcpy (d, s, n) +# 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) +# define FASTCOPY(s, d, n) memcpy ((d), (s), (n)) # else -# define FASTCOPY(s, d, n) memmove (d, s, n) +# define FASTCOPY(s, d, n) memmove ((d), (s), (n)) # endif /* !HAVE_MEMMOVE */ # else /* HAVE_BCOPY */ -# define FASTCOPY(s, d, n) bcopy (s, d, n) +# define FASTCOPY(s, d, n) bcopy ((s), (d), (n)) # endif /* HAVE_BCOPY */ #endif /* !__GNUC__ */ @@ -216,6 +217,7 @@ typedef void sh_resetsig_func_t __P((int)); /* sh_vintfunc_t */ typedef int sh_ignore_func_t __P((const char *)); /* sh_icpfunc_t */ typedef int sh_assign_func_t __P((const char *)); /* sh_icpfunc_t */ +typedef int sh_wassign_func_t __P((WORD_DESC *)); typedef int sh_builtin_func_t __P((WORD_LIST *)); /* sh_wlist_func_t */ @@ -230,6 +232,7 @@ typedef int sh_builtin_func_t __P((WORD_LIST *)); /* sh_wlist_func_t */ #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 @@ -248,14 +251,18 @@ typedef int QSFUNC (); # define ABSPATH(x) ((x)[0] == '/') # define RELPATH(x) ((x)[0] != '/') #else /* __CYGWIN__ */ -# define ABSPATH(x) (((x)[0] && ISALPHA((unsigned char)(x)[0]) && (x)[1] == ':' && (x)[2] == '/') || (x)[0] == '/') -# define RELPATH(x) (!(x)[0] || ((x)[1] != ':' && (x)[0] != '/')) +# 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 '/' -#define ISDIRSEP(c) ((c) == '/') +#if !defined (__CYGWIN__) +# define ISDIRSEP(c) ((c) == '/') +#else +# define ISDIRSEP(c) ((c) == '/' || (c) == '\\') +#endif /* __CYGWIN__ */ #define PATHSEP(c) (ISDIRSEP(c) || (c) == 0) #if 0 @@ -274,10 +281,11 @@ extern void print_rlimtype __P((RLIMTYPE, int)); #endif extern int all_digits __P((char *)); -extern int legal_number __P((char *, intmax_t *)); +extern int legal_number __P((const char *, intmax_t *)); extern int legal_identifier __P((char *)); extern int check_identifier __P((WORD_DESC *, int)); -extern int assignment __P((const char *)); +extern int legal_alias_name __P((char *, int)); +extern int assignment __P((const char *, int)); extern int sh_unset_nodelay_mode __P((int)); extern int sh_validfd __P((int)); @@ -289,16 +297,25 @@ extern int check_binary_file __P((char *, int)); extern int same_file __P((char *, char *, struct stat *, struct stat *)); #endif -extern char *make_absolute __P((char *, char *)); +extern int sh_openpipe __P((int *)); +extern int sh_closepipe __P((int *)); + +extern int file_exists __P((char *)); +extern int file_isdir __P((char *)); +extern int file_iswdir __P((char *)); extern int absolute_pathname __P((const char *)); extern int absolute_program __P((const char *)); + +extern char *make_absolute __P((char *, char *)); extern char *base_pathname __P((char *)); extern char *full_pathname __P((char *)); extern char *polite_directory_format __P((char *)); +extern char *trim_pathname __P((char *, int)); extern char *extract_colon_unit __P((char *, int *)); extern void tilde_initialize __P((void)); +extern char *bash_tilde_find_word __P((const char *, int, int *)); extern char *bash_tilde_expand __P((const char *, int)); extern int group_member __P((gid_t)); diff --git a/src/bin/bash/hashcmd.c b/src/bin/bash/hashcmd.c index 895b485065..fc0bfbe27d 100644 --- a/src/bin/bash/hashcmd.c +++ b/src/bin/bash/hashcmd.c @@ -1,23 +1,23 @@ /* hashcmd.c - functions for managing a hash table mapping command names to full pathnames. */ -/* Copyright (C) 1997-2002 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/hashcmd.h b/src/bin/bash/hashcmd.h index 3d47c1c95f..758f5b4b9f 100644 --- a/src/bin/bash/hashcmd.h +++ b/src/bin/bash/hashcmd.h @@ -1,22 +1,22 @@ /* hashcmd.h - Common defines for hashing filenames. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "stdc.h" #include "hashlib.h" @@ -25,7 +25,7 @@ extern HASH_TABLE *hashed_filenames; -typedef struct { +typedef struct _pathdata { char *path; /* The full pathname of the file. */ int flags; } PATH_DATA; diff --git a/src/bin/bash/hashlib.c b/src/bin/bash/hashlib.c index 456272ac1a..ccde9b9f54 100644 --- a/src/bin/bash/hashlib.c +++ b/src/bin/bash/hashlib.c @@ -1,22 +1,22 @@ /* hashlib.c -- functions to manage and access hash tables for bash. */ -/* Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc. +/* 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. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/hashlib.h b/src/bin/bash/hashlib.h index bb7120be10..4620e423c7 100644 --- a/src/bin/bash/hashlib.h +++ b/src/bin/bash/hashlib.h @@ -1,22 +1,22 @@ /* hashlib.h -- the data structures used in hashing in Bash. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/include/ansi_stdlib.h b/src/bin/bash/include/ansi_stdlib.h index db13cd234b..7dc2ee0cf4 100644 --- a/src/bin/bash/include/ansi_stdlib.h +++ b/src/bin/bash/include/ansi_stdlib.h @@ -6,19 +6,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/include/chartypes.h b/src/bin/bash/include/chartypes.h index 4f47b994d2..05607691c8 100644 --- a/src/bin/bash/include/chartypes.h +++ b/src/bin/bash/include/chartypes.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/include/filecntl.h b/src/bin/bash/include/filecntl.h index 2304d5d058..31667a11a0 100644 --- a/src/bin/bash/include/filecntl.h +++ b/src/bin/bash/include/filecntl.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/include/gettext.h b/src/bin/bash/include/gettext.h new file mode 100644 index 0000000000..97a1f36d6c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/include/maxpath.h b/src/bin/bash/include/maxpath.h index 00e43f8417..db2e1fb42e 100644 --- a/src/bin/bash/include/maxpath.h +++ b/src/bin/bash/include/maxpath.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/include/memalloc.h b/src/bin/bash/include/memalloc.h index d3ed041396..57318b9d31 100644 --- a/src/bin/bash/include/memalloc.h +++ b/src/bin/bash/include/memalloc.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/include/ocache.h b/src/bin/bash/include/ocache.h index 67448c3b30..c596c27257 100644 --- a/src/bin/bash/include/ocache.h +++ b/src/bin/bash/include/ocache.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/include/posixdir.h b/src/bin/bash/include/posixdir.h index 505e27954f..bd33694dbb 100644 --- a/src/bin/bash/include/posixdir.h +++ b/src/bin/bash/include/posixdir.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* This file should be included instead of or . */ @@ -25,7 +25,11 @@ #if defined (HAVE_DIRENT_H) # include -# define D_NAMLEN(d) (strlen ((d)->d_name)) +# 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 @@ -42,11 +46,11 @@ # define D_NAMLEN(d) ((d)->d_namlen) #endif /* !HAVE_DIRENT_H */ -#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO) +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) # define d_fileno d_ino #endif -#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO)) +#if defined (_POSIX_SOURCE) && (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)) /* Posix does not require that the d_ino field be present, and some systems do not provide it. */ # define REAL_DIR_ENTRY(dp) 1 diff --git a/src/bin/bash/include/posixjmp.h b/src/bin/bash/include/posixjmp.h index b52aa00332..49bfecf338 100644 --- a/src/bin/bash/include/posixjmp.h +++ b/src/bin/bash/include/posixjmp.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _POSIXJMP_H_ #define _POSIXJMP_H_ diff --git a/src/bin/bash/include/posixstat.h b/src/bin/bash/include/posixstat.h index c93b52887e..3eb7f2906f 100644 --- a/src/bin/bash/include/posixstat.h +++ b/src/bin/bash/include/posixstat.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* This file should be included instead of . It relies on the local sys/stat.h to work though. */ diff --git a/src/bin/bash/include/posixtime.h b/src/bin/bash/include/posixtime.h index b4c4c68dd4..31bdddf86c 100644 --- a/src/bin/bash/include/posixtime.h +++ b/src/bin/bash/include/posixtime.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _POSIXTIME_H_ #define _POSIXTIME_H_ diff --git a/src/bin/bash/include/posixwait.h b/src/bin/bash/include/posixwait.h index a11d156ccf..815ea22992 100644 --- a/src/bin/bash/include/posixwait.h +++ b/src/bin/bash/include/posixwait.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/include/shmbutil.h b/src/bin/bash/include/shmbutil.h index 7fe2f8eaa1..2b4080418a 100644 --- a/src/bin/bash/include/shmbutil.h +++ b/src/bin/bash/include/shmbutil.h @@ -1,75 +1,51 @@ /* shmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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" -/************************************************/ -/* check multibyte capability for I18N code */ -/************************************************/ - -/* For platforms which support the ISO C amendement 1 functionality we - support user defined character classes. */ - /* Solaris 2.5 has a bug: must be included before . */ -#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) -# include -# include -# if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */ -# define HANDLE_MULTIBYTE 1 -# endif -#endif /* HAVE_WCTYPE_H && HAVE_WCHAR_H */ - -/* 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 /* HANDLE_MULTIBYTE && !HAVE_MBSTATE_T */ - -/* 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 /* HANDLE_MULTIBYTE */ - -/************************************************/ -/* end of multibyte capability checks for I18N */ -/************************************************/ +/* Include config.h for HANDLE_MULTIBYTE */ +#include #if defined (HANDLE_MULTIBYTE) extern size_t xmbsrtowcs __P((wchar_t *, const char **, size_t, mbstate_t *)); +extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *)); + +extern size_t mbstrlen __P((const char *)); extern char *xstrchr __P((const char *, int)); +#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) + #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -81,6 +57,20 @@ extern char *xstrchr __P((const char *, int)); #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 + #endif /* !HANDLE_MULTIBYTE */ /* Declare and initialize a multibyte state. Call must be terminated @@ -120,6 +110,8 @@ extern char *xstrchr __P((const char *, int)); state = state_bak; \ (_i)++; \ } \ + else if (mblength == 0) \ + (_i)++; \ else \ (_i) += mblength; \ } \ @@ -160,6 +152,89 @@ extern char *xstrchr __P((const char *, int)); # 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 (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 (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) @@ -344,4 +419,31 @@ extern char *xstrchr __P((const char *, int)); # define SADD_MBCHAR(_dst, _src, _si, _srcsize) #endif +/* Watch out when using this -- it's just straight textual subsitution */ +#if defined (HANDLE_MULTIBYTE) +# define SADD_MBQCHAR_BODY(_dst, _src, _si, _srcsize) \ +\ + int i; \ + mbstate_t state_bak; \ + size_t mblength; \ +\ + 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 + +#endif /* HANDLE_MULTIBYTE */ #endif /* _SH_MBUTIL_H_ */ diff --git a/src/bin/bash/include/shtty.h b/src/bin/bash/include/shtty.h index e3e52e3667..66500d93dd 100644 --- a/src/bin/bash/include/shtty.h +++ b/src/bin/bash/include/shtty.h @@ -2,19 +2,19 @@ /* This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -91,6 +91,17 @@ extern int tt_setcbreak __P((TTYSTRUCT *)); 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 __P((int, TTYSTRUCT *)); +extern int ttfd_noecho __P((int, TTYSTRUCT *)); +extern int ttfd_eightbit __P((int, TTYSTRUCT *)); +extern int ttfd_nocanon __P((int, TTYSTRUCT *)); + +extern int ttfd_cbreak __P((int, TTYSTRUCT *)); + +/* These functions work with fd 0 and the TTYSTRUCT saved with ttsave () */ extern int ttonechar __P((void)); extern int ttnoecho __P((void)); extern int tteightbit __P((void)); diff --git a/src/bin/bash/include/stdc.h b/src/bin/bash/include/stdc.h index 05b743e5cf..df01d813fe 100644 --- a/src/bin/bash/include/stdc.h +++ b/src/bin/bash/include/stdc.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_STDC_H_) #define _STDC_H_ @@ -66,7 +66,7 @@ #endif /* !__STDC__ */ #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) # define __attribute__(x) # endif #endif diff --git a/src/bin/bash/include/systimes.h b/src/bin/bash/include/systimes.h index fe969f9464..9629d255a4 100644 --- a/src/bin/bash/include/systimes.h +++ b/src/bin/bash/include/systimes.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1996, 2008,2009 Free Software Foundation, Inc. - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This file is part of GNU Bash, the Bourne Again SHell. - The GNU C Library is distributed in the hope that it will be useful, + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + 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 diff --git a/src/bin/bash/include/typemax.h b/src/bin/bash/include/typemax.h index 42ae517dc4..32e7a899b3 100644 --- a/src/bin/bash/include/typemax.h +++ b/src/bin/bash/include/typemax.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -77,4 +77,8 @@ static const unsigned long long int maxquad = ULLONG_MAX; # define ULLONG_MAX maxquad #endif +#ifndef SSIZE_MAX +# define SSIZE_MAX 32767 /* POSIX minimum max */ +#endif + #endif /* _SH_TYPEMAX_H */ diff --git a/src/bin/bash/include/unionwait.h b/src/bin/bash/include/unionwait.h index ae7c7dfc1b..b1b4dfaff7 100644 --- a/src/bin/bash/include/unionwait.h +++ b/src/bin/bash/include/unionwait.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifndef _UNIONWAIT_H #define _UNIONWAIT_H diff --git a/src/bin/bash/include/y.tab.h b/src/bin/bash/include/y.tab.h deleted file mode 100644 index 406752d1d0..0000000000 --- a/src/bin/bash/include/y.tab.h +++ /dev/null @@ -1 +0,0 @@ -#include "parse.h" diff --git a/src/bin/bash/input.c b/src/bin/bash/input.c index 46e4ee1089..c5b474fa6c 100644 --- a/src/bin/bash/input.c +++ b/src/bin/bash/input.c @@ -1,27 +1,27 @@ /* input.c -- functions to perform buffered input with synchronization. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" #include "bashtypes.h" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "filecntl.h" @@ -34,21 +34,38 @@ #endif #include "bashansi.h" +#include "bashintl.h" + #include "command.h" #include "general.h" #include "input.h" #include "error.h" #include "externs.h" +#include "quit.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 __P((int)); + /* Functions to handle reading input on systems that don't restart read(2) if a signal is received. */ static char localbuf[128]; -static int local_index, local_bufused; +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 @@ -59,14 +76,26 @@ getc_with_restart (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) { + CHECK_TERMSIG; local_bufused = read (fileno (stream), localbuf, sizeof(localbuf)); if (local_bufused > 0) break; + 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)); + return EOF; + } + continue; + } else if (local_bufused == 0 || errno != EINTR) { local_index = 0; @@ -226,7 +255,7 @@ save_bash_input (fd, 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); + sys_error (_("cannot allocate new file descriptor for bash input from fd %d"), fd); return -1; } @@ -234,7 +263,7 @@ save_bash_input (fd, new_fd) { /* What's this? A stray buffer without an associated open file descriptor? Free up the buffer and report the error. */ - internal_error ("check_bash_input: buffer already exists for new fd %d", nfd); + internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd); free_buffered_stream (buffers[nfd]); } @@ -276,8 +305,13 @@ int check_bash_input (fd) int fd; { - if (fd > 0 && fd_is_bash_input (fd)) - return ((save_bash_input (fd, -1) == -1) ? -1 : 0); + 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; } @@ -305,7 +339,13 @@ duplicate_buffered_stream (fd1, fd2) (bash_input.location.buffered_fd == fd2); if (buffers[fd2]) - free_buffered_stream (buffers[fd2]); + { + /* If the two objects share the same b_buffer, don't free it. */ + if (buffers[fd1] && buffers[fd1]->b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer) + buffers[fd2] = (BUFFERED_STREAM *)NULL; + else + free_buffered_stream (buffers[fd2]); + } buffers[fd2] = copy_buffered_stream (buffers[fd1]); if (buffers[fd2]) buffers[fd2]->b_fd = fd2; @@ -433,6 +473,7 @@ b_fill_buffer (bp) { ssize_t nr; + CHECK_TERMSIG; nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); if (nr <= 0) { @@ -500,6 +541,8 @@ sync_buffered_stream (bfd) int buffered_getchar () { + CHECK_TERMSIG; + #if !defined (DJGPP) return (bufstream_getc (buffers[bash_input.location.buffered_fd])); #else diff --git a/src/bin/bash/input.h b/src/bin/bash/input.h index b024abc6b3..834626ae1a 100644 --- a/src/bin/bash/input.h +++ b/src/bin/bash/input.h @@ -1,21 +1,22 @@ /* input.h -- Structures and unions used for reading input. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. + +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -100,7 +101,7 @@ extern int stream_on_stack __P((enum stream_type)); extern char *read_secondary_line __P((int)); extern int find_reserved_word __P((char *)); extern void gather_here_documents __P((void)); -extern void execute_prompt_command __P((char *)); +extern void execute_variable_command __P((char *, char *)); extern int *save_token_state __P((void)); extern void restore_token_state __P((int *)); diff --git a/src/bin/bash/jobs.c b/src/bin/bash/jobs.c index fd8b748572..24d98af566 100644 --- a/src/bin/bash/jobs.c +++ b/src/bin/bash/jobs.c @@ -1,25 +1,25 @@ -/* The thing that makes children, remembers them, and contains wait loops. */ +/* 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, 1992 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -39,9 +39,10 @@ # include #endif /* !_POSIX_VERSION && HAVE_SYS_RESOURCE_H && HAVE_WAIT3 && !RLIMTYPE */ -#ifdef HAVE_SYS_FILE_H +#if defined (HAVE_SYS_FILE_H) # include #endif + #include "filecntl.h" #include #include @@ -62,20 +63,11 @@ # include #endif /* hpux && !TERMIOS_TTY_DRIVER */ -#if !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) -/* For struct winsize on SCO */ -/* sys/ptem.h has winsize but needs mblk_t from sys/stream.h */ -# if defined (HAVE_SYS_PTEM_H) && defined (TIOCGWINSZ) && defined (SIGWINCH) -# if defined (HAVE_SYS_STREAM_H) -# include -# endif -# include -# endif /* HAVE_SYS_PTEM_H && TIOCGWINSZ && SIGWINCH */ -#endif /* !STRUCT_WINSIZE_IN_SYS_IOCTL */ - #include "bashansi.h" +#include "bashintl.h" #include "shell.h" #include "jobs.h" +#include "execute_cmd.h" #include "flags.h" #include "builtins/builtext.h" @@ -86,7 +78,15 @@ extern int errno; #endif /* !errno */ #define DEFAULT_CHILD_MAX 32 -#define MAX_JOBS_IN_ARRAY 4096 /* testing */ +#if !defined (DEBUG) +#define MAX_JOBS_IN_ARRAY 4096 /* production */ +#else +#define MAX_JOBS_IN_ARRAY 128 /* testing */ +#endif + +/* Flag values for second argument to delete_job */ +#define DEL_WARNSTOPPED 1 /* warn about deleting stopped jobs */ +#define DEL_NOBGPID 2 /* don't add pgrp leader to bgpids */ /* Take care of system dependencies that must be handled when waiting for children. The arguments to the WAITPID macro match those to the Posix.1 @@ -127,8 +127,11 @@ extern int errno; #endif /* !MUST_REINSTALL_SIGHANDLERS */ /* Some systems let waitpid(2) tell callers about stopped children. */ -#if !defined (WCONTINUED) +#if !defined (WCONTINUED) || defined (WCONTINUED_BROKEN) +# undef WCONTINUED # define WCONTINUED 0 +#endif +#if !defined (WIFCONTINUED) # define WIFCONTINUED(s) (0) #endif @@ -137,16 +140,14 @@ extern int errno; typedef int sh_job_map_func_t __P((JOB *, int, int, int)); -#if defined (READLINE) -extern void rl_set_screen_size __P((int, int)); -#endif - /* Variables used here but defined in other files. */ extern int subshell_environment, line_number; extern int posixly_correct, shell_level; -extern int interrupt_immediately, last_command_exit_value; +extern int last_command_exit_value, last_command_exit_signal; extern int loop_level, breaking; +extern int executing_list; extern int sourcelevel; +extern int running_trap; extern sh_builtin_func_t *this_shell_builtin; extern char *shell_name, *this_command_name; extern sigset_t top_level_mask; @@ -154,11 +155,18 @@ extern procenv_t wait_intr_buf; extern int wait_signal_received; extern WORD_LIST *subst_assign_varlist; +static struct jobstats zerojs = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; +struct jobstats js = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; + +struct bgpids bgpids = { 0, 0, 0 }; + /* The array of known jobs. */ JOB **jobs = (JOB **)NULL; +#if 0 /* The number of slots currently allocated to JOBS. */ int job_slots = 0; +#endif /* The controlling tty for this shell. */ int shell_tty = -1; @@ -182,11 +190,13 @@ pid_t pipeline_pgrp = (pid_t)0; int pgrp_pipe[2] = { -1, -1 }; #endif +#if 0 /* The job which is current; i.e. the one that `%+' stands for. */ int current_job = NO_JOB; /* The previous job; i.e. the one that `%-' stands for. */ int previous_job = NO_JOB; +#endif /* Last child made by the shell. */ pid_t last_made_pid = NO_PID; @@ -209,24 +219,22 @@ int check_window_size; /* Functions local to this file. */ -static void get_new_window_size __P((int)); - -static void run_sigchld_trap __P((int)); - static sighandler wait_sigint_handler __P((int)); static sighandler sigchld_handler __P((int)); -static sighandler sigwinch_sighandler __P((int)); static sighandler sigcont_sighandler __P((int)); static sighandler sigstop_sighandler __P((int)); static int waitchld __P((pid_t, int)); static PROCESS *find_pipeline __P((pid_t, int, int *)); +static PROCESS *find_process __P((pid_t, int, int *)); static char *current_working_directory __P((void)); static char *job_working_directory __P((void)); +static char *j_strsignal __P((int)); static char *printable_job_status __P((int, PROCESS *, int)); +static PROCESS *find_last_proc __P((int, int)); static pid_t find_last_pid __P((int, int)); static int set_new_line_discipline __P((int)); @@ -234,18 +242,24 @@ static int map_over_jobs __P((sh_job_map_func_t *, int, int)); static int job_last_stopped __P((int)); static int job_last_running __P((int)); static int most_recent_job_in_state __P((int, JOB_STATE)); -static int find_job __P((pid_t, int)); +static int find_job __P((pid_t, int, PROCESS **)); static int print_job __P((JOB *, int, int, int)); static int process_exit_status __P((WAIT)); +static int process_exit_signal __P((WAIT)); static int job_exit_status __P((int)); +static int job_exit_signal __P((int)); static int set_job_status_and_cleanup __P((int)); +static WAIT job_signal_status __P((int)); static WAIT raw_job_exit_status __P((int)); static void notify_of_job_status __P((void)); +static void reset_job_indices __P((void)); static void cleanup_dead_jobs __P((void)); +static int processes_in_job __P((int)); +static void realloc_jobs_list __P((void)); static int compact_jobs_list __P((int)); -static void discard_pipeline __P((PROCESS *)); +static int discard_pipeline __P((PROCESS *)); static void add_process __P((char *, pid_t)); static void print_pipeline __P((PROCESS *, int, int, FILE *)); static void pretty_print_job __P((int, int, FILE *)); @@ -253,14 +267,21 @@ static void set_current_job __P((int)); static void reset_current __P((void)); static void set_job_running __P((int)); static void setjstatus __P((int)); +static int maybe_give_terminal_to __P((pid_t, pid_t, int)); static void mark_all_jobs_as_dead __P((void)); static void mark_dead_jobs_as_notified __P((int)); static void restore_sigint_handler __P((void)); #if defined (PGRP_PIPE) static void pipe_read __P((int *)); -static void pipe_close __P((int *)); #endif +static struct pidstat *bgp_alloc __P((pid_t, int)); +static struct pidstat *bgp_add __P((pid_t, int)); +static int bgp_delete __P((pid_t)); +static void bgp_clear __P((void)); +static int bgp_search __P((pid_t)); +static void bgp_prune __P((void)); + #if defined (ARRAY_VARS) static int *pstatuses; /* list of pipeline statuses */ static int statsize; @@ -283,10 +304,6 @@ static int queue_sigchld; static SigHandler *old_tstp, *old_ttou, *old_ttin; static SigHandler *old_cont = (SigHandler *)SIG_DFL; -#if defined (TIOCGWINSZ) && defined (SIGWINCH) -static SigHandler *old_winch = (SigHandler *)SIG_DFL; -#endif - /* A place to temporarily save the current pipeline. */ static PROCESS *saved_pipeline; static int saved_already_making_children; @@ -299,7 +316,9 @@ static int jobs_list_frozen; static char retcode_name_buffer[64]; -static long child_max = -1L; +/* flags to detect pid wraparound */ +static pid_t first_pid = NO_PID; +static int pid_wrap = -1; #if !defined (_POSIX_VERSION) @@ -322,6 +341,15 @@ tcgetpgrp (fd) #endif /* !_POSIX_VERSION */ +/* Initialize the global job stats structure and other bookkeeping variables */ +void +init_job_stats () +{ + js = zerojs; + first_pid = NO_PID; + pid_wrap = -1; +} + /* Return the working directory for the current process. Unlike job_working_directory, this does not call malloc (), nor do any of the functions it calls. This is so that it can safely be called @@ -383,11 +411,16 @@ stop_making_children () void cleanup_the_pipeline () { - if (the_pipeline) - { - discard_pipeline (the_pipeline); - the_pipeline = (PROCESS *)NULL; - } + PROCESS *disposer; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + disposer = the_pipeline; + the_pipeline = (PROCESS *)NULL; + UNBLOCK_CHILD (oset); + + if (disposer) + discard_pipeline (disposer); } void @@ -395,9 +428,9 @@ save_pipeline (clear) int clear; { saved_pipeline = the_pipeline; - saved_already_making_children = already_making_children; if (clear) the_pipeline = (PROCESS *)NULL; + saved_already_making_children = already_making_children; } void @@ -422,7 +455,7 @@ start_pipeline () cleanup_the_pipeline (); pipeline_pgrp = 0; #if defined (PGRP_PIPE) - pipe_close (pgrp_pipe); + sh_closepipe (pgrp_pipe); #endif } @@ -430,7 +463,7 @@ start_pipeline () if (job_control) { if (pipe (pgrp_pipe) == -1) - sys_error ("start_pipeline: pgrp pipe"); + sys_error (_("start_pipeline: pgrp pipe")); } #endif } @@ -452,53 +485,66 @@ stop_pipeline (async, deferred) #if defined (PGRP_PIPE) /* The parent closes the process group synchronization pipe. */ - pipe_close (pgrp_pipe); + sh_closepipe (pgrp_pipe); #endif cleanup_dead_jobs (); - if (job_slots == 0) + if (js.j_jobslots == 0) { - job_slots = JOB_SLOTS; - jobs = (JOB **)xmalloc (job_slots * sizeof (JOB *)); + js.j_jobslots = JOB_SLOTS; + jobs = (JOB **)xmalloc (js.j_jobslots * sizeof (JOB *)); /* Now blank out these new entries. */ - for (i = 0; i < job_slots; i++) + 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 = job_slots; i; i--) + for (i = js.j_jobslots; i; i--) if (jobs[i - 1]) break; } else { - /* If we're not interactive, we don't need to monotonically increase - the job number (in fact, we don't care about the job number at all), - so we can simply scan for the first free slot. This helps to keep - us from continuously reallocating the jobs array when running - certain kinds of shell loops, and saves time spent searching. */ - for (i = 0; i < job_slots; i++) +#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 (subshell_environment && interactive_shell && i == job_slots && job_slots >= MAX_JOBS_IN_ARRAY) + 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 == job_slots) + if (i == js.j_jobslots) { - job_slots += JOB_SLOTS; - jobs = (JOB **)xrealloc (jobs, ((1 + job_slots) * sizeof (JOB *))); + js.j_jobslots += JOB_SLOTS; + jobs = (JOB **)xrealloc (jobs, (js.j_jobslots * sizeof (JOB *))); - for (j = i; j < job_slots; j++) + for (j = i; j < js.j_jobslots; j++) jobs[j] = (JOB *)NULL; } @@ -506,11 +552,11 @@ stop_pipeline (async, deferred) if (the_pipeline) { register PROCESS *p; - int any_alive, any_stopped; + int any_running, any_stopped, n; newjob = (JOB *)xmalloc (sizeof (JOB)); - for (p = the_pipeline; p->next != the_pipeline; p = p->next) + 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 *); @@ -530,16 +576,16 @@ stop_pipeline (async, deferred) /* Set the state of this pipeline. */ p = newjob->pipe; - any_alive = any_stopped = 0; + any_running = any_stopped = 0; do { - any_alive |= p->running; - any_stopped |= WIFSTOPPED (p->status); + any_running |= PRUNNING (p); + any_stopped |= PSTOPPED (p); p = p->next; } while (p != newjob->pipe); - newjob->state = any_alive ? JRUNNING : (any_stopped ? JSTOPPED : JDEAD); + newjob->state = any_running ? JRUNNING : (any_stopped ? JSTOPPED : JDEAD); newjob->wd = job_working_directory (); newjob->deferred = deferred; @@ -549,14 +595,30 @@ stop_pipeline (async, deferred) 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_FOREGROUND; + newjob->flags |= J_ASYNC; + js.j_lastasync = newjob; + } reset_current (); } else @@ -572,17 +634,187 @@ stop_pipeline (async, deferred) * once in the parent and once in each child. This is where * the parent gives it away. * + * Don't give the terminal away if this shell is an asynchronous + * subshell. + * */ - if (job_control && newjob->pgrp) - give_terminal_to (newjob->pgrp, 0); + if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) + maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0); } } stop_making_children (); UNBLOCK_CHILD (oset); - return (current_job); + return (js.j_current); } +/* Functions to manage the list of exited background pids whose status has + been saved. */ + +static struct pidstat * +bgp_alloc (pid, status) + pid_t pid; + int status; +{ + struct pidstat *ps; + + ps = (struct pidstat *)xmalloc (sizeof (struct pidstat)); + ps->pid = pid; + ps->status = status; + ps->next = (struct pidstat *)0; + return ps; +} + +static struct pidstat * +bgp_add (pid, status) + pid_t pid; + int status; +{ + struct pidstat *ps; + + ps = bgp_alloc (pid, status); + + if (bgpids.list == 0) + { + bgpids.list = bgpids.end = ps; + bgpids.npid = 0; /* just to make sure */ + } + else + { + bgpids.end->next = ps; + bgpids.end = ps; + } + bgpids.npid++; + + if (bgpids.npid > js.c_childmax) + bgp_prune (); + + return ps; +} + +static int +bgp_delete (pid) + pid_t pid; +{ + struct pidstat *prev, *p; + + for (prev = p = bgpids.list; p; prev = p, p = p->next) + if (p->pid == pid) + { + prev->next = p->next; /* remove from list */ + break; + } + + if (p == 0) + return 0; /* not found */ + +#if defined (DEBUG) + itrace("bgp_delete: deleting %d", pid); +#endif + + /* Housekeeping in the border cases. */ + if (p == bgpids.list) + bgpids.list = bgpids.list->next; + else if (p == bgpids.end) + bgpids.end = prev; + + bgpids.npid--; + if (bgpids.npid == 0) + bgpids.list = bgpids.end = 0; + else if (bgpids.npid == 1) + bgpids.end = bgpids.list; /* just to make sure */ + + free (p); + return 1; +} + +/* Clear out the list of saved statuses */ +static void +bgp_clear () +{ + struct pidstat *ps, *p; + + for (ps = bgpids.list; ps; ) + { + p = ps; + ps = ps->next; + free (p); + } + bgpids.list = bgpids.end = 0; + bgpids.npid = 0; +} + +/* Search for PID in the list of saved background pids; return its status if + found. If not found, return -1. */ +static int +bgp_search (pid) + pid_t pid; +{ + struct pidstat *ps; + + for (ps = bgpids.list ; ps; ps = ps->next) + if (ps->pid == pid) + return ps->status; + return -1; +} + +static void +bgp_prune () +{ + struct pidstat *ps; + + while (bgpids.npid > js.c_childmax) + { + ps = bgpids.list; + bgpids.list = bgpids.list->next; + free (ps); + bgpids.npid--; + } +} + +/* Reset the values of js.j_lastj and js.j_firstj after one or both have + been deleted. The caller should check whether js.j_njobs is 0 before + calling this. This wraps around, but the rest of the code does not. At + this point, it should not matter. */ +static void +reset_job_indices () +{ + int old; + + if (jobs[js.j_firstj] == 0) + { + old = js.j_firstj++; + if (old >= js.j_jobslots) + old = js.j_jobslots - 1; + while (js.j_firstj != old) + { + if (js.j_firstj >= js.j_jobslots) + js.j_firstj = 0; + if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ + break; + js.j_firstj++; + } + if (js.j_firstj == old) + js.j_firstj = js.j_lastj = js.j_njobs = 0; + } + if (jobs[js.j_lastj] == 0) + { + old = js.j_lastj--; + if (old < 0) + old = 0; + while (js.j_lastj != old) + { + if (js.j_lastj < 0) + js.j_lastj = js.j_jobslots - 1; + if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ + break; + js.j_lastj--; + } + if (js.j_lastj == old) + js.j_firstj = js.j_lastj = js.j_njobs = 0; + } +} + /* Delete all DEAD jobs that the user had received notification about. */ static void cleanup_dead_jobs () @@ -590,113 +822,235 @@ cleanup_dead_jobs () register int i; int os; - if (job_slots == 0 || jobs_list_frozen) + if (js.j_jobslots == 0 || jobs_list_frozen) return; QUEUE_SIGCHLD(os); - for (i = 0; i < job_slots; i++) - if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i)) - delete_job (i, 0); + /* XXX could use js.j_firstj and js.j_lastj here */ + for (i = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + + if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i)) + delete_job (i, 0); + } + +#if defined (COPROCESS_SUPPORT) + coproc_reap (); +#endif UNQUEUE_SIGCHLD(os); } +static int +processes_in_job (job) + int job; +{ + int nproc; + register PROCESS *p; + + nproc = 0; + p = jobs[job]->pipe; + do + { + p = p->next; + nproc++; + } + while (p != jobs[job]->pipe); + + return nproc; +} + +static void +delete_old_job (pid) + pid_t pid; +{ + PROCESS *p; + int job; + + job = find_job (pid, 0, &p); + if (job != NO_JOB) + { +#ifdef DEBUG + itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state); +#endif + if (JOBSTATE (job) == JDEAD) + delete_job (job, DEL_NOBGPID); + else + { + internal_warning (_("forked pid %d appears in running job %d"), pid, job); + if (p) + p->pid = 0; + } + } +} + +/* Reallocate and compress the jobs list. This returns with a jobs array + whose size is a multiple of JOB_SLOTS and can hold the current number of + jobs. Heuristics are used to minimize the number of new reallocs. */ +static void +realloc_jobs_list () +{ + sigset_t set, oset; + int nsize, i, j, ncur, nprev; + JOB **nlist; + + ncur = nprev = NO_JOB; + nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); + nsize *= JOB_SLOTS; + i = js.j_njobs % JOB_SLOTS; + if (i == 0 || i > (JOB_SLOTS >> 1)) + nsize += JOB_SLOTS; + + BLOCK_CHILD (set, oset); + nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); + + js.c_reaped = js.j_ndead = 0; + for (i = j = 0; i < js.j_jobslots; i++) + if (jobs[i]) + { + if (i == js.j_current) + ncur = j; + if (i == js.j_previous) + nprev = j; + nlist[j++] = jobs[i]; + if (jobs[i]->state == JDEAD) + { + js.j_ndead++; + js.c_reaped += processes_in_job (i); + } + } + +#if defined (DEBUG) + itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize); + itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0); + itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, j); + itrace ("realloc_jobs_list: js.j_ndead %d js.c_reaped %d", js.j_ndead, js.c_reaped); +#endif + + js.j_firstj = 0; + js.j_lastj = (j > 0) ? j - 1 : 0; + js.j_njobs = j; + js.j_jobslots = nsize; + + /* Zero out remaining slots in new jobs list */ + for ( ; j < nsize; j++) + nlist[j] = (JOB *)NULL; + + if (jobs != nlist) + { + free (jobs); + jobs = nlist; + } + + if (ncur != NO_JOB) + js.j_current = ncur; + if (nprev != NO_JOB) + js.j_previous = nprev; + + /* Need to reset these */ + if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) + reset_current (); + +#ifdef DEBUG + itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous); +#endif + + UNBLOCK_CHILD (oset); +} + /* Compact the jobs list by removing dead jobs. Assumed that we have filled the jobs array to some predefined maximum. Called when the shell is not the foreground process (subshell_environment != 0). Returns the first - available slot in the compacted list. If that value is job_slots, then - the list needs to be reallocated. The jobs array is in new memory if - this returns > 0 and < job_slots. FLAGS is reserved for future use. */ + 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; { - sigset_t set, oset; - register int i, j; - int nremove, ndel; - JOB **newlist; + if (js.j_jobslots == 0 || jobs_list_frozen) + return js.j_jobslots; - if (job_slots == 0 || jobs_list_frozen) - return job_slots; + reap_dead_jobs (); + realloc_jobs_list (); - if (child_max < 0) - child_max = getmaxchild (); +#ifdef DEBUG + itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); +#endif - /* Take out at most a quarter of the jobs in the jobs array, but leave at - least child_max */ - nremove = job_slots >> 2; - if ((job_slots - nremove) < child_max) - nremove = job_slots - child_max; - - /* need to increase jobs list to at least CHILD_MAX entries */ - if (nremove < 0) - return job_slots; - - BLOCK_CHILD (set, oset); - - for (ndel = i = 0; i < job_slots; i++) - if (jobs[i]) - { - if (DEADJOB (i) && (find_last_pid (i, 0) != last_asynchronous_pid)) - { - delete_job (i, 0); - ndel++; - if (ndel == nremove) - break; - } - } - - if (ndel == 0) - { - UNBLOCK_CHILD (oset); - return job_slots; - } - - newlist = (JOB **)xmalloc ((1 + job_slots) * sizeof (JOB *)); - for (i = j = 0; i < job_slots; i++) - if (jobs[i]) - newlist[j++] = jobs[i]; - - ndel = j; - for ( ; j < job_slots; j++) - newlist[j] = (JOB *)NULL; - - free (jobs); - jobs = newlist; - - UNBLOCK_CHILD (oset); - - return ndel; + 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, warn_stopped) - int job_index, warn_stopped; +delete_job (job_index, dflags) + int job_index, dflags; { register JOB *temp; + PROCESS *proc; + int ndel; - if (job_slots == 0 || jobs_list_frozen) + if (js.j_jobslots == 0 || jobs_list_frozen) return; - if (warn_stopped && subshell_environment == 0 && STOPPED (job_index)) - internal_warning ("deleting stopped job %d with process group %ld", job_index+1, (long)jobs[job_index]->pgrp); - + 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 (job_index == current_job || job_index == previous_job) - reset_current (); + if (temp == 0) + return; + + if ((dflags & DEL_NOBGPID) == 0) + { + proc = find_last_proc (job_index, 0); + /* Could do this just for J_ASYNC jobs, but we save all. */ + if (proc) + bgp_add (proc->pid, process_exit_status (proc->status)); + } jobs[job_index] = (JOB *)NULL; + if (temp == js.j_lastmade) + js.j_lastmade = 0; + else if (temp == js.j_lastasync) + js.j_lastasync = 0; free (temp->wd); - discard_pipeline (temp->pipe); + ndel = discard_pipeline (temp->pipe); + + js.c_injobs -= ndel; + if (temp->state == JDEAD) + { + js.c_reaped -= ndel; + js.j_ndead--; + if (js.c_reaped < 0) + { +#ifdef DEBUG + itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead); +#endif + js.c_reaped = 0; + } + } if (temp->deferred) dispose_command (temp->deferred); free (temp); + + js.j_njobs--; + if (js.j_njobs == 0) + js.j_firstj = js.j_lastj = 0; + else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0) + reset_job_indices (); + + if (job_index == js.j_current || job_index == js.j_previous) + reset_current (); } /* Must be called with SIGCHLD blocked. */ @@ -706,7 +1060,7 @@ nohup_job (job_index) { register JOB *temp; - if (job_slots == 0) + if (js.j_jobslots == 0) return; if (temp = jobs[job_index]) @@ -714,21 +1068,26 @@ nohup_job (job_index) } /* Get rid of the data structure associated with a process chain. */ -static void +static int discard_pipeline (chain) register PROCESS *chain; { register PROCESS *this, *next; + int n; this = chain; + n = 0; do { next = this->next; FREE (this->command); free (this); + n++; this = next; } while (this != chain); + + return n; } /* Add this process to the chain being built in the_pipeline. @@ -741,6 +1100,21 @@ add_process (name, 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; @@ -811,13 +1185,20 @@ map_over_jobs (func, arg1, arg2) int result; sigset_t set, oset; - if (job_slots == 0) + if (js.j_jobslots == 0) return 0; BLOCK_CHILD (set, oset); - for (i = result = 0; i < job_slots; i++) + /* 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); @@ -848,7 +1229,8 @@ terminate_stopped_jobs () { register int i; - for (i = 0; i < job_slots; i++) + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) { if (jobs[i] && STOPPED (i)) { @@ -865,12 +1247,14 @@ hangup_all_jobs () { register int i; - for (i = 0; i < job_slots; 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) == 0) - killpg (jobs[i]->pgrp, SIGHUP); + if (jobs[i]->flags & J_NOHUP) + continue; + killpg (jobs[i]->pgrp, SIGHUP); if (STOPPED (i)) killpg (jobs[i]->pgrp, SIGCONT); } @@ -885,15 +1269,16 @@ kill_current_pipeline () } /* Return the pipeline that PID belongs to. Note that the pipeline - doesn't have to belong to a job. Must be called with SIGCHLD blocked. */ + 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, running_only, jobp) +find_pipeline (pid, alive_only, jobp) pid_t pid; - int running_only; + int alive_only; int *jobp; /* index into jobs list or NO_JOB */ { int job; - register PROCESS *p; + PROCESS *p; /* See if this process is in the pipeline that we are building. */ if (jobp) @@ -903,46 +1288,69 @@ find_pipeline (pid, running_only, jobp) p = the_pipeline; do { - /* Return it if we found it. */ - if (p->pid == pid) - { - if ((running_only && PRUNNING(p)) || (running_only == 0)) - return (p); - } + /* Return it if we found it. Don't ever return a recycled pid. */ + if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) + return (p); p = p->next; } while (p != the_pipeline); } - job = find_job (pid, running_only); + 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, running_only) +find_job (pid, alive_only, procp) pid_t pid; - int running_only; + int alive_only; + PROCESS **procp; { register int i; - register PROCESS *p; + PROCESS *p; - for (i = 0; i < job_slots; i++) + /* 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) + if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) { - if ((running_only && PRUNNING(p)) || (running_only == 0)) - return (i); + if (procp) + *procp = p; + return (i); } p = p->next; @@ -967,7 +1375,7 @@ get_job_by_pid (pid, block) if (block) BLOCK_CHILD (set, oset); - job = find_job (pid, 0); + job = find_job (pid, 0, NULL); if (block) UNBLOCK_CHILD (oset); @@ -985,16 +1393,31 @@ describe_pid (pid) BLOCK_CHILD (set, oset); - job = find_job (pid, 0); + job = find_job (pid, 0, NULL); if (job != NO_JOB) - printf ("[%d] %ld\n", job + 1, (long)pid); + fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid); else - programming_error ("describe_pid: %ld: no such pid", (long)pid); + programming_error (_("describe_pid: %ld: no such pid"), (long)pid); UNBLOCK_CHILD (oset); } +static char * +j_strsignal (s) + int s; +{ + char *x; + + x = strsignal (s); + if (x == 0) + { + x = retcode_name_buffer; + sprintf (x, _("Signal %d"), s); + } + return x; +} + static char * printable_job_status (j, p, format) int j; @@ -1004,39 +1427,39 @@ printable_job_status (j, p, format) static char *temp; int es; - temp = "Done"; + temp = _("Done"); if (STOPPED (j) && format == 0) { if (posixly_correct == 0 || p == 0 || (WIFSTOPPED (p->status) == 0)) - temp = "Stopped"; + temp = _("Stopped"); else { temp = retcode_name_buffer; - sprintf (temp, "Stopped(%s)", signal_name (WSTOPSIG (p->status))); + sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status))); } } else if (RUNNING (j)) - temp = "Running"; + temp = _("Running"); else { if (WIFSTOPPED (p->status)) - temp = strsignal (WSTOPSIG (p->status)); + temp = j_strsignal (WSTOPSIG (p->status)); else if (WIFSIGNALED (p->status)) - temp = strsignal (WTERMSIG (p->status)); + temp = j_strsignal (WTERMSIG (p->status)); else if (WIFEXITED (p->status)) { temp = retcode_name_buffer; es = WEXITSTATUS (p->status); if (es == 0) - strcpy (temp, "Done"); + strcpy (temp, _("Done")); else if (posixly_correct) - sprintf (temp, "Done(%d)", es); + sprintf (temp, _("Done(%d)"), es); else - sprintf (temp, "Exit %d", es); + sprintf (temp, _("Exit %d"), es); } else - temp = "Unknown status"; + temp = _("Unknown status"); } return temp; @@ -1123,7 +1546,7 @@ print_pipeline (p, job_index, format, stream) if ((WIFSTOPPED (show->status) == 0) && (WIFCONTINUED (show->status) == 0) && WIFCORED (show->status)) - fprintf (stream, "(core dumped) "); + fprintf (stream, _("(core dumped) ")); } } @@ -1142,7 +1565,7 @@ print_pipeline (p, job_index, format, stream) if (strcmp (temp, jobs[job_index]->wd) != 0) fprintf (stream, - " (wd: %s)", polite_directory_format (jobs[job_index]->wd)); + _(" (wd: %s)"), polite_directory_format (jobs[job_index]->wd)); } if (format || (p == last)) @@ -1190,8 +1613,8 @@ pretty_print_job (job_index, format, stream) if (format != JLIST_NONINTERACTIVE) fprintf (stream, "[%d]%c ", job_index + 1, - (job_index == current_job) ? '+': - (job_index == previous_job) ? '-' : ' '); + (job_index == js.j_current) ? '+': + (job_index == js.j_previous) ? '-' : ' '); if (format == JLIST_NONINTERACTIVE) format = JLIST_LONG; @@ -1258,6 +1681,7 @@ make_child (command, async_p) char *command; int async_p; { + int forksleep; sigset_t set, oset; pid_t pid; @@ -1269,6 +1693,8 @@ make_child (command, async_p) making_children (); + forksleep = 1; + #if defined (BUFFERED_INPUT) /* If default_buffered_input is active, we are reading a script. If the command is asynchronous, we have already duplicated /dev/null @@ -1279,8 +1705,16 @@ make_child (command, async_p) sync_buffered_stream (default_buffered_input); #endif /* BUFFERED_INPUT */ - /* Create the child, handle severe errors. */ - if ((pid = fork ()) < 0) + /* Create the child, handle severe errors. Retry on EAGAIN. */ + while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX) + { + sys_error ("fork: retry"); + if (sleep (forksleep) != 0) + break; + forksleep <<= 1; + } + + if (pid < 0) { sys_error ("fork"); @@ -1334,23 +1768,20 @@ make_child (command, async_p) B.4.3.3, p. 237 also covers this, in the context of job control shells. */ if (setpgid (mypid, pipeline_pgrp) < 0) - sys_error ("child setpgid (%ld to %ld)", (long)mypid, (long)pipeline_pgrp); -#if defined (PGRP_PIPE) - if (pipeline_pgrp == mypid) - { -#endif - /* By convention (and assumption above), if - pipeline_pgrp == shell_pgrp, we are making a child for - command substitution. - In this case, we don't want to give the terminal to the - shell's process group (we could be in the middle of a - pipeline, for example). */ - if (async_p == 0 && pipeline_pgrp != shell_pgrp) - give_terminal_to (pipeline_pgrp, 0); + sys_error (_("child setpgid (%ld to %ld)"), (long)mypid, (long)pipeline_pgrp); + + /* By convention (and assumption above), if + pipeline_pgrp == shell_pgrp, we are making a child for + command substitution. + In this case, we don't want to give the terminal to the + shell's process group (we could be in the middle of a + pipeline, for example). */ + if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) + give_terminal_to (pipeline_pgrp, 0); #if defined (PGRP_PIPE) - pipe_read (pgrp_pipe); - } + if (pipeline_pgrp == mypid) + pipe_read (pgrp_pipe); #endif } else /* Without job control... */ @@ -1370,18 +1801,34 @@ make_child (command, async_p) #if defined (PGRP_PIPE) /* Release the process group pipe, since our call to setpgid () - is done. The last call to pipe_close is done in stop_pipeline. */ - pipe_close (pgrp_pipe); + is done. The last call to sh_closepipe is done in stop_pipeline. */ + sh_closepipe (pgrp_pipe); #endif /* PGRP_PIPE */ +#if 0 + /* Don't set last_asynchronous_pid in the child */ if (async_p) - last_asynchronous_pid = getpid (); + last_asynchronous_pid = mypid; /* XXX */ + else +#endif +#if defined (RECYCLES_PIDS) + if (last_asynchronous_pid == mypid) + /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ + last_asynchronous_pid = 1; +#endif } else { /* In the parent. Remember the pid of the child just created as the proper pgrp if this is the first child. */ + if (first_pid == NO_PID) + first_pid = pid; + else if (pid_wrap == -1 && pid < first_pid) + pid_wrap = 0; + else if (pid_wrap == 0 && pid >= first_pid) + pid_wrap = 1; + if (job_control) { if (pipeline_pgrp == 0) @@ -1409,10 +1856,31 @@ make_child (command, async_p) if (async_p) last_asynchronous_pid = pid; +#if defined (RECYCLES_PIDS) + else if (last_asynchronous_pid == pid) + /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ + last_asynchronous_pid = 1; +#endif + + if (pid_wrap > 0) + delete_old_job (pid); + +#if !defined (RECYCLES_PIDS) + /* Only check for saved status if we've saved more than CHILD_MAX + statuses, unless the system recycles pids. */ + if ((js.c_reaped + bgpids.npid) >= js.c_childmax) +#endif + bgp_delete (pid); /* new process, discard any saved status */ last_made_pid = pid; - /* Unblock SIGINT and SIGCHLD. */ + /* keep stats */ + js.c_totforked++; + js.c_living++; + + /* Unblock SIGINT and SIGCHLD unless creating a pipeline, in which case + SIGCHLD remains blocked until all commands in the pipeline have been + created. */ sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); } @@ -1519,13 +1987,13 @@ get_tty_state () /* Only print an error message if we're really interactive at this time. */ if (interactive) - sys_error ("[%ld: %d] tcgetattr", (long)getpid (), shell_level); + 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); + get_new_window_size (0, (int *)0, (int *)0); } return 0; } @@ -1558,7 +2026,7 @@ set_tty_state () /* Only print an error message if we're really interactive at this time. */ if (interactive) - sys_error ("[%ld: %d] tcsetattr", (long)getpid (), shell_level); + sys_error ("[%ld: %d (%d)] tcsetattr", (long)getpid (), shell_level, tty); return -1; } #endif /* TERMIOS_TTY_DRIVER */ @@ -1566,11 +2034,11 @@ set_tty_state () return 0; } -/* Given an index into the jobs array JOB, return the pid of the last +/* 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 pid_t -find_last_pid (job, block) +static PROCESS * +find_last_proc (job, block) int job; int block; { @@ -1581,15 +2049,27 @@ find_last_pid (job, block) BLOCK_CHILD (set, oset); p = jobs[job]->pipe; - while (p->next != jobs[job]->pipe) + while (p && p->next != jobs[job]->pipe) p = p->next; if (block) UNBLOCK_CHILD (oset); - return (p->pid); + 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 @@ -1609,7 +2089,14 @@ wait_for_single_pid (pid) if (child == 0) { - internal_error ("wait: pid %ld is not a child of this shell", (long)pid); + r = bgp_search (pid); + if (r >= 0) + return r; + } + + if (child == 0) + { + internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); return (127); } @@ -1618,11 +2105,18 @@ wait_for_single_pid (pid) /* POSIX.2: if we just waited for a job, we can remove it from the jobs table. */ BLOCK_CHILD (set, oset); - job = find_job (pid, 0); + job = find_job (pid, 0, NULL); if (job != NO_JOB && jobs[job] && DEADJOB (job)) jobs[job]->flags |= J_NOTIFIED; UNBLOCK_CHILD (oset); + /* If running in posix mode, remove the job from the jobs table immediately */ + if (posixly_correct) + { + cleanup_dead_jobs (); + bgp_delete (pid); + } + return r; } @@ -1639,11 +2133,19 @@ wait_for_background_pids () BLOCK_CHILD (set, oset); /* find first running job; if none running in foreground, break */ - for (i = 0; i < job_slots; i++) - if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) - break; - - if (i == job_slots) + /* XXX could use js.j_firstj and js.j_lastj here */ + for (i = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) + break; + } + if (i == js.j_jobslots) { UNBLOCK_CHILD (oset); break; @@ -1669,6 +2171,7 @@ wait_for_background_pids () `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. */ @@ -1726,6 +2229,13 @@ wait_sigint_handler (sig) SIGRETURN (0); } +static int +process_exit_signal (status) + WAIT status; +{ + return (WIFSIGNALED (status) ? WTERMSIG (status) : 0); +} + static int process_exit_status (status) WAIT status; @@ -1738,6 +2248,26 @@ process_exit_status (status) 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 @@ -1745,6 +2275,24 @@ raw_job_exit_status (job) int job; { register PROCESS *p; + int fail; + WAIT ret; + + if (pipefail_opt) + { + fail = 0; + p = jobs[job]->pipe; + do + { + if (WSTATUS (p->status) != EXECUTION_SUCCESS) + fail = WSTATUS(p->status); + p = p->next; + } + while (p != jobs[job]->pipe); + WSTATUS (ret) = fail; + return ret; + } + for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next) ; return (p->status); @@ -1760,6 +2308,13 @@ job_exit_status (job) return (process_exit_status (raw_job_exit_status (job))); } +static int +job_exit_signal (job) + int job; +{ + return (process_exit_signal (raw_job_exit_status (job))); +} + #define FIND_CHILD(pid, child) \ do \ { \ @@ -1768,7 +2323,7 @@ job_exit_status (job) { \ give_terminal_to (shell_pgrp, 0); \ UNBLOCK_CHILD (oset); \ - internal_error ("wait_for: No record of process %ld", (long)pid); \ + internal_error (_("wait_for: No record of process %ld"), (long)pid); \ restore_sigint_handler (); \ return (termination_state = 127); \ } \ @@ -1798,12 +2353,19 @@ wait_for (pid) 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. */ + the shell, and the shell will see any signals the job gets. In + fact, we want this set every time the waiting shell and the waited- + for process are in the same process group, including command + substitution. */ /* This is possibly a race condition -- should it go in stop_pipeline? */ wait_sigint_received = 0; - if (job_control == 0) - old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + if (old_sigint_handler == SIG_IGN) + set_signal_handler (SIGINT, old_sigint_handler); + } termination_state = last_command_exit_value; @@ -1823,13 +2385,13 @@ wait_for (pid) We check for JDEAD in case the job state has been set by waitchld after receipt of a SIGCHLD. */ if (job == NO_JOB) - job = find_job (pid, 0); + 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 (child->running || (job != NO_JOB && RUNNING (job))) + if (PRUNNING(child) || (job != NO_JOB && RUNNING (job))) { #if defined (WAITPID_BROKEN) /* SCOv4 */ sigset_t suspend_set; @@ -1869,9 +2431,14 @@ wait_for (pid) if (r == -1 && errno == ECHILD) { child->running = PS_DONE; - child->status = 0; /* XXX -- can't find true status */ + 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; + { + jobs[job]->state = JDEAD; + js.c_reaped++; + js.j_ndead++; + } } #endif /* WAITPID_BROKEN */ } @@ -1883,15 +2450,20 @@ wait_for (pid) if (interactive && job_control == 0) QUIT; } - while (child->running || (job != NO_JOB && RUNNING (job))); + while (PRUNNING (child) || (job != NO_JOB && RUNNING (job))); /* The exit state of the command is either the termination state of the child, or the termination state of the job. If a job, the status - of the last child in the pipeline is the significant one. */ - if (job != NO_JOB) - termination_state = job_exit_status (job); - else - termination_state = process_exit_status (child->status); + of the last child in the pipeline is the significant one. If the command + or job was terminated by a signal, note that value also. */ + termination_state = (job != NO_JOB) ? job_exit_status (job) + : process_exit_status (child->status); + last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job) + : process_exit_signal (child->status); + + /* XXX */ + if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || WIFSTOPPED (child->status)) + termination_state = 128 + WSTOPSIG (child->status); if (job == NO_JOB || IS_JOBCONTROL (job)) { @@ -1912,7 +2484,6 @@ wait_for (pid) if (job == NO_JOB) itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp); #endif - give_terminal_to (shell_pgrp, 0); } @@ -1935,15 +2506,7 @@ if (job == NO_JOB) 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. */ - p = jobs[job]->pipe; - do - { - s = p->status; - if (WIFSIGNALED(s) || WIFSTOPPED(s)) - break; - p = p->next; - } - while (p != jobs[job]->pipe); + s = job_signal_status (job); if (WIFSIGNALED (s) || WIFSTOPPED (s)) { @@ -1951,8 +2514,8 @@ if (job == NO_JOB) /* 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 == current_job) - get_new_window_size (0); + if (check_window_size && (job == js.j_current || IS_FOREGROUND (job))) + get_new_window_size (0, (int *)0, (int *)0); } else get_tty_state (); @@ -1968,7 +2531,7 @@ if (job == NO_JOB) 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) + if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list))) ADDINTERRUPT; else { @@ -1977,6 +2540,24 @@ if (job == NO_JOB) } } } + else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received) + { + /* If waiting for a job in a subshell started to do command + substitution, simulate getting and being killed by the SIGINT to + pass the status back to our parent. */ + s = job_signal_status (job); + + if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0) + { + UNBLOCK_CHILD (oset); + restore_sigint_handler (); + old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL); + if (old_sigint_handler == SIG_IGN) + restore_sigint_handler (); + else + kill (getpid (), SIGINT); + } + } /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD signal handler path */ @@ -2014,7 +2595,7 @@ wait_for_job (job) BLOCK_CHILD(set, oset); if (JOBSTATE (job) == JSTOPPED) - internal_warning ("wait_for_job: job %d is stopped", job+1); + internal_warning (_("wait_for_job: job %d is stopped"), job+1); pid = find_last_pid (job, 0); UNBLOCK_CHILD(oset); @@ -2108,29 +2689,29 @@ set_current_job (job) { int candidate; - if (current_job != job) + if (js.j_current != job) { - previous_job = current_job; - current_job = job; + js.j_previous = js.j_current; + js.j_current = job; } - /* First choice for previous_job is the old current_job. */ - if (previous_job != current_job && - previous_job != NO_JOB && - jobs[previous_job] && - STOPPED (previous_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 (current_job)) + if (STOPPED (js.j_current)) { - candidate = job_last_stopped (current_job); + candidate = job_last_stopped (js.j_current); if (candidate != NO_JOB) { - previous_job = candidate; + js.j_previous = candidate; return; } } @@ -2139,27 +2720,27 @@ set_current_job (job) 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(current_job) is + alternative to use based on whether or not JOBSTATE(js.j_current) is JSTOPPED. */ - candidate = RUNNING (current_job) ? job_last_running (current_job) - : job_last_running (job_slots); + candidate = RUNNING (js.j_current) ? job_last_running (js.j_current) + : job_last_running (js.j_jobslots); if (candidate != NO_JOB) { - previous_job = candidate; + js.j_previous = candidate; return; } /* There is only a single job, and it is both `+' and `-'. */ - previous_job = current_job; + 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 previous_job is the newest non-running job. If there + 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. */ @@ -2168,23 +2749,23 @@ reset_current () { int candidate; - if (job_slots && current_job != NO_JOB && jobs[current_job] && STOPPED (current_job)) - candidate = current_job; + 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 (previous_job != NO_JOB && jobs[previous_job] && STOPPED (previous_job)) - candidate = 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 (job_slots); + candidate = job_last_stopped (js.j_jobslots); /* Third choice: the newest running job. */ if (candidate == NO_JOB) - candidate = job_last_running (job_slots); + candidate = job_last_running (js.j_jobslots); } /* If we found a job to use, then use it. Otherwise, there @@ -2192,7 +2773,7 @@ reset_current () if (candidate != NO_JOB) set_current_job (candidate); else - current_job = previous_job = NO_JOB; + js.j_current = js.j_previous = NO_JOB; } /* Set up the job structures so we know the job and its processes are @@ -2229,14 +2810,14 @@ start_job (job, foreground) register PROCESS *p; int already_running; sigset_t set, oset; - char *wd; + char *wd, *s; static TTYSTRUCT save_stty; BLOCK_CHILD (set, oset); if (DEADJOB (job)) { - internal_error ("%s: job has terminated", this_command_name); + internal_error (_("%s: job has terminated"), this_command_name); UNBLOCK_CHILD (oset); return (-1); } @@ -2245,9 +2826,9 @@ start_job (job, foreground) if (foreground == 0 && already_running) { - internal_error ("%s: bg background job?", this_command_name); + internal_error (_("%s: job %d already in background"), this_command_name, job + 1); UNBLOCK_CHILD (oset); - return (-1); + return (0); /* XPG6/SUSv3 says this is not an error */ } wd = current_working_directory (); @@ -2265,12 +2846,19 @@ start_job (job, foreground) p = jobs[job]->pipe; if (foreground == 0) - fprintf (stderr, "[%d]%c ", job + 1, - (job == current_job) ? '+': ((job == previous_job) ? '-' : ' ')); + { + /* 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 { - fprintf (stderr, "%s%s", + printf ("%s%s", p->command ? p->command : "", p->next != jobs[job]->pipe? " | " : ""); p = p->next; @@ -2278,12 +2866,12 @@ start_job (job, foreground) while (p != jobs[job]->pipe); if (foreground == 0) - fprintf (stderr, " &"); + printf (" &"); if (strcmp (wd, jobs[job]->wd) != 0) - fprintf (stderr, " (wd: %s)", polite_directory_format (jobs[job]->wd)); + printf (" (wd: %s)", polite_directory_format (jobs[job]->wd)); - fprintf (stderr, "\n"); + printf ("\n"); /* Run the job. */ if (already_running == 0) @@ -2311,14 +2899,14 @@ start_job (job, foreground) if (foreground) { pid_t pid; - int s; + int st; pid = find_last_pid (job, 0); UNBLOCK_CHILD (oset); - s = wait_for (pid); + st = wait_for (pid); shell_tty_info = save_stty; set_tty_state (); - return (s); + return (st); } else { @@ -2338,9 +2926,17 @@ kill_pid (pid, sig, group) int sig, group; { register PROCESS *p; - int job, result; + int job, result, negative; sigset_t set, oset; + if (pid < -1) + { + pid = -pid; + group = negative = 1; + } + else + negative = 0; + result = EXECUTION_SUCCESS; if (group) { @@ -2352,18 +2948,25 @@ kill_pid (pid, sig, group) jobs[job]->flags &= ~J_NOTIFIED; /* Kill process in backquotes or one started without job control? */ - if (jobs[job]->pgrp == shell_pgrp) + + /* 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 (p->running == PS_DONE && (sig == SIGTERM || sig == SIGHUP)) + if (PEXITED (p) && (sig == SIGTERM || sig == SIGHUP)) kill (p->pid, SIGCONT); p = p->next; } - while (p != jobs[job]->pipe); + while (p != jobs[job]->pipe); } else { @@ -2425,6 +3028,7 @@ waitchld (wpid, block) PROCESS *child; pid_t pid; int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; + static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ call_set_current = children_exited = 0; last_stopped_job = NO_JOB; @@ -2434,12 +3038,21 @@ waitchld (wpid, block) /* 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) + ? (WUNTRACED|wcontinued) : 0; if (sigchld || block == 0) waitpid_flags |= WNOHANG; + CHECK_TERMSIG; + pid = WAITPID (-1, &status, waitpid_flags); + /* WCONTINUED may be rejected by waitpid as invalid even when defined */ + if (wcontinued && pid < 0 && errno == EINVAL) + { + wcontinued = 0; + continue; /* jump back to the test and retry without WCONTINUED */ + } + /* The check for WNOHANG is to make sure we decrement sigchld only if it was non-zero before we called waitpid. */ if (sigchld > 0 && (waitpid_flags & WNOHANG)) @@ -2457,31 +3070,47 @@ waitchld (wpid, block) /* If waitpid returns 0, there are running children. If it returns -1, the only other error POSIX says it can return is EINTR. */ + CHECK_TERMSIG; if (pid <= 0) continue; /* jumps right to the test */ /* children_exited is used to run traps on SIGCHLD. We don't want to run the trap if a process is just being continued. */ if (WIFCONTINUED(status) == 0) - children_exited++; + { + children_exited++; + js.c_living--; + } /* Locate our PROCESS for this pid. */ - child = find_pipeline (pid, 1, &job); /* want running procs only */ + child = find_process (pid, 1, &job); /* want living procs only */ + +#if defined (COPROCESS_SUPPORT) + coproc_pidchk (pid, 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) - continue; - - while (child->pid != pid) - child = child->next; + { + 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; @@ -2507,7 +3136,17 @@ waitchld (wpid, block) /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ if (job_control && signal_is_trapped (SIGCHLD) && children_exited && trap_list[SIGCHLD] != (char *)IGNORE_SIG) - run_sigchld_trap (children_exited); + { + if (this_shell_builtin && this_shell_builtin == wait_builtin) + { + interrupt_immediately = 0; + trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */ + wait_signal_received = SIGCHLD; + longjmp (wait_intr_buf, 1); + } + + run_sigchld_trap (children_exited); + } /* We have successfully recorded the useful information about this process that has just changed state. If we notify asynchronously, and the job @@ -2546,8 +3185,13 @@ set_job_status_and_cleanup (job) job_state = any_stopped = any_tstped = 0; do { - job_state |= child->running; - if (child->running == PS_DONE && (WIFSTOPPED (child->status))) + job_state |= PRUNNING (child); +#if 0 + if (PEXITED (child) && (WIFSTOPPED (child->status))) +#else + /* Only checking for WIFSTOPPED now, not for PS_DONE */ + if (PSTOPPED (child)) +#endif { any_stopped = 1; any_tstped |= interactive && job_control && @@ -2585,6 +3229,7 @@ set_job_status_and_cleanup (job) else { jobs[job]->state = JDEAD; + js.j_ndead++; #if 0 if (IS_FOREGROUND (job)) @@ -2609,7 +3254,7 @@ set_job_status_and_cleanup (job) * for a foreground job to complete */ - if (jobs[job]->state == JDEAD) + 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 @@ -2677,10 +3322,10 @@ set_job_status_and_cleanup (job) if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0) temp_handler = trap_to_sighandler (SIGINT); restore_sigint_handler (); - if (temp_handler == SIG_DFL) - termination_unwind_protect (SIGINT); - else if (temp_handler != SIG_IGN) - (*temp_handler) (SIGINT); + if (temp_handler == SIG_DFL) + termsig_handler (SIGINT); + else if (temp_handler != SIG_IGN) + (*temp_handler) (SIGINT); } } } @@ -2720,7 +3365,7 @@ setjstatus (j) #endif } -static void +void run_sigchld_trap (nchild) int nchild; { @@ -2735,6 +3380,7 @@ run_sigchld_trap (nchild) begin_unwind_frame ("SIGCHLD trap"); unwind_protect_int (last_command_exit_value); + unwind_protect_int (last_command_exit_signal); unwind_protect_var (last_made_pid); unwind_protect_int (interrupt_immediately); unwind_protect_int (jobs_list_frozen); @@ -2744,18 +3390,18 @@ run_sigchld_trap (nchild) /* 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 ((Function *)xfree, trap_command); - add_unwind_protect ((Function *)maybe_set_sigchld_trap, trap_command); + 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; - restore_default_signal (SIGCHLD); + set_impossible_sigchld_trap (); jobs_list_frozen = 1; for (i = 0; i < nchild; i++) { interrupt_immediately = 1; - parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST); + parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE); } run_unwind_frame ("SIGCHLD trap"); @@ -2773,7 +3419,7 @@ notify_of_job_status () sigset_t set, oset; WAIT s; - if (jobs == 0 || job_slots == 0) + if (jobs == 0 || js.j_jobslots == 0) return; if (old_ttou != 0) @@ -2787,7 +3433,8 @@ notify_of_job_status () else queue_sigchld++; - for (job = 0, dir = (char *)NULL; job < job_slots; job++) + /* 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) { @@ -2796,17 +3443,28 @@ notify_of_job_status () /* 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 not interactive, don't print anything - unless the job was killed by a signal. */ + script. If the shell is running a script, either from a file + or standard input, don't print anything unless the job was + killed by a signal. */ if (startup_state == 0 && WIFSIGNALED (s) == 0 && ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) continue; +#if 0 /* If job control is disabled, don't print the status messages. Mark dead jobs as notified so that they get cleaned up. If startup_state == 2, we were started to run `-c command', so don't print anything. */ if ((job_control == 0 && interactive_shell) || startup_state == 2) +#else + /* If job control is disabled, don't print the status messages. + Mark dead jobs as notified so that they get cleaned up. If + startup_state == 2 and subshell_environment has the + SUBSHELL_COMSUB bit turned on, we were started to run a command + substitution, so don't print anything. */ + if ((job_control == 0 && interactive_shell) || + (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB))) +#endif { /* POSIX.2 compatibility: if the shell is not interactive, hang onto the job corresponding to the last asynchronous @@ -2830,7 +3488,8 @@ notify_of_job_status () #endif signal_is_trapped (termsig) == 0) { - fprintf (stderr, "%s: line %d: ", get_name_for_error (), line_number); + /* 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)) @@ -2841,22 +3500,22 @@ notify_of_job_status () if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE) #endif { - fprintf (stderr, "%s", strsignal (termsig)); + fprintf (stderr, "%s", j_strsignal (termsig)); if (WIFCORED (s)) - fprintf (stderr, " (core dumped)"); + fprintf (stderr, _(" (core dumped)")); fprintf (stderr, "\n"); } } - else + 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)); + _("(wd now: %s)\n"), polite_directory_format (dir)); } jobs[job]->flags |= J_NOTIFIED; @@ -2869,7 +3528,7 @@ notify_of_job_status () pretty_print_job (job, JLIST_STANDARD, stderr); if (dir && (strcmp (dir, jobs[job]->wd) != 0)) fprintf (stderr, - "(wd now: %s)\n", polite_directory_format (dir)); + _("(wd now: %s)\n"), polite_directory_format (dir)); jobs[job]->flags |= J_NOTIFIED; break; @@ -2893,11 +3552,15 @@ int initialize_job_control (force) int force; { + pid_t t; + int t_errno; + + t_errno = -1; shell_pgrp = getpgid (0); if (shell_pgrp == -1) { - sys_error ("initialize_job_control: getpgrp failed"); + sys_error (_("initialize_job_control: getpgrp failed")); exit (1); } @@ -2910,10 +3573,21 @@ initialize_job_control (force) } 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. */ - shell_tty = dup (fileno (stderr)); /* fd 2 */ + if (shell_tty == -1) + shell_tty = dup (fileno (stderr)); /* fd 2 */ shell_tty = move_to_high_fd (shell_tty, 1, -1); @@ -2940,10 +3614,13 @@ initialize_job_control (force) 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"); + sys_error (_("initialize_job_control: line discipline")); job_control = 0; } else @@ -2953,7 +3630,7 @@ initialize_job_control (force) if ((original_pgrp != shell_pgrp) && (setpgid (0, shell_pgrp) < 0)) { - sys_error ("initialize_job_control: setpgid"); + sys_error (_("initialize_job_control: setpgid")); shell_pgrp = original_pgrp; } @@ -2970,14 +3647,23 @@ initialize_job_control (force) { if (give_terminal_to (shell_pgrp, 0) < 0) { + t_errno = errno; setpgid (0, original_pgrp); shell_pgrp = original_pgrp; job_control = 0; } } + + if (job_control && ((t = tcgetpgrp (shell_tty)) == -1 || t != shell_pgrp)) + { + if (t_errno != -1) + errno = t_errno; + sys_error (_("cannot set terminal process group (%d)"), t); + job_control = 0; + } } if (job_control == 0) - internal_error ("no job control in this shell"); + internal_error (_("no job control in this shell")); } if (shell_tty != fileno (stderr)) @@ -2990,6 +3676,11 @@ initialize_job_control (force) if (interactive) get_tty_state (); + if (js.c_childmax < 0) + js.c_childmax = getmaxchild (); + if (js.c_childmax < 0) + js.c_childmax = DEFAULT_CHILD_MAX; + return job_control; } @@ -3061,60 +3752,6 @@ set_new_line_discipline (tty) #endif } -#if defined (TIOCGWINSZ) && defined (SIGWINCH) -static void -get_new_window_size (from_sig) - int from_sig; -{ - struct winsize win; - - if ((ioctl (shell_tty, TIOCGWINSZ, &win) == 0) && - win.ws_row > 0 && win.ws_col > 0) - { -#if defined (aixpc) - shell_tty_info.c_winsize = win; /* structure copying */ -#endif - sh_set_lines_and_columns (win.ws_row, win.ws_col); -#if defined (READLINE) - rl_set_screen_size (win.ws_row, win.ws_col); -#endif - } -} - -static sighandler -sigwinch_sighandler (sig) - int sig; -{ -#if defined (MUST_REINSTALL_SIGHANDLERS) - set_signal_handler (SIGWINCH, sigwinch_sighandler); -#endif /* MUST_REINSTALL_SIGHANDLERS */ - get_new_window_size (1); - SIGRETURN (0); -} -#else -static void -get_new_window_size (from_sig) - int from_sig; -{ -} -#endif /* TIOCGWINSZ && SIGWINCH */ - -void -set_sigwinch_handler () -{ -#if defined (TIOCGWINSZ) && defined (SIGWINCH) - old_winch = set_signal_handler (SIGWINCH, sigwinch_sighandler); -#endif -} - -void -unset_sigwinch_handler () -{ -#if defined (TIOCGWINSZ) && defined (SIGWINCH) - set_signal_handler (SIGWINCH, old_winch); -#endif -} - /* Setup this shell to handle C-C, etc. */ void initialize_job_signals () @@ -3125,7 +3762,6 @@ initialize_job_signals () set_signal_handler (SIGTSTP, SIG_IGN); set_signal_handler (SIGTTOU, SIG_IGN); set_signal_handler (SIGTTIN, SIG_IGN); - set_sigwinch_handler (); } else if (job_control) { @@ -3174,7 +3810,7 @@ give_terminal_to (pgrp, force) int force; { sigset_t set, oset; - int r; + int r, e; r = 0; if (job_control || force) @@ -3195,15 +3831,47 @@ give_terminal_to (pgrp, force) shell_tty, (long)getpid(), (long)pgrp); #endif r = -1; + e = errno; } else terminal_pgrp = pgrp; sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); } + if (r == -1) + errno = e; + return r; } +/* Give terminal to NPGRP iff it's currently owned by OPGRP. FLAGS are the + flags to pass to give_terminal_to(). */ +static int +maybe_give_terminal_to (opgrp, npgrp, flags) + pid_t opgrp, npgrp; + int flags; +{ + int tpgrp; + + tpgrp = tcgetpgrp (shell_tty); + if (tpgrp < 0 && errno == ENOTTY) + return -1; + if (tpgrp == npgrp) + { + terminal_pgrp = npgrp; + return 0; + } + else if (tpgrp != opgrp) + { +#if defined (DEBUG) + internal_warning ("maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d", tpgrp, opgrp, npgrp); +#endif + return -1; + } + else + return (give_terminal_to (npgrp, flags)); +} + /* Clear out any jobs in the job array. This is intended to be used by children of the shell, who should not have any job structures as baggage when they start executing (forking subshells for parenthesized execution @@ -3218,21 +3886,34 @@ delete_all_jobs (running_only) BLOCK_CHILD (set, oset); - if (job_slots) + /* XXX - need to set j_lastj, j_firstj appropriately if running_only != 0. */ + if (js.j_jobslots) { - current_job = previous_job = NO_JOB; - - for (i = 0; i < job_slots; i++) - if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) - delete_job (i, 1); + js.j_current = js.j_previous = NO_JOB; + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) + delete_job (i, DEL_WARNSTOPPED); + } if (running_only == 0) { free ((char *)jobs); - job_slots = 0; + js.j_jobslots = 0; + js.j_firstj = js.j_lastj = js.j_njobs = 0; } } + if (running_only == 0) + bgp_clear (); + UNBLOCK_CHILD (oset); } @@ -3247,9 +3928,10 @@ nohup_all_jobs (running_only) BLOCK_CHILD (set, oset); - if (job_slots) + if (js.j_jobslots) { - for (i = 0; i < job_slots; i++) + /* 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); } @@ -3263,10 +3945,20 @@ count_all_jobs () int i, n; sigset_t set, oset; + /* This really counts all non-dead jobs. */ BLOCK_CHILD (set, oset); - for (i = n = 0; i < job_slots; i++) - if (jobs[i] && DEADJOB(i) == 0) - n++; + /* 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; } @@ -3277,14 +3969,18 @@ mark_all_jobs_as_dead () register int i; sigset_t set, oset; - if (job_slots == 0) + if (js.j_jobslots == 0) return; BLOCK_CHILD (set, oset); - for (i = 0; i < job_slots; i++) + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) if (jobs[i]) - jobs[i]->state = JDEAD; + { + jobs[i]->state = JDEAD; + js.j_ndead++; + } UNBLOCK_CHILD (oset); } @@ -3297,10 +3993,10 @@ static void mark_dead_jobs_as_notified (force) int force; { - register int i, ndead; + register int i, ndead, ndeadproc; sigset_t set, oset; - if (job_slots == 0) + if (js.j_jobslots == 0) return; BLOCK_CHILD (set, oset); @@ -3309,7 +4005,8 @@ mark_dead_jobs_as_notified (force) around; just run through the array. */ if (force) { - for (i = 0; i < job_slots; i++) + /* 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; @@ -3318,40 +4015,82 @@ mark_dead_jobs_as_notified (force) return; } - /* Mark enough dead jobs as notified to keep CHILD_MAX jobs left in the - array not marked as notified. */ + /* 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 */ - for (i = ndead = 0; i < job_slots; i++) + /* 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++; + { + ndead++; + ndeadproc += processes_in_job (i); + } } - if (child_max < 0) - child_max = getmaxchild (); - if (child_max < 0) - child_max = DEFAULT_CHILD_MAX; +#ifdef DEBUG + if (ndeadproc != js.c_reaped) + itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped); + if (ndead != js.j_ndead) + itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead); +#endif - /* Don't do anything if the number of dead jobs is less than CHILD_MAX and - we're not forcing a cleanup. */ - if (ndead <= child_max) + if (js.c_childmax < 0) + js.c_childmax = getmaxchild (); + if (js.c_childmax < 0) + js.c_childmax = DEFAULT_CHILD_MAX; + + /* Don't do anything if the number of dead processes is less than CHILD_MAX + and we're not forcing a cleanup. */ + if (ndeadproc <= js.c_childmax) { UNBLOCK_CHILD (oset); return; } +#if 0 +itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", js.c_childmax, ndead, ndeadproc); +#endif + /* Mark enough dead jobs as notified that we keep CHILD_MAX jobs in the list. This isn't exactly right yet; changes need to be made to stop_pipeline so we don't mark the newer jobs after we've - created CHILD_MAX slots in the jobs array. */ - for (i = 0; i < job_slots; i++) + 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))) { - jobs[i]->flags |= J_NOTIFIED; - if (--ndead <= child_max) +#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; } } @@ -3376,6 +4115,12 @@ set_job_control (arg) old = job_control; job_control = arg; + + /* If we're turning on job control, reset pipeline_pgrp so make_child will + put new child processes into the right pgrp */ + if (job_control != old && job_control) + pipeline_pgrp = 0; + return (old); } @@ -3386,6 +4131,9 @@ 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); } @@ -3447,25 +4195,11 @@ pipe_read (pp) } } -/* Close the read and write ends of PP, an array of file descriptors. */ -static void -pipe_close (pp) - int *pp; -{ - if (pp[0] >= 0) - close (pp[0]); - - if (pp[1] >= 0) - close (pp[1]); - - pp[0] = pp[1] = -1; -} - /* Functional interface closes our local-to-job-control pipes. */ void close_pgrp_pipe () { - pipe_close (pgrp_pipe); + sh_closepipe (pgrp_pipe); } #endif /* PGRP_PIPE */ diff --git a/src/bin/bash/jobs.h b/src/bin/bash/jobs.h index 1e21f8cb76..6e82f762c0 100644 --- a/src/bin/bash/jobs.h +++ b/src/bin/bash/jobs.h @@ -1,22 +1,22 @@ -/* jobs.h -- structures and stuff used by the jobs.c file. */ +/* jobs.h -- structures and definitions used by the jobs.c file. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -38,6 +38,9 @@ /* I looked it up. For pretty_print_job (). The real answer is 24. */ #define LONGEST_SIGNAL_DESC 24 +/* 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. */ @@ -46,9 +49,10 @@ #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 chain of - such structures is a pipeline. The chain is circular. */ +/* 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. */ @@ -57,28 +61,44 @@ typedef struct process { char *command; /* The particular program that is running. */ } PROCESS; -/* PRUNNING really means `not exited' */ -#define PRUNNING(p) ((p)->running || WIFSTOPPED((p)->status)) +/* PALIVE really means `not exited' */ #define PSTOPPED(p) (WIFSTOPPED((p)->status)) -#define PDEADPROC(p) ((p)->running == PS_DONE) +#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 { JRUNNING, JSTOPPED, JDEAD, JMIXED } JOB_STATE; -#define JOBSTATE(job) (jobs[(job)]->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 had status saved via $! */ +#define J_ASYNC 0x20 /* Job was started asynchronously */ #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) typedef struct job { char *wd; /* The working directory at time of invocation. */ @@ -93,8 +113,45 @@ typedef struct job { #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 */ +}; + +struct pidstat { + struct pidstat *next; + pid_t pid; + int status; +}; + +struct bgpids { + struct pidstat *list; + struct pidstat *end; + int npid; +}; + #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 @@ -105,12 +162,13 @@ 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 pid_t last_made_pid, last_asynchronous_pid; -extern int current_job, previous_job; extern int asynchronous_notification; + extern JOB **jobs; -extern int job_slots; extern void making_children __P((void)); extern void stop_making_children __P((void)); @@ -163,8 +221,7 @@ extern int initialize_job_control __P((int)); extern void initialize_job_signals __P((void)); extern int give_terminal_to __P((pid_t, int)); -extern void set_sigwinch_handler __P((void)); -extern void unset_sigwinch_handler __P((void)); +extern void run_sigchld_trap __P((int)); extern void unfreeze_jobs_list __P((void)); extern int set_job_control __P((int)); @@ -175,6 +232,10 @@ extern void set_sigchld_handler __P((void)); extern void ignore_tty_job_signals __P((void)); extern void default_tty_job_signals __P((void)); +extern void init_job_stats __P((void)); + +extern void close_pgrp_pipe __P((void)); + #if defined (JOB_CONTROL) extern int job_control; #endif diff --git a/src/bin/bash/lib/glob/Makefile.in b/src/bin/bash/lib/glob/Makefile.in index cddfd3f7cf..1ccae684b3 100644 --- a/src/bin/bash/lib/glob/Makefile.in +++ b/src/bin/bash/lib/glob/Makefile.in @@ -4,21 +4,20 @@ # # #################################################################### # -# Copyright (C) 1996 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . srcdir = @srcdir@ VPATH = .:@srcdir@ @@ -33,7 +32,7 @@ CC = @CC@ RANLIB = @RANLIB@ AR = @AR@ ARFLAGS = @ARFLAGS@ -RM = rm +RM = rm -f CP = cp MV = mv @@ -59,6 +58,7 @@ CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_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: + $(RM) $@ $(CC) -c $(CCFLAGS) $< # The name of the library target. diff --git a/src/bin/bash/lib/glob/collsyms.h b/src/bin/bash/lib/glob/collsyms.h index ccd9f43ae0..d56df61138 100644 --- a/src/bin/bash/lib/glob/collsyms.h +++ b/src/bin/bash/lib/glob/collsyms.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/lib/glob/glob.c b/src/bin/bash/lib/glob/glob.c index 27099f76a9..dceb2e5700 100644 --- a/src/bin/bash/lib/glob/glob.c +++ b/src/bin/bash/lib/glob/glob.c @@ -1,20 +1,22 @@ /* glob.c -- file-name wildcard pattern matching for Bash. - Copyright (C) 1985-2002 Free Software Foundation, Inc. + Copyright (C) 1985-2009 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can 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. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -45,7 +47,8 @@ #include "stdc.h" #include "memalloc.h" -#include "quit.h" + +#include "shell.h" #include "glob.h" #include "strmatch.h" @@ -62,8 +65,25 @@ # 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 __P((void)); -extern int test_eaccess __P((char *, int)); +extern int sh_eaccess __P((char *, int)); +extern char *sh_makepath __P((const char *, const char *, int)); extern int extended_glob; @@ -78,10 +98,12 @@ int glob_ignore_case = 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 __P((char *, char *)); +static int skipname __P((char *, char *, int)); #if HANDLE_MULTIBYTE -static int mbskipname __P((char *, char *)); +static int mbskipname __P((char *, char *, int)); #endif #if HANDLE_MULTIBYTE static void udequote_pathname __P((char *)); @@ -118,24 +140,22 @@ glob_pattern_p (pattern) const char *pattern; { #if HANDLE_MULTIBYTE - mbstate_t ps; size_t n; wchar_t *wpattern; int r; if (MB_CUR_MAX == 1) - return (internal_glob_pattern_p (pattern)); + return (internal_glob_pattern_p ((unsigned char *)pattern)); /* Convert strings to wide chars, and call the multibyte version. */ - memset (&ps, '\0', sizeof (ps)); - n = xmbsrtowcs (NULL, (const char **)&pattern, 0, &ps); + 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 (pattern)); - wpattern = (wchar_t *)xmalloc ((n + 1) * sizeof (wchar_t)); - (void) xmbsrtowcs (wpattern, (const char **)&pattern, n + 1, &ps); + return (internal_glob_pattern_p ((unsigned char *)pattern)); + r = internal_glob_wpattern_p (wpattern); free (wpattern); + return r; #else return (internal_glob_pattern_p (pattern)); @@ -146,9 +166,10 @@ glob_pattern_p (pattern) with matching leading `.'. */ static int -skipname (pat, dname) +skipname (pat, dname, flags) char *pat; char *dname; + int flags; { /* If a leading dot need not be explicitly matched, and the pattern doesn't start with a `.', don't match `.' or `..' */ @@ -171,53 +192,40 @@ skipname (pat, dname) characters in PAT and DNAME. Mostly concerned with matching leading `.'. */ static int -mbskipname (pat, dname) +mbskipname (pat, dname, flags) char *pat, *dname; + int flags; { - char *pat_bak, *dn_bak; + int ret; wchar_t *pat_wc, *dn_wc; - mbstate_t pat_ps, dn_ps; - size_t pat_n, dn_n, n; + size_t pat_n, dn_n; - n = strlen(pat); - pat_bak = (char *) alloca (n + 1); - memcpy (pat_bak, pat, n + 1); - - n = strlen(dname); - dn_bak = (char *) alloca (n + 1); - memcpy (dn_bak, dname, n + 1); - - memset(&pat_ps, '\0', sizeof(mbstate_t)); - memset(&dn_ps, '\0', sizeof(mbstate_t)); - - pat_n = xmbsrtowcs (NULL, (const char **)&pat_bak, 0, &pat_ps); - dn_n = xmbsrtowcs (NULL, (const char **)&dn_bak, 0, &dn_ps); + pat_n = xdupmbstowcs (&pat_wc, NULL, pat); + dn_n = xdupmbstowcs (&dn_wc, NULL, dname); + ret = 0; if (pat_n != (size_t)-1 && dn_n !=(size_t)-1) { - pat_wc = (wchar_t *) alloca ((pat_n + 1) * sizeof(wchar_t)); - dn_wc = (wchar_t *) alloca ((dn_n + 1) * sizeof(wchar_t)); - - (void) xmbsrtowcs (pat_wc, (const char **)&pat_bak, pat_n + 1, &pat_ps); - (void) xmbsrtowcs (dn_wc, (const char **)&dn_bak, dn_n + 1, &dn_ps); - /* 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_wc[0] != L'.' && (pat_wc[0] != L'\\' || pat_wc[1] != L'.') && (dn_wc[0] == L'.' && (dn_wc[1] == L'\0' || (dn_wc[1] == L'.' && dn_wc[2] == L'\0')))) - return 1; + ret = 1; /* If a leading dot must be explicity matched, check to see if the pattern and dirname both have one. */ else if (noglob_dot_filenames && dn_wc[0] == L'.' && pat_wc[0] != L'.' && (pat_wc[0] != L'\\' || pat_wc[1] != L'.')) - return 1; + ret = 1; } - return 0; + FREE (pat_wc); + FREE (dn_wc); + + return ret; } #endif /* HANDLE_MULTIBYTE */ @@ -235,7 +243,7 @@ udequote_pathname (pathname) pathname[j++] = pathname[i++]; - if (!pathname[i - 1]) + if (pathname[i - 1] == 0) break; } pathname[j] = '\0'; @@ -250,22 +258,16 @@ wdequote_pathname (pathname) mbstate_t ps; size_t len, n; wchar_t *wpathname; - char *pathname_bak; int i, j; + wchar_t *orig_wpathname; len = strlen (pathname); - pathname_bak = (char *) alloca (len + 1); - memcpy (pathname_bak, pathname , len + 1); - /* Convert the strings into wide characters. */ - memset (&ps, '\0', sizeof (ps)); - n = xmbsrtowcs (NULL, (const char **)&pathname_bak, 0, &ps); + n = xdupmbstowcs (&wpathname, NULL, pathname); if (n == (size_t) -1) /* Something wrong. */ return; - - wpathname = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); - (void) xmbsrtowcs (wpathname, (const char **)&pathname_bak, n + 1, &ps); + orig_wpathname = wpathname; for (i = j = 0; wpathname && wpathname[i]; ) { @@ -274,7 +276,7 @@ wdequote_pathname (pathname) wpathname[j++] = wpathname[i++]; - if (!wpathname[i - 1]) + if (wpathname[i - 1] == L'\0') break; } wpathname[j] = L'\0'; @@ -283,6 +285,9 @@ wdequote_pathname (pathname) memset (&ps, '\0', sizeof(mbstate_t)); n = wcsrtombs(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 @@ -302,7 +307,7 @@ dequote_pathname (pathname) # define GLOB_TESTNAME(name) (lstat (name, &finfo)) #else /* !HAVE_LSTAT */ # if !defined (AFS) -# define GLOB_TESTNAME(name) (test_eaccess (nextname, F_OK)) +# define GLOB_TESTNAME(name) (sh_eaccess (nextname, F_OK)) # else /* AFS */ # define GLOB_TESTNAME(name) (access (nextname, F_OK)) # endif /* AFS */ @@ -324,6 +329,75 @@ glob_testdir (dir) 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) + 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. @@ -346,26 +420,27 @@ glob_vector (pat, dir, flags) char *dir; int flags; { - struct globval - { - struct globval *next; - char *name; - }; - DIR *d; register struct dirent *dp; - struct globval *lastlink; + struct globval *lastlink, *e, *dirlist; register struct globval *nextlink; - register char *nextname, *npat; + register char *nextname, *npat, *subdir; unsigned int count; - int lose, skip; + int lose, skip, ndirs, isdir, sdlen, add_current; register char **name_vector; register unsigned int i; int mflags; /* Flags passed to strmatch (). */ + int pflags; /* flags passed to sh_makepath () */ + int nalloca; + struct globval *firstmalloc, *tmplink; lastlink = 0; - count = lose = skip = 0; + count = lose = skip = add_current = 0; + firstmalloc = 0; + nalloca = 0; + +/*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') { @@ -373,6 +448,9 @@ glob_vector (pat, dir, flags) 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) @@ -418,10 +496,15 @@ glob_vector (pat, dir, flags) { free (nextname); nextlink = (struct globval *)alloca (sizeof (struct globval)); - nextlink->next = (struct globval *)0; - lastlink = nextlink; - nextlink->name = npat; - count = 1; + if (nextlink) + { + nextlink->next = (struct globval *)0; + lastlink = nextlink; + nextlink->name = npat; + count = 1; + } + else + lose = 1; } else { @@ -459,6 +542,8 @@ glob_vector (pat, dir, flags) 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. @@ -466,7 +551,7 @@ glob_vector (pat, dir, flags) while (1) { /* Make globbing interruptible in the shell. */ - if (interrupt_state) + if (interrupt_state || terminating_signal) { lose = 1; break; @@ -480,24 +565,96 @@ glob_vector (pat, dir, flags) 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)) + if (MB_CUR_MAX > 1 && mbskipname (pat, dp->d_name, flags)) continue; else #endif - if (skipname (pat, dp->d_name)) + 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); + 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; + } + } + + 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 (subdir); + lose = 1; + break; + } + nextlink->next = lastlink; + lastlink = nextlink; + nextlink->name = nextname; + bcopy (subdir, nextname, sdlen + 1); + free (subdir); + ++count; + continue; + } + if (strmatch (pat, dp->d_name, mflags) != FNM_NOMATCH) { - nextlink = (struct globval *) alloca (sizeof (struct globval)); - nextlink->next = lastlink; + 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 (nextname == NULL) + if (nextlink == 0 || nextname == 0) { lose = 1; break; } + nextlink->next = lastlink; lastlink = nextlink; nextlink->name = nextname; bcopy (dp->d_name, nextname, D_NAMLEN (dp) + 1); @@ -508,6 +665,27 @@ glob_vector (pat, dir, flags) (void) closedir (d); } + /* compat: if GX_ALLDIRS, add the passed directory also */ + if (add_current) + { + sdlen = strlen (dir); + nextname = (char *)malloc (sdlen + 1); + nextlink = (struct globval *) malloc (sizeof (struct globval)); + if (nextlink == 0 || nextname == 0) + 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 *)); @@ -517,11 +695,25 @@ glob_vector (pat, dir, flags) /* 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); } QUIT; @@ -530,13 +722,29 @@ glob_vector (pat, dir, flags) } /* Copy the name pointers from the linked list into the vector. */ - for (i = 0; i < count; ++i) + for (tmplink = lastlink, i = 0; i < count; ++i) { - name_vector[i] = lastlink->name; - lastlink = lastlink->next; + 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); } @@ -629,8 +837,10 @@ glob_filename (pathname, flags) { char **result; unsigned int result_size; - char *directory_name, *filename; + char *directory_name, *filename, *dname; unsigned int directory_len; + int free_dirname; /* flag */ + int dflags; result = (char **) malloc (sizeof (char *)); result_size = 1; @@ -639,6 +849,8 @@ glob_filename (pathname, flags) result[0] = NULL; + directory_name = NULL; + /* Find the filename. */ filename = strrchr (pathname, '/'); if (filename == NULL) @@ -646,15 +858,20 @@ glob_filename (pathname, flags) filename = pathname; directory_name = ""; directory_len = 0; + free_dirname = 0; } else { directory_len = (filename - pathname) + 1; - directory_name = (char *) alloca (directory_len + 1); + directory_name = (char *) malloc (directory_len + 1); + + if (directory_name == 0) /* allocation failed? */ + return (NULL); bcopy (pathname, directory_name, directory_len); directory_name[directory_len] = '\0'; ++filename; + free_dirname = 1; } /* If directory_name contains globbing characters, then we @@ -664,10 +881,20 @@ glob_filename (pathname, flags) char **directories; register unsigned int i; + dflags = flags & ~GX_MARKDIRS; + if ((flags & GX_GLOBSTAR) && directory_name[0] == '*' && directory_name[1] == '*' && (directory_name[2] == '/' || directory_name[2] == '\0')) + dflags |= GX_ALLDIRS|GX_ADDCURDIR; + if (directory_name[directory_len - 1] == '/') directory_name[directory_len - 1] = '\0'; - directories = glob_filename (directory_name, flags & ~GX_MARKDIRS); + directories = glob_filename (directory_name, dflags); + + if (free_dirname) + { + free (directory_name); + directory_name = NULL; + } if (directories == NULL) goto memory_error; @@ -690,10 +917,19 @@ glob_filename (pathname, flags) { char **temp_results; - /* Scan directory even on a NULL pathname. That way, `*h/' + /* 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. */ - temp_results = glob_vector (filename, directories[i], flags & ~GX_MARKDIRS); + dname = directories[i]; + dflags = flags & ~GX_MARKDIRS; + 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 */ + } + temp_results = glob_vector (filename, dname, dflags); /* Handle error cases. */ if (temp_results == NULL) @@ -746,6 +982,8 @@ glob_filename (pathname, flags) 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); } @@ -765,14 +1003,26 @@ glob_filename (pathname, flags) /* Just return what glob_vector () returns appended to the directory name. */ + 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; temp_results = glob_vector (filename, (directory_len == 0 ? "." : directory_name), - flags & ~GX_MARKDIRS); + dflags); if (temp_results == NULL || temp_results == (char **)&glob_error_return) - return (temp_results); + { + if (free_dirname) + free (directory_name); + return (temp_results); + } - return (glob_dir_to_array (directory_name, temp_results, flags)); + 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 @@ -786,6 +1036,9 @@ glob_filename (pathname, flags) free ((char *) result); } + if (free_dirname && directory_name) + free (directory_name); + QUIT; return (NULL); diff --git a/src/bin/bash/lib/glob/glob.h b/src/bin/bash/lib/glob/glob.h index 95108a44dc..993ed70c8f 100644 --- a/src/bin/bash/lib/glob/glob.h +++ b/src/bin/bash/lib/glob/glob.h @@ -1,28 +1,35 @@ /* File-name wildcard pattern matching for GNU. - Copyright (C) 1985, 1988, 1989 Free Software Foundation, Inc. + Copyright (C) 1985, 1988, 1989, 2008,2009 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can 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. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _GLOB_H_ #define _GLOB_H_ #include "stdc.h" -#define GX_MARKDIRS 0x01 /* mark directory names with trailing `/' */ -#define GX_NOCASE 0x02 /* ignore case */ -#define GX_MATCHDOT 0x04 /* match `.' literally */ +#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 ** */ extern int glob_pattern_p __P((const char *)); extern char **glob_vector __P((char *, char *, int)); diff --git a/src/bin/bash/lib/glob/glob_loop.c b/src/bin/bash/lib/glob/glob_loop.c index 8010df7f75..89e86af57b 100644 --- a/src/bin/bash/lib/glob/glob_loop.c +++ b/src/bin/bash/lib/glob/glob_loop.c @@ -1,20 +1,20 @@ -/* Copyright (C) 1991-2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. - - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 __P((const CHAR *)); diff --git a/src/bin/bash/lib/glob/sm_loop.c b/src/bin/bash/lib/glob/sm_loop.c index 3760fb2fb9..dfff06cf5c 100644 --- a/src/bin/bash/lib/glob/sm_loop.c +++ b/src/bin/bash/lib/glob/sm_loop.c @@ -1,29 +1,30 @@ -/* Copyright (C) 1991-2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-2006 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. - - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +int FCT __P((CHAR *, CHAR *, int)); -static int FCT __P((CHAR *, CHAR *, int)); static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, int)); static CHAR *PARSE_COLLSYM __P((CHAR *, INT *)); static CHAR *BRACKMATCH __P((CHAR *, U_CHAR, int)); static int EXTMATCH __P((INT, CHAR *, CHAR *, CHAR *, CHAR *, int)); static CHAR *PATSCAN __P((CHAR *, CHAR *, INT)); -static int +int FCT (pattern, string, flags) CHAR *pattern; CHAR *string; @@ -134,6 +135,19 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); 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; + for (newn = n; newn < se; ++newn) + { + if (EXTMATCH (c, newn, se, p, pe, flags) == 0) + return (0); + } + /* We didn't match. If we have a `?(...)', that's failure. */ + return FNM_NOMATCH; + } +#endif else if (c == L('?')) { if (sc == L('\0')) @@ -344,7 +358,7 @@ BRACKMATCH (p, test, flags) { bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR)); *(ccname + (close - p - 1)) = L('\0'); - pc = IS_CCLASS (test, ccname); + pc = IS_CCLASS (test, (XCHAR *)ccname); } if (pc == -1) pc = 0; @@ -508,11 +522,11 @@ PATSCAN (string, end, delim) CHAR *string, *end; INT delim; { - int pnest, bnest; + int pnest, bnest, skip; INT cchar; CHAR *s, c, *bfirst; - pnest = bnest = 0; + pnest = bnest = skip = 0; cchar = 0; bfirst = NULL; @@ -520,8 +534,17 @@ PATSCAN (string, end, delim) { if (s >= end) return (s); + if (skip) + { + skip = 0; + continue; + } switch (c) { + case L('\\'): + skip = 1; + break; + case L('\0'): return ((CHAR *)NULL); @@ -615,12 +638,13 @@ EXTMATCH (xc, s, se, p, pe, flags) CHAR *psub; /* pointer to sub-pattern */ CHAR *pnext; /* pointer to next sub-pattern */ CHAR *srest; /* pointer to rest of string */ - int m1, m2; + 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); /* ) */ @@ -654,8 +678,12 @@ fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); string matches the rest of the pattern. Also handle multiple matches of the pattern. */ if (m1) - m2 = (GMATCH (srest, se, prest, pe, flags) == 0) || - (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0); + { + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || + (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); + } if (m1 && m2) return (0); } @@ -665,7 +693,7 @@ fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); return (FNM_NOMATCH); case L('?'): /* match zero or one of the patterns */ - case L('@'): /* match exactly 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. */ @@ -681,8 +709,10 @@ fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); 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, flags) == 0 && - GMATCH (srest, se, prest, pe, flags) == 0) + GMATCH (srest, se, prest, pe, xflags) == 0) return (0); } if (pnext == prest) @@ -703,7 +733,9 @@ fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); if (pnext == prest) break; } - if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0) + /* 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, xflags) == 0) return (0); } return (FNM_NOMATCH); diff --git a/src/bin/bash/lib/glob/smatch.c b/src/bin/bash/lib/glob/smatch.c index 8c54702b0d..11d86b080c 100644 --- a/src/bin/bash/lib/glob/smatch.c +++ b/src/bin/bash/lib/glob/smatch.c @@ -1,23 +1,23 @@ /* strmatch.c -- ksh-like extended pattern matching for the shell and filename globbing. */ -/* Copyright (C) 1991-2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. - - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -93,14 +93,16 @@ collequiv (c1, c2) static int collsym (s, len) - char *s; + CHAR *s; int len; { register struct _collsym *csp; + char *x; + x = (char *)s; for (csp = posix_collsyms; csp->name; csp++) { - if (STREQN(csp->name, s, len) && csp->name[len] == '\0') + if (STREQN(csp->name, x, len) && csp->name[len] == '\0') return (csp->code); } if (len == 1) @@ -245,7 +247,6 @@ rangecmp_wc (c1, c2) { static wchar_t s1[2] = { L' ', L'\0' }; static wchar_t s2[2] = { L' ', L'\0' }; - int ret; if (c1 == c2) return 0; @@ -362,44 +363,25 @@ xstrmatch (pattern, string, flags) { #if HANDLE_MULTIBYTE int ret; - mbstate_t ps; size_t n; - char *pattern_bak; wchar_t *wpattern, *wstring; if (MB_CUR_MAX == 1) - return (internal_strmatch (pattern, string, flags)); + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); - pattern_bak = (char *)xmalloc (strlen (pattern) + 1); - strcpy (pattern_bak, pattern); - - memset (&ps, '\0', sizeof (mbstate_t)); - n = xmbsrtowcs (NULL, (const char **)&pattern, 0, &ps); + n = xdupmbstowcs (&wpattern, NULL, pattern); if (n == (size_t)-1 || n == (size_t)-2) - { - free (pattern_bak); - return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); - } + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); - wpattern = (wchar_t *)xmalloc ((n + 1) * sizeof (wchar_t)); - (void) xmbsrtowcs (wpattern, (const char **)&pattern, n + 1, &ps); - - memset (&ps, '\0', sizeof (mbstate_t)); - n = xmbsrtowcs (NULL, (const char **)&string, 0, &ps); + n = xdupmbstowcs (&wstring, NULL, string); if (n == (size_t)-1 || n == (size_t)-2) { free (wpattern); - ret = internal_strmatch (pattern_bak, string, flags); - free (pattern_bak); - return ret; + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); } - wstring = (wchar_t *)xmalloc ((n + 1) * sizeof (wchar_t)); - (void) xmbsrtowcs (wstring, (const char **)&string, n + 1, &ps); - ret = internal_wstrmatch (wpattern, wstring, flags); - free (pattern_bak); free (wpattern); free (wstring); diff --git a/src/bin/bash/lib/glob/strmatch.c b/src/bin/bash/lib/glob/strmatch.c index b72fb7dbc2..cea9bd862c 100644 --- a/src/bin/bash/lib/glob/strmatch.c +++ b/src/bin/bash/lib/glob/strmatch.c @@ -5,32 +5,28 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. - - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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" -/* Structured this way so that if HAVE_LIBC_FNM_EXTMATCH is defined, the - matching portion of the library (smatch.c) is not linked into the shell. */ - -#ifndef HAVE_LIBC_FNM_EXTMATCH extern int xstrmatch __P((char *, char *, int)); -#else -# define xstrmatch fnmatch +#if defined (HANDLE_MULTIBYTE) +extern int internal_wstrmatch __P((wchar_t *, wchar_t *, int)); #endif int @@ -45,6 +41,20 @@ strmatch (pattern, string, flags) 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; diff --git a/src/bin/bash/lib/glob/strmatch.h b/src/bin/bash/lib/glob/strmatch.h index d31e5929ce..5c99e0cae9 100644 --- a/src/bin/bash/lib/glob/strmatch.h +++ b/src/bin/bash/lib/glob/strmatch.h @@ -1,29 +1,25 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991-2004 Free Software Foundation, Inc. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + This file is part of GNU Bash, the Bourne-Again SHell. -The GNU C 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 -Library General Public License for more details. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 -#ifdef HAVE_LIBC_FNM_EXTMATCH - -#include - -#else /* !HAVE_LIBC_FNM_EXTMATCH */ +#include #include "stdc.h" @@ -59,6 +55,8 @@ not, write to the Free Software Foundation, Inc., returning zero if it matches, FNM_NOMATCH if not. */ extern int strmatch __P((char *, char *, int)); -#endif /* !HAVE_LIBC_FNM_EXTMATCH */ +#if HANDLE_MULTIBYTE +extern int wcsmatch __P((wchar_t *, wchar_t *, int)); +#endif #endif /* _STRMATCH_H */ diff --git a/src/bin/bash/lib/glob/xmbsrtowcs.c b/src/bin/bash/lib/glob/xmbsrtowcs.c index abd2093b2f..23fcd8e712 100644 --- a/src/bin/bash/lib/glob/xmbsrtowcs.c +++ b/src/bin/bash/lib/glob/xmbsrtowcs.c @@ -1,22 +1,23 @@ /* xmbsrtowcs.c -- replacement function for mbsrtowcs */ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #include #include @@ -27,6 +28,10 @@ #include #if HANDLE_MULTIBYTE + +#ifndef FREE +# define FREE(x) do { if (x) free (x); } while (0) +#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>. */ @@ -54,29 +59,30 @@ xmbsrtowcs (dest, src, len, pstate) ps = &local_state; } - n = strlen(*src) + 1; + n = strlen (*src); if (dest == NULL) { wchar_t *wsbuf; - char *mbsbuf, *mbsbuf_top; + 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)); - mbsbuf_top = mbsbuf = (char *) malloc (n + 1); - memcpy(mbsbuf, *src, n + 1); + mbs = *src; psbuf = *ps; - wclength = mbsrtowcs (wsbuf, (const char **)&mbsbuf, n, &psbuf); + wclength = mbsrtowcs (wsbuf, &mbs, n, &psbuf); - free (wsbuf); - free (mbsbuf_top); + if (wsbuf) + free (wsbuf); return wclength; } - for(wclength = 0; wclength < len; wclength++, dest++) + for (wclength = 0; wclength < len; wclength++, dest++) { - if(mbsinit(ps)) + if (mbsinit(ps)) { if (**src == '\0') { @@ -113,4 +119,144 @@ xmbsrtowcs (dest, src, len, pstate) return (wclength); } + +/* 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. */ + +#define WSBUF_INC 32 + +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; + return (size_t)-1; + } + + memset (&state, '\0', sizeof(mbstate_t)); + wsbuf_size = WSBUF_INC; + + wsbuf = (wchar_t *) malloc (wsbuf_size * sizeof(wchar_t)); + if (wsbuf == NULL) + { + *destp = NULL; + return (size_t)-1; + } + + indices = NULL; + if (indicesp) + { + indices = (char **) malloc (wsbuf_size * sizeof(char *)); + if (indices == NULL) + { + free (wsbuf); + *destp = 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; + 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; + 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; + 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); +} + #endif /* HANDLE_MULTIBYTE */ diff --git a/src/bin/bash/lib/intl/ChangeLog b/src/bin/bash/lib/intl/ChangeLog new file mode 100644 index 0000000000..eed2d21a4c --- /dev/null +++ b/src/bin/bash/lib/intl/ChangeLog @@ -0,0 +1,4 @@ +2003-05-22 GNU + + * Version 0.12.1 released. + diff --git a/src/bin/bash/lib/intl/Makefile.in b/src/bin/bash/lib/intl/Makefile.in new file mode 100644 index 0000000000..c5245d4c86 --- /dev/null +++ b/src/bin/bash/lib/intl/Makefile.in @@ -0,0 +1,470 @@ +# 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 + +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) cru $@ $(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/src/bin/bash/lib/intl/VERSION b/src/bin/bash/lib/intl/VERSION new file mode 100644 index 0000000000..130318357b --- /dev/null +++ b/src/bin/bash/lib/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.12.1 diff --git a/src/bin/bash/lib/intl/bindtextdom.c b/src/bin/bash/lib/intl/bindtextdom.c new file mode 100644 index 0000000000..ef5479e32e --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/config.charset b/src/bin/bash/lib/intl/config.charset new file mode 100755 index 0000000000..10c4439702 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/dcgettext.c b/src/bin/bash/lib/intl/dcgettext.c new file mode 100644 index 0000000000..c156ca24ed --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/dcigettext.c b/src/bin/bash/lib/intl/dcigettext.c new file mode 100644 index 0000000000..c0f347e39c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/dcngettext.c b/src/bin/bash/lib/intl/dcngettext.c new file mode 100644 index 0000000000..3d70b18fef --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/dgettext.c b/src/bin/bash/lib/intl/dgettext.c new file mode 100644 index 0000000000..53516314f8 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/dngettext.c b/src/bin/bash/lib/intl/dngettext.c new file mode 100644 index 0000000000..4276f3b24f --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/eval-plural.h b/src/bin/bash/lib/intl/eval-plural.h new file mode 100644 index 0000000000..3441c74e55 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/explodename.c b/src/bin/bash/lib/intl/explodename.c new file mode 100644 index 0000000000..adc36402bb --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/finddomain.c b/src/bin/bash/lib/intl/finddomain.c new file mode 100644 index 0000000000..69a3586e07 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/gettext.c b/src/bin/bash/lib/intl/gettext.c new file mode 100644 index 0000000000..fd3fa0fff9 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/gettextP.h b/src/bin/bash/lib/intl/gettextP.h new file mode 100644 index 0000000000..5c137e514c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/gmo.h b/src/bin/bash/lib/intl/gmo.h new file mode 100644 index 0000000000..2c5785123c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/hash-string.h b/src/bin/bash/lib/intl/hash-string.h new file mode 100644 index 0000000000..b5a7d4132c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/intl-compat.c b/src/bin/bash/lib/intl/intl-compat.c new file mode 100644 index 0000000000..7f32349919 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/l10nflist.c b/src/bin/bash/lib/intl/l10nflist.c new file mode 100644 index 0000000000..9f024871a6 --- /dev/null +++ b/src/bin/bash/lib/intl/l10nflist.c @@ -0,0 +1,456 @@ +/* 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 syntaces 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) + 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/src/bin/bash/lib/intl/libgnuintl.h.in b/src/bin/bash/lib/intl/libgnuintl.h.in new file mode 100644 index 0000000000..14f9cf9728 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/loadinfo.h b/src/bin/bash/lib/intl/loadinfo.h new file mode 100644 index 0000000000..d06a2773fc --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/loadmsgcat.c b/src/bin/bash/lib/intl/loadmsgcat.c new file mode 100644 index 0000000000..83ca63fcdc --- /dev/null +++ b/src/bin/bash/lib/intl/loadmsgcat.c @@ -0,0 +1,1324 @@ +/* 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) + 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) + 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/src/bin/bash/lib/intl/localcharset.c b/src/bin/bash/lib/intl/localcharset.c new file mode 100644 index 0000000000..6983d0bf0a --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/localcharset.h b/src/bin/bash/lib/intl/localcharset.h new file mode 100644 index 0000000000..e5299589be --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/locale.alias b/src/bin/bash/lib/intl/locale.alias new file mode 100644 index 0000000000..51dd21e783 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/localealias.c b/src/bin/bash/lib/intl/localealias.c new file mode 100644 index 0000000000..d99a48d9e2 --- /dev/null +++ b/src/bin/bash/lib/intl/localealias.c @@ -0,0 +1,421 @@ +/* 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)) + 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) + 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/src/bin/bash/lib/intl/localename.c b/src/bin/bash/lib/intl/localename.c new file mode 100644 index 0000000000..795a34fb9e --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/log.c b/src/bin/bash/lib/intl/log.c new file mode 100644 index 0000000000..e527e879c2 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/ngettext.c b/src/bin/bash/lib/intl/ngettext.c new file mode 100644 index 0000000000..95aafccddb --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/os2compat.c b/src/bin/bash/lib/intl/os2compat.c new file mode 100644 index 0000000000..1aa9dff84e --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/os2compat.h b/src/bin/bash/lib/intl/os2compat.h new file mode 100644 index 0000000000..8de3183071 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/osdep.c b/src/bin/bash/lib/intl/osdep.c new file mode 100644 index 0000000000..b0300222d1 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/plural-exp.c b/src/bin/bash/lib/intl/plural-exp.c new file mode 100644 index 0000000000..9ed3b16ff9 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/plural-exp.h b/src/bin/bash/lib/intl/plural-exp.h new file mode 100644 index 0000000000..dcb0dae0b0 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/plural.c b/src/bin/bash/lib/intl/plural.c new file mode 100644 index 0000000000..a0031513c7 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/plural.y b/src/bin/bash/lib/intl/plural.y new file mode 100644 index 0000000000..8b8cec7e83 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/ref-add.sin b/src/bin/bash/lib/intl/ref-add.sin new file mode 100644 index 0000000000..6fd32ed9bd --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/ref-del.sin b/src/bin/bash/lib/intl/ref-del.sin new file mode 100644 index 0000000000..65ce9afa1f --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/relocatable.c b/src/bin/bash/lib/intl/relocatable.c new file mode 100644 index 0000000000..34b2b183bc --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/relocatable.h b/src/bin/bash/lib/intl/relocatable.h new file mode 100644 index 0000000000..de57f446db --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/intl/textdomain.c b/src/bin/bash/lib/intl/textdomain.c new file mode 100644 index 0000000000..4bb0e800a6 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/readline/COPYING b/src/bin/bash/lib/readline/COPYING index 1bf1526387..94a9ed024d 100644 --- a/src/bin/bash/lib/readline/COPYING +++ b/src/bin/bash/lib/readline/COPYING @@ -1,285 +1,626 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111 USA + 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 + Preamble - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to + 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 -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + 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 give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. +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. - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. + 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. - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. + 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. - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. + 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. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". + TERMS AND CONDITIONS -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. + 0. Definitions. - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. + "This License" refers to version 3 of the GNU General Public License. -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: + "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. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + 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. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. + 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. -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. + 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. -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. + 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. - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: + 1. Source Code. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, + 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. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + 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. - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) + The "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 source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. + 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. -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. + The Corresponding Source for a work in source code form is that +same work. - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + 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. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or + 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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. +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. -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. + 13. Use with the GNU Affero General Public License. -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. + 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. -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. + 14. Revised Versions of this License. - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will + 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. + 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. - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. + 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. - NO WARRANTY + 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. - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. + 15. Disclaimer of Warranty. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. + 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. - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs + 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 @@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +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) 19yy + Copyright (C) - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -304,36 +645,30 @@ the "copyright" line and a pointer to where the full notice is found. 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 + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. +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 your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: + 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 +. - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. + 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/src/bin/bash/lib/readline/Makefile.in b/src/bin/bash/lib/readline/Makefile.in index 2caa69a313..2204628a70 100644 --- a/src/bin/bash/lib/readline/Makefile.in +++ b/src/bin/bash/lib/readline/Makefile.in @@ -4,27 +4,36 @@ # # ############################################################################# -# Copyright (C) 1994 Free Software Foundation, Inc. +# Copyright (C) 1994-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 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# 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@ @@ -345,7 +354,7 @@ search.o: search.c shell.o: shell.c signals.o: signals.c terminal.o: terminal.c -text.o: terminal.c +text.o: text.c tilde.o: tilde.c undo.o: undo.c util.o: util.c diff --git a/src/bin/bash/lib/readline/ansi_stdlib.h b/src/bin/bash/lib/readline/ansi_stdlib.h index db13cd234b..7dc2ee0cf4 100644 --- a/src/bin/bash/lib/readline/ansi_stdlib.h +++ b/src/bin/bash/lib/readline/ansi_stdlib.h @@ -6,19 +6,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/lib/readline/bind.c b/src/bin/bash/lib/readline/bind.c index 02c44d87af..c23e64d71b 100644 --- a/src/bin/bash/lib/readline/bind.c +++ b/src/bin/bash/lib/readline/bind.c @@ -1,26 +1,30 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -72,7 +76,10 @@ static char *_rl_read_file PARAMS((char *, size_t *)); static void _rl_init_file_error PARAMS((const char *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); -static int substring_member_of_array PARAMS((char *, const char **)); +static int find_boolean_var PARAMS((const char *)); + +static char *_rl_get_string_variable_value PARAMS((const char *)); +static int substring_member_of_array PARAMS((const char *, const char * const *)); static int currently_reading_init_file; @@ -148,6 +155,34 @@ rl_bind_key_in_map (key, function, map) 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, hence the + check for rl_vi_movement_mode. */ +int +rl_bind_key_if_unbound_in_map (key, default_func, kmap) + int key; + rl_command_func_t *default_func; + Keymap kmap; +{ + char keyseq[2]; + + keyseq[0] = (unsigned char)key; + keyseq[1] = '\0'; + return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); +} + +int +rl_bind_key_if_unbound (key, default_func) + int key; + rl_command_func_t *default_func; +{ + char keyseq[2]; + + keyseq[0] = (unsigned char)key; + keyseq[1] = '\0'; + 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. */ int @@ -199,10 +234,31 @@ rl_unbind_command_in_map (command, map) 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 (keyseq, function) + 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 (keyseq, function, 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 (keyseq, function, map) const char *keyseq; rl_command_func_t *function; @@ -211,6 +267,40 @@ rl_set_key (keyseq, function, 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 (keyseq, default_func, kmap) + const char *keyseq; + rl_command_func_t *default_func; + Keymap kmap; +{ + rl_command_func_t *func; + + if (keyseq) + { + func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL); +#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 (keyseq, default_func) + 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. */ @@ -226,7 +316,7 @@ rl_macro_bind (keyseq, macro, map) if (rl_translate_keyseq (macro, macro_keys, ¯o_keys_len)) { - free (macro_keys); + xfree (macro_keys); return -1; } rl_generic_bind (ISMACR, keyseq, macro_keys, map); @@ -253,10 +343,10 @@ rl_generic_bind (type, keyseq, data, map) k.function = 0; /* If no keys to bind to, exit right away. */ - if (!keyseq || !*keyseq) + if (keyseq == 0 || *keyseq == 0) { if (type == ISMACR) - free (data); + xfree (data); return -1; } @@ -267,7 +357,7 @@ rl_generic_bind (type, keyseq, data, map) KEYS into KEYS_LEN. */ if (rl_translate_keyseq (keyseq, keys, &keys_len)) { - free (keys); + xfree (keys); return -1; } @@ -279,9 +369,12 @@ rl_generic_bind (type, keyseq, data, map) ic = uc; if (ic < 0 || ic >= KEYMAP_SIZE) - return -1; + { + xfree (keys); + return -1; + } - if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic)) + if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) { ic = UNMETA (ic); if (map[ESC].type == ISKMAP) @@ -320,7 +413,7 @@ rl_generic_bind (type, keyseq, data, map) else { if (map[ic].type == ISMACR) - free ((char *)map[ic].function); + xfree ((char *)map[ic].function); else if (map[ic].type == ISKMAP) { map = FUNCTION_TO_KEYMAP (map, ic); @@ -333,7 +426,7 @@ rl_generic_bind (type, keyseq, data, map) rl_binding_keymap = map; } - free (keys); + xfree (keys); return 0; } @@ -371,8 +464,24 @@ rl_translate_keyseq (seq, array, len) } else if (c == 'M') { - i++; - array[l++] = ESC; /* ESC is meta-prefix */ + i++; /* seq[i] == '-' */ + /* XXX - obey convert-meta setting */ + if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP) + array[l++] = ESC; /* ESC is meta-prefix */ + else if (seq[i+1] == '\\' && seq[i+2] == 'C' && seq[i+3] == '-') + { + i += 4; + temp = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i])); + array[l++] = META (temp); + } + else + { + /* This doesn't yet handle things like \M-\a, which may + or may not have any reasonable meaning. You're + probably better off using straight octal or hex. */ + i++; + array[l++] = META (seq[i]); + } } else if (c == 'C') { @@ -467,6 +576,11 @@ rl_untranslate_keyseq (seq) kseq[i++] = '-'; c = UNMETA (c); } + else if (c == ESC) + { + kseq[i++] = '\\'; + c = 'e'; + } else if (CTRL_CHAR (c)) { kseq[i++] = '\\'; @@ -515,7 +629,12 @@ _rl_untranslate_macro_value (seq) *r++ = '-'; c = UNMETA (c); } - else if (CTRL_CHAR (c) && c != ESC) + else if (c == ESC) + { + *r++ = '\\'; + c = 'e'; + } + else if (CTRL_CHAR (c)) { *r++ = '\\'; *r++ = 'C'; @@ -574,7 +693,7 @@ rl_function_of_keyseq (keyseq, map, type) { register int i; - if (!map) + if (map == 0) map = _rl_keymap; for (i = 0; keyseq && keyseq[i]; i++) @@ -583,25 +702,27 @@ rl_function_of_keyseq (keyseq, map, type) if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) { - if (map[ESC].type != ISKMAP) + 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); } - else - { - map = FUNCTION_TO_KEYMAP (map, ESC); - ic = UNMETA (ic); - } } if (map[ic].type == ISKMAP) { /* If this is the last key in the key sequence, return the map. */ - if (!keyseq[i + 1]) + if (keyseq[i + 1] == '\0') { if (type) *type = ISKMAP; @@ -611,7 +732,12 @@ rl_function_of_keyseq (keyseq, map, type) else map = FUNCTION_TO_KEYMAP (map, ic); } - else + /* 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 && keyseq[i+1]) + return ((rl_command_func_t *)NULL); + else /* map[ic].type != ISKMAP && keyseq[i+1] == 0 */ { if (type) *type = map[ic].type; @@ -666,10 +792,12 @@ _rl_read_file (filename, sizep) if (i < 0) { - free (buffer); + xfree (buffer); return ((char *)NULL); } + RL_CHECK_SIGNALS (); + buffer[i] = '\0'; if (sizep) *sizep = i; @@ -693,6 +821,7 @@ rl_re_read_init_file (count, ignore) 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 @@ -703,17 +832,18 @@ rl_read_init_file (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 = last_readline_init_file; - if (filename == 0) - filename = sh_get_env_value ("INPUTRC"); - if (filename == 0) - filename = DEFAULT_INPUTRC; + 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 (*filename == 0) - filename = DEFAULT_INPUTRC; - #if defined (__MSDOS__) if (_rl_read_init_file (filename, 0) == 0) return 0; @@ -740,8 +870,9 @@ _rl_read_init_file (filename, include_level) openname = tilde_expand (filename); buffer = _rl_read_file (openname, &file_size); - free (openname); + xfree (openname); + RL_CHECK_SIGNALS (); if (buffer == 0) return (errno); @@ -788,7 +919,7 @@ _rl_read_init_file (filename, include_level) current_readline_init_lineno++; } - free (buffer); + xfree (buffer); currently_reading_init_file = 0; return (0); } @@ -798,10 +929,10 @@ _rl_init_file_error (msg) const char *msg; { if (currently_reading_init_file) - fprintf (stderr, "readline: %s: line %d: %s\n", current_readline_init_file, + _rl_errmsg ("%s: line %d: %s\n", current_readline_init_file, current_readline_init_lineno, msg); else - fprintf (stderr, "readline: %s\n", msg); + _rl_errmsg ("%s", msg); } /* **************************************************************** */ @@ -813,11 +944,11 @@ _rl_init_file_error (msg) typedef int _rl_parser_func_t PARAMS((char *)); /* Things that mean `Control'. */ -const char *_rl_possible_control_prefixes[] = { +const char * const _rl_possible_control_prefixes[] = { "Control-", "C-", "CTRL-", (const char *)NULL }; -const char *_rl_possible_meta_prefixes[] = { +const char * const _rl_possible_meta_prefixes[] = { "Meta", "M-", (const char *)NULL }; @@ -879,7 +1010,7 @@ parser_if (args) `$if term=sun-cmd' into their .inputrc. */ _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) && _rl_stricmp (args + 5, rl_terminal_name); - free (tname); + xfree (tname); } #if defined (VI_MODE) else if (_rl_strnicmp (args, "mode=", 5) == 0) @@ -918,9 +1049,15 @@ parser_else (args) 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; @@ -970,8 +1107,8 @@ parser_include (args) } /* Associate textual names with actual functions. */ -static struct { - const char *name; +static const struct { + const char * const name; _rl_parser_func_t *function; } parser_directives [] = { { "if", parser_if }, @@ -1097,9 +1234,9 @@ rl_parse_and_bind (string) /* If this is a command to set a variable, then do that. */ if (_rl_stricmp (string, "set") == 0) { - char *var = string + i; - char *value; + char *var, *value, *e; + var = string + i; /* Make VAR point to start of variable name. */ while (*var && whitespace (*var)) var++; @@ -1110,6 +1247,20 @@ rl_parse_and_bind (string) *value++ = '\0'; while (*value && whitespace (*value)) value++; + /* Strip trailing whitespace from values to boolean variables. Temp + fix until I get a real quoted-string parser here. */ + i = find_boolean_var (var); + if (i >= 0) + { + /* 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'; + } + rl_variable_bind (var, value); return 0; } @@ -1130,8 +1281,9 @@ rl_parse_and_bind (string) the quoted string delimiter, like the shell. */ if (*funname == '\'' || *funname == '"') { - int delimiter = string[i++], passc; + int delimiter, passc; + delimiter = string[i++]; for (passc = 0; c = string[i]; i++) { if (passc) @@ -1167,7 +1319,7 @@ rl_parse_and_bind (string) } /* If this is a new-style key-binding, then do the binding with - rl_set_key (). Otherwise, let the older code deal with it. */ + rl_bind_keyseq (). Otherwise, let the older code deal with it. */ if (*string == '"') { char *seq; @@ -1206,9 +1358,9 @@ rl_parse_and_bind (string) rl_macro_bind (seq, &funname[1], _rl_keymap); } else - rl_set_key (seq, rl_named_function (funname), _rl_keymap); + rl_bind_keyseq (seq, rl_named_function (funname)); - free (seq); + xfree (seq); return 0; } @@ -1262,11 +1414,12 @@ rl_parse_and_bind (string) #define V_SPECIAL 0x1 -static struct { - const char *name; +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 }, { "completion-ignore-case", &_rl_completion_case_fold, 0 }, @@ -1286,7 +1439,9 @@ static struct { { "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 }, #if defined (VISIBLE_STATS) { "visible-stats", &rl_visible_stats, 0 }, #endif /* VISIBLE_STATS */ @@ -1343,20 +1498,24 @@ typedef int _rl_sv_func_t PARAMS((const char *)); /* 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_editmode 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 struct { - const char *name; +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-prefix-display-length", V_INT, sv_dispprefix }, { "completion-query-items", V_INT, sv_compquery }, { "editing-mode", V_STRING, sv_editmode }, + { "history-size", V_INT, sv_histsize }, { "isearch-terminators", V_STRING, sv_isrchterm }, { "keymap", V_STRING, sv_keymap }, { (char *)NULL, 0 } @@ -1379,13 +1538,32 @@ find_string_var (name) values result in 0 (false). */ static int bool_to_int (value) - char *value; + const char *value; { return (value == 0 || *value == '\0' || (_rl_stricmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0')); } +char * +rl_variable_value (name) + 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 0; +} + int rl_variable_bind (name, value) const char *name, *value; @@ -1448,6 +1626,22 @@ sv_combegin (value) return 1; } +static int +sv_dispprefix (value) + 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 (value) const char *value; @@ -1464,6 +1658,22 @@ sv_compquery (value) return 0; } +static int +sv_histsize (value) + const char *value; +{ + int nval = 500; + + if (value && *value) + { + nval = atoi (value); + if (nval < 0) + return 1; + } + stifle_history (nval); + return 0; +} + static int sv_keymap (value) const char *value; @@ -1528,7 +1738,7 @@ sv_isrchterm (value) rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end); _rl_isearch_terminators[end] = '\0'; - free (v); + xfree (v); return 0; } @@ -1536,11 +1746,11 @@ sv_isrchterm (value) For example, `Space' returns ' '. */ typedef struct { - const char *name; + const char * const name; int value; } assoc_list; -static assoc_list name_key_alist[] = { +static const assoc_list name_key_alist[] = { { "DEL", 0x7f }, { "ESC", '\033' }, { "Escape", '\033' }, @@ -1569,8 +1779,8 @@ glean_key_from_name (name) } /* Auxiliary functions to manage keymaps. */ -static struct { - const char *name; +static const struct { + const char * const name; Keymap map; } keymap_names[] = { { "emacs", emacs_standard_keymap }, @@ -1656,7 +1866,7 @@ rl_get_keymap_name_from_edit_mode () /* 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 (). */ + be read back in (i.e., passed to rl_parse_and_bind ()). */ /* Print the names of functions known to Readline. */ void @@ -1673,7 +1883,7 @@ rl_list_funmap_names () for (i = 0; funmap_names[i]; i++) fprintf (rl_outstream, "%s\n", funmap_names[i]); - free (funmap_names); + xfree (funmap_names); } static char * @@ -1812,12 +2022,16 @@ rl_invoking_keyseqs_in_map (function, map) char *keyname = (char *)xmalloc (6 + strlen (seqs[i])); if (key == ESC) -#if 0 - sprintf (keyname, "\\e"); -#else - /* XXX - experimental */ - sprintf (keyname, "\\M-"); -#endif + { + /* 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 if (CTRL_CHAR (key)) sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key))); else if (key == RUBOUT) @@ -1835,7 +2049,7 @@ rl_invoking_keyseqs_in_map (function, map) } strcat (keyname, seqs[i]); - free (seqs[i]); + xfree (seqs[i]); if (result_index + 2 > result_size) { @@ -1847,7 +2061,7 @@ rl_invoking_keyseqs_in_map (function, map) result[result_index] = (char *)NULL; } - free (seqs); + xfree (seqs); } break; } @@ -1899,10 +2113,10 @@ rl_function_dumper (print_readably) { fprintf (rl_outstream, "\"%s\": %s\n", invokers[j], name); - free (invokers[j]); + xfree (invokers[j]); } - free (invokers); + xfree (invokers); } } else @@ -1926,9 +2140,9 @@ rl_function_dumper (print_readably) fprintf (rl_outstream, "...\n"); for (j = 0; invokers[j]; j++) - free (invokers[j]); + xfree (invokers[j]); - free (invokers); + xfree (invokers); } } } @@ -1974,8 +2188,8 @@ _rl_macro_dumper_internal (print_readably, map, prefix) fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", keyname, out ? out : ""); - free (keyname); - free (out); + xfree (keyname); + xfree (out); break; case ISFUNC: break; @@ -1998,13 +2212,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix) out = (char *)xmalloc (strlen (keyname) + prefix_len + 1); strcpy (out, prefix); strcpy (out + prefix_len, keyname); - free (keyname); + xfree (keyname); keyname = out; } } _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname); - free (keyname); + xfree (keyname); break; } } @@ -2028,12 +2242,77 @@ rl_dump_macros (count, key) return (0); } +static char * +_rl_get_string_variable_value (name) + 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-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); + 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 + return (0); +} + void rl_variable_dumper (print_readably) int print_readably; { int i; - const char *kname; + char *v; for (i = 0; boolean_varlist[i].name; i++) { @@ -2045,63 +2324,16 @@ rl_variable_dumper (print_readably) *boolean_varlist[i].value ? "on" : "off"); } - /* bell-style */ - switch (_rl_bell_preference) + for (i = 0; string_varlist[i].name; i++) { - case NO_BELL: - kname = "none"; break; - case VISIBLE_BELL: - kname = "visible"; break; - case AUDIBLE_BELL: - default: - kname = "audible"; break; - } - if (print_readably) - fprintf (rl_outstream, "set bell-style %s\n", kname); - else - fprintf (rl_outstream, "bell-style is set to `%s'\n", kname); - - /* comment-begin */ - if (print_readably) - fprintf (rl_outstream, "set comment-begin %s\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); - else - fprintf (rl_outstream, "comment-begin is set to `%s'\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); - - /* completion-query-items */ - if (print_readably) - fprintf (rl_outstream, "set completion-query-items %d\n", rl_completion_query_items); - else - fprintf (rl_outstream, "completion-query-items is set to `%d'\n", rl_completion_query_items); - - /* editing-mode */ - if (print_readably) - fprintf (rl_outstream, "set editing-mode %s\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi"); - else - fprintf (rl_outstream, "editing-mode is set to `%s'\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi"); - - /* isearch-terminators */ - if (_rl_isearch_terminators) - { - char *disp; - - disp = _rl_untranslate_macro_value (_rl_isearch_terminators); - + 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 isearch-terminators \"%s\"\n", disp); + fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v); else - fprintf (rl_outstream, "isearch-terminators is set to \"%s\"\n", disp); - - free (disp); + fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v); } - - /* keymap */ - kname = rl_get_keymap_name (_rl_keymap); - if (kname == 0) - kname = rl_get_keymap_name_from_edit_mode (); - if (print_readably) - fprintf (rl_outstream, "set keymap %s\n", kname ? kname : "none"); - else - fprintf (rl_outstream, "keymap is set to `%s'\n", kname ? kname : "none"); } /* Print all of the current variables and their values to @@ -2118,33 +2350,11 @@ rl_dump_variables (count, key) return (0); } -/* 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. */ -void -_rl_bind_if_unbound (keyseq, default_func) - const char *keyseq; - rl_command_func_t *default_func; -{ - rl_command_func_t *func; - - if (keyseq) - { - func = rl_function_of_keyseq (keyseq, _rl_keymap, (int *)NULL); -#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 - rl_set_key (keyseq, default_func, _rl_keymap); - } -} - /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int substring_member_of_array (string, array) - char *string; - const char **array; + const char *string; + const char * const *array; { while (*array) { diff --git a/src/bin/bash/lib/readline/callback.c b/src/bin/bash/lib/readline/callback.c index a8f4323c92..6c52ac037a 100644 --- a/src/bin/bash/lib/readline/callback.c +++ b/src/bin/bash/lib/readline/callback.c @@ -1,24 +1,24 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -43,10 +43,16 @@ #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; /* **************************************************************** */ /* */ -/* Callback Readline Functions */ +/* Callback Readline Functions */ /* */ /* **************************************************************** */ @@ -72,7 +78,8 @@ _rl_callback_newline () { in_handler = 1; - (*rl_prep_term_function) (_rl_meta_flag); + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) rl_set_signals (); @@ -80,6 +87,7 @@ _rl_callback_newline () } readline_internal_setup (); + RL_CHECK_SIGNALS (); } /* Install a readline handler, set up the terminal, and issue the prompt. */ @@ -89,6 +97,7 @@ rl_callback_handler_install (prompt, linefunc) rl_vcpfunc_t *linefunc; { rl_set_prompt (prompt); + RL_SETSTATE (RL_STATE_CALLBACK); rl_linefunc = linefunc; _rl_callback_newline (); } @@ -98,24 +107,100 @@ void rl_callback_read_char () { char *line; - int eof; + int eof, jcode; + static procenv_t olevel; if (rl_linefunc == NULL) { - fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n"); + _rl_errmsg ("readline_callback_read_char() called with no handler!"); abort (); } - eof = readline_internal_char (); - - /* We loop in case some function has pushed input back with rl_execute_next. */ - for (;;) + memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t)); + jcode = setjmp (_rl_top_level); + if (jcode) { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t)); + return; + } + + 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 (); + + return; + } + else if (RL_ISSTATE (RL_STATE_NSEARCH)) + { + eof = _rl_nsearch_callback (_rl_nscxt); + return; + } + else if (RL_ISSTATE (RL_STATE_NUMERICARG)) + { + eof = _rl_arg_callback (_rl_argcxt); + if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) + rl_callback_read_char (); + /* XXX - this should handle _rl_last_command_was_kill better */ + else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) + _rl_internal_char_cleanup (); + + return; + } + else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + { + eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ + while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) + eof = _rl_dispatch_callback (_rl_kscxt); + if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) + { + _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 simply a + pointer to a struct that has the argument count originally + passed to the registering function and space for any additional + parameters. */ + eof = (*_rl_callback_func) (_rl_callback_data); + /* If the function `deregisters' itself, make sure the data is + cleaned up. */ + if (_rl_callback_func == 0) + { + if (_rl_callback_data) + { + _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); - (*rl_deprep_term_function) (); + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif @@ -131,11 +216,8 @@ rl_callback_read_char () if (in_handler == 0 && rl_linefunc) _rl_callback_newline (); } - if (rl_pending_input) - eof = readline_internal_char (); - else - break; } + while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)); } /* Remove the handler, and make sure the terminal is in its normal state. */ @@ -143,14 +225,37 @@ void rl_callback_handler_remove () { rl_linefunc = NULL; + RL_UNSETSTATE (RL_STATE_CALLBACK); + RL_CHECK_SIGNALS (); if (in_handler) { in_handler = 0; - (*rl_deprep_term_function) (); + 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 (count) + 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 (arg) + _rl_callback_generic_arg *arg; +{ + xfree (arg); +} + #endif diff --git a/src/bin/bash/lib/readline/chardefs.h b/src/bin/bash/lib/readline/chardefs.h index a537be220b..e76c34b0c6 100644 --- a/src/bin/bash/lib/readline/chardefs.h +++ b/src/bin/bash/lib/readline/chardefs.h @@ -1,24 +1,23 @@ /* chardefs.h -- Character definitions for readline. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #ifndef _CHARDEFS_H_ #define _CHARDEFS_H_ @@ -77,11 +76,17 @@ # define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif -#define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) +#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 (c)) #define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) #define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) diff --git a/src/bin/bash/lib/readline/compat.c b/src/bin/bash/lib/readline/compat.c index a66d210fd2..2af51207a3 100644 --- a/src/bin/bash/lib/readline/compat.c +++ b/src/bin/bash/lib/readline/compat.c @@ -1,24 +1,24 @@ /* compat.c -- backwards compatibility functions. */ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) diff --git a/src/bin/bash/lib/readline/complete.c b/src/bin/bash/lib/readline/complete.c index dbb98fa175..88544386a5 100644 --- a/src/bin/bash/lib/readline/complete.c +++ b/src/bin/bash/lib/readline/complete.c @@ -1,24 +1,24 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -28,7 +28,7 @@ #include #include #if defined (HAVE_SYS_FILE_H) -#include +# include #endif #if defined (HAVE_UNISTD_H) @@ -48,7 +48,9 @@ extern int errno; #endif /* !errno */ +#if defined (HAVE_PWD_H) #include +#endif #include "posixdir.h" #include "posixstat.h" @@ -79,9 +81,9 @@ typedef int QSFUNC (); /* Most systems don't declare getpwent in if _POSIX_SOURCE is defined. */ -#if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE) +#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) extern struct passwd *getpwent PARAMS((void)); -#endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */ +#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. @@ -99,13 +101,17 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N static int stat_char PARAMS((char *)); #endif +static int path_isdir PARAMS((const char *)); + static char *rl_quote_filename PARAMS((char *, int, char *)); 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 print_filename PARAMS((char *, char *)); +static int fnwidth PARAMS((const char *)); +static int fnprint PARAMS((const char *, int)); +static int print_filename PARAMS((char *, char *, int)); static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); @@ -130,6 +136,10 @@ static char *make_quoted_replacement PARAMS((char *, int, char *)); /* 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; @@ -154,6 +164,12 @@ int _rl_completion_case_fold; 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; + /* Global variables available to applications using readline. */ #if defined (VISIBLE_STATS) @@ -178,6 +194,10 @@ int rl_complete_with_tilde_expansion = 0; 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 @@ -198,7 +218,8 @@ 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. */ + 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; @@ -214,7 +235,12 @@ 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; +/*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 @@ -282,6 +308,19 @@ int rl_completion_suppress_append = 0; 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 @@ -296,11 +335,20 @@ 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; +/* The result of the query to the user about displaying completion matches */ +static int completion_y_or_n; + /*************************************/ /* */ /* Bindable completion functions */ @@ -314,12 +362,16 @@ int rl_complete (ignore, invoking_key) int ignore, invoking_key; { + rl_completion_invoking_key = invoking_key; + if (rl_inhibit_completion) return (_rl_insert_char (ignore, invoking_key)); else if (rl_last_func == rl_complete && !completion_changed_buffer) 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)); } @@ -329,6 +381,7 @@ int rl_possible_completions (ignore, invoking_key) int ignore, invoking_key; { + rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('?')); } @@ -336,6 +389,7 @@ int rl_insert_completions (ignore, invoking_key) int ignore, invoking_key; { + rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('*')); } @@ -352,6 +406,8 @@ rl_completion_mode (cfunc) return '?'; else if (_rl_complete_show_all) return '!'; + else if (_rl_complete_show_unmodified) + return '@'; else return TAB; } @@ -362,6 +418,14 @@ rl_completion_mode (cfunc) /* */ /************************************/ +/* Reset readline state on a signal or other event. */ +void +_rl_reset_completion_state () +{ + rl_completion_found_quote = 0; + rl_completion_quote_character = 0; +} + /* Set default values for readline word completion. These are the variables that application completion functions can change or inspect. */ static void @@ -372,7 +436,8 @@ set_completion_defaults (what_to_do) rl_filename_completion_desired = 0; rl_filename_quoting_desired = 1; rl_completion_type = what_to_do; - rl_completion_suppress_append = 0; + 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; @@ -395,7 +460,7 @@ get_y_or_n (for_pager) return (1); if (c == 'n' || c == 'N' || c == RUBOUT) return (0); - if (c == ABORT_CHAR) + if (c == ABORT_CHAR || c < 0) _rl_abort_internal (); if (for_pager && (c == NEWLINE || c == RETURN)) return (2); @@ -423,6 +488,15 @@ _rl_internal_pager (lines) return 0; } +static int +path_isdir (filename) + 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 @@ -439,6 +513,13 @@ stat_char (filename) struct stat finfo; int character, r; + /* Short-circuit a //server on cygwin, since that will always behave as + a directory. */ +#if __CYGWIN__ + if (filename[0] == '/' && filename[1] == '/' && strchr (filename+2, '/') == 0) + return '/'; +#endif + #if defined (HAVE_LSTAT) && defined (S_ISLNK) r = lstat (filename, &finfo); #else @@ -520,53 +601,169 @@ printable_part (pathname) return ++temp; } +/* Compute width of STRING when displayed on screen by print_filename */ +static int +fnwidth (string) + 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 (to_print, prefix_bytes) + const char *to_print; + int prefix_bytes; +{ + int printed_len, w; + const char *s; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + const char *end; + size_t tlen; + int width; + wchar_t wc; + + end = to_print + strlen (to_print) + 1; + memset (&ps, 0, sizeof (mbstate_t)); +#endif + + printed_len = 0; + + /* Don't print only the ellipsis if the common prefix is one of the + possible completions */ + if (to_print[prefix_bytes] == '\0') + prefix_bytes = 0; + + if (prefix_bytes) + { + char ellipsis; + + ellipsis = (to_print[prefix_bytes] == '.') ? '_' : '.'; + for (w = 0; w < ELLIPSIS_LEN; w++) + putc (ellipsis, rl_outstream); + printed_len = ELLIPSIS_LEN; + } + + 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 + } + } + + 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. */ -#define PUTX(c) \ - do { \ - if (CTRL_CHAR (c)) \ - { \ - putc ('^', rl_outstream); \ - putc (UNCTRL (c), rl_outstream); \ - printed_len += 2; \ - } \ - else if (c == RUBOUT) \ - { \ - putc ('^', rl_outstream); \ - putc ('?', rl_outstream); \ - printed_len += 2; \ - } \ - else \ - { \ - putc (c, rl_outstream); \ - printed_len++; \ - } \ - } while (0) - static int -print_filename (to_print, full_pathname) +print_filename (to_print, full_pathname, prefix_bytes) char *to_print, *full_pathname; + int prefix_bytes; { - int printed_len = 0; -#if !defined (VISIBLE_STATS) - char *s; + int printed_len, extension_char, slen, tlen; + char *s, c, *new_full_pathname, *dn; - for (s = to_print; *s; s++) - { - PUTX (*s); - } -#else - char *s, c, *new_full_pathname; - int extension_char, slen, tlen; + extension_char = 0; + printed_len = fnprint (to_print, prefix_bytes); - for (s = to_print; *s; s++) - { - PUTX (*s); - } - - if (rl_filename_completion_desired && rl_visible_stats) +#if defined (VISIBLE_STATS) + if (rl_filename_completion_desired && (rl_visible_stats || _rl_complete_mark_directories)) +#else + if (rl_filename_completion_desired && _rl_complete_mark_directories) +#endif { /* If to_print != full_pathname, to_print is the basename of the path passed. In this case, we try to expand the directory @@ -582,7 +779,17 @@ print_filename (to_print, full_pathname) 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 `/'. */ - s = tilde_expand (full_pathname && *full_pathname ? full_pathname : "/"); + 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); @@ -590,10 +797,20 @@ print_filename (to_print, full_pathname) 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] = '/'; new_full_pathname[slen] = '/'; strcpy (new_full_pathname + slen + 1, to_print); - extension_char = stat_char (new_full_pathname); +#if defined (VISIBLE_STATS) + if (rl_visible_stats) + extension_char = stat_char (new_full_pathname); + else +#endif + if (path_isdir (new_full_pathname)) + extension_char = '/'; free (new_full_pathname); to_print[-1] = c; @@ -601,7 +818,13 @@ print_filename (to_print, full_pathname) else { s = tilde_expand (full_pathname); - extension_char = stat_char (s); +#if defined (VISIBLE_STATS) + if (rl_visible_stats) + extension_char = stat_char (s); + else +#endif + if (path_isdir (s)) + extension_char = '/'; } free (s); @@ -611,7 +834,7 @@ print_filename (to_print, full_pathname) printed_len++; } } -#endif /* VISIBLE_STATS */ + return printed_len; } @@ -651,19 +874,25 @@ _rl_find_completion_word (fp, dp) int *fp, *dp; { int scan, end, found_quote, delimiter, pass_next, isbrk; - char quote_char; + 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++) + for (scan = pass_next = 0; scan < end; scan = MB_NEXTCHAR (rl_line_buffer, scan, 1, MB_FIND_ANY)) { if (pass_next) { @@ -713,15 +942,11 @@ _rl_find_completion_word (fp, dp) /* 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. */ -#if defined (HANDLE_MULTIBYTE) - while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY)) -#else - while (--rl_point) -#endif + while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) { scan = rl_line_buffer[rl_point]; - if (strchr (rl_completer_word_break_characters, scan) == 0) + if (strchr (brkchars, scan) == 0) continue; /* Call the application-specific function to tell us whether @@ -749,9 +974,9 @@ _rl_find_completion_word (fp, dp) if (rl_char_is_quoted_p) isbrk = (found_quote == 0 || (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) && - strchr (rl_completer_word_break_characters, scan) != 0; + strchr (brkchars, scan) != 0; else - isbrk = strchr (rl_completer_word_break_characters, scan) != 0; + isbrk = strchr (brkchars, scan) != 0; if (isbrk) { @@ -784,14 +1009,19 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char) rl_compentry_func_t *our_func; int found_quote, quote_char; { - char **matches, *temp; + 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) { + _rl_interrupt_immediately++; matches = (*rl_attempted_completion_function) (text, start, end); + _rl_interrupt_immediately--; if (matches || rl_attempted_completion_over) { @@ -800,21 +1030,9 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char) } } - /* Beware -- we're stripping the quotes here. Do this only if we know - we are doing filename completion and the application has defined a - filename dequoting function. */ - temp = (char *)NULL; - - if (found_quote && our_func == rl_filename_completion_function && - rl_filename_dequoting_function) - { - /* delete single and double quotes */ - temp = (*rl_filename_dequoting_function) (text, quote_char); - text = temp; /* not freeing text is not a memory leak */ - } + /* XXX -- filename dequoting moved into rl_filename_completion_function */ matches = rl_completion_matches (text, our_func); - FREE (temp); return matches; } @@ -835,7 +1053,7 @@ remove_duplicate_matches (matches) /* Sort the array without matches[0], since we need it to stay in place no matter what. */ - if (i) + 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. */ @@ -889,6 +1107,7 @@ compute_lcd_of_matches (match_list, matches, text) { register int i, c1, c2, si; int low; /* Count of max-matched characters. */ + char *dtext; /* dequoted TEXT, if needed */ #if defined (HANDLE_MULTIBYTE) int v; mbstate_t ps1, ps2; @@ -946,7 +1165,8 @@ compute_lcd_of_matches (match_list, matches, text) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - mbstate_t ps_back = ps1; + mbstate_t ps_back; + ps_back = ps1; if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2)) break; else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1) @@ -980,6 +1200,26 @@ compute_lcd_of_matches (match_list, matches, text) 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. */ qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); @@ -999,6 +1239,8 @@ compute_lcd_of_matches (match_list, matches, text) else /* otherwise, just use the text the user typed. */ strncpy (match_list[0], text, low); + + FREE (dtext); } else strncpy (match_list[0], match_list[1], low); @@ -1075,8 +1317,24 @@ rl_display_match_list (matches, len, max) int len, max; { int count, limit, printed_len, lines; - int i, j, k, l; - char *temp; + 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]); + temp = strrchr (t, '/'); + common_length = temp ? fnwidth (temp) : fnwidth (t); + sind = temp ? strlen (temp) : strlen (t); + + if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) + max -= common_length - ELLIPSIS_LEN; + else + common_length = sind = 0; + } /* How many items of MAX length can we fit in the screen window? */ max += 2; @@ -1097,7 +1355,7 @@ rl_display_match_list (matches, len, max) 0 < len <= limit implies count = 1. */ /* Sort the items if they are not already sorted. */ - if (rl_ignore_completion_duplicates == 0) + if (rl_ignore_completion_duplicates == 0 && rl_sort_completion_matches) qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); rl_crlf (); @@ -1115,7 +1373,7 @@ rl_display_match_list (matches, len, max) else { temp = printable_part (matches[l]); - printed_len = print_filename (temp, matches[l]); + printed_len = print_filename (temp, matches[l], sind); if (j + 1 < limit) for (k = 0; k < max - printed_len; k++) @@ -1139,7 +1397,7 @@ rl_display_match_list (matches, len, max) for (i = 1; matches[i]; i++) { temp = printable_part (matches[i]); - printed_len = print_filename (temp, matches[i]); + printed_len = print_filename (temp, matches[i], sind); /* Have we reached the end of this line? */ if (matches[i+1]) { @@ -1189,7 +1447,7 @@ display_matches (matches) { temp = printable_part (matches[0]); rl_crlf (); - print_filename (temp, matches[0]); + print_filename (temp, matches[0], 0); rl_crlf (); rl_forced_update_display (); @@ -1203,7 +1461,7 @@ display_matches (matches) for (max = 0, i = 1; matches[i]; i++) { temp = printable_part (matches[i]); - len = strlen (temp); + len = fnwidth (temp); if (len > max) max = len; @@ -1220,12 +1478,12 @@ display_matches (matches) /* If there are many items, then ask the user if she really wants to see them all. */ - if (len >= rl_completion_query_items) + 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 (get_y_or_n (0) == 0) + if ((completion_y_or_n = get_y_or_n (0)) == 0) { rl_crlf (); @@ -1338,7 +1596,8 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) struct stat finfo; temp_string_index = 0; - if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char) + 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) @@ -1356,7 +1615,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) : stat (filename, &finfo); if (s == 0 && S_ISDIR (finfo.st_mode)) { - if (_rl_complete_mark_directories) + 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 @@ -1449,7 +1708,9 @@ _rl_free_match_list (matches) 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. */ + 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 (what_to_do) int what_to_do; @@ -1468,7 +1729,6 @@ rl_complete_internal (what_to_do) 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; @@ -1495,6 +1755,7 @@ rl_complete_internal (what_to_do) FREE (saved_line_buffer); completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); return (0); } @@ -1509,6 +1770,7 @@ rl_complete_internal (what_to_do) FREE (saved_line_buffer); completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); return (0); } @@ -1516,6 +1778,7 @@ rl_complete_internal (what_to_do) { case TAB: case '!': + case '@': /* Insert the first match with proper quoting. */ if (*matches[0]) insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); @@ -1535,6 +1798,12 @@ rl_complete_internal (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. */ } @@ -1552,10 +1821,11 @@ rl_complete_internal (what_to_do) break; default: - fprintf (stderr, "\r\nreadline: bad value %d for what_to_do in rl_complete\n", what_to_do); + _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_reset_completion_state (); return 1; } @@ -1569,6 +1839,7 @@ rl_complete_internal (what_to_do) } RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); return 0; } @@ -1612,6 +1883,7 @@ rl_completion_matches (text, entry_function) match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); match_list[1] = (char *)NULL; + _rl_interrupt_immediately++; while (string = (*entry_function) (text, matches)) { if (matches + 1 == match_list_size) @@ -1621,6 +1893,7 @@ rl_completion_matches (text, entry_function) match_list[++matches] = string; match_list[matches + 1] = (char *)NULL; } + _rl_interrupt_immediately--; /* If there were any matches, then look through them finding out the lowest common denominator. That then becomes match_list[0]. */ @@ -1662,16 +1935,20 @@ rl_username_completion_function (text, state) setpwent (); } +#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 @@ -1769,13 +2046,30 @@ rl_filename_completion_function (text, state) if (rl_directory_rewrite_hook) (*rl_directory_rewrite_hook) (&dirname); + /* The directory completion hook should perform any necessary + dequoting. */ if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname)) { free (users_dirname); users_dirname = savestring (dirname); } - + else if (rl_completion_found_quote && rl_filename_dequoting_function) + { + /* delete single and double quotes */ + temp = (*rl_filename_dequoting_function) (users_dirname, rl_completion_quote_character); + free (users_dirname); + users_dirname = temp; + } directory = opendir (dirname); + + /* Now dequote a non-null filename. */ + if (filename && *filename && rl_completion_found_quote && rl_filename_dequoting_function) + { + /* delete single and double quotes */ + temp = (*rl_filename_dequoting_function) (filename, rl_completion_quote_character); + free (filename); + filename = temp; + } filename_len = strlen (filename); rl_filename_completion_desired = 1; @@ -1898,8 +2192,8 @@ rl_filename_completion_function (text, state) hit the end of the match list, we restore the original unmatched text, ring the bell, and reset the counter to zero. */ int -rl_menu_complete (count, ignore) - int count, ignore; +rl_old_menu_complete (count, invoking_key) + int count, invoking_key; { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -1924,10 +2218,14 @@ rl_menu_complete (count, ignore) match_list_index = match_list_size = 0; matches = (char **)NULL; + rl_completion_invoking_key = invoking_key; + /* Only the completion entry function can change these. */ set_completion_defaults ('%'); - our_func = rl_completion_entry_function + 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; @@ -1968,6 +2266,9 @@ rl_menu_complete (count, ignore) ; /* 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 @@ -1983,9 +2284,11 @@ rl_menu_complete (count, ignore) return (0); } - match_list_index = (match_list_index + count) % match_list_size; + match_list_index += count; if (match_list_index < 0) match_list_index += match_list_size; + else + match_list_index %= match_list_size; if (match_list_index == 0 && match_list_size > 1) { @@ -2002,3 +2305,158 @@ rl_menu_complete (count, ignore) completion_changed_buffer = 1; return (0); } + +int +rl_menu_complete (count, ignore) + int count, ignore; +{ + rl_compentry_func_t *our_func; + int matching_filenames, found_quote; + + static char *orig_text; + static char **matches = (char **)0; + static int match_list_index = 0; + static int match_list_size = 0; + static int nontrivial_lcd = 0; + static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */ + static int orig_start, orig_end; + static char quote_char; + static int delimiter; + + /* The first time through, we generate the list of matches and set things + up to insert them. */ + if (rl_last_func != rl_menu_complete || full_completion) + { + /* Clean up from previous call, if any. */ + FREE (orig_text); + if (matches) + _rl_free_match_list (matches); + + match_list_index = match_list_size = 0; + matches = (char **)NULL; + + full_completion = 0; + + /* Only the completion entry function can change these. */ + set_completion_defaults ('%'); + + our_func = rl_menu_completion_entry_function; + if (our_func == 0) + our_func = rl_completion_entry_function + ? rl_completion_entry_function + : rl_filename_completion_function; + + /* We now look backwards for the start of a filename/variable word. */ + orig_end = rl_point; + found_quote = delimiter = 0; + quote_char = '\0'; + + if (rl_point) + /* This (possibly) changes rl_point. If it returns a non-zero char, + we know we have an open quote. */ + quote_char = _rl_find_completion_word (&found_quote, &delimiter); + + orig_start = rl_point; + rl_point = orig_end; + + orig_text = rl_copy_text (orig_start, orig_end); + matches = gen_completion_matches (orig_text, orig_start, orig_end, + our_func, found_quote, quote_char); + + nontrivial_lcd = matches && strcmp (orig_text, matches[0]) != 0; + + /* If we are matching filenames, the attempted completion function will + have set rl_filename_completion_desired to a non-zero value. The basic + rl_filename_completion_function does this. */ + matching_filenames = rl_filename_completion_desired; + + if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0) + { + rl_ding (); + FREE (matches); + matches = (char **)0; + FREE (orig_text); + orig_text = (char *)0; + completion_changed_buffer = 0; + return (0); + } + + for (match_list_size = 0; matches[match_list_size]; match_list_size++) + ; + + if (match_list_size == 0) + { + rl_ding (); + FREE (matches); + matches = (char **)0; + match_list_index = 0; + completion_changed_buffer = 0; + return (0); + } + + /* matches[0] is lcd if match_list_size > 1, but the circular buffer + code below should take care of it. */ + if (*matches[0]) + { + insert_match (matches[0], orig_start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); + orig_end = orig_start + strlen (matches[0]); + completion_changed_buffer = STREQ (orig_text, matches[0]) == 0; + } + + if (match_list_size > 1 && _rl_complete_show_all) + { + display_matches (matches); + /* If there are so many matches that the user has to be asked + whether or not he wants to see the matches, menu completion + is unwieldy. */ + if (rl_completion_query_items > 0 && match_list_size >= rl_completion_query_items) + { + rl_ding (); + FREE (matches); + matches = (char **)0; + full_completion = 1; + return (0); + } + } + else if (match_list_size <= 1) + { + append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); + full_completion = 1; + return (0); + } + } + + /* Now we have the list of matches. Replace the text between + rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with + matches[match_list_index], and add any necessary closing char. */ + + if (matches == 0 || match_list_size == 0) + { + rl_ding (); + FREE (matches); + matches = (char **)0; + completion_changed_buffer = 0; + return (0); + } + + match_list_index += count; + if (match_list_index < 0) + match_list_index += match_list_size; + else + match_list_index %= match_list_size; + + if (match_list_index == 0 && match_list_size > 1) + { + rl_ding (); + insert_match (matches[0], orig_start, MULT_MATCH, "e_char); + } + else + { + insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char); + append_to_match (matches[match_list_index], delimiter, quote_char, + strcmp (orig_text, matches[match_list_index])); + } + + completion_changed_buffer = 1; + return (0); +} diff --git a/src/bin/bash/lib/readline/display.c b/src/bin/bash/lib/readline/display.c index f1b86a4362..e941c78ac7 100644 --- a/src/bin/bash/lib/readline/display.c +++ b/src/bin/bash/lib/readline/display.c @@ -1,24 +1,24 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -59,30 +59,59 @@ extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ -#if defined (HACK_TERMCAP_MOTION) -extern char *_rl_term_forward_char; -#endif - static void update_line PARAMS((char *, char *, int, int, int, int)); static void space_to_eol PARAMS((int)); static void delete_chars PARAMS((int)); static void insert_some_chars PARAMS((char *, int, int)); static void cr PARAMS((void)); +/* State of visible and invisible lines. */ +struct line_state + { + char *line; + int *lbreaks; + int lbsize; +#if defined (HANDLE_MULTIBYTE) + int *wrapped_line; + int wbsize; +#endif + }; + +/* The line display buffers. One is the line currently displayed on + the screen. The other is the line about to be displayed. */ +static struct line_state line_state_array[2]; +static struct line_state *line_state_visible = &line_state_array[0]; +static struct line_state *line_state_invisible = &line_state_array[1]; +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 invisible_line (line_state_invisible->line) + #if defined (HANDLE_MULTIBYTE) static int _rl_col_width PARAMS((const char *, int, int)); -static int *_rl_wrapped_line; #else # define _rl_col_width(l, s, e) (((e) <= (s)) ? 0 : (e) - (s)) #endif -static int *inv_lbreaks, *vis_lbreaks; -static int inv_lbsize, vis_lbsize; - /* Heuristic used to decide whether it is faster to move from CUR to NEW - by backing up or outputting a carriage return and moving forward. */ + 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. */ +#define PROMPT_ENDING_INDEX \ + ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) + + /* **************************************************************** */ /* */ /* Display stuff */ @@ -118,16 +147,26 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay; int rl_display_fixed = 0; int _rl_suppress_redisplay = 0; +int _rl_want_redisplay = 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; /* Pseudo-global variables declared here. */ + /* 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; +static int cpos_adjusted; +static int cpos_buffer_position; +static int prompt_multibyte_chars; + /* Number of lines currently on screen minus 1. */ int _rl_vis_botlin = 0; @@ -136,11 +175,6 @@ int _rl_vis_botlin = 0; doing horizontal scrolling. It shifts in thirds of a screenwidth. */ static int last_lmargin; -/* The line display buffers. One is the line currently displayed on - the screen. The other is the line about to be displayed. */ -static char *visible_line = (char *)NULL; -static char *invisible_line = (char *)NULL; - /* A buffer for `modeline' messages. */ static char msg_buf[128]; @@ -154,6 +188,7 @@ static int line_size = 1024; include invisible characters. */ static char *local_prompt, *local_prompt_prefix; +static int local_prompt_len; static int prompt_visible_length, prompt_prefix_length; /* The number of invisible characters in the line currently being @@ -178,12 +213,32 @@ static int prompt_invis_chars_first_line; static int prompt_last_screen_line; +static int prompt_physical_chars; + +/* set to a non-zero value by rl_redisplay if we are marking modified history + lines and the current line is so marked. */ +static int modmark; + +/* Variables to save and restore prompt and display information. */ + +/* These are getting numerous enough that it's time to create a struct. */ + +static char *saved_local_prompt; +static char *saved_local_prefix; +static int saved_last_invisible; +static int saved_visible_length; +static int saved_prefix_length; +static int saved_local_length; +static int saved_invis_chars_first_line; +static int saved_physical_chars; + /* 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 first prompt line. The previous are used as byte counts -- indexes + into a character buffer. */ /* Current implementation: \001 (^A) start non-visible characters @@ -193,19 +248,25 @@ static int prompt_last_screen_line; \002 are assumed to be `visible'. */ static char * -expand_prompt (pmt, lp, lip, niflp) +expand_prompt (pmt, lp, lip, niflp, vlp) char *pmt; - int *lp, *lip, *niflp; + int *lp, *lip, *niflp, *vlp; { - char *r, *ret, *p; - int l, rl, last, ignoring, ninvis, invfl; + char *r, *ret, *p, *igstart; + int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; /* Short-circuit if we can. */ - if (strchr (pmt, RL_PROMPT_START_IGNORE) == 0) + if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0) { r = savestring (pmt); if (lp) *lp = strlen (r); + if (lip) + *lip = 0; + if (niflp) + *niflp = 0; + if (vlp) + *vlp = lp ? *lp : strlen (r); return r; } @@ -213,31 +274,68 @@ expand_prompt (pmt, lp, lip, niflp) r = ret = (char *)xmalloc (l + 1); invfl = 0; /* invisible chars in first line of prompt */ + invflset = 0; /* we only want to set invfl once */ - for (rl = ignoring = last = ninvis = 0, p = pmt; p && *p; p++) + igstart = 0; + for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++) { /* This code strips the invisible character string markers RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */ - if (*p == RL_PROMPT_START_IGNORE) + if (ignoring == 0 && *p == RL_PROMPT_START_IGNORE) /* XXX - check ignoring? */ { - ignoring++; + ignoring = 1; + igstart = p; continue; } else if (ignoring && *p == RL_PROMPT_END_IGNORE) { ignoring = 0; - last = r - ret - 1; + if (p != (igstart + 1)) + last = r - ret - 1; continue; } else { - *r++ = *p; - if (!ignoring) - rl++; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + pind = p - pmt; + ind = _rl_find_next_mbchar (pmt, 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 (pmt, pind, ind); + } + else + ninvis += ind - pind; + p--; /* compensate for later increment */ + } else - ninvis++; - if (rl == _rl_screenwidth) - invfl = ninvis; +#endif + { + *r++ = *p; + if (!ignoring) + { + rl++; /* visible length byte counter */ + physchars++; + } + else + ninvis++; /* invisible chars byte counter */ + } + + if (invflset == 0 && rl >= _rl_screenwidth) + { + invfl = ninvis; + invflset = 1; + } } } @@ -251,6 +349,8 @@ expand_prompt (pmt, lp, lip, niflp) *lip = last; if (niflp) *niflp = invfl; + if (vlp) + *vlp = physchars; return ret; } @@ -262,7 +362,7 @@ _rl_strip_prompt (pmt) { char *ret; - ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL); + ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); return ret; } @@ -295,7 +395,9 @@ rl_expand_prompt (prompt) FREE (local_prompt_prefix); local_prompt = local_prompt_prefix = (char *)0; - prompt_last_invisible = prompt_visible_length = 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); @@ -306,8 +408,10 @@ rl_expand_prompt (prompt) /* The prompt is only one logical line, though it might wrap. */ local_prompt = expand_prompt (prompt, &prompt_visible_length, &prompt_last_invisible, - &prompt_invis_chars_first_line); + &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 @@ -316,14 +420,17 @@ rl_expand_prompt (prompt) t = ++p; local_prompt = expand_prompt (p, &prompt_visible_length, &prompt_last_invisible, - &prompt_invis_chars_first_line); + &prompt_invis_chars_first_line, + &prompt_physical_chars); 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, &prompt_prefix_length, (int *)NULL, - &prompt_invis_chars_first_line); + (int *)NULL, + (int *)NULL); *t = c; + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_prefix_length); } } @@ -365,13 +472,21 @@ init_line_structures (minsize) { /* 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)); -#if defined (HANDLE_MULTIBYTE) - _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int)); -#endif inv_lbreaks[0] = vis_lbreaks[0] = 0; } + + line_structures_initialized = 1; } /* Basic redisplay algorithm. */ @@ -380,8 +495,8 @@ rl_redisplay () { register int in, out, c, linenum, cursor_linenum; register char *line; - int c_pos, inv_botlin, lb_botlin, lb_linenum; - int newlines, lpos, temp; + int inv_botlin, lb_botlin, lb_linenum, o_cpos; + int newlines, lpos, temp, n0, num, prompt_lines_estimate; char *prompt_this_line; #if defined (HANDLE_MULTIBYTE) wchar_t wc; @@ -391,30 +506,38 @@ rl_redisplay () int _rl_wrapped_multicolumn = 0; #endif - if (!readline_echoing_p) + if (_rl_echoing_p == 0) return; + /* Block keyboard interrupts because this function manipulates global + data structures. */ + _rl_block_sigint (); + if (!rl_display_prompt) rl_display_prompt = ""; - if (invisible_line == 0) + if (line_structures_initialized == 0) { init_line_structures (0); rl_on_new_line (); } /* Draw the line into the buffer. */ - c_pos = -1; + cpos_buffer_position = -1; + + prompt_multibyte_chars = prompt_visible_length - prompt_physical_chars; line = invisible_line; 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) { line[out++] = '*'; line[out] = '\0'; + modmark = 1; } /* If someone thought that the redisplay was handled, but the currently @@ -429,24 +552,23 @@ rl_redisplay () number of non-visible characters in the prompt string. */ if (rl_display_prompt == rl_prompt || local_prompt) { - int local_len = local_prompt ? strlen (local_prompt) : 0; if (local_prompt_prefix && forced_display) _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix)); - if (local_len > 0) + if (local_prompt_len > 0) { - temp = local_len + out + 2; + temp = local_prompt_len + out + 2; if (temp >= line_size) { line_size = (temp + 1024) - (temp % 1024); visible_line = (char *)xrealloc (visible_line, line_size); line = invisible_line = (char *)xrealloc (invisible_line, line_size); } - strncpy (line + out, local_prompt, local_len); - out += local_len; + strncpy (line + out, local_prompt, local_prompt_len); + out += local_prompt_len; } line[out] = '\0'; - wrap_offset = local_len - prompt_visible_length; + wrap_offset = local_prompt_len - prompt_visible_length; } else { @@ -468,7 +590,7 @@ rl_redisplay () } } - pmtlen = strlen (prompt_this_line); + prompt_physical_chars = pmtlen = strlen (prompt_this_line); temp = pmtlen + out + 2; if (temp >= line_size) { @@ -501,10 +623,14 @@ rl_redisplay () { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ - _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ - _rl_wrapped_line[newlines] = _rl_wrapped_multicolumn; \ + if (newlines >= (line_state_invisible->wbsize - 1)) \ + { \ + line_state_invisible->wbsize *= 2; \ + line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ + } \ + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; \ lpos = 0; \ } \ } while (0) @@ -527,42 +653,76 @@ rl_redisplay () /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; - lpos = out - wrap_offset; + lpos = prompt_physical_chars + modmark; + #if defined (HANDLE_MULTIBYTE) - memset (_rl_wrapped_line, 0, vis_lbsize); + 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 in the first physical line of the prompt. wrap_offset - prompt_invis_chars_first_line is the number of invis - chars on the second line. */ + 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? */ while (lpos >= _rl_screenwidth) { + int z; /* fix from Darin Johnson for prompt string with invisible characters that is longer than the screen width. The prompt_invis_chars_first_line variable could be made into an array saying how many invisible characters there are per line, but that's probably too much work for the benefit gained. How many people have - prompts that exceed two physical lines? */ - temp = ((newlines + 1) * _rl_screenwidth) + -#if 0 - ((newlines == 0) ? prompt_invis_chars_first_line : 0) + -#else - ((newlines == 0 && local_prompt_prefix == 0) ? prompt_invis_chars_first_line : 0) + -#endif - ((newlines == 1) ? wrap_offset : 0); + prompts that exceed two physical lines? + Additional logic fix from Edward Catmur */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) + { + n0 = num; + temp = local_prompt_len; + while (num < temp) + { + z = _rl_col_width (local_prompt, n0, num); + if (z > _rl_screenwidth) + { + num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); + break; + } + else if (z == _rl_screenwidth) + break; + num++; + } + temp = num; + } + else +#endif /* !HANDLE_MULTIBYTE */ + temp = ((newlines + 1) * _rl_screenwidth); + /* Now account for invisible characters in the current line. */ + /* XXX - this assumes that the invisible characters may be split, but only + between the first and the last lines. */ + temp += ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line + : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line)) + : ((newlines == 0) ? wrap_offset : 0)); + inv_lbreaks[++newlines] = temp; - lpos -= _rl_screenwidth; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) + lpos -= _rl_col_width (local_prompt, n0, num); + else +#endif + lpos -= _rl_screenwidth; } prompt_last_screen_line = newlines; /* Draw the rest of the line (after the prompt) into invisible_line, keeping - track of where the cursor is (c_pos), the number of the line containing + 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. */ @@ -586,7 +746,7 @@ rl_redisplay () #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - if (wc_bytes == (size_t)-1 || wc_bytes == (size_t)-2) + if (MB_INVALIDCH (wc_bytes)) { /* Byte sequence is invalid or shortened. Assume that the first byte represents a character. */ @@ -595,12 +755,12 @@ rl_redisplay () wc_width = 1; memset (&ps, 0, sizeof (mbstate_t)); } - else if (wc_bytes == (size_t)0) + else if (MB_NULLWCH (wc_bytes)) break; /* Found '\0' */ else { temp = wcwidth (wc); - wc_width = (temp < 0) ? 1 : temp; + wc_width = (temp >= 0) ? temp : 1; } } #endif @@ -615,7 +775,7 @@ rl_redisplay () if (in == rl_point) { - c_pos = out; + cpos_buffer_position = out; lb_linenum = newlines; } @@ -709,7 +869,7 @@ rl_redisplay () } if (in == rl_point) { - c_pos = out; + cpos_buffer_position = out; lb_linenum = newlines; } for (i = in; i < in+wc_bytes; i++) @@ -740,9 +900,9 @@ rl_redisplay () } line[out] = '\0'; - if (c_pos < 0) + if (cpos_buffer_position < 0) { - c_pos = out; + cpos_buffer_position = out; lb_linenum = newlines; } @@ -751,7 +911,7 @@ rl_redisplay () inv_lbreaks[newlines+1] = out; cursor_linenum = lb_linenum; - /* C_POS == position in buffer where cursor should be placed. + /* 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 @@ -765,7 +925,7 @@ rl_redisplay () if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) { - int nleft, pos, changed_screen_line; + int nleft, pos, changed_screen_line, tx; if (!rl_display_fixed || forced_display) { @@ -786,6 +946,10 @@ rl_redisplay () 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]) @@ -796,9 +960,38 @@ rl_redisplay () /* For each line in the buffer, do the updating display. */ for (linenum = 0; linenum <= inv_botlin; linenum++) { + /* This can lead us astray if we execute a program that changes + the locale from a non-multibyte to a multibyte one. */ + o_cpos = _rl_last_c_pos; + cpos_adjusted = 0; update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum, 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. See + if compensating here is the right thing, or if we have to + change update_line itself. There are several cases in which + update_line adjusts _rl_last_c_pos itself (so it can pass + _rl_move_cursor_relative accurate values); it communicates + 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) && + cpos_adjusted == 0 && + _rl_last_c_pos != o_cpos && + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) + _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ + else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && + (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + cpos_adjusted == 0 && + _rl_last_c_pos != o_cpos && + _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) + _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 @@ -810,10 +1003,26 @@ rl_redisplay () (wrap_offset > visible_wrap_offset) && (_rl_last_c_pos < visible_first_line_len)) { - nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; + 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 prompt + has invisible characters on the second line 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. + Incomplete */ + else if (linenum == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && + wrap_offset != prompt_invis_chars_first_line && + _rl_last_c_pos == out && +#endif + /* Since the new first line is now visible, save its length. */ if (linenum == 0) @@ -846,7 +1055,7 @@ rl_redisplay () the physical cursor position on the screen stays the same, but the buffer position needs to be adjusted to account for invisible characters. */ - if (cursor_linenum == 0 && wrap_offset) + if ((MB_CUR_MAX == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) _rl_last_c_pos += wrap_offset; } @@ -857,7 +1066,11 @@ rl_redisplay () invisible character in the prompt string. */ nleft = prompt_visible_length + wrap_offset; if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 && - _rl_last_c_pos <= prompt_last_invisible && local_prompt) +#if 0 + _rl_last_c_pos <= PROMPT_ENDING_INDEX && local_prompt) +#else + _rl_last_c_pos < PROMPT_ENDING_INDEX && local_prompt) +#endif { #if defined (__MSDOS__) putc ('\r', rl_outstream); @@ -865,32 +1078,49 @@ rl_redisplay () if (_rl_term_cr) tputs (_rl_term_cr, 1, _rl_output_character_function); #endif + if (modmark) + _rl_output_some_chars ("*", 1); + _rl_output_some_chars (local_prompt, nleft); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width(local_prompt, 0, nleft); + _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset + modmark; else - _rl_last_c_pos = nleft; + _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 in the line buffer between the - start of the line and the cursor position. */ - nleft = c_pos - pos; + 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 (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { - _rl_backspace (_rl_last_c_pos - nleft); + /* TX == new physical cursor position in multibyte locale. */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft); + tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset; else - _rl_last_c_pos = nleft; + 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]); else if (nleft != _rl_last_c_pos) @@ -909,11 +1139,11 @@ rl_redisplay () will be LMARGIN. */ /* The number of characters that will be displayed before the cursor. */ - ndisp = c_pos - wrap_offset; + 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 = c_pos - (last_lmargin ? last_lmargin : wrap_offset); + 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, @@ -924,7 +1154,7 @@ rl_redisplay () two-thirds of the way across the screen. */ if (phys_c_pos > _rl_screenwidth - 2) { - lmargin = c_pos - (2 * t); + lmargin = cpos_buffer_position - (2 * t); if (lmargin < 0) lmargin = 0; /* If the left margin would be in the middle of a prompt with @@ -938,7 +1168,7 @@ rl_redisplay () { /* If we are moving back towards the beginning of the line and the last margin is no longer correct, compute a new one. */ - lmargin = ((c_pos - 1) / t) * t; /* XXX */ + lmargin = ((cpos_buffer_position - 1) / t) * t; /* XXX */ if (wrap_offset && lmargin > 0 && lmargin < nleft) lmargin = nleft; } @@ -983,7 +1213,7 @@ rl_redisplay () if (visible_first_line_len > _rl_screenwidth) visible_first_line_len = _rl_screenwidth; - _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]); + _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin]); last_lmargin = lmargin; } } @@ -991,17 +1221,10 @@ rl_redisplay () /* Swap visible and non-visible lines. */ { - char *vtemp = visible_line; - int *itemp = vis_lbreaks, ntemp = vis_lbsize; + struct line_state *vtemp = line_state_visible; - visible_line = invisible_line; - invisible_line = vtemp; - - vis_lbreaks = inv_lbreaks; - inv_lbreaks = itemp; - - vis_lbsize = inv_lbsize; - inv_lbsize = ntemp; + 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 @@ -1012,6 +1235,8 @@ rl_redisplay () else visible_wrap_offset = wrap_offset; } + + _rl_release_sigint (); } /* PWP: update_line() is based on finding the middle difference of each @@ -1036,12 +1261,12 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) int current_line, omax, nmax, inv_botlin; { register char *ofd, *ols, *oe, *nfd, *nls, *ne; - int temp, lendiff, wsatend, od, nd; + int temp, lendiff, wsatend, od, nd, twidth, o_cpos; int current_invis_chars; int col_lendiff, col_temp; #if defined (HANDLE_MULTIBYTE) mbstate_t ps_new, ps_old; - int new_offset, old_offset, tmp; + int new_offset, old_offset; #endif /* If we're at the right edge of a terminal that supports xn, we're @@ -1049,7 +1274,10 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) the exact cursor position and cut-and-paste with certain terminal emulators. In this calculation, TEMP is the physical screen position of the cursor. */ - temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + 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) { @@ -1064,17 +1292,17 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* This fixes only double-column characters, but if the wrapped character comsumes more than three columns, spaces will be inserted in the string buffer. */ - if (_rl_wrapped_line[current_line] > 0) - _rl_clear_to_eol (_rl_wrapped_line[current_line]); + if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0) + _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]); memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps); - if (ret == (size_t)-1 || ret == (size_t)-2) + if (MB_INVALIDCH (ret)) { tempwidth = 1; ret = 1; } - else if (ret == 0) + else if (MB_NULLWCH (ret)) tempwidth = 0; else tempwidth = wcwidth (wc); @@ -1091,7 +1319,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps); if (ret != 0 && bytes != 0) { - if (ret == (size_t)-1 || ret == (size_t)-2) + if (MB_INVALIDCH (ret)) memmove (old+bytes, old+1, strlen (old+1)); else memmove (old+bytes, old+ret, strlen (old+ret)); @@ -1114,7 +1342,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) putc (new[0], rl_outstream); else putc (' ', rl_outstream); - _rl_last_c_pos = 1; /* XXX */ + _rl_last_c_pos = 1; _rl_last_v_pos++; if (old[0] && new[0]) old[0] = new[0]; @@ -1126,18 +1354,37 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - memset (&ps_new, 0, sizeof(mbstate_t)); - memset (&ps_old, 0, sizeof(mbstate_t)); - - new_offset = old_offset = 0; - for (ofd = old, nfd = new; - (ofd - old < omax) && *ofd && - _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); ) + /* See if the old line is a subset of the new line, so that the + only change is adding characters. */ + temp = (omax < nmax) ? omax : nmax; + if (memcmp (old, new, temp) == 0) /* adding at the end */ { - 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; - nfd = new + new_offset; + ofd = old + temp; + nfd = new + temp; + } + else + { + memset (&ps_new, 0, sizeof(mbstate_t)); + memset (&ps_old, 0, sizeof(mbstate_t)); + + if (omax == nmax && STREQN (new, old, omax)) + { + ofd = old + omax; + nfd = new + nmax; + } + else + { + new_offset = old_offset = 0; + for (ofd = old, nfd = new; + (ofd - old < omax) && *ofd && + _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); ) + { + 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; + nfd = new + new_offset; + } + } } } else @@ -1169,8 +1416,11 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) memset (&ps_old, 0, sizeof (mbstate_t)); memset (&ps_new, 0, sizeof (mbstate_t)); +#if 0 + /* On advice from jir@yamato.ibm.com */ _rl_adjust_point (old, ols - old, &ps_old); _rl_adjust_point (new, nls - new, &ps_new); +#endif if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0) break; @@ -1233,7 +1483,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (_rl_last_v_pos != current_line) { _rl_move_vert (current_line); - if (current_line == 0 && visible_wrap_offset) + if ((MB_CUR_MAX == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) _rl_last_c_pos += visible_wrap_offset; } @@ -1249,25 +1499,48 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) sequences (like drawing the `unbold' sequence without a corresponding `bold') that manifests itself on certain terminals. */ - lendiff = local_prompt ? strlen (local_prompt) : 0; + lendiff = local_prompt_len; od = ofd - old; /* index of first difference in visible line */ if (current_line == 0 && !_rl_horizontal_scroll_mode && _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 && - od >= lendiff && _rl_last_c_pos <= prompt_last_invisible) + od >= lendiff && _rl_last_c_pos < PROMPT_ENDING_INDEX) { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif + if (modmark) + _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, lendiff); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff); + { + /* We take wrap_offset into account here so we can pass correct + information to _rl_move_cursor_relative. */ + _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset + modmark; + cpos_adjusted = 1; + } else - _rl_last_c_pos = lendiff; + _rl_last_c_pos = lendiff + modmark; } + o_cpos = _rl_last_c_pos; + + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor postion in multibyte mode, but a buffer index when not in a + multibyte locale. */ _rl_move_cursor_relative (od, old); +#if 1 +#if defined (HANDLE_MULTIBYTE) + /* We need to indicate that the cursor position is correct in the presence of + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ + if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && + (_rl_last_c_pos > 0 || o_cpos > 0) && + _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; +#endif +#endif /* if (len (new) > len (old)) lendiff == difference in buffer @@ -1308,23 +1581,61 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { /* Non-zero if we're increasing the number of lines. */ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* If col_lendiff is > 0, implying that the new string takes up more + screen real estate than the old, but lendiff is < 0, meaning that it + takes fewer bytes, we need to just output the characters starting + from the first difference. These will overwrite what is on the + display, so there's no reason to do a smart update. This can really + only happen in a multibyte environment. */ + if (lendiff < 0) + { + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += _rl_col_width (nfd, 0, temp); + /* If nfd begins before any invisible characters in the prompt, + adjust _rl_last_c_pos to account for wrap_offset and set + cpos_adjusted to let the caller know. */ + if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + { + _rl_last_c_pos -= wrap_offset; + cpos_adjusted = 1; + } + return; + } /* Sometimes it is cheaper to print the characters rather than use the terminal's capabilities. If we're growing the number of lines, make sure we actually cause the new line to wrap around on auto-wrapping terminals. */ - if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + 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. */ - if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 || - lendiff <= prompt_visible_length || !current_invis_chars)) + /* 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)) { insert_some_chars (nfd, lendiff, col_lendiff); _rl_last_c_pos += col_lendiff; } - else if (*ols == 0) +#if 0 /* XXX - for now */ + else if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && _rl_last_c_pos == 0 && wrap_offset && (nfd-new) <= prompt_last_invisible && col_lendiff < prompt_visible_length && visible_wrap_offset >= current_invis_chars) + { + _rl_output_some_chars (nfd, lendiff); + _rl_last_c_pos += col_lendiff; + } +#endif + 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. */ @@ -1335,11 +1646,16 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } else { - /* We have horizontal scrolling and we are not inserting at - the end. We have invisible characters in this line. This - is a dumb update. */ _rl_output_some_chars (nfd, 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 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + { + _rl_last_c_pos -= wrap_offset; + cpos_adjusted = 1; + } return; } /* Copy (new) chars to screen from first diff to last match. */ @@ -1347,11 +1663,23 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if ((temp - lendiff) > 0) { _rl_output_some_chars (nfd + lendiff, temp - lendiff); -#if 0 - _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); -#else - _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); -#endif + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); + else + twidth = temp - lendiff; + _rl_last_c_pos += twidth; + /* 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 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + { + _rl_last_c_pos -= wrap_offset; + cpos_adjusted = 1; + } } } else @@ -1359,6 +1687,18 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* cannot insert chars, write to EOL */ _rl_output_some_chars (nfd, 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. */ + if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + current_line == prompt_last_screen_line && wrap_offset && + wrap_offset != prompt_invis_chars_first_line && + ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth)))) + { + _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; + cpos_adjusted = 1; + } } } else /* Delete characters from line. */ @@ -1380,8 +1720,22 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) temp = nls - nfd; if (temp > 0) { + /* If nfd begins at the prompt, or before the invisible + characters in the prompt, we need to adjust _rl_last_c_pos + in a multibyte locale to account for the wrap offset and + set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + _rl_last_c_pos += _rl_col_width (nfd, 0, temp); + if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + { + _rl_last_c_pos -= wrap_offset; + cpos_adjusted = 1; + } + } + else + _rl_last_c_pos += temp; } } /* Otherwise, print over the existing material. */ @@ -1389,8 +1743,20 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { if (temp > 0) { + /* If nfd begins at the prompt, or before the invisible + characters in the prompt, we need to adjust _rl_last_c_pos + in a multibyte locale to account for the wrap offset and + set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += col_temp; + _rl_last_c_pos += col_temp; /* XXX */ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + { + _rl_last_c_pos -= wrap_offset; + cpos_adjusted = 1; + } + } } lendiff = (oe - old) - (ne - new); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1398,7 +1764,16 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) else col_lendiff = lendiff; +#if 0 if (col_lendiff) +#else + /* If we've already printed over the entire width of the screen, + including the old material, then col_lendiff doesn't matter and + space_to_eol will insert too many spaces. XXX - maybe we should + adjust col_lendiff based on the difference between _rl_last_c_pos + and _rl_screenwidth */ + if (col_lendiff && (_rl_last_c_pos < _rl_screenwidth)) +#endif { if (_rl_term_autowrap && current_line < inv_botlin) space_to_eol (col_lendiff); @@ -1426,12 +1801,13 @@ rl_on_new_line () /* 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. */ + distributed with CLISP. rl_expand_prompt must have already been called + (explicitly or implicitly). This still doesn't work exactly right. */ int rl_on_new_line_with_prompt () { int prompt_size, i, l, real_screenwidth, newlines; - char *prompt_last_line; + char *prompt_last_line, *lprompt; /* Initialize visible_line and invisible_line to ensure that they can hold the already-displayed prompt. */ @@ -1440,8 +1816,9 @@ rl_on_new_line_with_prompt () /* Make sure the line structures hold the already-displayed prompt for redisplay. */ - strcpy (visible_line, rl_prompt); - strcpy (invisible_line, rl_prompt); + 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'); @@ -1450,7 +1827,7 @@ rl_on_new_line_with_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); + _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l); /* XXX */ else _rl_last_c_pos = l; @@ -1476,6 +1853,8 @@ rl_on_new_line_with_prompt () vis_lbreaks[newlines] = l; visible_wrap_offset = 0; + rl_display_prompt = rl_prompt; /* XXX - make sure it's set */ + return 0; } @@ -1483,10 +1862,11 @@ rl_on_new_line_with_prompt () int rl_forced_update_display () { + register char *temp; + if (visible_line) { - register char *temp = visible_line; - + temp = visible_line; while (*temp) *temp++ = '\0'; } @@ -1497,6 +1877,8 @@ 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. */ void @@ -1505,29 +1887,55 @@ _rl_move_cursor_relative (new, data) const char *data; { register int i; + int woff; /* number of invisible chars on current line */ + int cpos, dpos; /* current and desired cursor positions */ - /* If we don't have to do anything, then return. */ + woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; #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. */ - if (MB_CUR_MAX == 1 || rl_byte_oriented) + 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) { - if (_rl_last_c_pos == new) - return; + dpos = _rl_col_width (data, 0, new); + /* Use NEW when comparing against the last invisible character in the + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ + if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ + (prompt_physical_chars > _rl_screenwidth && + _rl_last_v_pos == prompt_last_screen_line && + wrap_offset >= woff && + new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) + /* XXX last comparison might need to be >= */ + { + dpos -= woff; + /* 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 if (_rl_last_c_pos == _rl_col_width (data, 0, new)) - return; -#else - if (_rl_last_c_pos == new) return; + 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. */ - i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); - if (new == 0 || CR_FASTER (new, _rl_last_c_pos) || +#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)) { #if defined (__MSDOS__) @@ -1535,10 +1943,10 @@ _rl_move_cursor_relative (new, data) #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif /* !__MSDOS__ */ - _rl_last_c_pos = 0; + cpos = _rl_last_c_pos = 0; } - if (_rl_last_c_pos < new) + 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 @@ -1549,67 +1957,43 @@ _rl_move_cursor_relative (new, data) sequence telling the terminal to move forward one character. That kind of control is for people who don't know what the data is underneath the cursor. */ -#if defined (HACK_TERMCAP_MOTION) - if (_rl_term_forward_char) + + /* 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 (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (_rl_term_forward_char) { - int width; - width = _rl_col_width (data, _rl_last_c_pos, new); - for (i = 0; i < width; i++) - tputs (_rl_term_forward_char, 1, _rl_output_character_function); + for (i = cpos; i < dpos; i++) + tputs (_rl_term_forward_char, 1, _rl_output_character_function); } else { - for (i = _rl_last_c_pos; i < new; i++) - tputs (_rl_term_forward_char, 1, _rl_output_character_function); + tputs (_rl_term_cr, 1, _rl_output_character_function); + for (i = 0; i < new; i++) + putc (data[i], rl_outstream); } } - else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - tputs (_rl_term_cr, 1, _rl_output_character_function); - for (i = 0; i < new; i++) - putc (data[i], rl_outstream); - } else - for (i = _rl_last_c_pos; i < new; i++) + for (i = cpos; i < new; i++) putc (data[i], rl_outstream); - -#else /* !HACK_TERMCAP_MOTION */ - - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - tputs (_rl_term_cr, 1, _rl_output_character_function); - for (i = 0; i < new; i++) - putc (data[i], rl_outstream); - } - else - for (i = _rl_last_c_pos; i < new; i++) - putc (data[i], rl_outstream); - -#endif /* !HACK_TERMCAP_MOTION */ - } + #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. */ - else if (_rl_last_c_pos >= new) -#else - else if (_rl_last_c_pos > new) #endif - { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_backspace (_rl_last_c_pos - _rl_col_width (data, 0, new)); - else - _rl_backspace (_rl_last_c_pos - new); - } + else if (cpos > dpos) + _rl_backspace (cpos - dpos); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (data, 0, new); - else - _rl_last_c_pos = new; + _rl_last_c_pos = dpos; } /* PWP: move the cursor up or down. */ @@ -1698,9 +2082,9 @@ rl_character_len (c, pos) 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 @@ -1731,8 +2115,20 @@ rl_message (va_alist) #endif va_end (args); + if (saved_local_prompt == 0) + { + rl_save_prompt (); + msg_saved_prompt = 1; + } rl_display_prompt = msg_buf; + local_prompt = expand_prompt (msg_buf, &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 */ @@ -1742,8 +2138,21 @@ rl_message (format, arg1, arg2) { sprintf (msg_buf, format, arg1, arg2); msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */ + rl_display_prompt = msg_buf; + if (saved_local_prompt == 0) + { + rl_save_prompt (); + msg_saved_prompt = 1; + } + local_prompt = expand_prompt (msg_buf, &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 */ @@ -1753,6 +2162,11 @@ int rl_clear_message () { rl_display_prompt = rl_prompt; + if (msg_saved_prompt) + { + rl_restore_prompt (); + msg_saved_prompt = 0; + } (*rl_redisplay_function) (); return 0; } @@ -1767,21 +2181,22 @@ rl_reset_line_state () return 0; } -static char *saved_local_prompt; -static char *saved_local_prefix; -static int saved_last_invisible; -static int saved_visible_length; - void rl_save_prompt () { saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; + saved_prefix_length = prompt_prefix_length; + saved_local_length = local_prompt_len; saved_last_invisible = prompt_last_invisible; saved_visible_length = prompt_visible_length; + saved_invis_chars_first_line = prompt_invis_chars_first_line; + saved_physical_chars = prompt_physical_chars; local_prompt = local_prompt_prefix = (char *)0; - prompt_last_invisible = prompt_visible_length = 0; + local_prompt_len = 0; + prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; + prompt_invis_chars_first_line = prompt_physical_chars = 0; } void @@ -1792,8 +2207,18 @@ rl_restore_prompt () local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; + local_prompt_len = saved_local_length; + prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; + 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; } char * @@ -1801,11 +2226,15 @@ _rl_make_prompt_for_search (pchar) int pchar; { int len; - char *pmt; + char *pmt, *p; rl_save_prompt (); - if (saved_local_prompt == 0) + /* 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); @@ -1816,16 +2245,17 @@ _rl_make_prompt_for_search (pchar) } else { - len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; + p++; + len = strlen (p); pmt = (char *)xmalloc (len + 2); if (len) - strcpy (pmt, saved_local_prompt); + strcpy (pmt, p); pmt[len] = pchar; pmt[len+1] = '\0'; - local_prompt = savestring (pmt); - prompt_last_invisible = saved_last_invisible; - prompt_visible_length = saved_visible_length + 1; - } + } + + /* will be overwritten by expand_prompt, called from rl_message */ + prompt_physical_chars = saved_physical_chars + 1; return pmt; } @@ -1886,10 +2316,13 @@ insert_some_chars (string, count, col) char *string; int count, col; { +#if defined (__MSDOS__) || defined (__MINGW32__) + _rl_output_some_chars (string, count); +#else /* DEBUGGING */ if (MB_CUR_MAX == 1 || rl_byte_oriented) if (count != col) - fprintf(stderr, "readline: debug: insert_some_chars: count (%d) != col (%d)\n", count, col); + _rl_ttymsg ("debug: insert_some_chars: count (%d) != col (%d)", count, col); /* If IC is defined, then we do not have to "enter" insert mode. */ if (_rl_term_IC) @@ -1924,6 +2357,7 @@ insert_some_chars (string, count, col) if (_rl_term_ei && *_rl_term_ei) tputs (_rl_term_ei, 1, _rl_output_character_function); } +#endif /* __MSDOS__ || __MINGW32__ */ } /* Delete COUNT characters from the display line. */ @@ -1934,6 +2368,7 @@ delete_chars (count) if (count > _rl_screenwidth) /* XXX */ return; +#if !defined (__MSDOS__) && !defined (__MINGW32__) if (_rl_term_DC && *_rl_term_DC) { char *buffer; @@ -1946,6 +2381,7 @@ delete_chars (count) while (count--) tputs (_rl_term_dc, 1, _rl_output_character_function); } +#endif /* !__MSDOS__ && !__MINGW32__ */ } void @@ -1969,7 +2405,8 @@ _rl_update_final () char *last_line; last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; - _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); + cpos_buffer_position = -1; /* don't know where we are in buffer */ + _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); /* XXX */ _rl_clear_to_eol (0); putc (last_line[_rl_screenwidth - 1], rl_outstream); } @@ -2001,32 +2438,23 @@ static void redraw_prompt (t) char *t; { - char *oldp, *oldl, *oldlprefix; - int oldlen, oldlast, oldplen, oldninvis; + char *oldp; - /* Geez, I should make this a struct. */ oldp = rl_display_prompt; - oldl = local_prompt; - oldlprefix = local_prompt_prefix; - oldlen = prompt_visible_length; - oldplen = prompt_prefix_length; - oldlast = prompt_last_invisible; - oldninvis = prompt_invis_chars_first_line; + rl_save_prompt (); rl_display_prompt = t; local_prompt = expand_prompt (t, &prompt_visible_length, &prompt_last_invisible, - &prompt_invis_chars_first_line); + &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; - local_prompt = oldl; - local_prompt_prefix = oldlprefix; - prompt_visible_length = oldlen; - prompt_prefix_length = oldplen; - prompt_last_invisible = oldlast; - prompt_invis_chars_first_line = oldninvis; + rl_restore_prompt(); } /* Redisplay the current line after a SIGWINCH is received. */ @@ -2035,10 +2463,14 @@ _rl_redisplay_after_sigwinch () { char *t; - /* Clear the current line and put the cursor at column 0. Make sure - the right thing happens if we have wrapped to a new screen line. */ + /* 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); + #if defined (__MSDOS__) putc ('\r', rl_outstream); #else @@ -2074,7 +2506,7 @@ _rl_redisplay_after_sigwinch () void _rl_clean_up_for_exit () { - if (readline_echoing_p) + if (_rl_echoing_p) { _rl_move_vert (_rl_vis_botlin); _rl_vis_botlin = 0; @@ -2124,11 +2556,18 @@ _rl_col_width (str, start, end) int start, end; { wchar_t wc; - mbstate_t ps = {0}; + mbstate_t ps; int tmp, point, width, max; if (end <= start) return 0; + if (MB_CUR_MAX == 1 || rl_byte_oriented) +{ +_rl_ttymsg ("_rl_col_width: called with MB_CUR_MAX == 1"); + return (end - start); +} + + memset (&ps, 0, sizeof (mbstate_t)); point = 0; max = end; @@ -2136,7 +2575,7 @@ _rl_col_width (str, start, end) while (point < start) { tmp = mbrlen (str + point, max, &ps); - if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2) + 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 @@ -2148,8 +2587,8 @@ _rl_col_width (str, start, end) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } - else if (tmp == 0) - break; /* Found '\0' */ + else if (MB_NULLWCH (tmp)) + break; /* Found '\0' */ else { point += tmp; @@ -2165,7 +2604,7 @@ _rl_col_width (str, start, end) while (point < end) { tmp = mbrtowc (&wc, str + point, max, &ps); - if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2) + 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 @@ -2180,8 +2619,8 @@ _rl_col_width (str, start, end) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } - else if (tmp == 0) - break; /* Found '\0' */ + else if (MB_NULLWCH (tmp)) + break; /* Found '\0' */ else { point += tmp; diff --git a/src/bin/bash/lib/readline/doc/Makefile b/src/bin/bash/lib/readline/doc/Makefile index 32f22280d3..af5ee3e572 100644 --- a/src/bin/bash/lib/readline/doc/Makefile +++ b/src/bin/bash/lib/readline/doc/Makefile @@ -2,21 +2,22 @@ # This makefile for Readline library documentation is in -*- text -*- mode. # Emacs likes it that way. -# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + topdir = . srcdir = . @@ -49,11 +50,11 @@ 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.texinfo $(srcdir)/rluser.texinfo \ - $(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo \ - $(srcdir)/rluserman.texinfo -HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \ - $(srcdir)/hstech.texinfo $(srcdir)/manvers.texinfo +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 @@ -66,7 +67,7 @@ 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 hist.dvi rluserman.dvi +INTERMEDIATE_OBJ = rlman.dvi CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) @@ -76,24 +77,23 @@ all: info dvi html ps nodvi: info html readline.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi mv rlman.dvi readline.dvi readline.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi rluserman.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texinfo + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi rluserman.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texinfo + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi history.dvi: ${HISTSRC} - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo - mv hist.dvi history.dvi + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi history.info: ${HISTSRC} - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/hist.texinfo + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi readline.ps: readline.dvi $(RM) $@ @@ -108,17 +108,15 @@ history.ps: history.dvi $(DVIPS) history.dvi readline.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texinfo + $(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.texinfo + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi history.html: ${HISTSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo - sed -e 's:hist.html:history.html:' hist.html > history.html - $(RM) hist.html + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi info: $(INFOOBJ) dvi: $(DVIOBJ) diff --git a/src/bin/bash/lib/readline/doc/fdl.texi b/src/bin/bash/lib/readline/doc/fdl.texi new file mode 100644 index 0000000000..96ce74ea1a --- /dev/null +++ b/src/bin/bash/lib/readline/doc/fdl.texi @@ -0,0 +1,451 @@ +@c The GNU Free Documentation License. +@center Version 1.2, November 2002 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + +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. + +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 for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +@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. +@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.2 + 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/src/bin/bash/lib/readline/doc/hist.texinfo b/src/bin/bash/lib/readline/doc/hist.texinfo deleted file mode 100644 index 63ceb16e60..0000000000 --- a/src/bin/bash/lib/readline/doc/hist.texinfo +++ /dev/null @@ -1,110 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header (This is for running Texinfo on a region.) -@setfilename history.info -@settitle GNU History Library -@c %**end of header (This is for running Texinfo on a region.) - -@setchapternewpage odd - -@include manvers.texinfo - -@ifinfo -@dircategory Libraries -@direntry -* History: (history). The GNU history library API -@end direntry - -This document describes the GNU History library, a programming tool that -provides a consistent user interface for recalling lines of previously -typed input. - -Copyright (C) 1988-2002 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 Free Software Foundation. -@end ifinfo - -@titlepage -@title GNU History Library -@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}. -@subtitle @value{UPDATE-MONTH} -@author Brian Fox, Free Software Foundation -@author Chet Ramey, Case Western Reserve University - -@page -This document describes the GNU History library, a programming tool that -provides a consistent user interface for recalling lines of previously -typed input. - -Published by the Free Software Foundation @* -59 Temple Place, Suite 330, @* -Boston, MA 02111 USA - -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 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 Free Software Foundation. - -@vskip 0pt plus 1filll -Copyright @copyright{} 1988-2002 Free Software Foundation, Inc. -@end titlepage - -@ifinfo -@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. -* Concept Index:: Index of concepts described in this manual. -* Function and Variable Index:: Index of externally visible functions - and variables. -@end menu -@end ifinfo - -@syncodeindex fn vr - -@include hsuser.texinfo -@include hstech.texinfo - -@node Concept Index -@appendix Concept Index -@printindex cp - -@node Function and Variable Index -@appendix Function and Variable Index -@printindex vr - -@contents -@bye diff --git a/src/bin/bash/lib/readline/doc/history.texi b/src/bin/bash/lib/readline/doc/history.texi new file mode 100644 index 0000000000..81ee8b1fbf --- /dev/null +++ b/src/bin/bash/lib/readline/doc/history.texi @@ -0,0 +1,99 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header (This is for running Texinfo on a region.) +@setfilename history.info +@settitle GNU History Library +@c %**end of header (This is for running Texinfo on a region.) + +@include version.texi + +@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--2009 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: You are free to copy and modify +this GNU manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' + +@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 + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@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/src/bin/bash/lib/readline/doc/hstech.texinfo b/src/bin/bash/lib/readline/doc/hstech.texi similarity index 95% rename from src/bin/bash/lib/readline/doc/hstech.texinfo rename to src/bin/bash/lib/readline/doc/hstech.texi index 949444668f..c4e5a7527b 100644 --- a/src/bin/bash/lib/readline/doc/hstech.texinfo +++ b/src/bin/bash/lib/readline/doc/hstech.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2002 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -84,6 +84,7 @@ typedef void *histdata_t; typedef struct _hist_entry @{ char *line; + char *timestamp; histdata_t data; @} HIST_ENTRY; @end example @@ -167,15 +168,27 @@ Place @var{string} at the end of the history list. The associated data field (if any) is set to @code{NULL}. @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 you can dispose of the data. In the case +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 @@ -227,6 +240,10 @@ If there is no entry there, or if @var{offset} is greater than the history length, 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}. +@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 @@ -405,6 +422,12 @@ 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. +@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. @@ -427,18 +450,18 @@ The characters that separate tokens for @code{history_tokenize()}. The default value is @code{" \t\n()<>;&|"}. @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 {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, single-quoted words are not scanned for the history expansion character. The default value is 0. diff --git a/src/bin/bash/lib/readline/doc/hsuser.texinfo b/src/bin/bash/lib/readline/doc/hsuser.texi similarity index 91% rename from src/bin/bash/lib/readline/doc/hsuser.texinfo rename to src/bin/bash/lib/readline/doc/hsuser.texi index 418bfa8eff..87b3541715 100644 --- a/src/bin/bash/lib/readline/doc/hsuser.texinfo +++ b/src/bin/bash/lib/readline/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2002 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -96,6 +96,13 @@ not saved. After saving the history, the history file is truncated to contain no more than @env{$HISTFILESIZE} lines. If @env{HISTFILESIZE} is not set, no truncation is performed. +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 previous history line. + 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 @@ -130,7 +137,7 @@ history list and history file. @item fc @btindex fc @example -@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]} +@code{fc [-e @var{ename}] [-lnr] [@var{first}] [@var{last}]} @code{fc -s [@var{pat}=@var{rep}] [@var{command}]} @end example @@ -172,6 +179,12 @@ history -ps @var{arg} 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 @@ -268,7 +281,10 @@ 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. +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 @@ -288,8 +304,15 @@ history list. @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{(}. +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}. @@ -396,7 +419,7 @@ of the following modifiers, each preceded by a @samp{:}. Remove a trailing pathname component, leaving only the head. @item t -Remove all leading pathname components, leaving the tail. +Remove all leading pathname components, leaving the tail. @item r Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving @@ -430,8 +453,12 @@ character on the input line. 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} modifier once to each word in the event. + @end table diff --git a/src/bin/bash/lib/readline/doc/manvers.texinfo b/src/bin/bash/lib/readline/doc/manvers.texinfo deleted file mode 100644 index 1206cf0f23..0000000000 --- a/src/bin/bash/lib/readline/doc/manvers.texinfo +++ /dev/null @@ -1,10 +0,0 @@ -@ignore -Copyright (C) 1988-2002 Free Software Foundation, Inc. -@end ignore - -@set EDITION 4.3 -@set VERSION 4.3 -@set UPDATED 2002 March 4 -@set UPDATE-MONTH March 2002 - -@set LASTCHANGE Mon Mar 4 12:00:16 EST 2002 diff --git a/src/bin/bash/lib/readline/doc/rlman.texi b/src/bin/bash/lib/readline/doc/rlman.texi new file mode 100644 index 0000000000..fa3dd77271 --- /dev/null +++ b/src/bin/bash/lib/readline/doc/rlman.texi @@ -0,0 +1,97 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename readline.info +@settitle GNU Readline Library +@comment %**end of header (This is for running Texinfo on a region.) +@synindex vr fn + +@include version.texi + +@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--2009 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: You are free to copy and modify +this GNU manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' + +@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 + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@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. + +@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/src/bin/bash/lib/readline/doc/rlman.texinfo b/src/bin/bash/lib/readline/doc/rlman.texinfo deleted file mode 100644 index 1ffebad08a..0000000000 --- a/src/bin/bash/lib/readline/doc/rlman.texinfo +++ /dev/null @@ -1,108 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@comment %**start of header (This is for running Texinfo on a region.) -@setfilename readline.info -@settitle GNU Readline Library -@comment %**end of header (This is for running Texinfo on a region.) -@synindex vr fn -@setchapternewpage odd - -@include manvers.texinfo - -@ifinfo -@dircategory Libraries -@direntry -* Readline: (readline). The GNU readline library API -@end direntry - -This document describes the GNU Readline Library, a utility which aids -in the consistency of user interface across discrete programs that need -to provide a command line interface. - -Copyright (C) 1988-2002 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 Free Software Foundation. -@end ifinfo - -@titlepage -@title GNU Readline Library -@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. -@subtitle @value{UPDATE-MONTH} -@author Brian Fox, Free Software Foundation -@author Chet Ramey, Case Western Reserve University - -@page -This document describes the GNU Readline Library, a utility which aids -in the consistency of user interface across discrete programs that need -to provide a command line interface. - -Published by the Free Software Foundation @* -59 Temple Place, Suite 330, @* -Boston, MA 02111 USA - -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 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 Free Software Foundation. - -@vskip 0pt plus 1filll -Copyright @copyright{} 1988-2002 Free Software Foundation, Inc. -@end titlepage - -@ifinfo -@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 that need -to provide a command line interface. - -@menu -* Command Line Editing:: GNU Readline User's Manual. -* Programming with GNU Readline:: GNU Readline Programmer's Manual. -* Concept Index:: Index of concepts described in this manual. -* Function and Variable Index:: Index of externally visible functions - and variables. -@end menu -@end ifinfo - -@include rluser.texinfo -@include rltech.texinfo - -@node Concept Index -@unnumbered Concept Index -@printindex cp - -@node Function and Variable Index -@unnumbered Function and Variable Index -@printindex fn - -@contents -@bye diff --git a/src/bin/bash/lib/readline/doc/rltech.texinfo b/src/bin/bash/lib/readline/doc/rltech.texi similarity index 84% rename from src/bin/bash/lib/readline/doc/rltech.texinfo rename to src/bin/bash/lib/readline/doc/rltech.texi index 037e824e28..c98d3b9b51 100644 --- a/src/bin/bash/lib/readline/doc/rltech.texinfo +++ b/src/bin/bash/lib/readline/doc/rltech.texi @@ -1,14 +1,13 @@ @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.) -@setchapternewpage odd @ifinfo This document describes the GNU Readline Library, a utility for aiding -in the consitency of user interface across discrete programs that need +in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988-2002 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -284,6 +283,8 @@ negative argument. A command function should return 0 if its action completes successfully, and a non-zero value if some error occurs. +This is the convention obeyed by all of the builtin Readline bindable +command functions. @node Readline Variables @section Readline Variables @@ -349,6 +350,12 @@ 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 @@ -398,6 +405,12 @@ 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 @@ -510,6 +523,20 @@ Readline is performing word completion. 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. @@ -578,11 +605,11 @@ 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. +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 @@ -658,8 +685,21 @@ 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}. +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) @@ -680,10 +720,35 @@ Unbind all keys that execute @var{function} in @var{map}. Unbind all keys that are bound to @var{command} in @var{map}. @end deftypefun -@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) +@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}. This makes new keymaps as -necessary. The initial keymap in which to do bindings is @var{map}. +@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) @@ -747,7 +812,8 @@ Print the names of all bindable Readline functions to @code{rl_outstream}. @deftypefun {const char **} rl_funmap_names (void) Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You -should @code{free()} the array when you are done, but not the pointers. +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) @@ -871,10 +937,14 @@ 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. +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) @@ -885,6 +955,9 @@ displaying a new message in the message area with @code{rl_message()}. @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) @@ -895,6 +968,11 @@ 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) @@ -975,8 +1053,10 @@ pending input has not already been read with @code{rl_read_key()}. @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}. The default waiting period is -one-tenth of a second. Returns the old timeout value. +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 @@ -996,9 +1076,15 @@ the state in which it was before the most recent call to @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}. +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_reset_terminal (const char *terminal_name) @@ -1011,6 +1097,26 @@ environment variable is used. @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. @@ -1018,7 +1124,7 @@ If @var{clear_undo} is non-zero, the undo list associated with the current line is cleared. @end deftypefun -@deftypefun int rl_extend_line_buffer (int len) +@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 @@ -1100,6 +1206,11 @@ This behaves as if the readline command 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}. @@ -1323,13 +1434,21 @@ call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force Readline to update its idea of the terminal size when a @code{SIGWINCH} is received. +@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. +@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. @end deftypefun If an application does not want to install a @code{SIGWINCH} handler, but @@ -1341,6 +1460,10 @@ 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) @@ -1357,6 +1480,7 @@ Remove all of the Readline signal handlers installed by @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 @@ -1417,6 +1541,8 @@ 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 @@ -1432,6 +1558,9 @@ This is a pointer to the generator function for 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 @@ -1446,7 +1575,9 @@ 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. +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) @@ -1473,7 +1604,8 @@ This calls @code{rl_complete_internal()} with an argument of @samp{*}. @deftypefun int rl_completion_mode (rl_command_func_t *cfunc) Returns the apppriate value to pass to @code{rl_complete_internal()} depending on whether @var{cfunc} was called twice in succession and -the value of the @code{show-all-if-ambiguous} variable. +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 @@ -1495,7 +1627,7 @@ when there are no more matches. @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 custom +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 @@ -1512,8 +1644,8 @@ for subsequent calls. @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. +@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 @@ -1585,6 +1717,9 @@ the directory portion of the pathname the user typed. It returns an integer that should be non-zero if the function modifies its directory argument. It could be used to expand symbolic links or shell variables in pathnames. +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()}. @end deftypevar @deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook @@ -1618,6 +1753,15 @@ The list of characters that signal a break between words for @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 @@ -1640,8 +1784,9 @@ shell variables and hostnames. @deftypevar int rl_completion_query_items 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. +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 @@ -1649,27 +1794,49 @@ 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 custom completion functions to +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. @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. +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 completion functions can -override the user's global preference (set via the +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 completion function is called, so unless that function -modifies the value, the user's preferences are honored. +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 @@ -1679,12 +1846,13 @@ The default is 1. @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 on entry, and can only be changed -within a completion entry generator function. If it is set to a non-zero -value, 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. +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 @@ -1692,8 +1860,9 @@ 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 -on entry, and can only be changed within a completion entry generator -function. The quoting is effected via a call to the function pointed to +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 @@ -1705,10 +1874,29 @@ 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 @@ -1731,27 +1919,51 @@ history list. GNU Readline library. This application interactively allows users to manipulate files and their modes. */ -#include +#ifdef HAVE_CONFIG_H +# include +#endif + #include -#include +#ifdef HAVE_SYS_FILE_H +# include +#endif #include -#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 (); +extern char *xmalloc PARAMS((size_t)); /* The names of functions that actually do the manipulation. */ -int com_list __P((char *)); -int com_view __P((char *)); -int com_rename __P((char *)); -int com_stat __P((char *)); -int com_pwd __P((char *)); -int com_delete __P((char *)); -int com_help __P((char *)); -int com_cd __P((char *)); -int com_quit __P((char *)); +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. */ @@ -1784,12 +1996,12 @@ COMMAND *find_command (); /* The name of this program, as taken from argv[0]. */ char *progname; -/* When non-zero, this means the user is done using this program. */ +/* When non-zero, this global means the user is done using this program. */ int done; char * dupstr (s) - int s; + char *s; @{ char *r; @@ -1914,12 +2126,12 @@ stripwhite (string) /* */ /* **************************************************************** */ -char *command_generator __P((const char *, int)); -char **fileman_completion __P((const char *, int, int)); +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. */ +/* 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. */ @@ -1929,11 +2141,11 @@ initialize_readline () 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. Returnthe array of matches, or NULL if there aren't any. */ +/* 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; @@ -1952,9 +2164,9 @@ fileman_completion (text, start, end) 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. */ +/* 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; @@ -1963,17 +2175,16 @@ command_generator (text, 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 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. */ + /* Return the next name which partially matches from the command list. */ while (name = commands[list_index].name) @{ list_index++; @@ -2013,7 +2224,12 @@ com_view (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)); @} @@ -2040,7 +2256,8 @@ com_stat (arg) printf ("Statistics for `%s':\n", arg); - printf ("%s has %d link%s, and is %d byte%s in length.\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, @@ -2129,8 +2346,7 @@ com_pwd (ignore) return 0; @} -/* The user wishes to quit using this program. Just set DONE - non-zero. */ +/* The user wishes to quit using this program. Just set DONE non-zero. */ com_quit (arg) char *arg; @{ @@ -2143,13 +2359,12 @@ too_dangerous (caller) char *caller; @{ fprintf (stderr, - "%s: Too dangerous for me to distribute.\n" + "%s: Too dangerous for me to distribute. Write it yourself.\n", caller); - fprintf (stderr, "Write it yourself.\n"); @} -/* Return non-zero if ARG is a valid argument for CALLER, - else print an error message and return zero. */ +/* 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; diff --git a/src/bin/bash/lib/readline/doc/rluser.texinfo b/src/bin/bash/lib/readline/doc/rluser.texi similarity index 89% rename from src/bin/bash/lib/readline/doc/rluser.texinfo rename to src/bin/bash/lib/readline/doc/rluser.texi index 94f851e67f..4a367ed324 100644 --- a/src/bin/bash/lib/readline/doc/rluser.texinfo +++ b/src/bin/bash/lib/readline/doc/rluser.texi @@ -1,7 +1,6 @@ @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.) -@setchapternewpage odd @ignore This file documents the end user interface to the GNU command line @@ -10,7 +9,7 @@ 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-2002 Free Software Foundation, Inc. +Copyright (C) 1988--2009 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -48,6 +47,16 @@ 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 @@ -336,7 +345,9 @@ file is taken from the value of the shell variable @env{INPUTRC}. If @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}. +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}. When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. @@ -383,7 +394,11 @@ set editing-mode vi @end example Variable names and values, where appropriate, are recognized without regard -to case. +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 @@ -404,6 +419,12 @@ If set to @samp{none}, Readline never rings the bell. If set to 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}, Readline attempts to bind the control characters +treated specially by the kernel's terminal driver to their Readline +equivalents. + @item comment-begin @vindex comment-begin The string to insert at the beginning of the line when the @@ -415,14 +436,22 @@ If set to @samp{on}, Readline performs filename matching and completion in a case-insensitive fashion. 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 he wants to see the list of possibilities. If the -number of possible completions is greater than this value, +asked whether the list of possibilities should be displayed. +If the number of possible completions is greater than this value, Readline will ask the user whether or not he 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 @@ -456,10 +485,17 @@ arrow keys. The default is @samp{off}. 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 point at the -same location on each history line retrived with @code{previous-history} -or @code{next-history}. +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, the number of entries in the history list is not limited. @item horizontal-scroll-mode @vindex horizontal-scroll-mode @@ -544,6 +580,13 @@ 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 @@ -552,6 +595,17 @@ 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 visible-stats @vindex visible-stats If set to @samp{on}, a character denoting a file's type @@ -570,9 +624,11 @@ 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. The name of the key -can be expressed in different ways, depending on what you find most -comfortable. +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}). @@ -914,12 +970,22 @@ Move forward a character. 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. +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. +Move back to the start of the current or previous word. +Words are composed of letters and digits. + +@ifset BashFeatures +@item shell-forward-word () +Move forward to the end of the next word. +Words are delimited by non-quoted shell metacharacters. + +@item shell-backward-word () +Move back to the start of the current or previous word. +Words are delimited by non-quoted shell metacharacters. +@end ifset @item clear-screen (C-l) Clear the screen and redraw the current line, @@ -1001,6 +1067,8 @@ 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 @@ -1008,6 +1076,8 @@ previous history entry). With an argument, behave exactly like @code{yank-nth-arg}. Successive calls to @code{yank-last-arg} move back through the history list, inserting the last argument of each line in turn. +The history expansion facilities are used to extract the last argument, +as if the @samp{!$} history expansion had been specified. @end ftable @@ -1111,10 +1181,26 @@ Word boundaries are the same as @code{forward-word}. Kill the word behind point. Word boundaries are the same as @code{backward-word}. +@ifset BashFeatures +@item 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 @code{shell-forward-word}. + +@item backward-kill-word () +Kill the word behind point. +Word boundaries are the same as @code{shell-backward-word}. +@end ifset + @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. @@ -1261,6 +1347,11 @@ 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 @@ -1425,7 +1516,7 @@ argument is ignored. Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke -@code{$FCEDIT}, @code{$EDITOR}, and @code{emacs} +@code{$VISUAL}, @code{$EDITOR}, and @code{emacs} as the editor, in that order. @end ifset @@ -1514,7 +1605,7 @@ special variable as delimiters. Shell quoting is honored. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and pathname expansion, +command substitution, and arithmetic expansion, as described above (@pxref{Shell Expansions}). The results are split using the rules described above (@pxref{Word Splitting}). @@ -1523,9 +1614,9 @@ completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the @option{-F} and @option{-C} options is invoked. -When the command or function is invoked, the @env{COMP_LINE} and -@env{COMP_POINT} variables are assigned values as described above -(@pxref{Bash Variables}). +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 is the @@ -1538,7 +1629,7 @@ the matches. Any function specified with @option{-F} is invoked first. The function may use any of the shell facilities, including the -@code{compgen} builtin described below +@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. @@ -1568,13 +1659,21 @@ 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 generates no matches. +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 @@ -1617,10 +1716,10 @@ matches were generated. @item complete @btindex complete @example -@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}] -[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}] -[-C @var{command}] @var{name} [@var{name} @dots{}]} -@code{complete -pr [@var{name} @dots{}]} +@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-E] [-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 [-E] [@var{name} @dots{}]} @end example Specify how arguments to each @var{name} should be completed. @@ -1630,6 +1729,9 @@ 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{-E} option indicates that the remaining options and actions should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. The process of applying these completion specifications when word completion is attempted is described above (@pxref{Programmable Completion}). @@ -1649,6 +1751,10 @@ beyond the simple generation of completions. @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. @@ -1658,13 +1764,20 @@ 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 or -suppressing trailing spaces). This option is intended to be used with -shell functions specified with @option{-F}. +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 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} @@ -1792,5 +1905,23 @@ 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}] [+o @var{option}] [@var{name}] +@end example +Modify completion options for each @var{name} according to the +@var{option}s, or for the currently-execution 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 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 + @end ifset diff --git a/src/bin/bash/lib/readline/doc/rluserman.texi b/src/bin/bash/lib/readline/doc/rluserman.texi new file mode 100644 index 0000000000..a473aa276b --- /dev/null +++ b/src/bin/bash/lib/readline/doc/rluserman.texi @@ -0,0 +1,83 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename rluserman.info +@settitle GNU Readline Library +@comment %**end of header (This is for running Texinfo on a region.) + +@include version.texi + +@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--2009 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: You are free to copy and modify +this GNU manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' + +@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 + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@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. + +@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/src/bin/bash/lib/readline/doc/rluserman.texinfo b/src/bin/bash/lib/readline/doc/rluserman.texinfo deleted file mode 100644 index 89abe31aeb..0000000000 --- a/src/bin/bash/lib/readline/doc/rluserman.texinfo +++ /dev/null @@ -1,94 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@comment %**start of header (This is for running Texinfo on a region.) -@setfilename rluserman.info -@settitle GNU Readline Library -@comment %**end of header (This is for running Texinfo on a region.) -@setchapternewpage odd - -@include manvers.texinfo - -@ifinfo -@dircategory Libraries -@direntry -* RLuserman: (rluserman). The GNU readline library User's Manual. -@end direntry - -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 that need to provide a command line interface. - -Copyright (C) 1988-2002 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 Free Software Foundation. -@end ifinfo - -@titlepage -@title GNU Readline Library User Interface -@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. -@subtitle @value{UPDATE-MONTH} -@author Brian Fox, Free Software Foundation -@author Chet Ramey, Case Western Reserve University - -@page -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 that need to provide a command line interface. - -Published by the Free Software Foundation @* -59 Temple Place, Suite 330, @* -Boston, MA 02111 USA - -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 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 Free Software Foundation. - -@vskip 0pt plus 1filll -Copyright @copyright{} 1988-2002 Free Software Foundation, Inc. -@end titlepage - -@ifinfo -@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 that need to provide a command line interface. - -@menu -* Command Line Editing:: GNU Readline User's Manual. -@end menu -@end ifinfo - -@include rluser.texinfo - -@contents -@bye diff --git a/src/bin/bash/lib/readline/doc/version.texi b/src/bin/bash/lib/readline/doc/version.texi new file mode 100644 index 0000000000..913a62e0bf --- /dev/null +++ b/src/bin/bash/lib/readline/doc/version.texi @@ -0,0 +1,10 @@ +@ignore +Copyright (C) 1988-2009 Free Software Foundation, Inc. +@end ignore + +@set EDITION 6.0 +@set VERSION 6.0 +@set UPDATED 28 October 2008 +@set UPDATED-MONTH October 2008 + +@set LASTCHANGE Tue Oct 28 11:25:24 EDT 2008 diff --git a/src/bin/bash/lib/readline/emacs_keymap.c b/src/bin/bash/lib/readline/emacs_keymap.c index ca9d1343b6..cb6e140a21 100644 --- a/src/bin/bash/lib/readline/emacs_keymap.c +++ b/src/bin/bash/lib/readline/emacs_keymap.c @@ -1,24 +1,23 @@ /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #if !defined (BUFSIZ) #include diff --git a/src/bin/bash/lib/readline/examples/Inputrc b/src/bin/bash/lib/readline/examples/Inputrc index d7fdb42efa..a358bc476d 100644 --- a/src/bin/bash/lib/readline/examples/Inputrc +++ b/src/bin/bash/lib/readline/examples/Inputrc @@ -4,21 +4,21 @@ # on which program is running, or what terminal is active. # -# Copyright (C) 1989-2002 Free Software Foundation, Inc. +# 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 2, or (at your option) -# any later version. +# 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. # In all programs, all terminals, make sure this is bound. "\C-x\C-r": re-read-init-file diff --git a/src/bin/bash/lib/readline/examples/Makefile b/src/bin/bash/lib/readline/examples/Makefile index 636a1dc332..2df2240710 100644 --- a/src/bin/bash/lib/readline/examples/Makefile +++ b/src/bin/bash/lib/readline/examples/Makefile @@ -2,19 +2,19 @@ # # 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 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# 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 diff --git a/src/bin/bash/lib/readline/examples/excallback.c b/src/bin/bash/lib/readline/examples/excallback.c index 3d4bb189c6..385492b1b7 100644 --- a/src/bin/bash/lib/readline/examples/excallback.c +++ b/src/bin/bash/lib/readline/examples/excallback.c @@ -32,6 +32,9 @@ Let me know what you think. Jeff */ +/* +Copyright (C) 1999 Jeff Solomon +*/ #if defined (HAVE_CONFIG_H) #include diff --git a/src/bin/bash/lib/readline/examples/fileman.c b/src/bin/bash/lib/readline/examples/fileman.c index 340eee739f..f7eed8a982 100644 --- a/src/bin/bash/lib/readline/examples/fileman.c +++ b/src/bin/bash/lib/readline/examples/fileman.c @@ -1,22 +1,23 @@ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* fileman.c - file manager example for readline library. */ - This file is part of the GNU Readline Library, a library for +/* 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. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -50,6 +51,8 @@ # include #endif +#include + #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" @@ -58,7 +61,7 @@ # include #endif -extern char *xmalloc (); +extern char *xmalloc PARAMS((size_t)); /* The names of functions that actually do the manipulation. */ int com_list PARAMS((char *)); diff --git a/src/bin/bash/lib/readline/examples/histexamp.c b/src/bin/bash/lib/readline/examples/histexamp.c index 45651dfb13..3b43674f79 100644 --- a/src/bin/bash/lib/readline/examples/histexamp.c +++ b/src/bin/bash/lib/readline/examples/histexamp.c @@ -1,22 +1,23 @@ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* histexamp.c - history library example program. */ - This file is part of the GNU Readline Library, a library for +/* 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. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #include @@ -26,14 +27,17 @@ # include #endif +#include + main (argc, argv) int argc; char **argv; { char line[1024], *t; - int len, done = 0; + int len, done; line[0] = 0; + done = 0; using_history (); while (!done) @@ -42,71 +46,80 @@ main (argc, argv) fflush (stdout); t = fgets (line, sizeof (line) - 1, stdin); if (t && *t) - { - len = strlen (t); - if (t[len - 1] == '\n') - t[len - 1] = '\0'; - } + { + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + } if (!t) - strcpy (line, "quit"); + strcpy (line, "quit"); if (line[0]) - { - char *expansion; - int result; + { + char *expansion; + int result; - using_history (); + using_history (); - result = history_expand (line, &expansion); - if (result) - fprintf (stderr, "%s\n", expansion); + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); - if (result < 0 || result == 2) - { - free (expansion); - continue; - } + if (result < 0 || result == 2) + { + free (expansion); + continue; + } - add_history (expansion); - strncpy (line, expansion, sizeof (line) - 1); - free (expansion); - } + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + } if (strcmp (line, "quit") == 0) - done = 1; + done = 1; else if (strcmp (line, "save") == 0) - write_history ("history_file"); + write_history ("history_file"); else if (strcmp (line, "read") == 0) - read_history ("history_file"); + read_history ("history_file"); else if (strcmp (line, "list") == 0) - { - register HIST_ENTRY **the_list; - register int i; + { + 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++) - printf ("%d: %s\n", i + history_base, the_list[i]->line); - } + 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"); - } - } + { + 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/src/bin/bash/lib/readline/examples/manexamp.c b/src/bin/bash/lib/readline/examples/manexamp.c index 9c6cf2c76c..351c6285ed 100644 --- a/src/bin/bash/lib/readline/examples/manexamp.c +++ b/src/bin/bash/lib/readline/examples/manexamp.c @@ -1,24 +1,23 @@ /* manexamp.c -- The examples which appear in the documentation are here. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for + This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #include #include diff --git a/src/bin/bash/lib/readline/examples/rl.c b/src/bin/bash/lib/readline/examples/rl.c index d2604895e5..845a4b176d 100644 --- a/src/bin/bash/lib/readline/examples/rl.c +++ b/src/bin/bash/lib/readline/examples/rl.c @@ -5,25 +5,24 @@ * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars] */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for + This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #if defined (HAVE_CONFIG_H) # include @@ -31,12 +30,19 @@ #include #include -#include "posixstat.h" + +#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 diff --git a/src/bin/bash/lib/readline/examples/rlcat.c b/src/bin/bash/lib/readline/examples/rlcat.c index 176b9f44b6..fa9e06ff71 100644 --- a/src/bin/bash/lib/readline/examples/rlcat.c +++ b/src/bin/bash/lib/readline/examples/rlcat.c @@ -4,25 +4,24 @@ * usage: rlcat */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for + This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #if defined (HAVE_CONFIG_H) # include @@ -40,6 +39,12 @@ #include #include +#ifdef HAVE_STDLIB_H +# include +#else +extern void exit(); +#endif + #ifndef errno extern int errno; #endif diff --git a/src/bin/bash/lib/readline/examples/rltest.c b/src/bin/bash/lib/readline/examples/rltest.c index 99f083b2b9..78e2608688 100644 --- a/src/bin/bash/lib/readline/examples/rltest.c +++ b/src/bin/bash/lib/readline/examples/rltest.c @@ -4,25 +4,24 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for + This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #if defined (HAVE_CONFIG_H) #include @@ -31,6 +30,12 @@ #include #include +#ifdef HAVE_STDLIB_H +# include +#else +extern void exit(); +#endif + #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" diff --git a/src/bin/bash/lib/readline/funmap.c b/src/bin/bash/lib/readline/funmap.c index fe9a1da43d..06d2b92430 100644 --- a/src/bin/bash/lib/readline/funmap.c +++ b/src/bin/bash/lib/readline/funmap.c @@ -1,24 +1,24 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -56,7 +56,7 @@ static int funmap_entry; program specific function. */ int funmap_program_specific_entry_start; -static FUNMAP default_funmap[] = { +static const FUNMAP default_funmap[] = { { "abort", rl_abort }, { "accept-line", rl_newline }, { "arrow-key-prefix", rl_arrow_keys }, @@ -131,6 +131,7 @@ static FUNMAP default_funmap[] = { { "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 }, @@ -175,6 +176,7 @@ static FUNMAP default_funmap[] = { { "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 }, diff --git a/src/bin/bash/lib/readline/histexpand.c b/src/bin/bash/lib/readline/histexpand.c index 6c81196161..bf5ac0ed5f 100644 --- a/src/bin/bash/lib/readline/histexpand.c +++ b/src/bin/bash/lib/readline/histexpand.c @@ -1,24 +1,23 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. - This file contains the GNU History Library (the Library), a set of + This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with History. If not, see . +*/ #define READLINE_LIBRARY @@ -52,9 +51,9 @@ #define HISTORY_WORD_DELIMITERS " \t\n;&()|<>" #define HISTORY_QUOTE_CHARACTERS "\"'`" -typedef int _hist_search_func_t PARAMS((const char *, int)); +#define slashify_in_quotes "\\`\"$" -extern int rl_byte_oriented; /* declared in mbutil.c */ +typedef int _hist_search_func_t PARAMS((const char *, int)); static char error_pointer; @@ -64,6 +63,10 @@ static int subst_lhs_len; static int subst_rhs_len; 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 *)); @@ -202,23 +205,24 @@ get_history_event (string, caller_index, delimiting_quote) /* 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; + 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; + } + } - 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 (string, i, &ps); - if ((v = _rl_get_char_len (string + i, &ps)) > 1) - { - i += v - 1; - continue; - } - } - else #endif /* HANDLE_MULTIBYTE */ if ((!substring_okay && (whitespace (c) || c == ':' || (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) || @@ -226,6 +230,7 @@ get_history_event (string, caller_index, delimiting_quote) string[i] == '\n' || (substring_okay && string[i] == '?')) break; + } which = i - local_index; temp = (char *)xmalloc (1 + which); @@ -517,7 +522,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) char *current_line; /* for !# */ { int i, n, starting_index; - int substitute_globally, want_quotes, print_only; + 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) @@ -558,12 +563,12 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - int c, l; + int ch, l; l = _rl_find_prev_mbchar (string, i, MB_FIND_ANY); - c = string[l]; + ch = string[l]; /* XXX - original patch had i - 1 ??? If i == 0 it would fail. */ - if (i && (c == '\'' || c == '"')) - quoted_search_delimiter = c; + if (i && (ch == '\'' || ch == '"')) + quoted_search_delimiter = ch; } else #endif /* HANDLE_MULTIBYTE */ @@ -599,19 +604,25 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) FREE (word_spec); /* Perhaps there are other modifiers involved. Do what they say. */ - want_quotes = substitute_globally = print_only = 0; + want_quotes = substitute_globally = subst_bywords = print_only = 0; starting_index = i; while (string[i] == ':') { c = string[i + 1]; - if (c == 'g') + 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) { @@ -683,7 +694,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) case 's': { char *new_event; - int delimiter, failed, si, l_temp; + int delimiter, failed, si, l_temp, ws, we; if (c == 's') { @@ -760,33 +771,67 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) } /* Find the first occurrence of THIS in TEMP. */ - si = 0; + /* 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++) - 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'; - free (temp); - temp = new_event; + { + /* 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] && whitespace (temp[si]); si++) + ; + ws = si; + we = history_tokenize_word (temp, si); + } - failed = 0; + 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'; + free (temp); + temp = new_event; - if (substitute_globally) - { - si += subst_rhs_len; - l_temp = strlen (temp); - substitute_globally++; - continue; - } - else - break; - } + 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) { @@ -879,7 +924,7 @@ history_expand (hstring, output) char **output; { register int j; - int i, r, l, passc, cc, modified, eindex, only_printing; + int i, r, l, passc, cc, modified, eindex, only_printing, dquote; char *string; /* The output string, and its length. */ @@ -942,7 +987,7 @@ history_expand (hstring, output) /* `!' followed by one of the characters in history_no_expand_chars is NOT an expansion. */ - for (i = 0; string[i]; i++) + for (i = dquote = 0; string[i]; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -971,7 +1016,7 @@ history_expand (hstring, output) } else if (string[i] == history_expansion_char) { - if (!cc || member (cc, history_no_expand_chars)) + if (cc == 0 || member (cc, history_no_expand_chars)) continue; /* If the calling application has set history_inhibit_expansion_function to a function that checks @@ -984,9 +1029,19 @@ history_expand (hstring, output) else break; } - /* XXX - at some point, might want to extend this to handle - double quotes as well. */ - else if (history_quotes_inhibit_expansion && string[i] == '\'') + /* 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. */ i++; @@ -999,6 +1054,7 @@ history_expand (hstring, output) if (cc == '\'' || cc == history_expansion_char) i++; } + } if (string[i] != history_expansion_char) @@ -1010,7 +1066,7 @@ history_expand (hstring, output) } /* Extract and perform the substitution. */ - for (passc = i = j = 0; i < l; i++) + for (passc = dquote = i = j = 0; i < l; i++) { int tchar = string[i]; @@ -1061,11 +1117,16 @@ history_expand (hstring, output) 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. */ - if (history_quotes_inhibit_expansion) + if (dquote == 0 && history_quotes_inhibit_expansion) { int quote, slen; @@ -1103,7 +1164,8 @@ history_expand (hstring, output) /* 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 (member (cc, history_no_expand_chars)) + if (cc == 0 || member (cc, history_no_expand_chars) || + (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i))) { ADD_CHAR (string[i]); break; @@ -1160,7 +1222,9 @@ history_expand (hstring, output) if (only_printing) { +#if 0 add_history (result); +#endif return (2); } @@ -1223,7 +1287,10 @@ get_history_word_specifier (spec, from, caller_index) if (spec[i] == '-') first = 0; else if (spec[i] == '^') - first = 1; + { + first = 1; + i++; + } else if (_rl_digit_p (spec[i]) && expecting_word_spec) { for (first = 0; _rl_digit_p (spec[i]); i++) @@ -1338,7 +1405,105 @@ history_arg_extract (first, last, string) return (result); } -#define slashify_in_quotes "\\`\"$" +static int +history_tokenize_word (string, ind) + const char *string; + int ind; +{ + register int i; + int delimiter; + + i = ind; + delimiter = 0; + + if (member (string[i], "()\n")) + { + i++; + return i; + } + + if (member (string[i], "<>;&|$")) + { + int peek = string[i + 1]; + + if (peek == string[i] && peek != '$') + { + if (peek == '<' && string[i + 2] == '-') + i++; + else if (peek == '<' && string[i + 2] == '<') + i++; + i += 2; + return i; + } + else + { + if ((peek == '&' && (string[i] == '>' || string[i] == '<')) || + (peek == '>' && string[i] == '&') || + (peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */ + (peek == '(' && string[i] == '$')) /* ) */ + { + i += 2; + return i; + } + } + + if (string[i] != '$') + { + i++; + return i; + } + } + + /* Get word from string + i; */ + + if (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; + } + + if (delimiter && string[i] == delimiter) + { + delimiter = 0; + continue; + } + + if (!delimiter && (member (string[i], history_word_delimiters))) + break; + + if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS)) + delimiter = string[i]; + } + + return i; +} + +static char * +history_substring (string, start, end) + const char *string; + int start, 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 @@ -1351,7 +1516,6 @@ history_tokenize_internal (string, wind, indp) { char **result; register int i, start, result_index, size; - int len, delimiter; /* 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. */ @@ -1362,8 +1526,6 @@ history_tokenize_internal (string, wind, indp) exactly where the shell would split them. */ for (i = result_index = size = 0, result = (char **)NULL; string[i]; ) { - delimiter = 0; - /* Skip leading whitespace. */ for (; string[i] && whitespace (string[i]); i++) ; @@ -1371,88 +1533,30 @@ history_tokenize_internal (string, wind, indp) return (result); start = i; - - if (member (string[i], "()\n")) + + 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++; - goto got_token; + while (string[i] && member (string[i], history_word_delimiters)) + i++; } - if (member (string[i], "<>;&|$")) - { - int peek = string[i + 1]; - - if (peek == string[i] && peek != '$') - { - if (peek == '<' && string[i + 2] == '-') - i++; - i += 2; - goto got_token; - } - else - { - if ((peek == '&' && (string[i] == '>' || string[i] == '<')) || - ((peek == '>') && (string[i] == '&')) || - ((peek == '(') && (string[i] == '$'))) - { - i += 2; - goto got_token; - } - } - if (string[i] != '$') - { - i++; - goto got_token; - } - } - - /* Get word from string + i; */ - - if (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; - } - - if (delimiter && string[i] == delimiter) - { - delimiter = 0; - continue; - } - - if (!delimiter && (member (string[i], history_word_delimiters))) - break; - - if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS)) - delimiter = string[i]; - } - - got_token: - /* 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; - len = i - start; if (result_index + 2 >= size) result = (char **)xrealloc (result, ((size += 10) * sizeof (char *))); - result[result_index] = (char *)xmalloc (1 + len); - strncpy (result[result_index], string + start, len); - result[result_index][len] = '\0'; - result[++result_index] = (char *)NULL; + + result[result_index++] = history_substring (string, start, i); + result[result_index] = (char *)NULL; } return (result); @@ -1467,6 +1571,18 @@ history_tokenize (string) return (history_tokenize_internal (string, -1, (int *)NULL)); } +/* Free members of WORDS from START to an empty string */ +static void +freewords (words, start) + char **words; + int start; +{ + register int i; + + for (i = start; words[i]; i++) + free (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. */ @@ -1480,12 +1596,16 @@ history_find_word (line, ind) words = history_tokenize_internal (line, ind, &wind); if (wind == -1 || words == 0) - return ((char *)NULL); + { + if (words) + freewords (words, 0); + FREE (words); + return ((char *)NULL); + } s = words[wind]; for (i = 0; i < wind; i++) free (words[i]); - for (i = wind + 1; words[i]; i++) - free (words[i]); + freewords (words, wind + 1); free (words); return s; } diff --git a/src/bin/bash/lib/readline/histfile.c b/src/bin/bash/lib/readline/histfile.c index a799659e6e..6ad757aa2b 100644 --- a/src/bin/bash/lib/readline/histfile.c +++ b/src/bin/bash/lib/readline/histfile.c @@ -1,30 +1,34 @@ /* histfile.c - functions to manipulate the history file. */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. - This file contains the GNU History Library (the Library), a set of + This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) +# include +#endif + #if defined (HAVE_CONFIG_H) # include #endif @@ -32,7 +36,7 @@ #include #include -#if defined (HAVE_SYS_FILE_H) +#if ! defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "posixstat.h" @@ -48,11 +52,13 @@ # include #endif -#if defined (__EMX__) || defined (__CYGWIN__) +#include + +#if defined (__EMX__) # undef HAVE_MMAP #endif -#ifdef HAVE_MMAP +#ifdef HISTORY_USE_MMAP # include # ifdef MAP_FILE @@ -67,7 +73,7 @@ # define MAP_FAILED ((void *)-1) # endif -#endif /* HAVE_MMAP */ +#endif /* HISTORY_USE_MMAP */ /* 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 @@ -93,6 +99,13 @@ extern int errno; #include "rlshell.h" #include "xmalloc.h" +/* If non-zero, we write timestamps to the history file in history_do_write() */ +int history_write_timestamps = 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 ((s)[1]) ) + /* 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 (). */ @@ -151,13 +164,20 @@ read_history_range (filename, from, to) const char *filename; int from, to; { - register char *line_start, *line_end; - char *input, *buffer, *bufend; + register char *line_start, *line_end, *p; + char *input, *buffer, *bufend, *last_ts; int file, current_line, chars_read; 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 - buffer = (char *)NULL; + buffer = last_ts = (char *)NULL; input = history_filename (filename); file = open (input, O_RDONLY|O_BINARY, 0666); @@ -169,37 +189,42 @@ read_history_range (filename, from, to) /* check for overflow on very large files */ if (file_size != finfo.st_size || file_size + 1 < file_size) { -#if defined (EFBIG) - errno = EFBIG; -#elif defined (EOVERFLOW) - errno = EOVERFLOW; -#endif + errno = overflow_errno; goto error_and_exit; } -#ifdef HAVE_MMAP +#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) - goto error_and_exit; + { + errno = overflow_errno; + goto error_and_exit; + } chars_read = file_size; #else buffer = (char *)malloc (file_size + 1); if (buffer == 0) - goto error_and_exit; + { + errno = overflow_errno; + goto error_and_exit; + } chars_read = read (file, buffer, file_size); #endif if (chars_read < 0) { error_and_exit: - chars_read = errno; + if (errno != 0) + chars_read = errno; + else + chars_read = EIO; if (file >= 0) close (file); FREE (input); -#ifndef HAVE_MMAP +#ifndef HISTORY_USE_MMAP FREE (buffer); #endif @@ -220,18 +245,41 @@ read_history_range (filename, from, to) for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) if (*line_end == '\n') { - current_line++; - line_start = line_end + 1; + 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++; + line_start = p; } /* 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') { - *line_end = '\0'; + /* 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) - add_history (line_start); + { + if (HIST_TIMESTAMP_START(line_start) == 0) + { + add_history (line_start); + if (last_ts) + { + add_history_time (last_ts); + last_ts = NULL; + } + } + else + { + last_ts = line_start; + current_line--; + } + } current_line++; @@ -242,7 +290,7 @@ read_history_range (filename, from, to) } FREE (input); -#ifndef HAVE_MMAP +#ifndef HISTORY_USE_MMAP FREE (buffer); #else munmap (buffer, file_size); @@ -259,7 +307,7 @@ history_truncate_file (fname, lines) const char *fname; int lines; { - char *buffer, *filename, *bp; + char *buffer, *filename, *bp, *bp1; /* bp1 == bp+1 */ int file, chars_read, rv; struct stat finfo; size_t file_size; @@ -322,11 +370,14 @@ history_truncate_file (fname, lines) } /* Count backwards from the end of buffer until we have passed - LINES lines. */ - for (bp = buffer + chars_read - 1; lines && bp > buffer; bp--) + 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') + if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) lines--; + bp1 = bp; } /* If this is the first line, then the file contains exactly the @@ -335,11 +386,14 @@ history_truncate_file (fname, lines) 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') - { - bp++; - break; - } + { + 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. */ @@ -368,9 +422,9 @@ history_do_write (filename, nelements, overwrite) register int i; char *output; int file, mode, rv; +#ifdef HISTORY_USE_MMAP size_t cursize; -#ifdef HAVE_MMAP 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; @@ -384,7 +438,7 @@ history_do_write (filename, nelements, overwrite) return (errno); } -#ifdef HAVE_MMAP +#ifdef HISTORY_USE_MMAP cursize = overwrite ? 0 : lseek (file, 0, SEEK_END); #endif @@ -402,10 +456,18 @@ history_do_write (filename, nelements, overwrite) the_history = history_list (); /* Calculate the total number of bytes to write. */ for (buffer_size = 0, i = history_length - nelements; i < history_length; i++) - buffer_size += 1 + strlen (the_history[i]->line); +#if 0 + buffer_size += 2 + HISTENT_BYTES (the_history[i]); +#else + { + 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; + } +#endif /* Allocate the buffer, and fill it. */ -#ifdef HAVE_MMAP +#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); @@ -430,12 +492,18 @@ mmap_error: 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 HAVE_MMAP +#ifdef HISTORY_USE_MMAP if (msync (buffer, buffer_size, 0) != 0 || munmap (buffer, buffer_size) != 0) rv = errno; #else diff --git a/src/bin/bash/lib/readline/histlib.h b/src/bin/bash/lib/readline/histlib.h index c39af71814..c938a109cc 100644 --- a/src/bin/bash/lib/readline/histlib.h +++ b/src/bin/bash/lib/readline/histlib.h @@ -1,23 +1,23 @@ /* histlib.h -- internal definitions for the history library. */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. - This file contains the GNU History Library (the Library), a set of +/* 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. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/lib/readline/history.c b/src/bin/bash/lib/readline/history.c index 4242f33efe..8e613bbdd7 100644 --- a/src/bin/bash/lib/readline/history.c +++ b/src/bin/bash/lib/readline/history.c @@ -1,24 +1,23 @@ -/* History.c -- standalone history library */ +/* history.c -- standalone history library */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. - This file contains the GNU History Library (the Library), a set of + This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -52,6 +51,8 @@ /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 +static char *hist_inittime PARAMS((void)); + /* **************************************************************** */ /* */ /* History Functions */ @@ -123,14 +124,15 @@ using_history () } /* Return the number of bytes that the primary history entries are using. - This just adds up the lengths of the_history->lines. */ + This just adds up the lengths of the_history->lines and the associated + timestamps. */ int history_total_bytes () { register int i, result; for (i = result = 0; the_history && the_history[i]; i++) - result += strlen (the_history[i]->line); + result += HISTENT_BYTES (the_history[i]); return (result); } @@ -155,7 +157,7 @@ history_set_pos (pos) return (1); } -/* Return the current history array. The caller has to be carefull, since this +/* 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 ** @@ -201,11 +203,61 @@ history_get (offset) int local_index; local_index = offset - history_base; - return (local_index >= history_length || local_index < 0 || !the_history) + return (local_index >= history_length || local_index < 0 || the_history == 0) ? (HIST_ENTRY *)NULL : the_history[local_index]; } +HIST_ENTRY * +alloc_history_entry (string, ts) + 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) + 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; + t = (time_t) atol (ts + 1); /* XXX - should use strtol() here */ + return t; +} + +static char * +hist_inittime () +{ + 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 @@ -225,10 +277,7 @@ add_history (string) /* If there is something in the slot, then remove it. */ if (the_history[0]) - { - free (the_history[0]->line); - free (the_history[0]); - } + (void) free_history_entry (the_history[0]); /* Copy the rest of the entries, moving down one slot. */ for (i = 0; i < history_length; i++) @@ -256,14 +305,63 @@ add_history (string) } } - temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); - temp->line = savestring (string); - temp->data = (char *)NULL; + temp = alloc_history_entry (string, hist_inittime ()); the_history[history_length] = (HIST_ENTRY *)NULL; the_history[history_length - 1] = temp; } +/* Change the time stamp of the most recent history entry to STRING. */ +void +add_history_time (string) + const char *string; +{ + HIST_ENTRY *hs; + + if (string == 0) + 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) + HIST_ENTRY *hist; +{ + histdata_t x; + + if (hist == 0) + return ((histdata_t) 0); + FREE (hist->line); + FREE (hist->timestamp); + x = hist->data; + free (hist); + return (x); +} + +HIST_ENTRY * +copy_history_entry (hist) + 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. */ @@ -275,7 +373,7 @@ replace_history_entry (which, line, data) { HIST_ENTRY *temp, *old_value; - if (which >= history_length) + if (which < 0 || which >= history_length) return ((HIST_ENTRY *)NULL); temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); @@ -283,11 +381,57 @@ replace_history_entry (which, line, data) temp->line = savestring (line); temp->data = data; + temp->timestamp = savestring (old_value->timestamp); the_history[which] = temp; return (old_value); } +/* 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 +replace_history_data (which,old, new) + int which; + histdata_t *old, *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. */ @@ -298,17 +442,15 @@ remove_history (which) HIST_ENTRY *return_value; register int i; - if (which >= history_length || !history_length) - return_value = (HIST_ENTRY *)NULL; - else - { - return_value = the_history[which]; + if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) + return ((HIST_ENTRY *)NULL); - for (i = which; i < history_length; i++) - the_history[i] = the_history[i + 1]; + return_value = the_history[which]; - history_length--; - } + for (i = which; i < history_length; i++) + the_history[i] = the_history[i + 1]; + + history_length--; return (return_value); } @@ -327,10 +469,7 @@ stifle_history (max) { /* This loses because we cannot free the data. */ for (i = 0, j = history_length - max; i < j; i++) - { - free (the_history[i]->line); - free (the_history[i]); - } + free_history_entry (the_history[i]); history_base = i; for (j = 0, i = history_length - max; j < max; i++, j++) @@ -345,7 +484,7 @@ stifle_history (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. */ + was stifled, negative if it wasn't. */ int unstifle_history () { @@ -372,8 +511,7 @@ clear_history () /* This loses because we cannot free the data. */ for (i = 0; i < history_length; i++) { - free (the_history[i]->line); - free (the_history[i]); + free_history_entry (the_history[i]); the_history[i] = (HIST_ENTRY *)NULL; } diff --git a/src/bin/bash/lib/readline/history.h b/src/bin/bash/lib/readline/history.h index 58b5de4655..1257e66c3e 100644 --- a/src/bin/bash/lib/readline/history.h +++ b/src/bin/bash/lib/readline/history.h @@ -1,23 +1,23 @@ -/* History.h -- the names of functions that you can call in history. */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. +/* history.h -- the names of functions that you can call in history. */ - This file contains the GNU History Library (the Library), a set of +/* 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. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with History. If not, see . +*/ #ifndef _HISTORY_H_ #define _HISTORY_H_ @@ -26,6 +26,8 @@ extern "C" { #endif +#include /* XXX - for history timestamp code */ + #if defined READLINE_LIBRARY # include "rlstdc.h" # include "rltypedefs.h" @@ -43,9 +45,13 @@ typedef char *histdata_t; /* 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. */ @@ -76,11 +82,19 @@ extern void history_set_history_state PARAMS((HISTORY_STATE *)); 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 *)); + /* A reasonably useless function, only here for completeness. 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)); +/* 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. */ @@ -119,6 +133,10 @@ extern HIST_ENTRY *current_history PARAMS((void)); 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)); @@ -231,6 +249,8 @@ extern char *history_no_expand_chars; extern char *history_search_delimiter_chars; extern int history_quotes_inhibit_expansion; +extern int history_write_timestamps; + /* Backwards compatibility */ extern int max_input_history; diff --git a/src/bin/bash/lib/readline/histsearch.c b/src/bin/bash/lib/readline/histsearch.c index d94fd6cd9c..1ad55d22d3 100644 --- a/src/bin/bash/lib/readline/histsearch.c +++ b/src/bin/bash/lib/readline/histsearch.c @@ -1,24 +1,23 @@ /* histsearch.c -- searching the history list. */ -/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc. - This file contains the GNU History Library (the Library), a set of + This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. - The Library is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with History. If not, see . +*/ #define READLINE_LIBRARY @@ -77,11 +76,11 @@ history_search_internal (string, direction, anchored) if (string == 0 || *string == '\0') return (-1); - if (!history_length || ((i == history_length) && !reverse)) + if (!history_length || ((i >= history_length) && !reverse)) return (-1); - if (reverse && (i == history_length)) - i--; + if (reverse && (i >= history_length)) + i = history_length - 1; #define NEXT_LINE() do { if (reverse) i--; else i++; } while (0) diff --git a/src/bin/bash/lib/readline/input.c b/src/bin/bash/lib/readline/input.c index 57fc70192a..e1feff5b4c 100644 --- a/src/bin/bash/lib/readline/input.c +++ b/src/bin/bash/lib/readline/input.c @@ -1,26 +1,30 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -129,8 +133,11 @@ rl_get_char (key) 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); @@ -147,13 +154,19 @@ _rl_unget_char (key) { pop_index--; if (pop_index < 0) - pop_index = ibuffer_len - 1; + pop_index = ibuffer_len; ibuffer[pop_index] = key; return (1); } return (0); } +int +_rl_pushed_input_available () +{ + return (push_index != pop_index); +} + /* 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). */ @@ -162,13 +175,14 @@ rl_gather_tyi () { int tty; register int tem, result; - int chars_avail; + int chars_avail, k; char input; #if defined(HAVE_SELECT) fd_set readfds, exceptfds; struct timeval timeout; #endif + chars_avail = 0; tty = fileno (rl_instream); #if defined (HAVE_SELECT) @@ -202,9 +216,21 @@ rl_gather_tyi () fcntl (tty, F_SETFL, tem); if (chars_avail == -1 && errno == EAGAIN) return 0; + 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) @@ -225,7 +251,14 @@ rl_gather_tyi () if (result != -1) { while (chars_avail--) - rl_stuff_char ((*rl_getc_function) (rl_instream)); + { + 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 { @@ -243,7 +276,7 @@ rl_set_keyboard_input_timeout (u) int o; o = _keyboard_input_timeout; - if (u > 0) + if (u >= 0) _keyboard_input_timeout = u; return (o); } @@ -283,6 +316,11 @@ _rl_input_available () return (chars_avail); #endif +#endif + +#if defined (__MINGW32__) + if (isatty (tty)) + return (_kbhit ()); #endif return 0; @@ -321,7 +359,7 @@ _rl_insert_typein (c) string[i] = '\0'; rl_insert_text (string); - free (string); + xfree (string); } /* Add KEY to the buffer of characters to be read. Returns 1 if the @@ -340,7 +378,11 @@ rl_stuff_char (key) 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; @@ -396,6 +438,7 @@ rl_read_key () while (rl_event_hook && rl_get_char (&c) == 0) { (*rl_event_hook) (); + RL_CHECK_SIGNALS (); if (rl_done) /* XXX - experimental */ return ('\n'); if (rl_gather_tyi () < 0) /* XXX - EIO */ @@ -409,6 +452,7 @@ rl_read_key () { if (rl_get_char (&c) == 0) c = (*rl_getc_function) (rl_instream); + RL_CHECK_SIGNALS (); } } @@ -424,6 +468,12 @@ rl_getc (stream) while (1) { + RL_CHECK_SIGNALS (); + +#if defined (__MINGW32__) + if (isatty (fileno (stream))) + return (getch ()); +#endif result = read (fileno (stream), &c, sizeof (unsigned char)); if (result == sizeof (unsigned char)) @@ -434,7 +484,7 @@ rl_getc (stream) if (result == 0) return (EOF); -#if (defined(__BEOS__) || defined(__HAIKU__)) +#if (defined (__BEOS__) || defined (__HAIKU__)) if (errno == EINTR) continue; #endif @@ -465,7 +515,7 @@ rl_getc (stream) this is simply an interrupted system call to read (). Otherwise, some error ocurred, also signifying EOF. */ if (errno != EINTR) - return (EOF); + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); } } @@ -476,20 +526,26 @@ _rl_read_mbchar (mbchar, size) char *mbchar; int size; { - int mb_len = 0; + 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) { RL_SETSTATE(RL_STATE_MOREINPUT); - mbchar[mb_len++] = rl_read_key (); + c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + 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 */ @@ -499,6 +555,12 @@ _rl_read_mbchar (mbchar, size) 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; } @@ -507,21 +569,21 @@ _rl_read_mbchar (mbchar, size) } /* Read a multibyte-character string whose first character is FIRST into - the buffer MB of length MBLEN. Returns the last character read, which + 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 (first, mb, mblen) +_rl_read_mbstring (first, mb, mlen) int first; char *mb; - int mblen; + int mlen; { int i, c; mbstate_t ps; c = first; - memset (mb, 0, mblen); - for (i = 0; i < mblen; i++) + memset (mb, 0, mlen); + for (i = 0; c >= 0 && i < mlen; i++) { mb[i] = (char)c; memset (&ps, 0, sizeof (mbstate_t)); diff --git a/src/bin/bash/lib/readline/isearch.c b/src/bin/bash/lib/readline/isearch.c index c1ea5b3085..f3f46a71b3 100644 --- a/src/bin/bash/lib/readline/isearch.c +++ b/src/bin/bash/lib/readline/isearch.c @@ -1,29 +1,30 @@ +/* isearch.c - incremental searching */ + /* **************************************************************** */ /* */ /* I-Search and Searching */ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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 . +*/ - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) @@ -56,21 +57,77 @@ /* 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; -/* Forward declarations */ 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 *)); +static int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); + /* Last line found by the current incremental search, so we don't `find' - identical lines many times in a row. */ -static char *prev_line_found; + 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 *default_isearch_terminators = "\033\012"; +static char * const default_isearch_terminators = "\033\012"; + +_rl_search_cxt * +_rl_scxt_alloc (type, flags) + int type, 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->history_pos = 0; + cxt->direction = 0; + + cxt->lastc = 0; + + cxt->sline = 0; + cxt->sline_len = cxt->sline_index = 0; + + cxt->search_terminators = 0; + + return cxt; +} + +void +_rl_scxt_dispose (cxt, flags) + _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. */ @@ -92,7 +149,7 @@ rl_forward_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 1 for reverse, + 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 @@ -136,10 +193,429 @@ rl_display_search (search_string, reverse_p, where) strcpy (message + msglen, "': "); rl_message ("%s", message); - free (message); + xfree (message); (*rl_redisplay_function) (); } +static _rl_search_cxt * +_rl_isearch_init (direction) + 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 arrary 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 */ + + return cxt; +} + +static void +_rl_isearch_fini (cxt) + _rl_search_cxt *cxt; +{ + /* First put back the original state. */ + strcpy (rl_line_buffer, cxt->lines[cxt->save_line]); + + 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_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. */ + + rl_clear_message (); +} + +int +_rl_search_getchar (cxt) + _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) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); +#endif + + return c; +} + +/* 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 (cxt, c) + _rl_search_cxt *cxt; + int c; +{ + int n, wstart, wlen, limit, cval; + 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; + } + + /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { + f = _rl_keymap[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')) + cxt->lastc = -4; + else if (c == CTRL ('W')) /* XXX */ + cxt->lastc = -5; + else if (c == CTRL ('Y')) /* XXX */ + cxt->lastc = -6; + } + + /* 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 (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_input_available ()) + rl_execute_next (ESC); + return (0); + } + +#define ENDSRCH_CHAR(c) \ + ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G'))) + +#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); + } + + /* 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 & SF_REVERSE), -1); + break; + } + return (1); + } + else if (cxt->sflags & SF_REVERSE) + 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 + cxt->search_string[--cxt->search_string_index] = '\0'; + 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_restore_prompt(); + rl_clear_message (); + + 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; + + /* Add character to search string and continue search. */ + default: + if (cxt->search_string_index + 2 >= cxt->search_string_size) + { + cxt->search_string_size += 128; + 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, l; + for (j = 0, l = strlen (cxt->mb); j < l; ) + cxt->search_string[cxt->search_string_index++] = cxt->mb[j++]; + } + else +#endif + cxt->search_string[cxt->search_string_index++] = c; + cxt->search_string[cxt->search_string_index] = '\0'; + break; + } + + for (cxt->sflags &= ~(SF_FOUND|SF_FAILED);; ) + { + 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->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) + break; + + /* Now set up the line for searching... */ + cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; + } + + if (cxt->sflags & SF_FAILED) + { + /* We cannot find the search string. Ding the bell. */ + rl_ding (); + cxt->history_pos = cxt->last_found_line; + 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); + rl_point = cxt->sline_index; + cxt->last_found_line = cxt->history_pos; + rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); + } + + return 1; +} + +static int +_rl_isearch_cleanup (cxt, r) + _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 @@ -148,413 +624,51 @@ static int rl_search_history (direction, invoking_key) int direction, invoking_key; { - /* The string that the user types in to search for. */ - char *search_string; - - /* The current length of SEARCH_STRING. */ - int search_string_index; - - /* The amount of space that SEARCH_STRING has allocated to it. */ - int search_string_size; - - /* The list of lines to search through. */ - char **lines, *allocated_line; - - /* The length of LINES. */ - int hlen; - - /* Where we get LINES from. */ - HIST_ENTRY **hlist; - - register int i; - int orig_point, orig_mark, orig_line, last_found_line; - int c, found, failed, sline_len; - int n, wstart, wlen; -#if defined (HANDLE_MULTIBYTE) - char mb[MB_LEN_MAX]; -#endif - - /* The line currently being searched. */ - char *sline; - - /* Offset in that line. */ - int line_index; - - /* Non-zero if we are doing a reverse search. */ - int reverse; - - /* The list of characters which terminate the search, but are not - subsequently executed. If the variable isearch-terminators has - been set, we use that value, otherwise we use ESC and C-J. */ - char *isearch_terminators; + _rl_search_cxt *cxt; /* local for now, but saved globally */ + int c, r; RL_SETSTATE(RL_STATE_ISEARCH); - orig_point = rl_point; - orig_mark = rl_mark; - last_found_line = orig_line = where_history (); - reverse = direction < 0; - hlist = history_list (); - allocated_line = (char *)NULL; + cxt = _rl_isearch_init (direction); - isearch_terminators = _rl_isearch_terminators ? _rl_isearch_terminators - : default_isearch_terminators; + rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), -1); - /* Create an arrary of pointers to the lines that we want to search. */ - rl_maybe_replace_line (); - i = 0; - if (hlist) - for (i = 0; hlist[i]; i++); + /* 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); - /* Allocate space for this many lines, +1 for the current input line, - and remember those lines. */ - lines = (char **)xmalloc ((1 + (hlen = i)) * sizeof (char *)); - for (i = 0; i < hlen; i++) - lines[i] = hlist[i]->line; - - if (_rl_saved_line_for_history) - lines[i] = _rl_saved_line_for_history->line; - else - { - /* Keep track of this so we can free it. */ - allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer)); - strcpy (allocated_line, &rl_line_buffer[0]); - lines[i] = allocated_line; - } - - hlen++; - - /* The line where we start the search. */ - i = orig_line; - - rl_save_prompt (); - - /* Initialize search parameters. */ - search_string = (char *)xmalloc (search_string_size = 128); - *search_string = '\0'; - search_string_index = 0; - prev_line_found = (char *)0; /* XXX */ - - /* Normalize DIRECTION into 1 or -1. */ - direction = (direction >= 0) ? 1 : -1; - - rl_display_search (search_string, reverse, -1); - - sline = rl_line_buffer; - sline_len = strlen (sline); - line_index = rl_point; - - found = failed = 0; + r = -1; for (;;) { - rl_command_func_t *f = (rl_command_func_t *)NULL; - - /* Read a key and decide how to proceed. */ - RL_SETSTATE(RL_STATE_MOREINPUT); - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - c = _rl_read_mbstring (c, mb, MB_LEN_MAX); -#endif - - /* Translate the keys we do something with to opcodes. */ - if (c >= 0 && _rl_keymap[c].type == ISFUNC) - { - f = _rl_keymap[c].function; - - if (f == rl_reverse_search_history) - c = reverse ? -1 : -2; - else if (f == rl_forward_search_history) - c = !reverse ? -1 : -2; - else if (f == rl_rubout) - c = -3; - else if (c == CTRL ('G')) - c = -4; - else if (c == CTRL ('W')) /* XXX */ - c = -5; - else if (c == CTRL ('Y')) /* XXX */ - c = -6; - } - - /* 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 (strchr (isearch_terminators, c)) - { - /* 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 (c == ESC && _rl_input_available ()) - rl_execute_next (ESC); - break; - } - -#define ENDSRCH_CHAR(c) \ - ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G'))) - -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - if (c >= 0 && strlen (mb) == 1 && ENDSRCH_CHAR (c)) - { - /* This sets rl_pending_input to c; it will be picked up the next - time rl_read_key is called. */ - rl_execute_next (c); - break; - } - } - else -#endif - if (c >= 0 && ENDSRCH_CHAR (c)) - { - /* This sets rl_pending_input to c; it will be picked up the next - time rl_read_key is called. */ - rl_execute_next (c); - break; - } - - switch (c) - { - case -1: - if (search_string_index == 0) - { - if (last_isearch_string) - { - search_string_size = 64 + last_isearch_string_len; - search_string = (char *)xrealloc (search_string, search_string_size); - strcpy (search_string, last_isearch_string); - search_string_index = last_isearch_string_len; - rl_display_search (search_string, reverse, -1); - break; - } - continue; - } - else if (reverse) - --line_index; - else if (line_index != sline_len) - ++line_index; - else - rl_ding (); - break; - - /* switch directions */ - case -2: - direction = -direction; - reverse = direction < 0; - 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 (search_string_index == 0) - rl_ding (); - else - search_string[--search_string_index] = '\0'; - - break; - - case -4: /* C-G */ - rl_replace_line (lines[orig_line], 0); - rl_point = orig_point; - rl_mark = orig_mark; - rl_restore_prompt(); - rl_clear_message (); - if (allocated_line) - free (allocated_line); - free (lines); - RL_UNSETSTATE(RL_STATE_ISEARCH); - return 0; - - case -5: /* C-W */ - /* skip over portion of line we already matched */ - wstart = rl_point + search_string_index; - if (wstart >= rl_end) - { - rl_ding (); - break; - } - - /* if not in a word, move to one. */ - if (rl_alphabetic(rl_line_buffer[wstart]) == 0) - { - rl_ding (); - break; - } - n = wstart; - while (n < rl_end && rl_alphabetic(rl_line_buffer[n])) - n++; - wlen = n - wstart + 1; - if (search_string_index + wlen + 1 >= search_string_size) - { - search_string_size += wlen + 1; - search_string = (char *)xrealloc (search_string, search_string_size); - } - for (; wstart < n; wstart++) - search_string[search_string_index++] = rl_line_buffer[wstart]; - search_string[search_string_index] = '\0'; - break; - - case -6: /* C-Y */ - /* skip over portion of line we already matched */ - wstart = rl_point + search_string_index; - if (wstart >= rl_end) - { - rl_ding (); - break; - } - n = rl_end - wstart + 1; - if (search_string_index + n + 1 >= search_string_size) - { - search_string_size += n + 1; - search_string = (char *)xrealloc (search_string, search_string_size); - } - for (n = wstart; n < rl_end; n++) - search_string[search_string_index++] = rl_line_buffer[n]; - search_string[search_string_index] = '\0'; - break; - - default: - /* Add character to search string and continue search. */ - if (search_string_index + 2 >= search_string_size) - { - search_string_size += 128; - search_string = (char *)xrealloc (search_string, search_string_size); - } -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - int j, l; - for (j = 0, l = strlen (mb); j < l; ) - search_string[search_string_index++] = mb[j++]; - } - else -#endif - search_string[search_string_index++] = c; - search_string[search_string_index] = '\0'; - break; - } - - for (found = failed = 0;;) - { - int limit = sline_len - search_string_index + 1; - - /* Search the current line. */ - while (reverse ? (line_index >= 0) : (line_index < limit)) - { - if (STREQN (search_string, sline + line_index, search_string_index)) - { - found++; - break; - } - else - line_index += direction; - } - if (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. */ - i += direction; - - /* At limit for direction? */ - if (reverse ? (i < 0) : (i == hlen)) - { - failed++; - break; - } - - /* We will need these later. */ - sline = lines[i]; - sline_len = strlen (sline); - } - while ((prev_line_found && STREQ (prev_line_found, lines[i])) || - (search_string_index > sline_len)); - - if (failed) - break; - - /* Now set up the line for searching... */ - line_index = reverse ? sline_len - search_string_index : 0; - } - - if (failed) - { - /* We cannot find the search string. Ding the bell. */ - rl_ding (); - i = last_found_line; - continue; /* XXX - was break */ - } - - /* 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 (found) - { - prev_line_found = lines[i]; - rl_replace_line (lines[i], 0); - rl_point = line_index; - last_found_line = i; - rl_display_search (search_string, reverse, (i == orig_line) ? -1 : i); - } + 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. */ - - /* First put back the original state. */ - strcpy (rl_line_buffer, lines[orig_line]); - - rl_restore_prompt (); - - /* Save the search string for possible later use. */ - FREE (last_isearch_string); - last_isearch_string = search_string; - last_isearch_string_len = search_string_index; - - if (last_found_line < orig_line) - rl_get_previous_history (orig_line - last_found_line, 0); - else - rl_get_next_history (last_found_line - orig_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 (line_index < 0) - { - if (last_found_line == orig_line) - line_index = orig_point; - else - line_index = strlen (rl_line_buffer); - rl_mark = orig_mark; - } - - rl_point = line_index; - /* Don't worry about where to put the mark here; rl_get_previous_history - and rl_get_next_history take care of it. */ - - rl_clear_message (); - - FREE (allocated_line); - free (lines); - - RL_UNSETSTATE(RL_STATE_ISEARCH); - - return 0; + 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 (cxt) + _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/src/bin/bash/lib/readline/keymaps.c b/src/bin/bash/lib/readline/keymaps.c index 12506d3aab..a033d5ecd1 100644 --- a/src/bin/bash/lib/readline/keymaps.c +++ b/src/bin/bash/lib/readline/keymaps.c @@ -1,23 +1,24 @@ /* keymaps.c -- Functions and keymaps for the GNU Readline library. */ -/* Copyright (C) 1988,1989 Free Software Foundation, Inc. +/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc. - This file is part of GNU Readline, a library for reading lines - of text with interactive input and history editing. + 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 2, or (at your option) any - later version. + 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. + Readline is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Readline; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Readline. If not, see . +*/ + #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) @@ -64,11 +65,13 @@ rl_make_bare_keymap () 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); } @@ -79,8 +82,9 @@ rl_copy_keymap (map) Keymap map; { register int i; - Keymap temp = rl_make_bare_keymap (); + Keymap temp; + temp = rl_make_bare_keymap (); for (i = 0; i < KEYMAP_SIZE; i++) { temp[i].type = map[i].type; @@ -109,12 +113,8 @@ rl_make_keymap () newmap[CTRL('H')].function = rl_rubout; #if KEYMAP_SIZE > 128 - /* Printing characters in some 8-bit character sets. */ - for (i = 128; i < 160; i++) - newmap[i].function = rl_insert; - - /* ISO Latin-1 printing characters should self-insert. */ - for (i = 160; i < 256; i++) + /* 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 */ diff --git a/src/bin/bash/lib/readline/keymaps.h b/src/bin/bash/lib/readline/keymaps.h index 66fa2a5ec1..6c4611d3e1 100644 --- a/src/bin/bash/lib/readline/keymaps.h +++ b/src/bin/bash/lib/readline/keymaps.h @@ -2,23 +2,22 @@ /* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #ifndef _KEYMAPS_H_ #define _KEYMAPS_H_ diff --git a/src/bin/bash/lib/readline/kill.c b/src/bin/bash/lib/readline/kill.c index a616b920d9..a4d6d14824 100644 --- a/src/bin/bash/lib/readline/kill.c +++ b/src/bin/bash/lib/readline/kill.c @@ -2,23 +2,23 @@ /* Copyright (C) 1994 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -115,7 +115,7 @@ _rl_copy_to_kill_ring (text, append) if (slot == rl_max_kills) { register int i; - free (rl_kill_ring[0]); + xfree (rl_kill_ring[0]); for (i = 0; i < slot; i++) rl_kill_ring[i] = rl_kill_ring[i + 1]; } @@ -146,7 +146,7 @@ _rl_copy_to_kill_ring (text, append) strcpy (new, text); strcat (new, old); } - free (old); + xfree (old); free (text); rl_kill_ring[slot] = new; } @@ -339,6 +339,47 @@ rl_unix_word_rubout (count, key) 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 (count, key) + int count, 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--; + 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; } @@ -541,6 +582,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) if (!arg || !*arg) { rl_ding (); + FREE (arg); return -1; } @@ -644,7 +686,7 @@ rl_paste_from_clipboard (count, key) _rl_set_mark_at_pos (rl_point); rl_insert_text (ptr); if (ptr != data) - free (ptr); + xfree (ptr); CloseClipboard (); } return (0); diff --git a/src/bin/bash/lib/readline/macro.c b/src/bin/bash/lib/readline/macro.c index b73c3af9aa..c2fac8addb 100644 --- a/src/bin/bash/lib/readline/macro.c +++ b/src/bin/bash/lib/readline/macro.c @@ -1,24 +1,24 @@ /* macro.c -- keyboard macros for readline. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -100,6 +100,8 @@ _rl_with_macro_input (string) int _rl_next_macro_key () { + int c; + if (rl_executing_macro == 0) return (0); @@ -109,7 +111,14 @@ _rl_next_macro_key () 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 return (rl_executing_macro[executing_macro_index++]); +#endif } /* Save the currently executing macro on a stack of saved macros. */ @@ -143,7 +152,7 @@ _rl_pop_executing_macro () rl_executing_macro = macro_list->string; executing_macro_index = macro_list->sindex; macro_list = macro_list->next; - free (macro); + xfree (macro); } if (rl_executing_macro == 0) @@ -172,7 +181,7 @@ _rl_kill_kbd_macro () { if (current_macro) { - free (current_macro); + xfree (current_macro); current_macro = (char *) NULL; } current_macro_size = current_macro_index = 0; diff --git a/src/bin/bash/lib/readline/mbutil.c b/src/bin/bash/lib/readline/mbutil.c index 8794d02ddc..858842e627 100644 --- a/src/bin/bash/lib/readline/mbutil.c +++ b/src/bin/bash/lib/readline/mbutil.c @@ -1,24 +1,24 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -77,37 +77,39 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) char *string; int seed, count, find_non_zero; { - size_t tmp = 0; + size_t tmp; mbstate_t ps; - int point = 0; + 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 this is true, means that seed was not pointed character - started byte. So correct the point and consume count */ + point = seed + _rl_adjust_point (string, seed, &ps); + /* 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 --; + count--; while (count > 0) { tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); - if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) + if (MB_INVALIDCH ((size_t)tmp)) { - /* invalid bytes. asume a byte represents a character */ + /* invalid bytes. assume a byte represents a character */ point++; count--; /* reset states. */ memset(&ps, 0, sizeof(mbstate_t)); } - else if (tmp == (size_t)0) - /* found '\0' char */ - break; + else if (MB_NULLWCH (tmp)) + break; /* found wide '\0' */ else { /* valid bytes */ @@ -127,15 +129,14 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) if (find_non_zero) { tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); - while (wcwidth (wc) == 0) + while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0) { point += tmp; tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); - if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2)) - break; } } - return point; + + return point; } static int @@ -160,7 +161,7 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) while (point < seed) { tmp = mbrtowc (&wc, string + point, length - point, &ps); - if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) + if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or shorted to compose multibyte char, so assume that the first byte represents @@ -169,8 +170,12 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) /* 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 (tmp == 0) + else if (MB_NULLWCH (tmp)) break; /* Found '\0' char. Can this happen? */ else { @@ -273,7 +278,7 @@ _rl_adjust_point(string, point, ps) while (pos < point) { tmp = mbrlen (string + pos, length - pos, ps); - if((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) + if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or shorted to compose multibyte char, so assume that the first byte represents @@ -284,7 +289,7 @@ _rl_adjust_point(string, point, ps) if (ps) memset (ps, 0, sizeof (mbstate_t)); } - else if (tmp == 0) + else if (MB_NULLWCH (tmp)) pos++; else pos += tmp; @@ -310,6 +315,28 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length) return 0; return 1; } + +wchar_t +_rl_char_value (buf, ind) + 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]); + l = strlen (buf); + if (ind >= l - 1) + return ((wchar_t) 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. diff --git a/src/bin/bash/lib/readline/misc.c b/src/bin/bash/lib/readline/misc.c index f3775d30ec..12ae4a5367 100644 --- a/src/bin/bash/lib/readline/misc.c +++ b/src/bin/bash/lib/readline/misc.c @@ -1,24 +1,24 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -63,6 +63,8 @@ void _rl_free_history_entry PARAMS((HIST_ENTRY *)); 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; @@ -73,31 +75,134 @@ int _rl_history_saved_point = -1; /* */ /* **************************************************************** */ +int +_rl_arg_overflow () +{ + 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 () +{ + rl_save_prompt (); + _rl_argcxt = 0; + RL_SETSTATE(RL_STATE_NUMERICARG); +} + +int +_rl_arg_getchar () +{ + 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 (cxt, c) + _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 (_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 + { + RL_SETSTATE(RL_STATE_MOREINPUT); + key = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + 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 () { - int key, c, sawminus, sawdigits; + int c, r; - rl_save_prompt (); - - RL_SETSTATE(RL_STATE_NUMERICARG); - sawminus = sawdigits = 0; while (1) { - if (rl_numeric_arg > 1000000) - { - sawdigits = rl_explicit_arg = rl_numeric_arg = 0; - rl_ding (); - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - return 1; - } - rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); - RL_SETSTATE(RL_STATE_MOREINPUT); - key = c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (_rl_arg_overflow ()) + return 1; + + c = _rl_arg_getchar (); if (c < 0) { @@ -105,81 +210,40 @@ rl_digit_loop () return -1; } - /* If we see a key bound to `universal-argument' after seeing digits, - it ends the argument but is otherwise ignored. */ - if (_rl_keymap[c].type == ISFUNC && - _rl_keymap[c].function == rl_universal_argument) - { - if (sawdigits == 0) - { - rl_numeric_arg *= 4; - continue; - } - else - { - RL_SETSTATE(RL_STATE_MOREINPUT); - key = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - return (_rl_dispatch (key, _rl_keymap)); - } - } - - c = UNMETA (c); - - if (_rl_digit_p (c)) - { - rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + c - '0' : c - '0'; - sawdigits = rl_explicit_arg = 1; - } - else if (c == '-' && rl_explicit_arg == 0) - { - rl_numeric_arg = sawminus = 1; - rl_arg_sign = -1; - } - else - { - /* Make M-- command equivalent to M--1 command. */ - if (sawminus && rl_numeric_arg == 1 && rl_explicit_arg == 0) - rl_explicit_arg = 1; - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - return (_rl_dispatch (key, _rl_keymap)); - } + r = _rl_arg_dispatch (_rl_argcxt, c); + if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) + break; } - /*NOTREACHED*/ + return r; } -/* Add the current digit to the argument in progress. */ +/* Create a default argument. */ +void +_rl_reset_argument () +{ + 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 (ignore, key) int ignore, key; { - rl_execute_next (key); - return (rl_digit_loop ()); -} - -/* What to do when you abort reading an argument. */ -int -rl_discard_argument () -{ - rl_ding (); - rl_clear_message (); - _rl_init_argument (); - return 0; -} - -/* Create a default argument. */ -int -_rl_init_argument () -{ - rl_numeric_arg = rl_arg_sign = 1; - rl_explicit_arg = 0; - return 0; + _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. @@ -189,8 +253,43 @@ int rl_universal_argument (count, key) int count, key; { + _rl_arg_init (); rl_numeric_arg *= 4; - return (rl_digit_loop ()); + + return (RL_ISSTATE (RL_STATE_CALLBACK) ? 0 : rl_digit_loop ()); +} + +int +_rl_arg_callback (cxt) + _rl_arg_cxt cxt; +{ + int c, r; + + c = _rl_arg_getchar (); + + 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); + return (r != 1); +} + +/* What to do when you abort reading an argument. */ +int +rl_discard_argument () +{ + rl_ding (); + rl_clear_message (); + _rl_reset_argument (); + + return 0; } /* **************************************************************** */ @@ -225,8 +324,10 @@ _rl_free_history_entry (entry) { if (entry == 0) return; - if (entry->line) - free (entry->line); + + FREE (entry->line); + FREE (entry->timestamp); + free (entry); } @@ -242,6 +343,7 @@ rl_maybe_replace_line () { temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); free (temp->line); + FREE (temp->timestamp); free (temp); } return 0; @@ -253,6 +355,8 @@ rl_maybe_unsave_line () { 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); @@ -272,8 +376,10 @@ rl_maybe_save_line () { _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; } @@ -298,7 +404,7 @@ _rl_history_set_point () rl_point = rl_end; #if defined (VI_MODE) - if (rl_editing_mode == vi_mode) + if (rl_editing_mode == vi_mode && _rl_keymap != vi_insertion_keymap) rl_point = 0; #endif /* VI_MODE */ @@ -311,6 +417,8 @@ rl_replace_from_history (entry, flags) HIST_ENTRY *entry; int flags; /* currently unused */ { + /* 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; @@ -323,6 +431,56 @@ rl_replace_from_history (entry, flags) 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_all_lines () +{ + 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 */ + /* 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->data = 0; + } + 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 */ + free (lbuf); } /* **************************************************************** */ @@ -435,6 +593,7 @@ rl_get_previous_history (count, key) rl_replace_from_history (temp, 0); _rl_history_set_point (); } + return 0; } @@ -451,7 +610,7 @@ rl_vi_editing_mode (count, 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_insertion_mode (1, key); + rl_vi_insert_mode (1, key); #endif /* VI_MODE */ return 0; diff --git a/src/bin/bash/lib/readline/nls.c b/src/bin/bash/lib/readline/nls.c index 706c8195c1..7f10f0151c 100644 --- a/src/bin/bash/lib/readline/nls.c +++ b/src/bin/bash/lib/readline/nls.c @@ -1,24 +1,24 @@ /* nls.c -- skeletal internationalization code. */ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -75,6 +75,23 @@ static char *normalize_codeset PARAMS((char *)); static char *find_codeset PARAMS((char *, size_t *)); #endif /* !HAVE_SETLOCALE */ +static char *_rl_get_locale_var PARAMS((const char *)); + +static char * +_rl_get_locale_var (v) + 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; +} + /* 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. */ @@ -84,10 +101,21 @@ _rl_init_eightbit () /* 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 *t; + char *lspec, *t; /* Set the LC_CTYPE locale category from environment variables. */ - t = setlocale (LC_CTYPE, ""); + 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 = ""; + t = setlocale (LC_CTYPE, lspec); + if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) { _rl_meta_flag = 1; @@ -105,9 +133,8 @@ _rl_init_eightbit () /* 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 = sh_get_env_value ("LC_ALL"); - if (lspec == 0) lspec = sh_get_env_value ("LC_CTYPE"); - if (lspec == 0) lspec = sh_get_env_value ("LANG"); + 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++) diff --git a/src/bin/bash/lib/readline/parens.c b/src/bin/bash/lib/readline/parens.c index 54ef1f3695..f15d26f16e 100644 --- a/src/bin/bash/lib/readline/parens.c +++ b/src/bin/bash/lib/readline/parens.c @@ -1,26 +1,30 @@ -/* parens.c -- Implementation of matching parentheses feature. */ +/* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) diff --git a/src/bin/bash/lib/readline/posixdir.h b/src/bin/bash/lib/readline/posixdir.h index 505e27954f..bd33694dbb 100644 --- a/src/bin/bash/lib/readline/posixdir.h +++ b/src/bin/bash/lib/readline/posixdir.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* This file should be included instead of or . */ @@ -25,7 +25,11 @@ #if defined (HAVE_DIRENT_H) # include -# define D_NAMLEN(d) (strlen ((d)->d_name)) +# 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 @@ -42,11 +46,11 @@ # define D_NAMLEN(d) ((d)->d_namlen) #endif /* !HAVE_DIRENT_H */ -#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO) +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) # define d_fileno d_ino #endif -#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO)) +#if defined (_POSIX_SOURCE) && (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)) /* Posix does not require that the d_ino field be present, and some systems do not provide it. */ # define REAL_DIR_ENTRY(dp) 1 diff --git a/src/bin/bash/lib/readline/posixjmp.h b/src/bin/bash/lib/readline/posixjmp.h index b52aa00332..49bfecf338 100644 --- a/src/bin/bash/lib/readline/posixjmp.h +++ b/src/bin/bash/lib/readline/posixjmp.h @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #ifndef _POSIXJMP_H_ #define _POSIXJMP_H_ diff --git a/src/bin/bash/lib/readline/posixstat.h b/src/bin/bash/lib/readline/posixstat.h index c93b52887e..3eb7f2906f 100644 --- a/src/bin/bash/lib/readline/posixstat.h +++ b/src/bin/bash/lib/readline/posixstat.h @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ /* This file should be included instead of . It relies on the local sys/stat.h to work though. */ diff --git a/src/bin/bash/lib/readline/readline.c b/src/bin/bash/lib/readline/readline.c index f583358494..3550b35402 100644 --- a/src/bin/bash/lib/readline/readline.c +++ b/src/bin/bash/lib/readline/readline.c @@ -1,25 +1,25 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -49,6 +49,11 @@ #include #include "posixjmp.h" +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ /* System-specific feature definitions and include files. */ #include "rldefs.h" @@ -68,11 +73,11 @@ #include "xmalloc.h" #ifndef RL_LIBRARY_VERSION -# define RL_LIBRARY_VERSION "4.3" +# define RL_LIBRARY_VERSION "5.1" #endif #ifndef RL_READLINE_VERSION -# define RL_READLINE_VERSION 0x0403 +# define RL_READLINE_VERSION 0x0501 #endif extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); @@ -85,6 +90,10 @@ static void bind_arrow_keys_internal PARAMS((Keymap)); static void bind_arrow_keys 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)); /* **************************************************************** */ /* */ @@ -103,6 +112,7 @@ int rl_gnu_readline_p = 1; 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; @@ -153,7 +163,7 @@ int rl_done; rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; /* Top level environment for readline_internal (). */ -procenv_t readline_top_level; +procenv_t _rl_top_level; /* The streams we interact with. */ FILE *_rl_in_stream, *_rl_out_stream; @@ -166,7 +176,7 @@ FILE *rl_outstream = (FILE *)NULL; 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 readline_echoing_p = 0; +int _rl_echoing_p = 0; /* Current prompt. */ char *rl_prompt = (char *)NULL; @@ -218,6 +228,9 @@ 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; @@ -229,6 +242,9 @@ int rl_num_chars_to_read; char *rl_line_buffer = (char *)NULL; int rl_line_buffer_len = 0; +/* Key sequence `contexts' */ +_rl_keyseq_cxt *_rl_kscxt = 0; + /* Forward declarations used by the display, termcap, and history code. */ /* **************************************************************** */ @@ -250,6 +266,15 @@ int _rl_convert_meta_chars_to_ascii = 1; 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; + /* **************************************************************** */ /* */ /* Top Level Functions */ @@ -267,6 +292,7 @@ rl_set_prompt (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; @@ -279,6 +305,9 @@ readline (prompt) 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) @@ -287,22 +316,38 @@ readline (prompt) 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 (); - (*rl_prep_term_function) (_rl_meta_flag); + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) rl_set_signals (); #endif value = readline_internal (); - (*rl_deprep_term_function) (); + 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 + return (value); } @@ -326,7 +371,7 @@ readline_internal_setup () /* 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 (readline_echoing_p == 0 && rl_redisplay_function == rl_redisplay) + if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay) { if (rl_prompt && rl_already_prompted == 0) { @@ -347,11 +392,13 @@ readline_internal_setup () #if defined (VI_MODE) if (rl_editing_mode == vi_mode) - rl_vi_insertion_mode (1, 0); + rl_vi_insert_mode (1, 'i'); #endif /* VI_MODE */ if (rl_pre_input_hook) (*rl_pre_input_hook) (); + + RL_CHECK_SIGNALS (); } STATIC_CALLBACK char * @@ -361,6 +408,8 @@ readline_internal_teardown (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 (); @@ -376,6 +425,9 @@ readline_internal_teardown (eof) free (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) @@ -387,6 +439,36 @@ readline_internal_teardown (eof) return (eof ? (char *)NULL : savestring (the_line)); } +void +_rl_internal_char_cleanup () +{ +#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 () @@ -406,15 +488,24 @@ readline_internal_charloop () #endif lk = _rl_last_command_was_kill; - code = setjmp (readline_top_level); + code = setjmp (_rl_top_level); if (code) - (*rl_redisplay_function) (); + { + (*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_init_argument (); + _rl_reset_argument (); rl_key_sequence_length = 0; } @@ -422,6 +513,20 @@ readline_internal_charloop () 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. */ + 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 a . */ if (c == EOF && rl_end) c = NEWLINE; @@ -441,6 +546,7 @@ readline_internal_charloop () lastc = c; _rl_dispatch ((unsigned char)c, _rl_keymap); + 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 @@ -448,27 +554,7 @@ readline_internal_charloop () if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) _rl_last_command_was_kill = 0; -#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_newline (1, '\n'); - } - - if (rl_done == 0) - (*rl_redisplay_function) (); - - /* 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 (); + _rl_internal_char_cleanup (); #if defined (READLINE_CALLBACKS) return 0; @@ -518,6 +604,109 @@ _rl_set_the_line () the_line = rl_line_buffer; } +#if defined (READLINE_CALLBACKS) +_rl_keyseq_cxt * +_rl_keyseq_cxt_alloc () +{ + _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 (cxt) + _rl_keyseq_cxt *cxt; +{ + free (cxt); +} + +void +_rl_keyseq_chain_dispose () +{ + _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 (key) + 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 (cxt) + _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 */ + r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); + + RL_CHECK_SIGNALS (); + if (r == 0) /* success! */ + { + _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. */ @@ -526,6 +715,7 @@ _rl_dispatch (key, map) register int key; Keymap map; { + _rl_dispatching_keymap = map; return _rl_dispatch_subseq (key, map, 0); } @@ -538,6 +728,9 @@ _rl_dispatch_subseq (key, map, 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) { @@ -571,13 +764,9 @@ _rl_dispatch_subseq (key, map, got_subseq) rl_executing_keymap = map; -#if 0 - _rl_suppress_redisplay = (map[key].function == rl_insert) && _rl_input_available (); -#endif - rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); - r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); + (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); RL_UNSETSTATE(RL_STATE_DISPATCHING); rl_dispatching = 0; @@ -586,6 +775,8 @@ _rl_dispatch_subseq (key, map, got_subseq) remember the last command executed in this variable. */ if (rl_pending_input == 0 && map[key].function != rl_digit_argument) rl_last_func = map[key].function; + + RL_CHECK_SIGNALS (); } else if (map[ANYOTHERKEY].function) { @@ -606,6 +797,10 @@ _rl_dispatch_subseq (key, map, got_subseq) } else { +#if defined (READLINE_CALLBACKS) + RL_UNSETSTATE (RL_STATE_MULTIKEY); + _rl_keyseq_chain_dispose (); +#endif _rl_abort_internal (); return -1; } @@ -627,44 +822,43 @@ _rl_dispatch_subseq (key, map, got_subseq) #endif rl_key_sequence_length++; + _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key); - if (key == ESC) - RL_SETSTATE(RL_STATE_METANEXT); - RL_SETSTATE(RL_STATE_MOREINPUT); - newkey = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - if (key == ESC) - RL_UNSETSTATE(RL_STATE_METANEXT); + /* Allocate new context here. Use linked contexts (linked through + cxt->ocxt) to simulate recursion */ +#if defined (READLINE_CALLBACKS) + 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 + + newkey = _rl_subseq_getchar (key); if (newkey < 0) { _rl_abort_internal (); return -1; } - r = _rl_dispatch_subseq (newkey, FUNCTION_TO_KEYMAP (map, key), got_subseq || map[ANYOTHERKEY].function); - - 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. */ - r = _rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)); - else if (r && 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. */ - _rl_unget_char (key); - return -2; - } - else if (r && got_subseq) - { - /* OK, back up the chain. */ - _rl_unget_char (key); - 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 { @@ -688,9 +882,69 @@ _rl_dispatch_subseq (key, map, got_subseq) _rl_vi_textmod_command (key)) _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); #endif + return (r); } +static int +_rl_subseq_result (r, map, key, got_subseq) + int r; + Keymap map; + int key, 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 (key), map); + else if (type == ISFUNC && func == rl_insert) + { + /* If the function that was shadowed was self-insert, we + somehow need a keymap with map[key].func == self-insert. + Let's use this one. */ + nt = m[key].type; + nf = m[key].function; + + m[key].type = type; + m[key].function = func; + r = _rl_dispatch (key, m); + m[key].type = nt; + m[key].function = nf; + } + else + r = _rl_dispatch (ANYOTHERKEY, m); + } + else if (r && 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. */ + _rl_unget_char (key); + _rl_dispatching_keymap = map; + return -2; + } + else if (r && got_subseq) + { + /* OK, back up the chain. */ + _rl_unget_char (key); + _rl_dispatching_keymap = map; + return -1; + } + + return r; +} + /* **************************************************************** */ /* */ /* Initializations */ @@ -839,7 +1093,7 @@ readline_initialize_everything () /* 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 = rl_basic_word_break_characters; + rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; } /* If this system allows us to look at the values of the regular @@ -848,7 +1102,20 @@ readline_initialize_everything () static void readline_default_bindings () { - rl_tty_set_default_bindings (_rl_keymap); + 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 () +{ + 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. */ @@ -862,25 +1129,32 @@ bind_arrow_keys_internal (map) _rl_keymap = map; #if defined (__MSDOS__) - _rl_bind_if_unbound ("\033[0A", rl_get_previous_history); - _rl_bind_if_unbound ("\033[0B", rl_backward_char); - _rl_bind_if_unbound ("\033[0C", rl_forward_char); - _rl_bind_if_unbound ("\033[0D", rl_get_next_history); + 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_if_unbound ("\033[A", rl_get_previous_history); - _rl_bind_if_unbound ("\033[B", rl_get_next_history); - _rl_bind_if_unbound ("\033[C", rl_forward_char); - _rl_bind_if_unbound ("\033[D", rl_backward_char); - _rl_bind_if_unbound ("\033[H", rl_beg_of_line); - _rl_bind_if_unbound ("\033[F", rl_end_of_line); + 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_if_unbound ("\033OA", rl_get_previous_history); - _rl_bind_if_unbound ("\033OB", rl_get_next_history); - _rl_bind_if_unbound ("\033OC", rl_forward_char); - _rl_bind_if_unbound ("\033OD", rl_backward_char); - _rl_bind_if_unbound ("\033OH", rl_beg_of_line); - _rl_bind_if_unbound ("\033OF", 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); + +#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); +#endif _rl_keymap = xkeymap; } diff --git a/src/bin/bash/lib/readline/readline.h b/src/bin/bash/lib/readline/readline.h index f11b3d0357..ba0d5d6245 100644 --- a/src/bin/bash/lib/readline/readline.h +++ b/src/bin/bash/lib/readline/readline.h @@ -1,24 +1,23 @@ /* Readline.h -- the names of functions callable from within readline. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -40,9 +39,9 @@ extern "C" { #endif /* Hex-encoded Readline version number. */ -#define RL_READLINE_VERSION 0x0403 /* Readline 4.3 */ -#define RL_VERSION_MAJOR 4 -#define RL_VERSION_MINOR 3 +#define RL_READLINE_VERSION 0x0600 /* Readline 6.0 */ +#define RL_VERSION_MAJOR 6 +#define RL_VERSION_MINOR 0 /* Readline data structures. */ @@ -160,6 +159,7 @@ 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)); @@ -232,6 +232,7 @@ 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)); @@ -240,6 +241,7 @@ 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_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_first_print PARAMS((int, int)); @@ -258,6 +260,8 @@ 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)); @@ -290,12 +294,22 @@ 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_set_key PARAMS((const char *, rl_command_func_t *, 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)); @@ -358,7 +372,7 @@ extern int rl_clear_message PARAMS((void)); extern int rl_reset_line_state PARAMS((void)); extern int rl_crlf PARAMS((void)); -#if (defined (__STDC__) || defined (__cplusplus)) && defined (USE_VARARGS) && defined (PREFER_STDARG) +#if defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else extern int rl_message (); @@ -384,11 +398,13 @@ extern char *rl_copy_text PARAMS((int, int)); 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_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 *)); @@ -404,6 +420,7 @@ extern int rl_set_keyboard_input_timeout PARAMS((int)); 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)); @@ -411,7 +428,9 @@ 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 void rl_echo_signal_char PARAMS((int)); + extern int rl_set_paren_blink_timeout PARAMS((int)); /* Undocumented. */ @@ -477,6 +496,10 @@ extern const char *rl_readline_name; 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; @@ -516,6 +539,11 @@ extern const char *rl_terminal_name; 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; @@ -578,6 +606,10 @@ extern int rl_catch_sigwinch; 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. @@ -603,7 +635,12 @@ 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; +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 @@ -687,6 +724,14 @@ extern int rl_attempted_completion_over; 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; @@ -695,10 +740,21 @@ extern int rl_completion_append_character; rl_completion_append_character will not be appended. */ extern int rl_completion_suppress_append; -/* 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; +/* 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 @@ -718,6 +774,10 @@ extern int rl_ignore_completion_duplicates; completion character will be inserted as any other. */ extern int rl_inhibit_completion; +/* 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' @@ -729,28 +789,33 @@ extern int rl_inhibit_completion; #define MULT_MATCH 2 /* Possible state values for rl_readline_state */ -#define RL_STATE_NONE 0x00000 /* no state; before first call */ +#define RL_STATE_NONE 0x000000 /* no state; before first call */ -#define RL_STATE_INITIALIZING 0x00001 /* initializing */ -#define RL_STATE_INITIALIZED 0x00002 /* initialization done */ -#define RL_STATE_TERMPREPPED 0x00004 /* terminal is prepped */ -#define RL_STATE_READCMD 0x00008 /* reading a command key */ -#define RL_STATE_METANEXT 0x00010 /* reading input after ESC */ -#define RL_STATE_DISPATCHING 0x00020 /* dispatching to a command */ -#define RL_STATE_MOREINPUT 0x00040 /* reading more input in a command function */ -#define RL_STATE_ISEARCH 0x00080 /* doing incremental search */ -#define RL_STATE_NSEARCH 0x00100 /* doing non-inc search */ -#define RL_STATE_SEARCH 0x00200 /* doing a history search */ -#define RL_STATE_NUMERICARG 0x00400 /* reading numeric argument */ -#define RL_STATE_MACROINPUT 0x00800 /* getting input from a macro */ -#define RL_STATE_MACRODEF 0x01000 /* defining keyboard macro */ -#define RL_STATE_OVERWRITE 0x02000 /* overwrite mode */ -#define RL_STATE_COMPLETING 0x04000 /* doing completion */ -#define RL_STATE_SIGHANDLER 0x08000 /* in readline sighandler */ -#define RL_STATE_UNDOING 0x10000 /* doing an undo */ -#define RL_STATE_INPUTPENDING 0x20000 /* rl_execute_next called */ +#define RL_STATE_INITIALIZING 0x000001 /* initializing */ +#define RL_STATE_INITIALIZED 0x000002 /* initialization done */ +#define RL_STATE_TERMPREPPED 0x000004 /* terminal is prepped */ +#define RL_STATE_READCMD 0x000008 /* reading a command key */ +#define RL_STATE_METANEXT 0x000010 /* reading input after ESC */ +#define RL_STATE_DISPATCHING 0x000020 /* dispatching to a command */ +#define RL_STATE_MOREINPUT 0x000040 /* reading more input in a command function */ +#define RL_STATE_ISEARCH 0x000080 /* doing incremental search */ +#define RL_STATE_NSEARCH 0x000100 /* doing non-inc search */ +#define RL_STATE_SEARCH 0x000200 /* doing a history search */ +#define RL_STATE_NUMERICARG 0x000400 /* reading numeric argument */ +#define RL_STATE_MACROINPUT 0x000800 /* getting input from a macro */ +#define RL_STATE_MACRODEF 0x001000 /* defining keyboard macro */ +#define RL_STATE_OVERWRITE 0x002000 /* overwrite mode */ +#define RL_STATE_COMPLETING 0x004000 /* doing completion */ +#define RL_STATE_SIGHANDLER 0x008000 /* in readline sighandler */ +#define RL_STATE_UNDOING 0x010000 /* doing an undo */ +#define RL_STATE_INPUTPENDING 0x020000 /* rl_execute_next called */ +#define RL_STATE_TTYCSAVED 0x040000 /* tty special chars saved */ +#define RL_STATE_CALLBACK 0x080000 /* using the callback interface */ +#define RL_STATE_VIMOTION 0x100000 /* reading vi motion arg */ +#define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ +#define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ -#define RL_STATE_DONE 0x80000 /* done; accepted line */ +#define RL_STATE_DONE 0x800000 /* done; accepted line */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) @@ -785,6 +850,12 @@ struct readline_state { int catchsigs; int catchsigwinch; + /* search state */ + + /* completion state */ + + /* options state */ + /* reserved for future expansion, so the struct size doesn't change */ char reserved[64]; }; diff --git a/src/bin/bash/lib/readline/rlconf.h b/src/bin/bash/lib/readline/rlconf.h index c651fd8b41..39f94dbc0a 100644 --- a/src/bin/bash/lib/readline/rlconf.h +++ b/src/bin/bash/lib/readline/rlconf.h @@ -1,25 +1,23 @@ /* rlconf.h -- readline configuration definitions */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -37,9 +35,12 @@ /* Ugly but working hack for binding prefix meta. */ #define PREFIX_META_HACK -/* The final, last-ditch effort file name for an init file. */ +/* The next-to-last-ditch effort file name for a user-specific init file. */ #define DEFAULT_INPUTRC "~/.inputrc" +/* The ultimate last-ditch filenname for an init file -- system-wide. */ +#define SYS_INPUTRC "/etc/inputrc" + /* If defined, expand tabs to spaces. */ #define DISPLAY_TABS diff --git a/src/bin/bash/lib/readline/rldefs.h b/src/bin/bash/lib/readline/rldefs.h index 4a28bd1e49..0257754665 100644 --- a/src/bin/bash/lib/readline/rldefs.h +++ b/src/bin/bash/lib/readline/rldefs.h @@ -2,26 +2,24 @@ for readline. This should be included after any files that define system-specific constants like _POSIX_VERSION or USG. */ -/* Copyright (C) 1987,1989 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -32,13 +30,21 @@ #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 -# define NEW_TTY_DRIVER +# if !defined (__MINGW32__) +# define NEW_TTY_DRIVER +# else +# define NO_TTY_DRIVER +# endif # endif #endif @@ -77,7 +83,7 @@ extern int _rl_stricmp PARAMS((char *, char *)); extern int _rl_strnicmp PARAMS((char *, char *, int)); #endif -#if defined (HAVE_STRPBRK) +#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 *)); diff --git a/src/bin/bash/lib/readline/rlmbutil.h b/src/bin/bash/lib/readline/rlmbutil.h index 27ca32bfc7..7716a70cca 100644 --- a/src/bin/bash/lib/readline/rlmbutil.h +++ b/src/bin/bash/lib/readline/rlmbutil.h @@ -1,24 +1,23 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -32,14 +31,30 @@ /* For platforms which support the ISO C amendement 1 functionality we support user defined character classes. */ /* Solaris 2.5 has a bug: must be included before . */ -#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) # include # include -# if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */ +# 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) @@ -90,6 +105,24 @@ 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) + #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -101,6 +134,19 @@ extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); #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) + #endif /* !HANDLE_MULTIBYTE */ extern int rl_byte_oriented; diff --git a/src/bin/bash/lib/readline/rlprivate.h b/src/bin/bash/lib/readline/rlprivate.h index ccb914469e..f575c14a92 100644 --- a/src/bin/bash/lib/readline/rlprivate.h +++ b/src/bin/bash/lib/readline/rlprivate.h @@ -1,25 +1,24 @@ /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -28,6 +27,110 @@ #include "rlstdc.h" #include "posixjmp.h" /* defines procenv_t */ +/************************************************************************* + * * + * 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) + +/************************************************************************* + * * + * 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 + +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; + + int history_pos; + int direction; + + int lastc; +#if defined (HANDLE_MULTIBYTE) + char mb[MB_LEN_MAX]; +#endif + + char *sline; + int sline_len; + int sline_index; + + char *search_terminators; +} _rl_search_cxt; + +/* 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 */ + Keymap dmap; + + Keymap oldmap; + int okey; + struct __rl_keyseq_context *ocxt; + int childval; +} _rl_keyseq_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 *)); + /************************************************************************* * * * Global functions undocumented in texinfo manual and not in readline.h * @@ -50,7 +153,6 @@ extern int rl_visible_stats; extern int rl_line_buffer_len; extern int rl_arg_sign; extern int rl_visible_prompt_length; -extern int readline_echoing_p; extern int rl_key_sequence_length; extern int rl_byte_oriented; @@ -100,12 +202,22 @@ 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 void _rl_bind_if_unbound PARAMS((const char *, rl_command_func_t *)); /* 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 **)); @@ -131,6 +243,16 @@ extern int _rl_input_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_search_getchar PARAMS((_rl_search_cxt *)); /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); @@ -141,11 +263,18 @@ extern void _rl_add_macro_char PARAMS((int)); extern void _rl_kill_kbd_macro PARAMS((void)); /* misc.c */ -extern int _rl_init_argument PARAMS((void)); +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_all_lines PARAMS((void)); + /* nls.c */ extern int _rl_init_eightbit PARAMS((void)); @@ -157,11 +286,21 @@ 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)); /* 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 *)); + +/* signals.c */ +extern void _rl_signal_handler PARAMS((int)); + +extern void _rl_block_sigint PARAMS((void)); +extern void _rl_release_sigint PARAMS((void)); + /* terminal.c */ extern void _rl_get_screen_size PARAMS((int, int)); extern int _rl_init_terminal_io PARAMS((const char *)); @@ -190,7 +329,23 @@ 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 *)); + /* 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 int _rl_tropen PARAMS((void)); + extern int _rl_abort_internal PARAMS((void)); extern char *_rl_strindex PARAMS((const char *, const char *)); extern int _rl_qsort_string_compare PARAMS((char **, char **)); @@ -214,13 +369,19 @@ extern void _rl_vi_done_inserting PARAMS((void)); *************************************************************************/ /* bind.c */ -extern const char *_rl_possible_control_prefixes[]; -extern const char *_rl_possible_meta_prefixes[]; +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_print_completions_horizontally; extern int _rl_completion_case_fold; extern int _rl_match_hidden_files; @@ -230,11 +391,13 @@ extern int _rl_page_completions; extern int _rl_vis_botlin; extern int _rl_last_c_pos; extern int _rl_suppress_redisplay; -extern char *rl_display_prompt; +extern int _rl_want_redisplay; /* isearch.c */ extern char *_rl_isearch_terminators; +extern _rl_search_cxt *_rl_iscxt; + /* macro.c */ extern char *_rl_executing_macro; @@ -242,13 +405,18 @@ extern char *_rl_executing_macro; extern int _rl_history_preserve_point; extern int _rl_history_saved_point; +extern _rl_arg_cxt _rl_argcxt; + /* 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 char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; @@ -256,7 +424,21 @@ extern FILE *_rl_in_stream; extern FILE *_rl_out_stream; extern int _rl_last_command_was_kill; extern int _rl_eof_char; -extern procenv_t readline_top_level; +extern procenv_t _rl_top_level; +extern _rl_keyseq_cxt *_rl_kscxt; + +/* search.c */ +extern _rl_search_cxt *_rl_nscxt; + +/* signals.c */ +extern int _rl_interrupt_immediately; +extern int volatile _rl_caught_signal; + +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; @@ -271,6 +453,7 @@ 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; @@ -281,4 +464,7 @@ extern int _rl_term_autowrap; extern int _rl_doing_an_undo; extern int _rl_undo_group_level; +/* vi_mode.c */ +extern int _rl_vi_last_command; + #endif /* _RL_PRIVATE_H_ */ diff --git a/src/bin/bash/lib/readline/rlshell.h b/src/bin/bash/lib/readline/rlshell.h index 3c03fbad57..3e17d8bc7f 100644 --- a/src/bin/bash/lib/readline/rlshell.h +++ b/src/bin/bash/lib/readline/rlshell.h @@ -1,24 +1,23 @@ /* rlshell.h -- utility functions normally provided by bash. */ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/lib/readline/rlstdc.h b/src/bin/bash/lib/readline/rlstdc.h index d6a22b3742..a6d23942af 100644 --- a/src/bin/bash/lib/readline/rlstdc.h +++ b/src/bin/bash/lib/readline/rlstdc.h @@ -1,23 +1,23 @@ -/* stdc.h -- macros to make source compile on both ANSI C and K&R C - compilers. */ +/* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* Copyright (C) 1993-2009 Free Software Foundation, Inc. - This file is part of GNU Bash, the Bourne Again SHell. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Readline is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + 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 Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Readline. If not, see . +*/ #if !defined (_RL_STDC_H_) #define _RL_STDC_H_ @@ -37,7 +37,7 @@ #endif #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) # define __attribute__(x) # endif #endif diff --git a/src/bin/bash/lib/readline/rltty.c b/src/bin/bash/lib/readline/rltty.c index 755efebaad..61f9103586 100644 --- a/src/bin/bash/lib/readline/rltty.c +++ b/src/bin/bash/lib/readline/rltty.c @@ -1,25 +1,25 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-2005 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -52,75 +52,8 @@ extern int errno; rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; -static void block_sigint PARAMS((void)); -static void release_sigint PARAMS((void)); - static void set_winsize PARAMS((int)); -/* **************************************************************** */ -/* */ -/* Signal Management */ -/* */ -/* **************************************************************** */ - -#if defined (HAVE_POSIX_SIGNALS) -static sigset_t sigint_set, sigint_oset; -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) -static int sigint_oldmask; -# endif /* HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ - -static int sigint_blocked; - -/* Cause SIGINT to not be delivered until the corresponding call to - release_sigint(). */ -static void -block_sigint () -{ - if (sigint_blocked) - return; - -#if defined (HAVE_POSIX_SIGNALS) - sigemptyset (&sigint_set); - sigemptyset (&sigint_oset); - sigaddset (&sigint_set, SIGINT); - sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset); -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) - sigint_oldmask = sigblock (sigmask (SIGINT)); -# else /* !HAVE_BSD_SIGNALS */ -# if defined (HAVE_USG_SIGHOLD) - sighold (SIGINT); -# endif /* HAVE_USG_SIGHOLD */ -# endif /* !HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ - - sigint_blocked = 1; -} - -/* Allow SIGINT to be delivered. */ -static void -release_sigint () -{ - if (sigint_blocked == 0) - return; - -#if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL); -#else -# if defined (HAVE_BSD_SIGNALS) - sigsetmask (sigint_oldmask); -# else /* !HAVE_BSD_SIGNALS */ -# if defined (HAVE_USG_SIGHOLD) - sigrelse (SIGINT); -# endif /* HAVE_USG_SIGHOLD */ -# endif /* !HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ - - sigint_blocked = 0; -} - /* **************************************************************** */ /* */ /* Saving and Restoring the TTY */ @@ -152,7 +85,9 @@ set_winsize (tty) #endif /* TIOCGWINSZ */ } -#if defined (NEW_TTY_DRIVER) +#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 @@ -186,6 +121,8 @@ 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 (tiop) TIOTYPE *tiop; @@ -200,8 +137,9 @@ save_tty_chars (tiop) if (tiop->flags & TCHARS_SET) { - _rl_tty_chars.t_intr = tiop->tchars.t_intrc; - _rl_tty_chars.t_quit = tiop->tchars.t_quitc; + _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; @@ -211,7 +149,8 @@ save_tty_chars (tiop) if (tiop->flags & LTCHARS_SET) { - _rl_tty_chars.t_susp = tiop->ltchars.t_suspc; + _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; @@ -231,6 +170,7 @@ get_tty_settings (tty, tiop) tiop->flags = tiop->lflag = 0; + errno = 0; if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0) return -1; tiop->flags |= SGTTY_SET; @@ -263,7 +203,7 @@ set_tty_settings (tty, tiop) ioctl (tty, TIOCSETN, &(tiop->sgttyb)); tiop->flags &= ~SGTTY_SET; } - readline_echoing_p = 1; + _rl_echoing_p = 1; #if defined (TIOCLSET) if (tiop->flags & LFLAG_SET) @@ -297,7 +237,8 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) int meta_flag; TIOTYPE oldtio, *tiop; { - readline_echoing_p = (oldtio.sgttyb.sg_flags & ECHO); + _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. */ @@ -400,6 +341,9 @@ 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 @@ -425,10 +369,10 @@ save_tty_chars (tiop) #ifdef VREPRINT _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT]; #endif - _rl_tty_chars.t_intr = tiop->c_cc[VINTR]; - _rl_tty_chars.t_quit = tiop->c_cc[VQUIT]; + _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_tty_chars.t_susp = tiop->c_cc[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]; @@ -456,7 +400,7 @@ static void rltty_warning (msg) char *msg; { - fprintf (stderr, "readline: warning: %s\n", msg); + _rl_errmsg ("warning: %s", msg); } #endif @@ -467,7 +411,7 @@ TIOTYPE *tp; { if ((tp->c_oflag & OPOST) == 0) { - rltty_warning ("turning on OPOST for terminal\r"); + _rl_errmsg ("warning: turning on OPOST for terminal\r"); tp->c_oflag |= OPOST|ONLCR; } } @@ -492,8 +436,8 @@ _get_tty_settings (tty, tiop) } if (OUTPUT_BEING_FLUSHED (tiop)) { -#if defined (FLUSHO) && defined (_AIX41) - rltty_warning ("turning off output flushing"); +#if defined (FLUSHO) + _rl_errmsg ("warning: turning off output flushing"); tiop->c_lflag &= ~FLUSHO; break; #else @@ -513,6 +457,7 @@ get_tty_settings (tty, tiop) { set_winsize (tty); + errno = 0; if (_get_tty_settings (tty, tiop) < 0) return -1; @@ -571,7 +516,8 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) int meta_flag; TIOTYPE oldtio, *tiop; { - readline_echoing_p = (oldtio.c_lflag & ECHO); + _rl_echoing_p = (oldtio.c_lflag & ECHO); + _rl_echoctl = (oldtio.c_lflag & ECHOCTL); tiop->c_lflag &= ~(ICANON | ECHO); @@ -626,9 +572,23 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ } -#endif /* NEW_TTY_DRIVER */ +#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 (meta_flag) + int meta_flag; +{ + _rl_echoing_p = 1; +} + +void +rl_deprep_terminal () +{ +} + +#else /* ! NO_TTY_DRIVER */ void rl_prep_terminal (meta_flag) int meta_flag; @@ -640,25 +600,57 @@ rl_prep_terminal (meta_flag) return; /* Try to keep this function from being INTerrupted. */ - block_sigint (); + _rl_block_sigint (); tty = fileno (rl_instream); if (get_tty_settings (tty, &tio) < 0) { - release_sigint (); +#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) { - release_sigint (); + _rl_release_sigint (); return; } @@ -669,7 +661,7 @@ rl_prep_terminal (meta_flag) terminal_prepped = 1; RL_SETSTATE(RL_STATE_TERMPREPPED); - release_sigint (); + _rl_release_sigint (); } /* Restore the terminal's normal settings and modes. */ @@ -682,7 +674,7 @@ rl_deprep_terminal () return; /* Try to keep this function from being interrupted. */ - block_sigint (); + _rl_block_sigint (); tty = fileno (rl_instream); @@ -693,15 +685,16 @@ rl_deprep_terminal () if (set_tty_settings (tty, &otio) < 0) { - release_sigint (); + _rl_release_sigint (); return; } terminal_prepped = 0; RL_UNSETSTATE(RL_STATE_TERMPREPPED); - release_sigint (); + _rl_release_sigint (); } +#endif /* !NO_TTY_DRIVER */ /* **************************************************************** */ /* */ @@ -713,6 +706,10 @@ int rl_restart_output (count, key) int count, key; { +#if defined (__MINGW32__) + return 0; +#else /* !__MING32__ */ + int fildes = fileno (rl_outstream); #if defined (TIOCSTART) #if defined (apollo) @@ -740,12 +737,17 @@ rl_restart_output (count, key) #endif /* !TIOCSTART */ return 0; +#endif /* !__MINGW32__ */ } int rl_stop_output (count, key) int count, key; { +#if defined (__MINGW32__) + return 0; +#else + int fildes = fileno (rl_instream); #if defined (TIOCSTOP) @@ -768,6 +770,7 @@ rl_stop_output (count, key) #endif /* !TIOCSTOP */ return 0; +#endif /* !__MINGW32__ */ } /* **************************************************************** */ @@ -776,70 +779,105 @@ rl_stop_output (count, key) /* */ /* **************************************************************** */ +#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 (kmap, tiop, sc, func) + 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 (kmap, ttybuff) + 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 (kmap, tiop, sc, func) + 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 (kmap, ttybuff) + 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) + 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 (kmap) Keymap kmap; { +#if !defined (NO_TTY_DRIVER) TIOTYPE ttybuff; - int tty = fileno (rl_instream); + int tty; -#if defined (NEW_TTY_DRIVER) - -#define SET_SPECIAL(sc, func) \ - do \ - { \ - int ic; \ - ic = sc; \ - if (ic != -1 && kmap[(unsigned char)ic].type == ISFUNC) \ - kmap[(unsigned char)ic].function = func; \ - } \ - while (0) + tty = fileno (rl_instream); if (get_tty_settings (tty, &ttybuff) == 0) - { - 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 */ - -#define SET_SPECIAL(sc, func) \ - do \ - { \ - unsigned char uc; \ - uc = ttybuff.c_cc[sc]; \ - if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \ - kmap[uc].function = func; \ - } \ - while (0) - - if (get_tty_settings (tty, &ttybuff) == 0) - { - 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) - SET_SPECIAL (VWERASE, rl_unix_word_rubout); -# endif /* VWERASE && TERMIOS_TTY_DRIVER */ - } -#endif /* !NEW_TTY_DRIVER */ + _rl_bind_tty_special_chars (kmap, ttybuff); +#endif } /* New public way to set the system default editing chars to their readline @@ -851,9 +889,33 @@ rl_tty_set_default_bindings (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 (kmap) + 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) +#if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) int _rl_disable_tty_signals () { diff --git a/src/bin/bash/lib/readline/rltty.h b/src/bin/bash/lib/readline/rltty.h index 029a3fbc0e..5bcc946b27 100644 --- a/src/bin/bash/lib/readline/rltty.h +++ b/src/bin/bash/lib/readline/rltty.h @@ -1,25 +1,23 @@ /* rltty.h - tty driver-related definitions used by some library files. */ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -61,22 +59,22 @@ #endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ typedef struct _rl_tty_chars { - char t_eof; - char t_eol; - char t_eol2; - char t_erase; - char t_werase; - char t_kill; - char t_reprint; - char t_intr; - char t_quit; - char t_susp; - char t_dsusp; - char t_start; - char t_stop; - char t_lnext; - char t_flush; - char t_status; + 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/src/bin/bash/lib/readline/rltypedefs.h b/src/bin/bash/lib/readline/rltypedefs.h index f3280e9fce..60f29a18b5 100644 --- a/src/bin/bash/lib/readline/rltypedefs.h +++ b/src/bin/bash/lib/readline/rltypedefs.h @@ -1,24 +1,23 @@ /* rltypedefs.h -- Type declarations for readline functions. */ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -79,6 +78,12 @@ 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 diff --git a/src/bin/bash/lib/readline/rlwinsize.h b/src/bin/bash/lib/readline/rlwinsize.h index 7838154d02..d198fcf872 100644 --- a/src/bin/bash/lib/readline/rlwinsize.h +++ b/src/bin/bash/lib/readline/rlwinsize.h @@ -1,26 +1,24 @@ /* rlwinsize.h -- an attempt to isolate some of the system-specific defines for `struct winsize' and TIOCGWINSZ. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -53,5 +51,8 @@ # endif /* HAVE_SYS_PTE_H */ #endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ -#endif /* _RL_WINSIZE_H */ +#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/src/bin/bash/lib/readline/savestring.c b/src/bin/bash/lib/readline/savestring.c index c7ebeb1e55..63f467a06a 100644 --- a/src/bin/bash/lib/readline/savestring.c +++ b/src/bin/bash/lib/readline/savestring.c @@ -1,24 +1,25 @@ -/* savestring.c */ +/* savestring.c - function version of savestring for backwards compatibility */ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998,2003 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/lib/readline/search.c b/src/bin/bash/lib/readline/search.c index 7e0d60b5eb..82984f19d9 100644 --- a/src/bin/bash/lib/readline/search.c +++ b/src/bin/bash/lib/readline/search.c @@ -1,25 +1,24 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. - This file is part of the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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 . +*/ - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) @@ -53,6 +52,8 @@ #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. */ @@ -70,11 +71,16 @@ static int history_string_size; static void make_history_line_current PARAMS((HIST_ENTRY *)); static int noninc_search_from_pos PARAMS((char *, int, int)); -static void noninc_dosearch PARAMS((char *, int)); -static void noninc_search PARAMS((int, int)); +static int noninc_dosearch PARAMS((char *, int)); +static int noninc_search PARAMS((int, int)); static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((void)); +static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); +static int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, 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. */ @@ -82,8 +88,16 @@ static void make_history_line_current (entry) HIST_ENTRY *entry; { - rl_replace_line (entry->line, 0); - rl_undo_list = (UNDO_LIST *)entry->data; + _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); @@ -125,8 +139,8 @@ noninc_search_from_pos (string, pos, dir) /* Search for a line in the history containing STRING. If DIR is < 0, the search is backwards through previous entries, else through subsequent - entries. */ -static void + entries. Returns 1 if the search was successful, 0 otherwise. */ +static int noninc_dosearch (string, dir) char *string; int dir; @@ -137,7 +151,7 @@ noninc_dosearch (string, dir) if (string == 0 || *string == '\0' || noninc_history_pos < 0) { rl_ding (); - return; + return 0; } pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir); @@ -148,7 +162,7 @@ noninc_dosearch (string, dir) rl_clear_message (); rl_point = 0; rl_ding (); - return; + return 0; } noninc_history_pos = pos; @@ -159,7 +173,7 @@ noninc_dosearch (string, dir) #if defined (VI_MODE) if (rl_editing_mode != vi_mode) #endif - history_set_pos (oldpos); + history_set_pos (oldpos); make_history_line_current (entry); @@ -167,6 +181,163 @@ noninc_dosearch (string, dir) rl_mark = rl_end; rl_clear_message (); + return 1; +} + +static _rl_search_cxt * +_rl_nsearch_init (dir, pchar) + int dir, 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 */ + + 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, 0); + free (p); + + RL_SETSTATE(RL_STATE_NSEARCH); + + _rl_nscxt = cxt; + + return cxt; +} + +static int +_rl_nsearch_cleanup (cxt, r) + _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 (cxt) + _rl_search_cxt *cxt; +{ + rl_maybe_unsave_line (); + rl_clear_message (); + rl_point = cxt->save_point; + rl_mark = cxt->save_mark; + 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 (cxt, c) + _rl_search_cxt *cxt; + int 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; + + 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) (); + 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 (cxt) + _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)); } /* Search non-interactively through the history list. DIR < 0 means to @@ -174,122 +345,37 @@ noninc_dosearch (string, dir) 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 void +static int noninc_search (dir, pchar) int dir; int pchar; { - int saved_point, saved_mark, c; - char *p; -#if defined (HANDLE_MULTIBYTE) - char mb[MB_LEN_MAX]; -#endif + _rl_search_cxt *cxt; + int c, r; - rl_maybe_save_line (); - saved_point = rl_point; - saved_mark = rl_mark; + cxt = _rl_nsearch_init (dir, pchar); - /* Use the line buffer to read the search string. */ - rl_line_buffer[0] = 0; - rl_end = rl_point = 0; + if (RL_ISSTATE (RL_STATE_CALLBACK)) + return (0); - p = _rl_make_prompt_for_search (pchar ? pchar : ':'); - rl_message (p, 0, 0); - free (p); - -#define SEARCH_RETURN rl_restore_prompt (); RL_UNSETSTATE(RL_STATE_NSEARCH); return - - RL_SETSTATE(RL_STATE_NSEARCH); /* Read the search string. */ + r = 0; while (1) { - RL_SETSTATE(RL_STATE_MOREINPUT); - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - c = _rl_read_mbstring (c, mb, MB_LEN_MAX); -#endif + c = _rl_search_getchar (cxt); if (c == 0) break; - switch (c) - { - case CTRL('H'): - case RUBOUT: - if (rl_point == 0) - { - rl_maybe_unsave_line (); - rl_clear_message (); - rl_point = saved_point; - rl_mark = saved_mark; - SEARCH_RETURN; - } - _rl_rubout_char (1, c); - break; - - case CTRL('W'): - rl_unix_word_rubout (1, c); - break; - - case CTRL('U'): - rl_unix_line_discard (1, c); - break; - - case RETURN: - case NEWLINE: - goto dosearch; - /* NOTREACHED */ - break; - - case CTRL('C'): - case CTRL('G'): - rl_maybe_unsave_line (); - rl_clear_message (); - rl_point = saved_point; - rl_mark = saved_mark; - rl_ding (); - SEARCH_RETURN; - - default: -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_insert_text (mb); - else -#endif - _rl_insert_char (1, c); - break; - } - (*rl_redisplay_function) (); + r = _rl_nsearch_dispatch (cxt, c); + if (r < 0) + return 1; + else if (r == 0) + break; } - dosearch: - rl_mark = saved_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) - { - rl_ding (); - SEARCH_RETURN; - } - } - else - { - /* We want to start the search from the current history position. */ - noninc_history_pos = where_history (); - FREE (noninc_search_string); - noninc_search_string = savestring (rl_line_buffer); - } - - rl_restore_prompt (); - noninc_dosearch (noninc_search_string, dir); - RL_UNSETSTATE(RL_STATE_NSEARCH); + 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 @@ -298,8 +384,7 @@ int rl_noninc_forward_search (count, key) int count, key; { - noninc_search (1, (key == '?') ? '?' : 0); - return 0; + return noninc_search (1, (key == '?') ? '?' : 0); } /* Reverse search the history list for a string. If the vi-mode code @@ -308,8 +393,7 @@ int rl_noninc_reverse_search (count, key) int count, key; { - noninc_search (-1, (key == '/') ? '/' : 0); - return 0; + return noninc_search (-1, (key == '/') ? '/' : 0); } /* Search forward through the history list for the last string searched @@ -318,13 +402,15 @@ int rl_noninc_forward_search_again (count, key) int count, key; { + int r; + if (!noninc_search_string) { rl_ding (); return (-1); } - noninc_dosearch (noninc_search_string, 1); - return 0; + r = noninc_dosearch (noninc_search_string, 1); + return (r != 1); } /* Reverse search in the history list for the last string searched @@ -333,15 +419,34 @@ int rl_noninc_reverse_search_again (count, key) int count, key; { + int r; + if (!noninc_search_string) { rl_ding (); return (-1); } - noninc_dosearch (noninc_search_string, -1); - return 0; + r = noninc_dosearch (noninc_search_string, -1); + return (r != 1); } +#if defined (READLINE_CALLBACKS) +int +_rl_nsearch_callback (cxt) + _rl_search_cxt *cxt; +{ + int c, r; + + c = _rl_search_getchar (cxt); + 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 (count, dir) int count, dir; diff --git a/src/bin/bash/lib/readline/shell.c b/src/bin/bash/lib/readline/shell.c index ad27cc1488..18b4f03a71 100644 --- a/src/bin/bash/lib/readline/shell.c +++ b/src/bin/bash/lib/readline/shell.c @@ -1,25 +1,25 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -48,8 +48,12 @@ # include #endif +#if defined (HAVE_FCNTL_H) #include +#endif +#if defined (HAVE_PWD_H) #include +#endif #include @@ -57,9 +61,9 @@ #include "rlshell.h" #include "xmalloc.h" -#if !defined (HAVE_GETPW_DECLS) +#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) extern struct passwd *getpwuid PARAMS((uid_t)); -#endif /* !HAVE_GETPW_DECLS */ +#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ #ifndef NULL # define NULL 0 @@ -122,23 +126,27 @@ sh_set_lines_and_columns (lines, cols) { char *b; -#if defined (HAVE_PUTENV) - b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); - sprintf (b, "LINES=%d", lines); - putenv (b); - b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); - sprintf (b, "COLUMNS=%d", cols); - putenv (b); -#else /* !HAVE_PUTENV */ -# if defined (HAVE_SETENV) +#if defined (HAVE_SETENV) b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); sprintf (b, "%d", lines); setenv ("LINES", b, 1); + free (b); + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); sprintf (b, "%d", cols); setenv ("COLUMNS", b, 1); -# endif /* HAVE_SETENV */ -#endif /* !HAVE_PUTENV */ + free (b); +#else /* !HAVE_SETENV */ +# if defined (HAVE_PUTENV) + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); + sprintf (b, "LINES=%d", lines); + putenv (b); + + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); + sprintf (b, "COLUMNS=%d", cols); + putenv (b); +# endif /* HAVE_PUTENV */ +#endif /* !HAVE_SETENV */ } char * @@ -155,9 +163,11 @@ sh_get_home_dir () struct passwd *entry; home_dir = (char *)NULL; +#if defined (HAVE_GETPWUID) entry = getpwuid (getuid ()); if (entry) home_dir = entry->pw_dir; +#endif return (home_dir); } @@ -171,6 +181,7 @@ int sh_unset_nodelay_mode (fd) int fd; { +#if defined (HAVE_FCNTL) int flags, bflags; if ((flags = fcntl (fd, F_GETFL, 0)) < 0) @@ -191,6 +202,7 @@ sh_unset_nodelay_mode (fd) flags &= ~bflags; return (fcntl (fd, F_SETFL, flags)); } +#endif return 0; } diff --git a/src/bin/bash/lib/readline/signals.c b/src/bin/bash/lib/readline/signals.c index 0a1468b6b2..325ae8cce4 100644 --- a/src/bin/bash/lib/readline/signals.c +++ b/src/bin/bash/lib/readline/signals.c @@ -1,24 +1,24 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -40,13 +40,14 @@ # include #endif /* GWINSZ_IN_SYS_IOCTL */ -#if defined (HANDLE_SIGNALS) /* 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 @@ -73,9 +74,16 @@ 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 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 @@ -85,8 +93,21 @@ 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 _rl_interrupt_immediately = 0; +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. */ +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; @@ -106,9 +127,33 @@ static sighandler_cxt old_winch; /* Readline signal handler functions. */ +/* Called from RL_CHECK_SIGNALS() macro */ +RETSIGTYPE +_rl_signal_handler (sig) +{ + _rl_caught_signal = 0; /* XXX */ + + _rl_handle_signal (sig); + SIGHANDLER_RETURN; +} + static RETSIGTYPE rl_signal_handler (sig) int sig; +{ + if (_rl_interrupt_immediately) + { + _rl_interrupt_immediately = 0; + _rl_handle_signal (sig); + } + + _rl_caught_signal = sig; + SIGHANDLER_RETURN; +} + +static RETSIGTYPE +_rl_handle_signal (sig) + int sig; { #if defined (HAVE_POSIX_SIGNALS) sigset_t set; @@ -125,27 +170,38 @@ rl_signal_handler (sig) #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 */ switch (sig) { case SIGINT: + _rl_reset_completion_state (); rl_free_line_state (); /* FALLTHROUGH */ + case SIGTERM: #if defined (SIGTSTP) case SIGTSTP: case SIGTTOU: case SIGTTIN: #endif /* SIGTSTP */ +#if defined (SIGALRM) case SIGALRM: - case SIGTERM: +#endif +#if defined (SIGQUIT) case SIGQUIT: +#endif + rl_echo_signal_char (sig); rl_cleanup_after_signal (); #if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); sigdelset (&set, sig); #else /* !HAVE_POSIX_SIGNALS */ @@ -158,7 +214,11 @@ rl_signal_handler (sig) signal (sig, SIG_ACK); #endif +#if defined (HAVE_KILL) kill (getpid (), sig); +#else + raise (sig); /* assume we have raise */ +#endif /* Let the signal that we just sent through. */ #if defined (HAVE_POSIX_SIGNALS) @@ -233,7 +293,11 @@ rl_set_sighandler (sig, handler, ohandler) struct sigaction act; act.sa_handler = handler; - act.sa_flags = 0; /* XXX - should we set SA_RESTART for SIGWINCH? */ +# 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); @@ -270,13 +334,51 @@ rl_set_signals () { 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 (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 (&oset); + sigprocmask (SIG_BLOCK, &bset, &oset); +#endif + rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term); +#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); @@ -288,6 +390,7 @@ rl_set_signals () 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); @@ -302,6 +405,10 @@ rl_set_signals () #endif /* SIGTTIN */ signals_set_flag = 1; + +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); +#endif } #if defined (SIGWINCH) @@ -326,8 +433,12 @@ rl_clear_signals () rl_sigaction (SIGINT, &old_int, &dummy); rl_sigaction (SIGTERM, &old_term, &dummy); +#if defined (SIGQUIT) rl_sigaction (SIGQUIT, &old_quit, &dummy); +#endif +#if defined (SIGALRM) rl_sigaction (SIGALRM, &old_alrm, &dummy); +#endif #if defined (SIGTSTP) rl_sigaction (SIGTSTP, &old_tstp, &dummy); @@ -362,16 +473,18 @@ void rl_cleanup_after_signal () { _rl_clean_up_for_exit (); - (*rl_deprep_term_function) (); - rl_clear_signals (); + 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 () { - (*rl_prep_term_function) (_rl_meta_flag); + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); rl_set_signals (); } @@ -392,7 +505,109 @@ rl_free_line_state () _rl_kill_kbd_macro (); rl_clear_message (); - _rl_init_argument (); + _rl_reset_argument (); } #endif /* HANDLE_SIGNALS */ + +/* **************************************************************** */ +/* */ +/* SIGINT Management */ +/* */ +/* **************************************************************** */ + +#if defined (HAVE_POSIX_SIGNALS) +static sigset_t sigint_set, sigint_oset; +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) +static int sigint_oldmask; +# endif /* HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + +static int sigint_blocked; + +/* Cause SIGINT to not be delivered until the corresponding call to + release_sigint(). */ +void +_rl_block_sigint () +{ + if (sigint_blocked) + return; + +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&sigint_set); + sigemptyset (&sigint_oset); + sigaddset (&sigint_set, SIGINT); + sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset); +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) + sigint_oldmask = sigblock (sigmask (SIGINT)); +# else /* !HAVE_BSD_SIGNALS */ +# if defined (HAVE_USG_SIGHOLD) + sighold (SIGINT); +# endif /* HAVE_USG_SIGHOLD */ +# endif /* !HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + + sigint_blocked = 1; +} + +/* Allow SIGINT to be delivered. */ +void +_rl_release_sigint () +{ + if (sigint_blocked == 0) + return; + +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL); +#else +# if defined (HAVE_BSD_SIGNALS) + sigsetmask (sigint_oldmask); +# else /* !HAVE_BSD_SIGNALS */ +# if defined (HAVE_USG_SIGHOLD) + sigrelse (SIGINT); +# endif /* HAVE_USG_SIGHOLD */ +# endif /* !HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + + sigint_blocked = 0; +} + +/* **************************************************************** */ +/* */ +/* Echoing special control characters */ +/* */ +/* **************************************************************** */ +void +rl_echo_signal_char (sig) + int sig; +{ + char cstr[3]; + int cslen, c; + + if (_rl_echoctl == 0) + return; + + switch (sig) + { + case SIGINT: c = _rl_intr_char; break; + case SIGQUIT: c = _rl_quit_char; break; + case SIGTSTP: c = _rl_susp_char; break; + 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/src/bin/bash/lib/readline/tcap.h b/src/bin/bash/lib/readline/tcap.h index 58ab894d93..9d09b7a9cf 100644 --- a/src/bin/bash/lib/readline/tcap.h +++ b/src/bin/bash/lib/readline/tcap.h @@ -1,25 +1,23 @@ /* tcap.h -- termcap library functions and variables. */ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of - routines for providing Emacs style line input to programs that ask - for it. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/lib/readline/terminal.c b/src/bin/bash/lib/readline/terminal.c index f3f5b6c47f..87fdf1012e 100644 --- a/src/bin/bash/lib/readline/terminal.c +++ b/src/bin/bash/lib/readline/terminal.c @@ -1,24 +1,24 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -66,9 +66,25 @@ #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 + #define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) #define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) +/* 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; + /* **************************************************************** */ /* */ /* Terminal and Termcap */ @@ -109,9 +125,7 @@ char *_rl_term_IC; char *_rl_term_dc; char *_rl_term_DC; -#if defined (HACK_TERMCAP_MOTION) char *_rl_term_forward_char; -#endif /* HACK_TERMCAP_MOTION */ /* How to go up a line. */ char *_rl_term_up; @@ -120,7 +134,7 @@ char *_rl_term_up; static char *_rl_visible_bell; /* Non-zero means the terminal can auto-wrap lines. */ -int _rl_term_autowrap; +int _rl_term_autowrap = -1; /* Non-zero means that this terminal has a meta key. */ static int term_has_meta; @@ -145,6 +159,9 @@ 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; @@ -179,6 +196,26 @@ _emx_get_screensize (swp, shp) } #endif +#if defined (__MINGW32__) +static void +_win_get_screensize (swp, shp) + int *swp, *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 @@ -191,26 +228,42 @@ _rl_get_screen_size (tty, ignore_env) #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) { - _rl_screenwidth = (int) window_size.ws_col; - _rl_screenheight = (int) window_size.ws_row; + wc = (int) window_size.ws_col; + wr = (int) window_size.ws_row; } #endif /* TIOCGWINSZ */ #if defined (__EMX__) - _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); + _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. */ + 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 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); @@ -224,6 +277,9 @@ _rl_get_screen_size (tty, ignore_env) 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 && term_string_buffer) _rl_screenheight = tgetnum ("li"); @@ -252,16 +308,20 @@ void _rl_set_screen_size (rows, cols) int rows, cols; { - if (rows == 0 || cols == 0) - return; + if (_rl_term_autowrap == -1) + _rl_init_terminal_io (rl_terminal_name); - _rl_screenheight = rows; - _rl_screenwidth = cols; + if (rows > 0) + _rl_screenheight = rows; + if (cols > 0) + { + _rl_screenwidth = cols; + if (_rl_term_autowrap == 0) + _rl_screenwidth--; + } - if (_rl_term_autowrap == 0) - _rl_screenwidth--; - - _rl_screenchars = _rl_screenwidth * _rl_screenheight; + if (rows > 0 || cols > 0) + _rl_screenchars = _rl_screenwidth * _rl_screenheight; } void @@ -280,11 +340,17 @@ rl_get_screen_size (rows, cols) if (cols) *cols = _rl_screenwidth; } + +void +rl_reset_screen_size () +{ + _rl_get_screen_size (fileno (rl_instream), 0); +} void rl_resize_terminal () { - if (readline_echoing_p) + if (_rl_echoing_p) { _rl_get_screen_size (fileno (rl_instream), 1); if (CUSTOM_REDISPLAY_FUNC ()) @@ -295,13 +361,13 @@ rl_resize_terminal () } struct _tc_string { - const char *tc_var; + 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 struct _tc_string tc_strings[] = +static const struct _tc_string tc_strings[] = { { "@7", &_rl_term_at7 }, { "DC", &_rl_term_DC }, @@ -313,6 +379,7 @@ static struct _tc_string tc_strings[] = { "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 }, @@ -325,9 +392,7 @@ static struct _tc_string tc_strings[] = { "le", &_rl_term_backspace }, { "mm", &_rl_term_mm }, { "mo", &_rl_term_mo }, -#if defined (HACK_TERMCAP_MOTION) { "nd", &_rl_term_forward_char }, -#endif { "pc", &_rl_term_pc }, { "up", &_rl_term_up }, { "vb", &_rl_visible_bell }, @@ -347,11 +412,7 @@ get_term_capabilities (bp) register int i; for (i = 0; i < NUM_TC_STRINGS; i++) -# ifdef __LCC__ *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); -# else - *(tc_strings[i].tc_value) = tgetstr (tc_strings[i].tc_var, bp); -# endif #endif tcap_initialized = 1; } @@ -367,7 +428,6 @@ _rl_init_terminal_io (terminal_name) term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL; tty = rl_instream ? fileno (rl_instream) : 0; - _rl_screenwidth = _rl_screenheight = 0; if (term == 0) term = "dumb"; @@ -400,12 +460,17 @@ _rl_init_terminal_io (terminal_name) _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--; + _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); + _rl_screenwidth--; #else /* !__EMX__ */ - _rl_get_screen_size (tty, 0); + _rl_get_screen_size (tty, 0); #endif /* !__EMX__ */ + } /* Defaults. */ if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) @@ -420,13 +485,11 @@ _rl_init_terminal_io (terminal_name) _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 = (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; -#if defined (HACK_TERMCAP_MOTION) - term_forward_char = (char *)NULL; -#endif + _rl_term_forward_char = (char *)NULL; _rl_terminal_can_insert = term_has_meta = 0; /* Reasonable defaults for tgoto(). Readline currently only uses @@ -452,7 +515,10 @@ _rl_init_terminal_io (terminal_name) _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn"); - _rl_get_screen_size (tty, 0); + /* 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', @@ -489,13 +555,15 @@ bind_termcap_arrow_keys (map) xkeymap = _rl_keymap; _rl_keymap = map; - _rl_bind_if_unbound (_rl_term_ku, rl_get_previous_history); - _rl_bind_if_unbound (_rl_term_kd, rl_get_next_history); - _rl_bind_if_unbound (_rl_term_kr, rl_forward); - _rl_bind_if_unbound (_rl_term_kl, rl_backward); + 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_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ - _rl_bind_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ + 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_keymap = xkeymap; } @@ -522,6 +590,7 @@ int rl_reset_terminal (terminal_name) const char *terminal_name; { + _rl_screenwidth = _rl_screenheight = 0; _rl_init_terminal_io (terminal_name); return 0; } @@ -572,10 +641,10 @@ _rl_backspace (count) int rl_crlf () { -#if defined (NEW_TTY_DRIVER) +#if defined (NEW_TTY_DRIVER) || defined (__MINT__) if (_rl_term_cr) tputs (_rl_term_cr, 1, _rl_output_character_function); -#endif /* NEW_TTY_DRIVER */ +#endif /* NEW_TTY_DRIVER || __MINT__ */ putc ('\n', _rl_out_stream); return 0; } @@ -584,7 +653,7 @@ rl_crlf () int rl_ding () { - if (readline_echoing_p) + if (_rl_echoing_p) { switch (_rl_bell_preference) { diff --git a/src/bin/bash/lib/readline/text.c b/src/bin/bash/lib/readline/text.c index 2a7b724f48..652b306b40 100644 --- a/src/bin/bash/lib/readline/text.c +++ b/src/bin/bash/lib/readline/text.c @@ -1,24 +1,24 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -62,6 +62,11 @@ 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 + /* **************************************************************** */ /* */ /* Insert and Delete */ @@ -170,6 +175,9 @@ _rl_fix_point (fix_mark_too) } #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 (text, start, end) const char *text; @@ -252,7 +260,7 @@ rl_forward_byte (count, key) { int end = rl_point + count; #if defined (VI_MODE) - int lend = rl_end > 0 ? rl_end - (rl_editing_mode == vi_mode) : rl_end; + int lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; #else int lend = rl_end; #endif @@ -288,10 +296,16 @@ rl_forward_char (count, key) if (count > 0) { + if (rl_point == rl_end && EMACS_MODE()) + { + rl_ding (); + return 0; + } + point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); #if defined (VI_MODE) - if (rl_end <= point && rl_editing_mode == vi_mode) + if (point >= rl_end && VI_COMMAND_MODE()) point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); #endif @@ -417,8 +431,7 @@ rl_end_of_line (count, key) return 0; } -/* XXX - these might need changes for multibyte characters */ -/* Move forward a word. We do what Emacs does. */ +/* Move forward a word. We do what Emacs does. Handles multibyte chars. */ int rl_forward_word (count, key) int count, key; @@ -435,68 +448,80 @@ rl_forward_word (count, key) /* 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_line_buffer[rl_point]; - if (rl_alphabetic (c) == 0) + c = _rl_char_value (rl_line_buffer, rl_point); + + if (_rl_walphabetic (c) == 0) { - while (++rl_point < rl_end) + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + while (rl_point < rl_end) { - c = rl_line_buffer[rl_point]; - if (rl_alphabetic (c)) + 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) return 0; - while (++rl_point < rl_end) + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + while (rl_point < rl_end) { - c = rl_line_buffer[rl_point]; - if (rl_alphabetic (c) == 0) + 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. */ +/* Move backward a word. We do what Emacs does. Handles multibyte chars. */ int rl_backward_word (count, key) int count, key; { - int c; + int c, p; if (count < 0) return (rl_forward_word (-count, key)); while (count) { - if (!rl_point) + if (rl_point == 0) return 0; /* Like rl_forward_word (), except that we look at the characters just before point. */ - c = rl_line_buffer[rl_point - 1]; - if (rl_alphabetic (c) == 0) + p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + c = _rl_char_value (rl_line_buffer, p); + + if (_rl_walphabetic (c) == 0) { - while (--rl_point) + rl_point = p; + while (rl_point > 0) { - c = rl_line_buffer[rl_point - 1]; - if (rl_alphabetic (c)) + 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) { - c = rl_line_buffer[rl_point - 1]; - if (rl_alphabetic (c) == 0) + 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; + rl_point = p; } --count; @@ -753,10 +778,8 @@ _rl_insert_char (count, c) return 0; } -#if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX == 1 || rl_byte_oriented) { -#endif /* 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 @@ -772,8 +795,8 @@ _rl_insert_char (count, c) str[0] = c; rl_insert_text (str); } -#if defined (HANDLE_MULTIBYTE) } +#if defined (HANDLE_MULTIBYTE) else { rl_insert_text (incoming); @@ -801,13 +824,10 @@ _rl_overwrite_char (count, c) k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); #endif + rl_begin_undo_group (); + for (i = 0; i < count; i++) { - rl_begin_undo_group (); - - if (rl_point < rl_end) - rl_delete (1, c); - #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mbkey); @@ -815,9 +835,12 @@ _rl_overwrite_char (count, c) #endif _rl_insert_char (1, c); - rl_end_undo_group (); + if (rl_point < rl_end) + rl_delete (1, c); } + rl_end_undo_group (); + return 0; } @@ -830,27 +853,66 @@ rl_insert (count, c) } /* Insert the next typed character verbatim. */ -int -rl_quoted_insert (count, key) - int count, key; +static int +_rl_insert_next (count) + int count; { int c; -#if defined (HANDLE_SIGNALS) - _rl_disable_tty_signals (); -#endif - RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (c < 0) + return -1; + #if defined (HANDLE_SIGNALS) - _rl_restore_tty_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 (data) + _rl_callback_generic_arg *data; +{ + int count; + + count = data->count; + + /* Deregister function, let rl_callback_read_char deallocate data */ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return _rl_insert_next (count); +} +#endif + +int +rl_quoted_insert (count, key) + int count, 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 + + return _rl_insert_next (count); +} + /* Insert a tab character. */ int rl_tab_insert (count, key) @@ -877,7 +939,8 @@ rl_newline (count, key) if (rl_editing_mode == vi_mode) { _rl_vi_done_inserting (); - _rl_vi_reset_last (); + if (_rl_vi_textmod_command (_rl_vi_last_command) == 0) /* XXX */ + _rl_vi_reset_last (); } #endif /* VI_MODE */ @@ -886,7 +949,7 @@ rl_newline (count, key) if (rl_erase_empty_line && rl_point == 0 && rl_end == 0) return 0; - if (readline_echoing_p) + if (_rl_echoing_p) _rl_update_final (); return 0; } @@ -935,9 +998,12 @@ _rl_overwrite_rubout (count, key) rl_delete_text (opoint, rl_point); /* Emacs puts point at the beginning of the sequence of spaces. */ - opoint = rl_point; - _rl_insert_char (l, ' '); - rl_point = opoint; + if (rl_point < rl_end) + { + opoint = rl_point; + _rl_insert_char (l, ' '); + rl_point = opoint; + } rl_end_undo_group (); @@ -981,43 +1047,17 @@ _rl_rubout_char (count, key) return -1; } + orig_point = rl_point; if (count > 1 || rl_explicit_arg) { - orig_point = rl_point; -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_backward_char (count, key); - else -#endif - rl_backward_byte (count, key); + rl_backward_char (count, key); rl_kill_text (orig_point, rl_point); } - else + else if (MB_CUR_MAX == 1 || rl_byte_oriented) { -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX == 1 || rl_byte_oriented) - { -#endif - c = rl_line_buffer[--rl_point]; - rl_delete_text (rl_point, rl_point + 1); -#if defined (HANDLE_MULTIBYTE) - } - else - { - int orig_point; - - orig_point = rl_point; - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - c = rl_line_buffer[rl_point]; - rl_delete_text (rl_point, orig_point); - } -#endif /* HANDLE_MULTIBYTE */ - - /* I don't think that the hack for end of line is needed for - multibyte chars. */ -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX == 1 || rl_byte_oriented) -#endif + 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 (c) && _rl_last_c_pos) { int l; @@ -1025,6 +1065,11 @@ _rl_rubout_char (count, key) _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; } @@ -1035,7 +1080,7 @@ int rl_delete (count, key) int count, key; { - int r; + int xpoint; if (count < 0) return (_rl_rubout_char (-count, key)); @@ -1048,28 +1093,21 @@ rl_delete (count, key) if (count > 1 || rl_explicit_arg) { - int orig_point = rl_point; -#if defined (HANDLE_MULTIBYTE) + xpoint = rl_point; if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_forward_char (count, key); else -#endif rl_forward_byte (count, key); - r = rl_kill_text (orig_point, rl_point); - rl_point = orig_point; - return r; + rl_kill_text (xpoint, rl_point); + rl_point = xpoint; } else { - int new_point; - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - new_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); - else - new_point = rl_point + 1; - - return (rl_delete_text (rl_point, new_point)); + 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 @@ -1106,6 +1144,10 @@ rl_delete_horizontal_space (count, ignore) rl_delete_text (start, rl_point); rl_point = start; } + + if (rl_point < 0) + rl_point = 0; + return 0; } @@ -1199,42 +1241,80 @@ static int rl_change_case (count, op) int count, op; { - register int start, end; - int inword, c; + int start, next, end; + int inword, c, nc, nop; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc, nwc; + char mb[MB_LEN_MAX+1]; + int mlen; + 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); - for (inword = 0; start < end; start++) + inword = 0; + while (start < end) { - c = rl_line_buffer[start]; - switch (op) + 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) { - case UpCase: - rl_line_buffer[start] = _rl_to_upper (c); - break; - - case DownCase: - rl_line_buffer[start] = _rl_to_lower (c); - break; - - case CapCase: - rl_line_buffer[start] = (inword == 0) ? _rl_to_upper (c) : _rl_to_lower (c); - inword = rl_alphabetic (rl_line_buffer[start]); - break; - - default: - rl_ding (); - return -1; + inword = 0; + start = next; + continue; } + + if (op == CapCase) + { + nop = inword ? DownCase : UpCase; + inword = 1; + } + else + nop = op; + if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii (c)) + { + nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); + rl_line_buffer[start] = nc; + } +#if defined (HANDLE_MULTIBYTE) + else + { + mbrtowc (&wc, rl_line_buffer + start, end - start, &mps); + nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); + if (nwc != wc) /* just skip unchanged characters */ + { + mlen = wcrtomb (mb, nwc, &mps); + if (mlen > 0) + mb[mlen] = '\0'; + /* Assume the same width */ + strncpy (rl_line_buffer + start, mb, mlen); + } + } +#endif + + start = next; } + rl_point = end; return 0; } @@ -1314,11 +1394,11 @@ rl_transpose_chars (count, key) { #if defined (HANDLE_MULTIBYTE) char *dummy; - int i, prev_point; + int i; #else char dummy[2]; #endif - int char_length; + int char_length, prev_point; if (count == 0) return 0; @@ -1333,20 +1413,12 @@ rl_transpose_chars (count, key) if (rl_point == rl_end) { - 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; + rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); count = 1; } -#if defined (HANDLE_MULTIBYTE) prev_point = rl_point; - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - else -#endif - rl_point--; + rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); #if defined (HANDLE_MULTIBYTE) char_length = prev_point - rl_point; @@ -1457,6 +1529,9 @@ _rl_char_search (count, fdir, bdir) 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 @@ -1473,6 +1548,9 @@ _rl_char_search (count, fdir, bdir) c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (c < 0) + return -1; + if (count < 0) return (_rl_char_search_internal (-count, bdir, c)); else @@ -1480,10 +1558,33 @@ _rl_char_search (count, fdir, bdir) } #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 (count, key) int count, 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)); } @@ -1491,6 +1592,17 @@ int rl_backward_char_search (count, key) int count, 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)); } diff --git a/src/bin/bash/lib/readline/tilde.c b/src/bin/bash/lib/readline/tilde.c index 154f7f8108..088ff1540b 100644 --- a/src/bin/bash/lib/readline/tilde.c +++ b/src/bin/bash/lib/readline/tilde.c @@ -1,23 +1,23 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988,1989 Free Software Foundation, Inc. +/* Copyright (C) 1988-2009 Free Software Foundation, Inc. - This file is part of GNU Readline, a library for reading lines - of text with interactive input and history editing. + 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 2, or (at your option) any - later version. + 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. + Readline is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Readline; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Readline. If not, see . +*/ #if defined (HAVE_CONFIG_H) # include @@ -43,7 +43,9 @@ #endif /* HAVE_STDLIB_H */ #include +#if defined (HAVE_PWD_H) #include +#endif #include "tilde.h" @@ -54,8 +56,12 @@ static void *xmalloc (), *xrealloc (); #endif /* TEST || STATIC_MALLOC */ #if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) extern struct passwd *getpwuid PARAMS((uid_t)); +# endif +# if defined (HAVE_GETPWNAM) extern struct passwd *getpwnam PARAMS((const char *)); +# endif #endif /* !HAVE_GETPW_DECLS */ #if !defined (savestring) @@ -230,7 +236,7 @@ tilde_expand (string) string += end; expansion = tilde_expand_word (tilde_word); - free (tilde_word); + xfree (tilde_word); len = strlen (expansion); #ifdef __CYGWIN__ @@ -245,7 +251,7 @@ tilde_expand (string) strcpy (result + result_index, expansion); result_index += len; } - free (expansion); + xfree (expansion); } result[result_index] = '\0'; @@ -277,6 +283,39 @@ isolate_tilde_prefix (fname, lenp) 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 (fname, flags, lenp) + const char *fname; + int flags, *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 * @@ -338,7 +377,7 @@ tilde_expand_word (filename) if (expansion) { dirname = glue_prefix_and_suffix (expansion, filename, user_len); - free (username); + xfree (username); free (expansion); return (dirname); } @@ -347,7 +386,11 @@ tilde_expand_word (filename) /* 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, @@ -361,19 +404,20 @@ tilde_expand_word (filename) free (expansion); } } - free (username); /* 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 - { - free (username); - dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); - } + dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); +#endif + xfree (username); +#if defined (HAVE_GETPWENT) endpwent (); +#endif return (dirname); } diff --git a/src/bin/bash/lib/readline/tilde.h b/src/bin/bash/lib/readline/tilde.h index f8182c999d..e26dd0476f 100644 --- a/src/bin/bash/lib/readline/tilde.h +++ b/src/bin/bash/lib/readline/tilde.h @@ -1,25 +1,24 @@ /* tilde.h: Externally available variables and function in libtilde.a. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of + This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask for it. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -71,6 +70,9 @@ extern char *tilde_expand PARAMS((const char *)); 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 diff --git a/src/bin/bash/lib/readline/undo.c b/src/bin/bash/lib/readline/undo.c index 25c287b5a2..c0ba631f13 100644 --- a/src/bin/bash/lib/readline/undo.c +++ b/src/bin/bash/lib/readline/undo.c @@ -1,25 +1,25 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -50,6 +50,8 @@ #include "rlprivate.h" #include "xmalloc.h" +extern void replace_history_data PARAMS((int, histdata_t *, histdata_t *)); + /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ int _rl_doing_an_undo = 0; @@ -66,6 +68,24 @@ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL; /* */ /* **************************************************************** */ +static UNDO_LIST * +alloc_undo_entry (what, start, end, text) + enum undo_code what; + int start, 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 @@ -74,11 +94,9 @@ rl_add_undo (what, start, end, text) int start, end; char *text; { - UNDO_LIST *temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST)); - temp->what = what; - temp->start = start; - temp->end = end; - temp->text = text; + UNDO_LIST *temp; + + temp = alloc_undo_entry (what, start, end, text); temp->next = rl_undo_list; rl_undo_list = temp; } @@ -87,17 +105,57 @@ rl_add_undo (what, start, end, text) void rl_free_undo_list () { + UNDO_LIST *release, *orig_list; + + orig_list = rl_undo_list; while (rl_undo_list) { - UNDO_LIST *release = rl_undo_list; + release = rl_undo_list; rl_undo_list = rl_undo_list->next; if (release->what == UNDO_DELETE) - free (release->text); + xfree (release->text); - free (release); + xfree (release); } rl_undo_list = (UNDO_LIST *)NULL; + replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL); +} + +UNDO_LIST * +_rl_copy_undo_entry (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 (head) + UNDO_LIST *head; +{ + UNDO_LIST *list, *new, *roving, *c; + + 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 @@ -113,7 +171,7 @@ rl_do_undo () start = end = waiting_for_begin = 0; do { - if (!rl_undo_list) + if (rl_undo_list == 0) return (0); _rl_doing_an_undo = 1; @@ -133,7 +191,7 @@ rl_do_undo () case UNDO_DELETE: rl_point = start; rl_insert_text (rl_undo_list->text); - free (rl_undo_list->text); + xfree (rl_undo_list->text); break; /* Undoing inserts means deleting some text. */ @@ -161,7 +219,9 @@ rl_do_undo () release = rl_undo_list; rl_undo_list = rl_undo_list->next; - free (release); + replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); + + xfree (release); } while (waiting_for_begin); @@ -231,13 +291,18 @@ int rl_revert_line (count, key) int count, key; { - if (!rl_undo_list) + 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; } diff --git a/src/bin/bash/lib/readline/util.c b/src/bin/bash/lib/readline/util.c index c7bd360e43..3a3e91ecf8 100644 --- a/src/bin/bash/lib/readline/util.c +++ b/src/bin/bash/lib/readline/util.c @@ -1,24 +1,24 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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) @@ -44,6 +44,7 @@ /* System-specific feature definitions and include files. */ #include "rldefs.h" +#include "rlmbutil.h" #if defined (TIOCSTAT_IN_SYS_IOCTL) # include @@ -65,7 +66,7 @@ in words, or 1 if it is. */ int _rl_allow_pathname_alphabetic_chars = 0; -static const char *pathname_alphabetic_chars = "/-_=~.#$"; +static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int rl_alphabetic (c) @@ -78,13 +79,29 @@ rl_alphabetic (c) strchr (pathname_alphabetic_chars, c) != NULL); } +#if defined (HANDLE_MULTIBYTE) +int +_rl_walphabetic (wc) + 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 () { rl_ding (); rl_clear_message (); - _rl_init_argument (); + _rl_reset_argument (); rl_clear_pending_input (); RL_UNSETSTATE (RL_STATE_MACRODEF); @@ -92,7 +109,7 @@ _rl_abort_internal () _rl_pop_executing_macro (); rl_last_func = (rl_command_func_t *)NULL; - longjmp (readline_top_level, 1); + longjmp (_rl_top_level, 1); return (0); } @@ -168,6 +185,7 @@ rl_tilde_expand (ignore, key) { homedir = tilde_expand ("~"); _rl_replace_text (homedir, start, end); + xfree (homedir); return (0); } else if (rl_line_buffer[start] != '~') @@ -195,14 +213,96 @@ rl_tilde_expand (ignore, key) strncpy (temp, rl_line_buffer + start, len); temp[len] = '\0'; homedir = tilde_expand (temp); - free (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 */ @@ -250,7 +350,7 @@ _rl_strpbrk (string1, string2) { v = _rl_get_char_len (string1, &ps); if (v > 1) - string += v - 1; /* -1 to account for auto-increment in loop */ + string1 += v - 1; /* -1 to account for auto-increment in loop */ } #endif } @@ -327,6 +427,16 @@ 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 (mem) + void *mem; +{ + if (mem) + free (mem); +} + /* Backwards compatibility, now that savestring has been removed from all `public' readline header files. */ #undef _rl_savestring @@ -336,3 +446,60 @@ _rl_savestring (s) { return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); } + +#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 () +{ + char fnbuf[128]; + + if (_rl_tracefp) + fclose (_rl_tracefp); + sprintf (fnbuf, "/var/tmp/rltrace.%ld", getpid()); + unlink(fnbuf); + _rl_tracefp = fopen (fnbuf, "w+"); + return _rl_tracefp != 0; +} + +int +_rl_trclose () +{ + int r; + + r = fclose (_rl_tracefp); + _rl_tracefp = 0; + return r; +} + +#endif diff --git a/src/bin/bash/lib/readline/vi_keymap.c b/src/bin/bash/lib/readline/vi_keymap.c index 53a67c674c..36631730e7 100644 --- a/src/bin/bash/lib/readline/vi_keymap.c +++ b/src/bin/bash/lib/readline/vi_keymap.c @@ -1,24 +1,23 @@ /* vi_keymap.c -- the keymap for vi_mode in readline (). */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ #if !defined (BUFSIZ) #include @@ -130,7 +129,7 @@ KEYMAP_ENTRY_ARRAY vi_movement_keymap = { { ISFUNC, rl_revert_line }, /* U */ { ISFUNC, (rl_command_func_t *)0x0 }, /* V */ { ISFUNC, rl_vi_next_word }, /* W */ - { ISFUNC, rl_rubout }, /* X */ + { ISFUNC, rl_vi_rubout }, /* X */ { ISFUNC, rl_vi_yank_to }, /* Y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */ @@ -151,7 +150,7 @@ KEYMAP_ENTRY_ARRAY vi_movement_keymap = { { ISFUNC, rl_vi_char_search }, /* f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ { ISFUNC, rl_backward_char }, /* h */ - { ISFUNC, rl_vi_insertion_mode }, /* i */ + { ISFUNC, rl_vi_insert_mode }, /* i */ { ISFUNC, rl_get_next_history }, /* j */ { ISFUNC, rl_get_previous_history }, /* k */ { ISFUNC, rl_forward_char }, /* l */ diff --git a/src/bin/bash/lib/readline/vi_mode.c b/src/bin/bash/lib/readline/vi_mode.c index 89303644c5..5f35cf0806 100644 --- a/src/bin/bash/lib/readline/vi_mode.c +++ b/src/bin/bash/lib/readline/vi_mode.c @@ -1,25 +1,25 @@ /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Readline. If not, see . +*/ + #define READLINE_LIBRARY /* **************************************************************** */ @@ -63,11 +63,13 @@ #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) #endif +int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ + /* Non-zero means enter insertion mode. */ static int _rl_vi_doing_insert; /* Command keys which do movement for xxx_to commands. */ -static const char *vi_motion = " hl^$0ftFT;,%wbeWBE|"; +static const char * const vi_motion = " hl^$0ftFT;,%wbeWBE|`"; /* Keymap used for vi replace characters. Created dynamically since rarely used. */ @@ -83,12 +85,12 @@ static int vi_continued_command; static char *vi_insert_buffer; static int vi_insert_buffer_size; -static int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ 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 @@ -99,15 +101,33 @@ static int _rl_vi_last_key_before_insert; static int vi_redoing; /* Text modification commands. These are the `redoable' commands. */ -static const char *vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; +static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; /* Arrays for the saved marks. */ static int vi_mark_chars['z' - 'a' + 1]; static void _rl_vi_stuff_insert PARAMS((int)); static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); + +static 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 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 + void _rl_vi_initialize_line () { @@ -115,6 +135,8 @@ _rl_vi_initialize_line () for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++) vi_mark_chars[i] = -1; + + RL_UNSETSTATE(RL_STATE_VICMDONCE); } void @@ -135,6 +157,16 @@ _rl_vi_set_last (key, repeat, sign) _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 (key, repeat, sign) + int key, repeat, sign; +{ + _rl_vi_set_last (key, repeat, sign); + rl_vi_insertion_mode (1, key); +} + /* Is the command C a VI mode text modification command? */ int _rl_vi_textmod_command (c) @@ -177,7 +209,34 @@ rl_vi_redo (count, c) _rl_vi_stuff_insert (count); /* And back up point over the last character inserted. */ if (rl_point > 0) - rl_point--; + _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 r = _rl_dispatch (_rl_vi_last_command, _rl_keymap); @@ -261,10 +320,12 @@ rl_vi_search (count, 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; @@ -297,10 +358,8 @@ rl_vi_complete (ignore, key) rl_complete (0, key); if (key == '*' || key == '\\') - { - _rl_vi_set_last (key, 1, rl_arg_sign); - rl_vi_insertion_mode (1, key); - } + rl_vi_start_inserting (key, 1, rl_arg_sign); + return (0); } @@ -310,8 +369,7 @@ rl_vi_tilde_expand (ignore, key) int ignore, key; { rl_tilde_expand (0, key); - _rl_vi_set_last (key, 1, rl_arg_sign); /* XXX */ - rl_vi_insertion_mode (1, key); + rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } @@ -429,7 +487,8 @@ rl_vi_eWord (count, ignore) /* 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])); + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + rl_point++; if (rl_point && rl_point < rl_end) { @@ -543,27 +602,36 @@ rl_vi_insert_beg (count, key) int count, key; { rl_beg_of_line (1, key); - rl_vi_insertion_mode (1, key); + rl_vi_insert_mode (1, key); return (0); } -int -rl_vi_append_mode (count, key) - int count, key; +static void +_rl_vi_append_forward (key) + int key; { + int point; + if (rl_point < rl_end) { if (MB_CUR_MAX == 1 || rl_byte_oriented) rl_point++; else { - int point = rl_point; + point = rl_point; rl_forward_char (1, key); if (point == rl_point) rl_point = rl_end; } } - rl_vi_insertion_mode (1, key); +} + +int +rl_vi_append_mode (count, key) + int count, key; +{ + _rl_vi_append_forward (key); + rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } @@ -597,13 +665,21 @@ rl_vi_insertion_mode (count, key) return (0); } +int +rl_vi_insert_mode (count, key) + int count, key; +{ + rl_vi_start_inserting (key, 1, rl_arg_sign); + return (0); +} + static void _rl_vi_save_insert (up) UNDO_LIST *up; { int len, start, end; - if (up == 0) + if (up == 0 || up->what != UNDO_INSERT) { if (vi_insert_buffer_size >= 1) vi_insert_buffer[0] = '\0'; @@ -640,7 +716,10 @@ _rl_vi_done_inserting () } else { - if (_rl_vi_last_key_before_insert == 'i' && rl_undo_list) + 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') @@ -660,6 +739,13 @@ rl_vi_movement_mode (count, 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 (); + + RL_SETSTATE (RL_STATE_VICMDONCE); return (0); } @@ -681,7 +767,7 @@ _rl_vi_change_mbchar_case (count) { wchar_t wc; char mb[MB_LEN_MAX+1]; - int mblen; + int mlen, p; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); @@ -704,11 +790,14 @@ _rl_vi_change_mbchar_case (count) /* Vi is kind of strange here. */ if (wc) { - mblen = wctomb (mb, wc); - if (mblen >= 0) - mb[mblen] = '\0'; + p = rl_point; + mlen = wcrtomb (mb, wc, &ps); + if (mlen >= 0) + mb[mlen] = '\0'; rl_begin_undo_group (); - rl_delete (1, 0); + rl_vi_delete (1, 0); + if (rl_point < p) /* Did we retreat at EOL? */ + rl_point++; /* XXX - should we advance more than 1 for mbchar? */ rl_insert_text (mb); rl_end_undo_group (); rl_vi_check (); @@ -725,12 +814,13 @@ int rl_vi_change_case (count, ignore) int count, ignore; { - char c = 0; + 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)); @@ -752,8 +842,11 @@ rl_vi_change_case (count, ignore) /* Vi is kind of strange here. */ if (c) { + p = rl_point; rl_begin_undo_group (); - rl_delete (1, c); + 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 (); @@ -771,11 +864,22 @@ rl_vi_put (count, 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); - rl_yank (1, key); + while (count--) + rl_yank (1, key); + rl_backward_char (1, key); return (0); } +static void +_rl_vi_backup () +{ + 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--; +} + int rl_vi_check () { @@ -811,6 +915,13 @@ rl_vi_domove (key, nextkey) RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (c < 0) + { + *nextkey = 0; + return -1; + } + *nextkey = c; if (!member (c, vi_motion)) @@ -819,11 +930,19 @@ rl_vi_domove (key, nextkey) { save = rl_numeric_arg; rl_numeric_arg = _rl_digit_value (c); + rl_explicit_arg = 1; + RL_SETSTATE (RL_STATE_NUMERICARG|RL_STATE_VIMOTION); rl_digit_loop1 (); + RL_UNSETSTATE (RL_STATE_VIMOTION); rl_numeric_arg *= save; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); /* real command */ RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (c < 0) + { + *nextkey = 0; + return -1; + } *nextkey = c; } else if (key == c && (key == 'd' || key == 'y' || key == 'c')) @@ -892,52 +1011,59 @@ rl_vi_domove (key, nextkey) 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 (c) + 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; + } + else + { + rl_clear_message (); + rl_stuff_char (key); + return 0; + } +} + /* 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 () { - int key, c; + int c, r; - RL_SETSTATE(RL_STATE_NUMERICARG); while (1) { - if (rl_numeric_arg > 1000000) - { - rl_explicit_arg = rl_numeric_arg = 0; - rl_ding (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - return 1; - } - rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); - RL_SETSTATE(RL_STATE_MOREINPUT); - key = c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (_rl_arg_overflow ()) + return 1; - if (c >= 0 && _rl_keymap[c].type == ISFUNC && - _rl_keymap[c].function == rl_universal_argument) - { - rl_numeric_arg *= 4; - continue; - } + c = _rl_arg_getchar (); - 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; - } - else - { - rl_clear_message (); - rl_stuff_char (key); - break; - } + r = _rl_vi_arg_dispatch (c); + if (r <= 0) + break; } RL_UNSETSTATE(RL_STATE_NUMERICARG); @@ -948,13 +1074,15 @@ int rl_vi_delete_to (count, key) int count, key; { - int c; + int c, start_pos; if (_rl_uppercase_p (key)) rl_stuff_char ('$'); else if (vi_redoing) rl_stuff_char (_rl_vi_last_motion); + start_pos = rl_point; + if (rl_vi_domove (key, &c)) { rl_ding (); @@ -963,7 +1091,8 @@ rl_vi_delete_to (count, key) /* These are the motion commands that do not require adjusting the mark. */ - if ((strchr (" l|h^0bB", c) == 0) && (rl_mark < rl_end)) + if (((strchr (" l|h^0bBFT`", c) == 0) && (rl_point >= start_pos)) && + (rl_mark < rl_end)) rl_mark++; rl_kill_text (rl_point, rl_mark); @@ -992,7 +1121,8 @@ rl_vi_change_to (count, key) /* 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^0bB", c) == 0) && (rl_mark < rl_end)) + if (((strchr (" l|hwW^0bBFT`", c) == 0) && (rl_point >= start_pos)) && + (rl_mark < rl_end)) rl_mark++; /* The cursor never moves with c[wW]. */ @@ -1017,8 +1147,7 @@ rl_vi_change_to (count, key) /* `C' does not save the text inserted for undoing or redoing. */ if (_rl_uppercase_p (key) == 0) _rl_vi_doing_insert = 1; - _rl_vi_set_last (key, count, rl_arg_sign); - rl_vi_insertion_mode (1, key); + rl_vi_start_inserting (key, rl_numeric_arg, rl_arg_sign); } return (0); @@ -1028,11 +1157,13 @@ int rl_vi_yank_to (count, key) int count, key; { - int c, save = rl_point; + int c, start_pos; if (_rl_uppercase_p (key)) rl_stuff_char ('$'); + start_pos = rl_point; + if (rl_vi_domove (key, &c)) { rl_ding (); @@ -1041,24 +1172,59 @@ rl_vi_yank_to (count, key) /* These are the motion commands that do not require adjusting the mark. */ - if ((strchr (" l|h^0%bB", c) == 0) && (rl_mark < rl_end)) + if (((strchr (" l|h^0%bBFT`", c) == 0) && (rl_point >= start_pos)) && + (rl_mark < rl_end)) rl_mark++; rl_begin_undo_group (); rl_kill_text (rl_point, rl_mark); rl_end_undo_group (); rl_do_undo (); - rl_point = save; + rl_point = start_pos; return (0); } +int +rl_vi_rubout (count, key) + int count, 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 (count, key) int count, key; { int end; + if (count < 0) + return (rl_vi_rubout (-count, key)); + if (rl_end == 0) { rl_ding (); @@ -1077,6 +1243,7 @@ rl_vi_delete (count, key) if (rl_point > 0 && rl_point == rl_end) rl_backward_char (1, key); + return (0); } @@ -1097,64 +1264,117 @@ rl_vi_first_print (count, 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 (data) + _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) + return -1; + +#if !defined (HANDLE_MULTIBYTE) + _rl_vi_last_search_char = c; +#endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; + +#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 (count, key) int count, key; { + int c; #if defined (HANDLE_MULTIBYTE) static char *target; - static int mb_len; + static int tlen; #else static char target; #endif - static int orig_dir, dir; if (key == ';' || key == ',') - dir = key == ';' ? orig_dir : -orig_dir; + _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 (vi_redoing) -#if defined (HANDLE_MULTIBYTE) - target = _rl_vi_last_search_mbchar; -#else - target = _rl_vi_last_search_char; + { + /* 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_func = _rl_vi_callback_char_search; + return (0); + } #endif else { #if defined (HANDLE_MULTIBYTE) - mb_len = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); - target = _rl_vi_last_search_mbchar; + 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); - _rl_vi_last_search_char = target = rl_read_key (); + c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (c < 0) + return -1; + _rl_vi_last_search_char = c; #endif } - - switch (key) - { - case 't': - orig_dir = dir = FTO; - break; - - case 'T': - orig_dir = dir = BTO; - break; - - case 'f': - orig_dir = dir = FFIND; - break; - - case 'F': - orig_dir = dir = BFIND; - break; - } } #if defined (HANDLE_MULTIBYTE) - return (_rl_char_search_internal (count, dir, target, mb_len)); + target = _rl_vi_last_search_mbchar; + tlen = _rl_vi_last_search_mblen; #else - return (_rl_char_search_internal (count, dir, target)); + 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 } @@ -1265,51 +1485,109 @@ rl_vi_bracktype (c) } } -/* XXX - think about reading an entire mbchar with _rl_read_mbchar and - inserting it in one bunch instead of the loop below (like in - rl_vi_char_search or _rl_vi_change_mbchar_case. Set c to mbchar[0] - for test against 033 or ^C. Make sure that _rl_read_mbchar does - this right. */ +static int +_rl_vi_change_char (count, c, mb) + int count, 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_point++; +#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 (mb, mlen) + char *mb; + int mlen; +{ + int c; + + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + 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); +#endif + + return c; +} + +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_change_char (data) + _rl_callback_generic_arg *data; +{ + int c; + char mb[MB_LEN_MAX]; + + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + + 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 (count, key) int count, key; { int c; + char mb[MB_LEN_MAX]; if (vi_redoing) - c = _rl_vi_last_replacement; - else { - RL_SETSTATE(RL_STATE_MOREINPUT); - _rl_vi_last_replacement = c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + c = _rl_vi_last_replacement; + mb[0] = c; + mb[1] = '\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 + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); - if (c == '\033' || c == CTRL ('C')) + if (c < 0) return -1; - while (count-- && rl_point < rl_end) - { - rl_begin_undo_group (); - - rl_delete (1, c); -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - while (_rl_insert_char (1, c)) - { - RL_SETSTATE (RL_STATE_MOREINPUT); - c = rl_read_key (); - RL_UNSETSTATE (RL_STATE_MOREINPUT); - } - else -#endif - _rl_insert_char (1, c); - if (count == 0) - rl_backward_char (1, c); - - rl_end_undo_group (); - } - return (0); + return (_rl_vi_change_char (count, c, mb)); } int @@ -1318,7 +1596,7 @@ rl_vi_subst (count, key) { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ if (vi_redoing == 0) - rl_stuff_char ((key == 'S') ? 'c' : ' '); /* `S' == `cc', `s' == `c ' */ + rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */ return (rl_vi_change_to (count, 'c')); } @@ -1434,9 +1712,8 @@ rl_vi_possible_completions() #endif /* Functions to save and restore marks. */ -int -rl_vi_set_mark (count, key) - int count, key; +static int +_rl_vi_set_mark () { int ch; @@ -1444,7 +1721,7 @@ rl_vi_set_mark (count, key) ch = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); - if (ch < 'a' || ch > 'z') + if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); return -1; @@ -1454,9 +1731,36 @@ rl_vi_set_mark (count, key) return 0; } +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_set_mark (data) + _rl_callback_generic_arg *data; +{ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_vi_set_mark ()); +} +#endif + int -rl_vi_goto_mark (count, key) +rl_vi_set_mark (count, key) int count, 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 () { int ch; @@ -1469,7 +1773,7 @@ rl_vi_goto_mark (count, key) rl_point = rl_mark; return 0; } - else if (ch < 'a' || ch > 'z') + else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); return -1; @@ -1485,4 +1789,31 @@ rl_vi_goto_mark (count, key) return 0; } +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_goto_mark (data) + _rl_callback_generic_arg *data; +{ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_vi_goto_mark ()); +} +#endif + +int +rl_vi_goto_mark (count, key) + int count, 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/src/bin/bash/lib/readline/xmalloc.c b/src/bin/bash/lib/readline/xmalloc.c index 8985d340d3..97d8f2e582 100644 --- a/src/bin/bash/lib/readline/xmalloc.c +++ b/src/bin/bash/lib/readline/xmalloc.c @@ -1,23 +1,24 @@ /* xmalloc.c -- safe versions of malloc and realloc */ -/* Copyright (C) 1991 Free Software Foundation, Inc. +/* Copyright (C) 1991-2009 Free Software Foundation, Inc. - This file is part of GNU Readline, a library for reading lines - of text with interactive input and history editing. + 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 2, or (at your option) any - later version. + 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. + Readline is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Readline; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Readline. If not, see . +*/ + #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) diff --git a/src/bin/bash/lib/readline/xmalloc.h b/src/bin/bash/lib/readline/xmalloc.h index 9cb08ba21f..f40d7a596a 100644 --- a/src/bin/bash/lib/readline/xmalloc.h +++ b/src/bin/bash/lib/readline/xmalloc.h @@ -1,24 +1,23 @@ /* xmalloc.h -- memory allocation that aborts on errors. */ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. - This file is part of the GNU Readline Library, a library for - reading lines of text with interactive input and history editing. + This file is part of the GNU Readline Library (Readline), a library + for reading lines of text with interactive input and history editing. - The GNU Readline 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 2, or + 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. - The GNU Readline 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/lib/sh/Jamfile b/src/bin/bash/lib/sh/Jamfile index 2c25ead22b..0267eef9e8 100644 --- a/src/bin/bash/lib/sh/Jamfile +++ b/src/bin/bash/lib/sh/Jamfile @@ -15,9 +15,16 @@ SubDirSysHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ; StaticLibrary libsh.a : 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 @@ -25,7 +32,8 @@ StaticLibrary libsh.a : shtty.c inet_aton.c netconn.c -# netopen.c + netopen.c + strpbrk.c timeval.c makepath.c pathcanon.c @@ -34,15 +42,36 @@ StaticLibrary libsh.a : stringlist.c stringvec.c spell.c - shquote.c - strtrans.c - strindex.c - snprintf.c + shquote.c + strtrans.c + strindex.c + snprintf.c mailstat.c - fmtulong.c - fmtullong.c - fmtumax.c - mktime.c - xstrchr.c - zcatfd.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 + xstrchr.c + zcatfd.c + zmapfd.c + winsize.c + eaccess.c + wcsdup.c + fpurge.c + zgetline.c + mbscmp.c + uconvert.c + ufuncs.c + casemod.c + fdprintf.c + input_avail.c ; diff --git a/src/bin/bash/lib/sh/Makefile.in b/src/bin/bash/lib/sh/Makefile.in index 468899d2cc..c8db3a5247 100644 --- a/src/bin/bash/lib/sh/Makefile.in +++ b/src/bin/bash/lib/sh/Makefile.in @@ -2,29 +2,45 @@ # Makefile for the Bash library # # -# Copyright (C) 1998-2002 Free Software Foundation, Inc. +# Copyright (C) 1998-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 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# 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@ @@ -49,7 +65,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@ DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ -INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) +INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ $(CFLAGS) $(CPPFLAGS) @@ -71,21 +87,25 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.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 strindex.c snprintf.c mailstat.c \ - fmtulong.c fmtullong.c fmtumax.c \ - strtoll.c strtoull.c strtoimax.c strtoumax.c memset.c \ - mktime.c strftime.c xstrchr.c zcatfd.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 xstrchr.c zcatfd.c zmapfd.c winsize.c eaccess.c \ + wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \ + casemod.c fdprintf.c input_avail.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 \ - itos.o zread.o zwrite.o shtty.o \ +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 strindex.o snprintf.o mailstat.o fmtulong.o \ - fmtullong.o fmtumax.o xstrchr.o zcatfd.o ${LIBOBJS} + fmtullong.o fmtumax.o xstrchr.o zcatfd.o zmapfd.o winsize.o wcsdup.o \ + fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \ + fdprintf.o input_avail.o ${LIBOBJS} SUPPORT = Makefile @@ -113,18 +133,27 @@ mostlyclean: clean # Dependencies +${BUILD_DIR}/version.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} version.h ) + # rules for losing makes, like SunOS +casemod.o: casemod.c clktck.o: clktck.c clock.o: clock.c +eaccess.o: eaccess.c +fdprintf.o: fdprintf.c fmtullong.o: fmtullong.c fmtulong.o: fmtulong.c fmtumax.o: fmtumax.c +fpurge.o: fpurge.c getcwd.o: getcwd.c getenv.o: getenv.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 +mbscmp.o: mbscmp.c memset.o: memset.c mktime.o: mktime.c netconn.o: netconn.c @@ -144,6 +173,7 @@ strftime.o: strftime.c strindex.o: strindex.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 @@ -156,9 +186,14 @@ strtrans.o: strtrans.c times.o: times.c timeval.o: timeval.c tmpfile.o: tmpfile.c +uconvert.o: uconvert.c +ufuncs.o: ufuncs.c vprint.o: vprint.c +wcsdup.o: wcsdup.c xstrchr.o: xstrchr.c zcatfd.o: zcatfd.c +zmapfd.o: zmapfd.c +zgetline.o: zgetline.c zread.o: zread.c zwrite.o: zwrite.c @@ -170,17 +205,23 @@ 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 +fdprintf.o: ${BUILD_DIR}/config.h fmtullong.o: ${BUILD_DIR}/config.h fmtulong.o: ${BUILD_DIR}/config.h fmtumax.o: ${BUILD_DIR}/config.h +fpurge.o: ${BUILD_DIR}/config.h getcwd.o: ${BUILD_DIR}/config.h getenv.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 +mbscmp.o: ${BUILD_DIR}/config.h memset.o: ${BUILD_DIR}/config.h mktime.o: ${BUILD_DIR}/config.h netconn.o: ${BUILD_DIR}/config.h @@ -200,6 +241,7 @@ strftime.o: ${BUILD_DIR}/config.h strindex.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 @@ -212,9 +254,14 @@ strtrans.o: ${BUILD_DIR}/config.h times.o: ${BUILD_DIR}/config.h timeval.o: ${BUILD_DIR}/config.h tmpfile.o: ${BUILD_DIR}/config.h +uconvert.o: ${BUILD_DIR}/config.h +ufuncs.o: ${BUILD_DIR}/config.h vprint.o: ${BUILD_DIR}/config.h +wcsdup.o: ${BUILD_DIR}/config.h xstrchr.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 @@ -231,7 +278,8 @@ getenv.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topd 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: ${topdir}/pathnames.h ${topdir}/externs.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 @@ -243,7 +291,7 @@ itos.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir 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: ${topdir}/pathnames.h ${topdir}/externs.h +itos.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${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 @@ -252,7 +300,7 @@ makepath.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${to 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: ${topdir}/pathnames.h ${topdir}/externs.h +makepath.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h netconn.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h netconn.o: ${topdir}/bashtypes.h @@ -264,7 +312,8 @@ netopen.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${top 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: ${topdir}/pathnames.h ${topdir}/externs.h +netopen.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h +netopen.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.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 @@ -273,7 +322,7 @@ oslib.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdi 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: ${topdir}/pathnames.h ${topdir}/externs.h +oslib.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h oslib.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h oslib.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h @@ -284,7 +333,7 @@ pathcanon.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${t 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: ${topdir}/pathnames.h ${topdir}/externs.h +pathcanon.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h pathcanon.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h pathcanon.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h @@ -295,7 +344,7 @@ pathphys.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${to 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: ${topdir}/pathnames.h ${topdir}/externs.h +pathphys.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h pathphys.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h pathphys.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h @@ -305,6 +354,19 @@ 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 ${BUILD_DIR}/version.h + shquote.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h @@ -329,7 +391,7 @@ strerror.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${to 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: ${topdir}/pathnames.h ${topdir}/externs.h +strerror.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h strindex.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h strindex.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h @@ -341,7 +403,7 @@ stringlist.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.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: ${topdir}/pathnames.h ${topdir}/externs.h +stringlist.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${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 @@ -350,7 +412,9 @@ stringvec.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${t 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: ${topdir}/pathnames.h ${topdir}/externs.h +stringvec.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +strnlen.o: ${BASHINCDIR}/stdc.h strpbrk.o: ${BASHINCDIR}/stdc.h @@ -385,7 +449,7 @@ strtrans.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${to 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: ${topdir}/pathnames.h ${topdir}/externs.h +strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h times.o: ${BASHINCDIR}/systimes.h times.o: ${BASHINCDIR}/posixtime.h @@ -396,6 +460,10 @@ tmpfile.o: ${topdir}/bashtypes.h tmpfile.o: ${BASHINCDIR}/posixstat.h tmpfile.o: ${BASHINCDIR}/filecntl.h +uconvert.o: ${topdir}/bashtypes.h + +ufuncs.o: ${topdir}/bashtypes.h + clock.o: ${BASHINCDIR}/posixtime.h mailstat.o: ${topdir}/bashansi.h @@ -410,19 +478,49 @@ 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 xstrchr.o: ${topdir}/bashansi.h xstrchr.o: ${BASHINCDIR}/ansi_stdlib.h xstrchr.o: ${BASHINCDIR}/shmbutil.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 + +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 +casemod.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +fdprintf.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 + diff --git a/src/bin/bash/lib/sh/casemod.c b/src/bin/bash/lib/sh/casemod.c new file mode 100644 index 0000000000..b7e085018e --- /dev/null +++ b/src/bin/bash/lib/sh/casemod.c @@ -0,0 +1,239 @@ +/* casemod.c -- functions to change case of strings */ + +/* Copyright (C) 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 (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 + +#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 (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 __P((char *, int, int)); + +#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) + 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; + int inword, c, nc, nop, match, usewords; + char *ret, *s; + wchar_t wc; +#if defined (HANDLE_MULTIBYTE) + wchar_t nwc; + char mb[MB_LEN_MAX+1]; + int mlen; + mbstate_t state; +#endif + +#if defined (HANDLE_MULTIBYTE) + memset (&state, 0, sizeof (mbstate_t)); +#endif + + start = 0; + end = strlen (string); + + ret = (char *)xmalloc (end + 1); + strcpy (ret, string); + + /* 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 (ret, start); + + if (iswalnum (wc) == 0) + { + inword = 0; + ADVANCE_CHAR (ret, end, start); + continue; + } + + if (pat) + { + next = start; + ADVANCE_CHAR (ret, end, next); + s = substring (ret, start, next); + match = strmatch (pat, s, FNM_EXTMATCH) != FNM_NOMATCH; + free (s); + if (match == 0) + { + 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; + + if (MB_CUR_MAX == 1 || isascii (wc)) + { + 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[start] = nc; + } +#if defined (HANDLE_MULTIBYTE) + else + { + mbrtowc (&wc, string + start, end - start, &state); + switch (nop) + { + default: + case CASE_NOOP: nwc = wc; break; + case CASE_UPPER: nwc = TOUPPER (wc); break; + case CASE_LOWER: nwc = TOLOWER (wc); break; + case CASE_TOGGLEALL: + case CASE_TOGGLE: nwc = TOGGLE (wc); break; + } + if (nwc != wc) /* just skip unchanged characters */ + { + mlen = wcrtomb (mb, nwc, &state); + if (mlen > 0) + mb[mlen] = '\0'; + /* Assume the same width */ + strncpy (ret + start, mb, mlen); + } + } +#endif + + /* This assumes that the upper and lower case versions are the same width. */ + ADVANCE_CHAR (ret, end, start); + } + + return ret; +} diff --git a/src/bin/bash/lib/sh/clktck.c b/src/bin/bash/lib/sh/clktck.c index 546b49c50a..096ce06e5e 100644 --- a/src/bin/bash/lib/sh/clktck.c +++ b/src/bin/bash/lib/sh/clktck.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/clock.c b/src/bin/bash/lib/sh/clock.c index 1186a1982b..84cdbc5422 100644 --- a/src/bin/bash/lib/sh/clock.c +++ b/src/bin/bash/lib/sh/clock.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/eaccess.c b/src/bin/bash/lib/sh/eaccess.c new file mode 100644 index 0000000000..989bc225b6 --- /dev/null +++ b/src/bin/bash/lib/sh/eaccess.c @@ -0,0 +1,222 @@ +/* eaccess.c - eaccess replacement for the shell, plus other access functions. */ + +/* 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 . +*/ + +#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 __P((const char *)); +static int sh_stataccess __P((char *, int)); +#if HAVE_DECL_SETREGID +static int sh_euidaccess __P((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; +{ + if (*path == '\0') + { + errno = ENOENT; + return (-1); + } + if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) + { +#if !defined (HAVE_DEV_FD) + 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. */ + char pbuf[32]; + 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) + 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) + 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) + char *path; + int mode; +{ + if (path_is_devfd (path)) + return (sh_stataccess (path, mode)); + +#if defined (HAVE_EACCESS) /* FreeBSD */ + return (eaccess (path, mode)); +#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) + return (access (path, mode)); + + return (sh_stataccess (path, mode)); +#endif +} diff --git a/src/bin/bash/lib/sh/fdprintf.c b/src/bin/bash/lib/sh/fdprintf.c new file mode 100644 index 0000000000..27d3a4b0af --- /dev/null +++ b/src/bin/bash/lib/sh/fdprintf.c @@ -0,0 +1,70 @@ +/* fdprintf -- printf to a file descriptor */ + +/* Copyright (C) 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 . +*/ + +#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) +fdprintf(int fd, const char *format, ...) +#else +fdprintf(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/src/bin/bash/lib/sh/fmtullong.c b/src/bin/bash/lib/sh/fmtullong.c index df27944a16..97a1dc18c1 100644 --- a/src/bin/bash/lib/sh/fmtullong.c +++ b/src/bin/bash/lib/sh/fmtullong.c @@ -2,19 +2,21 @@ /* Copyright (C) 2001-2002 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. + This file is part of GNU Bash, the Bourne Again SHell. -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. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/sh/fmtulong.c b/src/bin/bash/lib/sh/fmtulong.c index dc313be994..214b1466a5 100644 --- a/src/bin/bash/lib/sh/fmtulong.c +++ b/src/bin/bash/lib/sh/fmtulong.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifdef HAVE_CONFIG_H # include @@ -38,9 +38,14 @@ #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_INTTYPES_H +# include +#endif #include #include +#include + #include "stdc.h" #include @@ -93,7 +98,7 @@ fmtulong (ui, base, buf, len, flags) if (base < 2 || base > 64) { #if 1 - strncpy (buf, "invalid base", len - 1); + strncpy (buf, _("invalid base"), len - 1); buf[len] = '\0'; errno = EINVAL; return (p = buf); diff --git a/src/bin/bash/lib/sh/fmtumax.c b/src/bin/bash/lib/sh/fmtumax.c index 1329332809..f2786b5d31 100644 --- a/src/bin/bash/lib/sh/fmtumax.c +++ b/src/bin/bash/lib/sh/fmtumax.c @@ -2,22 +2,23 @@ /* Copyright (C) 2002 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. + This file is part of GNU Bash, the Bourne Again SHell. -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. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 #define LONG intmax_t #define UNSIGNED_LONG uintmax_t diff --git a/src/bin/bash/lib/sh/fpurge.c b/src/bin/bash/lib/sh/fpurge.c new file mode 100644 index 0000000000..fd093b8f16 --- /dev/null +++ b/src/bin/bash/lib/sh/fpurge.c @@ -0,0 +1,123 @@ +/* fpurge - Flushing buffers of a FILE stream. */ + +/* Copyright (C) 2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 __P((FILE *stream)); + +#if HAVE___FPURGE /* glibc >= 2.2, Solaris >= 7 */ +# include +#endif +#include + +int +fpurge (FILE *fp) +{ +#if HAVE___FPURGE /* glibc >= 2.2, Solaris >= 7 */ + + __fpurge (fp); + /* The __fpurge function does not have a return value. */ + return 0; + +#elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, MacOS X */ + + /* Call the system's fpurge function. */ +# undef fpurge +# if !HAVE_DECL_FPURGE + extern int fpurge (FILE *); +# endif + int result = fpurge (fp); +# if defined __sferror /* FreeBSD, NetBSD, OpenBSD, 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 writing, 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_ferror_unlocked /* GNU libc, BeOS */ + 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 /* FreeBSD, NetBSD, OpenBSD, 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 defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ + /* See + and */ +# define fp_ub ((struct { struct __sbuf _ub; } *) fp->_ext._base)->_ub +# else /* FreeBSD, MacOS X, Cygwin */ +# define fp_ub fp->_ub +# endif + if (fp_ub._base != NULL) + { + if (fp_ub._base != fp->_ubuf) + free (fp_ub._base); + fp_ub._base = NULL; + } + return 0; +# elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, 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; +# else + #error "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." +# endif + +#endif +} diff --git a/src/bin/bash/lib/sh/getcwd.c b/src/bin/bash/lib/sh/getcwd.c index 0c8b1da83d..84799bbc86 100644 --- a/src/bin/bash/lib/sh/getcwd.c +++ b/src/bin/bash/lib/sh/getcwd.c @@ -1,27 +1,35 @@ -/* getcwd.c -- stolen from the GNU C library and modified to work with bash. */ +/* getcwd.c -- get pathname of current directory */ /* Copyright (C) 1991 Free Software Foundation, Inc. - This file is part of the GNU C Library. - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This file is part of GNU Bash, the Bourne Again SHell. - The GNU C Library is distributed in the hope that it will be useful, + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, write to the Free Software Foundation, Inc., - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 @@ -54,6 +62,33 @@ extern int errno; # 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 (BROKEN_DIRENT_D_INO) +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. @@ -165,7 +200,11 @@ getcwd (buf, size) (d->d_name[1] == '\0' || (d->d_name[1] == '.' && d->d_name[2] == '\0'))) continue; +#if !defined (BROKEN_DIRENT_D_INO) if (mount_point || d->d_fileno == thisino) +#else + if (mount_point || _path_checkino (dotp, d->d_name, thisino)) +#endif { char *name; @@ -247,19 +286,21 @@ getcwd (buf, size) { size_t len = pathbuf + pathsize - pathp; - if (buf == NULL) - { - if (len < (size_t) size) - len = size; - buf = (char *) malloc (len); - if (buf == NULL) - goto lose2; - } - else if ((size_t) size < len) + 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); } diff --git a/src/bin/bash/lib/sh/getenv.c b/src/bin/bash/lib/sh/getenv.c index 028afb1521..8b5e34060a 100644 --- a/src/bin/bash/lib/sh/getenv.c +++ b/src/bin/bash/lib/sh/getenv.c @@ -5,19 +5,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -115,7 +115,7 @@ putenv (str) return -1; } - offset = assignment (str); + offset = assignment (str, 0); if (str[offset] != '=') { errno = EINVAL; @@ -127,7 +127,7 @@ putenv (str) value = name + offset + 1; /* XXX - should we worry about readonly here? */ - var = bind_variable (name, value); + var = bind_variable (name, value, 0); if (var == 0) { errno = EINVAL; @@ -169,13 +169,13 @@ setenv (name, value, rewrite) } var = 0; - v = value; + 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); + var = bind_variable (name, v, 0); if (var == 0) return -1; diff --git a/src/bin/bash/lib/sh/inet_aton.c b/src/bin/bash/lib/sh/inet_aton.c index 2b004530e8..5f64cee3bc 100644 --- a/src/bin/bash/lib/sh/inet_aton.c +++ b/src/bin/bash/lib/sh/inet_aton.c @@ -1,3 +1,5 @@ +/* inet_aton - convert string to numeric IP address */ + /* Snagged from GNU C library, version 2.0.3. */ /* diff --git a/src/bin/bash/lib/sh/input_avail.c b/src/bin/bash/lib/sh/input_avail.c new file mode 100644 index 0000000000..5e01f8f75e --- /dev/null +++ b/src/bin/bash/lib/sh/input_avail.c @@ -0,0 +1,105 @@ +/* input_avail.c -- check whether or not data is available for reading on a + specified file descriptor. */ + +/* Copyright (C) 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 (__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_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#include "bashansi.h" + +#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 + +#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 + + result = -1; +#if defined (FIONREAD) + errno = 0; + result = ioctl (fd, FIONREAD, &chars_avail); + if (result == -1 && errno == EIO) + return -1; + return (chars_avail); +#endif + + return 0; +} diff --git a/src/bin/bash/lib/sh/itos.c b/src/bin/bash/lib/sh/itos.c index e9a7942755..12e9398dad 100644 --- a/src/bin/bash/lib/sh/itos.c +++ b/src/bin/bash/lib/sh/itos.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifdef HAVE_CONFIG_H # include diff --git a/src/bin/bash/lib/sh/mailstat.c b/src/bin/bash/lib/sh/mailstat.c index 8005252ad0..2b2ac0eaf8 100644 --- a/src/bin/bash/lib/sh/mailstat.c +++ b/src/bin/bash/lib/sh/mailstat.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -149,7 +149,7 @@ mailstat(path, st) closedir(dd); } - if (atime) +/* if (atime) */ /* Set atime even if cur/ is empty */ st_ret.st_atime = atime; if (mtime) st_ret.st_mtime = mtime; diff --git a/src/bin/bash/lib/sh/makepath.c b/src/bin/bash/lib/sh/makepath.c index c496154b76..43dbab2089 100644 --- a/src/bin/bash/lib/sh/makepath.c +++ b/src/bin/bash/lib/sh/makepath.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -42,17 +42,21 @@ # define MP_DOTILDE 0x01 # define MP_DOCWD 0x02 # define MP_RMDOT 0x04 +# define MP_IGNDOT 0x08 #endif extern char *get_working_directory __P((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. */ + of DIR. If (flags & MP_IGNDOT) is non-zero, a PATH that is "." or "./" + is ignored. */ #define MAKEDOT() \ do { \ @@ -89,6 +93,12 @@ sh_makepath (path, dir, flags) 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; @@ -107,12 +117,12 @@ sh_makepath (path, dir, flags) s = xpath; while (*s) *r++ = *s++; - if (s[-1] != '/') + if (s > xpath && s[-1] != '/') *r++ = '/'; s = xdir; while (*r++ = *s++) ; - if (xpath != path) + if (xpath != path && xpath != nullpath) free (xpath); return (ret); } diff --git a/src/bin/bash/lib/sh/mbscmp.c b/src/bin/bash/lib/sh/mbscmp.c new file mode 100644 index 0000000000..ea01c275c4 --- /dev/null +++ b/src/bin/bash/lib/sh/mbscmp.c @@ -0,0 +1,62 @@ +/* mbscmp - multibyte 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_MBSCMP) && defined (HANDLE_MULTIBYTE) + +#include +#include + +/* Compare MBS1 and MBS2. */ +int +mbscmp (mbs1, mbs2) + const char *mbs1; + const char *mbs2; +{ + int len1, len2; + wchar_t c1, c2; + + len1 = len2 = 0; + /* Reset multibyte characters to their initial state. */ + (void) mblen ((char *) NULL, 0); + + do + { + len1 = mbtowc ((wchar_t *) &c1, mbs1, MB_CUR_MAX); + len2 = mbtowc ((wchar_t *) &c2, mbs2, MB_CUR_MAX); + + if (len1 == 0) + return len2 == 0 ? 0 : -1; + if (len2 == 0) + return 1; + if (len1 < 0 || len2 < 0) + /* FIXME: an illegal character appears. What to do? */ + return c1 - c2; + + mbs1 += len1; + mbs2 += len2; + } + while (c1 == c2); + + return c1 - c2; +} + +#endif diff --git a/src/bin/bash/lib/sh/memset.c b/src/bin/bash/lib/sh/memset.c index ddc36b6368..4ebc41889c 100644 --- a/src/bin/bash/lib/sh/memset.c +++ b/src/bin/bash/lib/sh/memset.c @@ -1,19 +1,22 @@ -/* memset.c -- set an area of memory to a given value - Copyright (C) 1991-2002 Free Software Foundation, Inc. +/* memset.c -- set an area of memory to a given value */ - This program is free software; you can redistribute it and/or modify +/* Copyright (C) 1991-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ + along with Bash. If not, see . +*/ char * memset (char *str, int c, unsigned int len) diff --git a/src/bin/bash/lib/sh/mktime.c b/src/bin/bash/lib/sh/mktime.c index 81aeb2266f..7257400805 100644 --- a/src/bin/bash/lib/sh/mktime.c +++ b/src/bin/bash/lib/sh/mktime.c @@ -1,22 +1,23 @@ +/* mktime - convert struct tm to a time_t value */ + /* Copyright (C) 1993-2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. + + This file is part of GNU Bash, the Bourne Again SHell. Contributed by Paul Eggert (eggert@twinsun.com). - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the 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 C Library is distributed in the hope that it will be useful, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 */ @@ -49,11 +50,10 @@ #include #endif +#include "bashansi.h" + #if DEBUG #include -#if STDC_HEADERS -#include -#endif /* Make it work even if the system's libc has its own mktime routine. */ #define mktime my_mktime #endif /* DEBUG */ diff --git a/src/bin/bash/lib/sh/netconn.c b/src/bin/bash/lib/sh/netconn.c index 05fa050cd7..98c63c7006 100644 --- a/src/bin/bash/lib/sh/netconn.c +++ b/src/bin/bash/lib/sh/netconn.c @@ -1,28 +1,27 @@ /* netconn.c -- is a particular file descriptor a network connection?. */ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + along with Bash. If not, see . */ #include #include -#if defined (SYS_FILE_H) +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include @@ -52,8 +51,8 @@ isnetconn (fd) l = sizeof(sa); rv = getpeername(fd, &sa, &l); - /* Solaris 2.5 getpeername() returns EINVAL if the fd is not a socket. */ - return ((rv < 0 && (errno == ENOTSOCK || errno == EINVAL)) ? 0 : 1); + /* Posix.2 says getpeername can return these errors. */ + return ((rv < 0 && (errno == ENOTSOCK || errno == ENOTCONN || errno == EINVAL)) ? 0 : 1); #else /* !HAVE_GETPEERNAME || SVR4_2 || __BEOS__ || __HAIKU__ */ # if defined (SVR4) || defined (SVR4_2) /* Sockets on SVR4 and SVR4.2 are character special (streams) devices. */ diff --git a/src/bin/bash/lib/sh/netopen.c b/src/bin/bash/lib/sh/netopen.c index f4bf12acb3..736d4138ff 100644 --- a/src/bin/bash/lib/sh/netopen.c +++ b/src/bin/bash/lib/sh/netopen.c @@ -9,19 +9,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include @@ -51,6 +51,8 @@ #endif #include +#include + #include #include @@ -61,9 +63,19 @@ extern int errno; #endif #if !defined (HAVE_INET_ATON) -//extern int inet_aton __P((const char *, struct in_addr *)); +extern int inet_aton __P((const char *, struct in_addr *)); #endif +#ifndef HAVE_GETADDRINFO +static int _getaddr __P((char *, struct in_addr *)); +static int _getserv __P((char *, int, unsigned short *)); +static int _netopen4 __P((char *, char *, int)); +#else /* HAVE_GETADDRINFO */ +static int _netopen6 __P((char *, char *, int)); +#endif + +static int _netopen __P((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. */ @@ -153,14 +165,14 @@ _netopen4(host, serv, typ) if (_getaddr(host, &ina) == 0) { - internal_error ("%s: host unknown", host); + internal_error (_("%s: host unknown"), host); errno = EINVAL; return -1; } if (_getserv(serv, typ, &p) == 0) { - internal_error("%s: invalid service", serv); + internal_error(_("%s: invalid service"), serv); errno = EINVAL; return -1; } @@ -291,7 +303,7 @@ netopen (path) t = strchr (s, '/'); if (t == 0) { - internal_error ("%s: bad network path specification", path); + internal_error (_("%s: bad network path specification"), path); return -1; } *t++ = '\0'; @@ -331,7 +343,7 @@ int netopen (path) char *path; { - internal_error ("network operations not supported"); + internal_error (_("network operations not supported")); return -1; } diff --git a/src/bin/bash/lib/sh/oslib.c b/src/bin/bash/lib/sh/oslib.c index 90d7be9a7f..d47f9dc80b 100644 --- a/src/bin/bash/lib/sh/oslib.c +++ b/src/bin/bash/lib/sh/oslib.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/pathcanon.c b/src/bin/bash/lib/sh/pathcanon.c index d74f99c0f3..98e41cedf6 100644 --- a/src/bin/bash/lib/sh/pathcanon.c +++ b/src/bin/bash/lib/sh/pathcanon.c @@ -1,22 +1,22 @@ -/* pathcanon.c -- Canonicalize and manipulate pathnames. */ +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -34,9 +34,14 @@ #include #include #include +#include #include "shell.h" +#if !defined (errno) +extern int errno; +#endif + #if defined (__CYGWIN__) #include @@ -73,6 +78,8 @@ _path_isdir (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) diff --git a/src/bin/bash/lib/sh/pathphys.c b/src/bin/bash/lib/sh/pathphys.c index df692043d4..15fcd25003 100644 --- a/src/bin/bash/lib/sh/pathphys.c +++ b/src/bin/bash/lib/sh/pathphys.c @@ -1,22 +1,22 @@ -/* pathphys.c -- Return pathname with all symlinks expanded. */ +/* pathphys.c -- return pathname with all symlinks expanded. */ /* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -68,7 +68,7 @@ _path_readlink (path, buf, bufsiz) /* * Return PATH with all symlinks expanded in newly-allocated memory. - * This always gets a full pathname. + * This always gets an absolute pathname. */ char * @@ -80,11 +80,26 @@ sh_physpath (path, flags) 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); - workpath = (char *)xmalloc (PATH_MAX + 1); - strcpy (workpath, path); + /* 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. */ @@ -133,7 +148,19 @@ sh_physpath (path, flags) if (q != qbase) *q++ = DIRSEP; while (*p && (ISDIRSEP(*p) == 0)) - *q++ = *p++; + { + if (q - result >= PATH_MAX) + { +#ifdef ENAMETOOLONG + errno = ENAMETOOLONG; +#else + errno = EINVAL; +#endif + goto error; + } + + *q++ = *p++; + } *q = '\0'; @@ -151,6 +178,8 @@ sh_physpath (path, flags) { #ifdef ELOOP errno = ELOOP; +#else + errno = EINVAL; #endif error: free (result); @@ -160,6 +189,17 @@ error: 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 @@ -245,6 +285,7 @@ sh_realpath (pathname, resolved) { strncpy (resolved, wd, PATH_MAX - 1); resolved[PATH_MAX - 1] = '\0'; + free (wd); return resolved; } else diff --git a/src/bin/bash/lib/sh/rename.c b/src/bin/bash/lib/sh/rename.c index d5c2778570..e410b5e8d6 100644 --- a/src/bin/bash/lib/sh/rename.c +++ b/src/bin/bash/lib/sh/rename.c @@ -6,19 +6,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/setlinebuf.c b/src/bin/bash/lib/sh/setlinebuf.c index 3c5d056605..6473ddfcca 100644 --- a/src/bin/bash/lib/sh/setlinebuf.c +++ b/src/bin/bash/lib/sh/setlinebuf.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/shmatch.c b/src/bin/bash/lib/sh/shmatch.c new file mode 100644 index 0000000000..6de1dc15fb --- /dev/null +++ b/src/bin/bash/lib/sh/shmatch.c @@ -0,0 +1,120 @@ +/* + * shmatch.c -- shell interface to posix regular expression matching. + */ + +/* Copyright (C) 2003 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 (glob_ignore_case || match_ignore_case) + rflags |= REG_ICASE; +#if !defined (ARRAY_VARS) + rflags |= REG_NOSUB; +#endif + + if (regcomp (®ex, pattern, rflags)) + return 2; /* flag for printing a warning here. */ + +#if defined (ARRAY_VARS) + matches = (regmatch_t *)malloc (sizeof (regmatch_t) * (regex.re_nsub + 1)); +#else + matches = NULL; +#endif + + if (regexec (®ex, string, regex.re_nsub + 1, 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 ("BASH_REMATCH"); + rematch = make_new_array_variable ("BASH_REMATCH"); + amatch = array_cell (rematch); + + if ((flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) + { + for (subexp_ind = 0; subexp_ind <= regex.re_nsub; subexp_ind++) + { + memset (subexp_str, 0, subexp_len); + strncpy (subexp_str, string + matches[subexp_ind].rm_so, + matches[subexp_ind].rm_eo - matches[subexp_ind].rm_so); + array_insert (amatch, subexp_ind, subexp_str); + } + } + + VSETATTR (rematch, att_readonly); + + free (subexp_str); + free (matches); +#endif /* ARRAY_VARS */ + + regfree (®ex); + + return result; +} + +#endif /* HAVE_POSIX_REGEXP */ diff --git a/src/bin/bash/lib/sh/shquote.c b/src/bin/bash/lib/sh/shquote.c index 713f48199a..a267d3800b 100644 --- a/src/bin/bash/lib/sh/shquote.c +++ b/src/bin/bash/lib/sh/shquote.c @@ -1,20 +1,22 @@ +/* shquote - functions to quote and dequote strings */ + /* Copyright (C) 1999 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -81,8 +83,11 @@ sh_double_quote (string) for (s = string; s && (c = *s); s++) { - if (sh_syntaxtab[c] & CBSDQUOTE) + /* Backslash-newline disappears within double quotes, so don't add one. */ + if ((sh_syntaxtab[c] & CBSDQUOTE) && c != '\n') *r++ = '\\'; + else if (c == CTLESC || c == CTLNUL) + *r++ = CTLESC; /* could be '\\'? */ *r++ = c; } @@ -93,8 +98,35 @@ sh_double_quote (string) 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; + int rlen; + + rlen = (flags == 0) ? slen + 3 : (2 * slen) + 1; + ret = r = (char *)xmalloc (rlen); + + *r++ = '"'; + while (*s) + { + if (flags && *s == '"') + *r++ = '\\'; + *r++ = *s++; + } + *r++ = '"'; + *r = '\0'; + + return ret; +} + /* Remove backslashes that are quoting characters that are special between - double quotes. Return a new string. */ + double quotes. Return a new string. XXX - should this handle CTLESC + and CTLNUL? */ char * sh_un_double_quote (string) char *string; @@ -125,7 +157,11 @@ sh_un_double_quote (string) } /* Quote special characters in STRING using backslashes. Return a new - string. */ + 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. */ char * sh_backslash_quote (string) char *string; @@ -157,7 +193,13 @@ sh_backslash_quote (string) *r++ = '\\'; *r++ = c; break; + + case CTLESC: case CTLNUL: /* internal quoting characters */ + *r++ = CTLESC; /* could be '\\'? */ + *r++ = c; + break; #endif + case '#': /* comment char */ if (s == string) *r++ = '\\'; @@ -188,6 +230,9 @@ sh_backslash_quote_for_double_quotes (string) { if (sh_syntaxtab[c] & CBSDQUOTE) *r++ = '\\'; + /* I should probably add flags for these to sh_syntaxtab[] */ + else if (c == CTLESC || c == CTLNUL) + *r++ = CTLESC; /* could be '\\'? */ *r++ = c; } diff --git a/src/bin/bash/lib/sh/shtty.c b/src/bin/bash/lib/sh/shtty.c index 15cc82f803..0433f5e277 100644 --- a/src/bin/bash/lib/sh/shtty.c +++ b/src/bin/bash/lib/sh/shtty.c @@ -1,24 +1,24 @@ +/* + * 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - -/* - * shtty.c -- abstract interface to the terminal, focusing on capabilities. - */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifdef HAVE_CONFIG_H # include @@ -85,7 +85,7 @@ ttrestore() ttsaved = 0; } -/* Retrieve the attributes associated with tty fd FD. */ +/* Retrieve the internally-saved attributes associated with tty fd FD. */ TTYSTRUCT * ttattr (fd) int fd; @@ -149,6 +149,17 @@ tt_setonechar(ttp) 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 () @@ -158,9 +169,7 @@ ttonechar () if (ttsaved == 0) return -1; tt = ttin; - if (tt_setonechar(&tt) < 0) - return -1; - return (ttsetattr (0, &tt)); + return (ttfd_onechar (0, &tt)); } /* @@ -180,6 +189,17 @@ tt_setnoecho(ttp) 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 () @@ -189,9 +209,7 @@ ttnoecho () if (ttsaved == 0) return -1; tt = ttin; - if (tt_setnoecho (&tt) < 0) - return -1; - return (ttsetattr (0, &tt)); + return (ttfd_noecho (0, &tt)); } /* @@ -213,6 +231,17 @@ tt_seteightbit (ttp) 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 () @@ -222,9 +251,7 @@ tteightbit () if (ttsaved == 0) return -1; tt = ttin; - if (tt_seteightbit (&tt) < 0) - return -1; - return (ttsetattr (0, &tt)); + return (ttfd_eightbit (0, &tt)); } /* @@ -242,6 +269,17 @@ tt_setnocanon (ttp) 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 () @@ -251,9 +289,7 @@ ttnocanon () if (ttsaved == 0) return -1; tt = ttin; - if (tt_setnocanon (&tt) < 0) - return -1; - return (ttsetattr (0, &tt)); + return (ttfd_nocanon (0, &tt)); } /* @@ -269,6 +305,18 @@ tt_setcbreak(ttp) 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 () @@ -278,7 +326,5 @@ ttcbreak () if (ttsaved == 0) return -1; tt = ttin; - if (tt_setcbreak (&tt) < 0) - return -1; - return (ttsetattr (0, &tt)); + return (ttfd_cbreak (0, &tt)); } diff --git a/src/bin/bash/lib/sh/snprintf.c b/src/bin/bash/lib/sh/snprintf.c index 7669576c89..c406d4ad59 100644 --- a/src/bin/bash/lib/sh/snprintf.c +++ b/src/bin/bash/lib/sh/snprintf.c @@ -1,3 +1,5 @@ +/* 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 @@ -7,21 +9,22 @@ Unix snprintf implementation. derived from inetutils/libinetutils/snprintf.c Version 1.1 - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001,2006 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General License as published by - the Free Software Foundation; either version 2 of the License, or + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the 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, + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General License for more details. - - You should have received a copy of the GNU General License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . Revision History: @@ -45,10 +48,11 @@ /* * Currently doesn't handle (and bash/readline doesn't use): - * *M$ width, precision specifications - * %N$ numbered argument conversions - * inf, nan floating values imperfect (if isinf(), isnan() not in libc) - * support for `F' is imperfect, since underlying printf may not handle it + * * *M$ width, precision specifications + * * %N$ numbered argument conversions + * * inf, nan floating values imperfect (if isinf(), isnan() not in libc) + * * support for `F' is imperfect with ldfallback(), since underlying + * printf may not handle it -- should ideally have another autoconf test */ #define FLOATING_POINT @@ -57,6 +61,11 @@ # include #endif +#if defined(DEBUG) +# undef HAVE_SNPRINTF +# undef HAVE_ASPRINTF +#endif + #if defined(DRIVER) && !defined(HAVE_CONFIG_H) #define HAVE_LONG_LONG #define HAVE_LONG_DOUBLE @@ -64,6 +73,7 @@ #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 @@ -369,14 +379,37 @@ static void xfree __P((void *)); 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); \ + { \ + (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) + { \ + (p)->precision = GETARG (int); \ + if ((p)->precision < 0) \ + { \ + (p)->flags &= ~PF_STAR_P; \ + (p)->precision = NOT_FOUND; \ + } \ + } \ + } while (0) -#if defined (HAVE_LOCALE_H) +#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV) # define GETLOCALEDATA(d, t, g) \ do \ { \ @@ -446,6 +479,8 @@ pow_10(n) 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) @@ -551,8 +586,11 @@ numtoa(number, base, precision, fract) { integral_part[0] = '0'; integral_part[1] = '\0'; - fraction_part[0] = '0'; - fraction_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; @@ -633,8 +671,13 @@ number(p, d, base) long sd; int flags; + /* An explicit precision turns off the zero-padding flag. */ + if ((p->flags & PF_ZEROPAD) && p->precision >= 0 && (p->flags & PF_DOT)) + p->flags &= ~PF_ZEROPAD; + sd = d; /* signed for ' ' padding in base 10 */ - flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + 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; @@ -650,6 +693,12 @@ number(p, d, base) p->width -= strlen(tmp); PAD_RIGHT(p); + if ((p->flags & PF_DOT) && p->precision > 0) + { + p->precision -= strlen(tmp); + PAD_ZERO(p); + } + switch (base) { case 10: @@ -693,8 +742,12 @@ lnumber(p, d, base) long long sd; int flags; + /* An explicit precision turns off the zero-padding flag. */ + if ((p->flags & PF_ZEROPAD) && p->precision >= 0 && (p->flags & PF_DOT)) + p->flags &= ~PF_ZEROPAD; + sd = d; /* signed for ' ' padding in base 10 */ - flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 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; @@ -710,6 +763,12 @@ lnumber(p, d, base) p->width -= strlen(tmp); PAD_RIGHT(p); + if ((p->flags & PF_DOT) && p->precision > 0) + { + p->precision -= strlen(tmp); + PAD_ZERO(p); + } + switch (base) { case 10: @@ -760,6 +819,7 @@ pointer(p, d) PUT_CHAR(*tmp, p); tmp++; } + PAD_LEFT(p); } @@ -863,7 +923,9 @@ isinf(d) #endif return 0; } +#endif +#ifndef HAVE_ISNAN_IN_LIBC static int isnan(d) double d; @@ -914,7 +976,7 @@ floating(p, d) char *tmp, *tmp2, *t; int i; - if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)) + if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) return; /* already printed nan or inf */ GETLOCALEDATA(decpoint, thoussep, grouping); @@ -925,18 +987,28 @@ floating(p, d) 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 - ((d > 0. && p->justify == RIGHT) ? 1:0) - ((p->flags & PF_SPACE) ? 1:0) - - strlen(tmp) - p->precision - 1; + strlen(tmp) - p->precision - + ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */ PAD_RIGHT(p); PUT_PLUS(d, p, 0.); PUT_SPACE(d, p, 0.); while (*tmp) - { /* the integral */ - PUT_CHAR(*tmp, p); + { + PUT_CHAR(*tmp, p); /* the integral */ tmp++; } FREE (t); @@ -944,11 +1016,6 @@ floating(p, d) if (p->precision != 0 || (p->flags & PF_ALTFORM)) PUT_CHAR(decpoint, p); /* put 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 */ @@ -964,14 +1031,19 @@ exponent(p, d) char *tmp, *tmp2; int j, i; - if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)) + if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) return; /* already printed nan or inf */ GETLOCALEDATA(decpoint, thoussep, grouping); DEF_PREC(p); - j = log_10(d); - d = d / pow_10(j); /* get the Mantissa */ - d = ROUND(d, 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', @@ -1009,7 +1081,7 @@ exponent(p, d) PUT_CHAR('E', p); /* the sign of the exp */ - if (j > 0) + if (j >= 0) PUT_CHAR('+', p); else { @@ -1029,6 +1101,7 @@ exponent(p, d) PUT_CHAR(*tmp, p); tmp++; } + PAD_LEFT(p); } #endif @@ -1149,6 +1222,7 @@ vsnprintf_internal(data, string, length, format, args) 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 @@ -1164,6 +1238,7 @@ vsnprintf_internal(data, string, length, format, args) decpoint = thoussep = 0; grouping = 0; + negprec = 0; for (; c = *(data->pf); data->pf++) { if (c != '%') @@ -1220,16 +1295,24 @@ vsnprintf_internal(data, string, length, format, args) data->flags |= PF_STAR_W; continue; case '-': - data->flags |= PF_LADJUST; - data->justify = LEFT; + 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 '+': - data->flags |= PF_PLUS; - data->justify = RIGHT; + if ((data->flags & PF_DOT) == 0) + { + data->flags |= PF_PLUS; + data->justify = RIGHT; + } continue; case '\'': data->flags |= PF_THOUSANDS; @@ -1249,7 +1332,7 @@ vsnprintf_internal(data, string, length, format, args) if (n < 0) n = 0; if (data->flags & PF_DOT) - data->precision = n; + data->precision = negprec ? NOT_FOUND : n; else data->width = n; continue; @@ -1301,7 +1384,7 @@ conv_break: STAR_ARGS(data); DEF_PREC(data); d = GETDOUBLE(data); - i = log_10(d); + i = (d != 0.) ? log_10(d) : -1; /* * for '%g|%G' ANSI: use f if exponent * is in the range or [-4,p] exclusively @@ -1506,11 +1589,21 @@ ldfallback (data, fs, fe, ld) char fmtbuf[FALLBACK_FMTSIZE], *obuf; int fl; - obuf = (char *)xmalloc(LFALLBACK_BASE + (data->precision < 6 ? 6 : data->precision) + 2); + 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'; - sprintf (obuf, fmtbuf, ld); + + 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); @@ -1532,7 +1625,16 @@ dfallback (data, fs, fe, d) fl = fe - fs + 1; strncpy (fmtbuf, fs, fl); fmtbuf[fl] = '\0'; - sprintf (obuf, fmtbuf, d); + + 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); } diff --git a/src/bin/bash/lib/sh/spell.c b/src/bin/bash/lib/sh/spell.c index cff20b24a2..d0394c2974 100644 --- a/src/bin/bash/lib/sh/spell.c +++ b/src/bin/bash/lib/sh/spell.c @@ -2,21 +2,21 @@ /* Copyright (C) 2000 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -186,3 +186,27 @@ spdist(cur, new) 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/src/bin/bash/lib/sh/strcasecmp.c b/src/bin/bash/lib/sh/strcasecmp.c index 33d925ba8f..5542f71558 100644 --- a/src/bin/bash/lib/sh/strcasecmp.c +++ b/src/bin/bash/lib/sh/strcasecmp.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/strerror.c b/src/bin/bash/lib/sh/strerror.c index 4990aa7e57..4081e9c19c 100644 --- a/src/bin/bash/lib/sh/strerror.c +++ b/src/bin/bash/lib/sh/strerror.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/strftime.c b/src/bin/bash/lib/sh/strftime.c index 253d1df4cd..572baaee0d 100644 --- a/src/bin/bash/lib/sh/strftime.c +++ b/src/bin/bash/lib/sh/strftime.c @@ -1,7 +1,7 @@ +/* strftime - formatted time and date to a string */ /* * Modified slightly by Chet Ramey for inclusion in Bash */ - /* * strftime.c * @@ -80,26 +80,36 @@ #undef strchr /* avoid AIX weirdness */ +#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)) #if !defined(OS2) && !defined(MSDOS) && defined(HAVE_TZNAME) extern char *tzname[2]; extern int daylight; -#if defined(SOLARIS) || defined(mips) +#if defined(SOLARIS) || defined(mips) || defined (M_UNIX) extern long int timezone, altzone; #else +# if defined (HPUX) +extern long int timezone; +# else extern int timezone, altzone; -#endif +# endif /* !HPUX */ +#endif /* !SOLARIS && !mips && !M_UNIX */ #endif #undef min /* just in case */ @@ -461,6 +471,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) * 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 @@ -480,8 +492,13 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) * Systems with tzname[] probably have timezone as * secs west of GMT. Convert to mins east of GMT. */ - off = -(daylight ? timezone : altzone) / 60; +# ifdef HPUX + off = -timezone / 60; +# else + off = -(daylight ? altzone : timezone) / 60; +# endif /* !HPUX */ #else /* !HAVE_TZNAME */ + gettimeofday(& tv, & zone); off = -zone.tz_minuteswest; #endif /* !HAVE_TZNAME */ #endif /* !HAVE_TM_ZONE */ diff --git a/src/bin/bash/lib/sh/strindex.c b/src/bin/bash/lib/sh/strindex.c index 9172862895..5cb80ad3e3 100644 --- a/src/bin/bash/lib/sh/strindex.c +++ b/src/bin/bash/lib/sh/strindex.c @@ -1,24 +1,23 @@ /* strindex.c - Find if one string appears as a substring of another string, without regard to case. */ -/* Copyright (C) 2000 - Free Software Foundation, Inc. +/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/stringlist.c b/src/bin/bash/lib/sh/stringlist.c index efc6fa57f9..b0c272ae98 100644 --- a/src/bin/bash/lib/sh/stringlist.c +++ b/src/bin/bash/lib/sh/stringlist.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/stringvec.c b/src/bin/bash/lib/sh/stringvec.c index 222fcd62e1..b0ed416456 100644 --- a/src/bin/bash/lib/sh/stringvec.c +++ b/src/bin/bash/lib/sh/stringvec.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/strnlen.c b/src/bin/bash/lib/sh/strnlen.c new file mode 100644 index 0000000000..10414d3584 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/sh/strpbrk.c b/src/bin/bash/lib/sh/strpbrk.c index 3c493a8831..4439986a2a 100644 --- a/src/bin/bash/lib/sh/strpbrk.c +++ b/src/bin/bash/lib/sh/strpbrk.c @@ -1,20 +1,25 @@ +/* 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 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 file is part of GNU Bash, the Bourne Again SHell. - This program is distributed in the hope that it will be useful, + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ + along with Bash. If not, see . +*/ #ifdef HAVE_CONFIG_H # include diff --git a/src/bin/bash/lib/sh/strstr.c b/src/bin/bash/lib/sh/strstr.c new file mode 100644 index 0000000000..c43b05e379 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/sh/strtod.c b/src/bin/bash/lib/sh/strtod.c index cc3bec9663..851d99b9c2 100644 --- a/src/bin/bash/lib/sh/strtod.c +++ b/src/bin/bash/lib/sh/strtod.c @@ -1,18 +1,22 @@ +/* strtod.c - convert string to double-precision floating-point value. */ + /* Copyright (C) 1991, 1992 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can 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. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ + along with Bash. If not, see . +*/ #if HAVE_CONFIG_H # include diff --git a/src/bin/bash/lib/sh/strtoimax.c b/src/bin/bash/lib/sh/strtoimax.c index 30075ce9b6..373f66a0a6 100644 --- a/src/bin/bash/lib/sh/strtoimax.c +++ b/src/bin/bash/lib/sh/strtoimax.c @@ -1,19 +1,22 @@ -/* Convert string representation of a number into an intmax_t value. - Copyright 1999, 2001 Free Software Foundation, Inc. +/* strtoimax - convert string representation of a number into an intmax_t value. */ - This program is free software; you can redistribute it and/or modify +/* Copyright 1999-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ + along with Bash. If not, see . +*/ /* Written by Paul Eggert. Modified by Chet Ramey for Bash. */ @@ -48,6 +51,10 @@ extern long strtol __P((const char *, char **, int)); extern long long strtoll __P((const char *, char **, int)); #endif +#ifdef strtoimax +#undef strtoimax +#endif + intmax_t strtoimax (ptr, endptr, base) const char *ptr; diff --git a/src/bin/bash/lib/sh/strtol.c b/src/bin/bash/lib/sh/strtol.c index 2adbb897ab..8aa7478806 100644 --- a/src/bin/bash/lib/sh/strtol.c +++ b/src/bin/bash/lib/sh/strtol.c @@ -1,21 +1,22 @@ -/* Convert string representation of a number into an integer value. - Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. +/* strtol - convert string representation of a number into a long integer value. */ - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. +/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. - The GNU C Library is distributed in the hope that it will be useful, + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/strtoll.c b/src/bin/bash/lib/sh/strtoll.c index 20004973ef..f6060eefa4 100644 --- a/src/bin/bash/lib/sh/strtoll.c +++ b/src/bin/bash/lib/sh/strtoll.c @@ -1,18 +1,22 @@ +/* strtoll - convert string representation of a number into a long long value. */ + /* Copyright (C) 1997 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. + This file is part of GNU Bash, the Bourne Again SHell. -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. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/sh/strtoul.c b/src/bin/bash/lib/sh/strtoul.c index 4a75d76eb3..cbaa48452f 100644 --- a/src/bin/bash/lib/sh/strtoul.c +++ b/src/bin/bash/lib/sh/strtoul.c @@ -1,18 +1,22 @@ +/* strtoul - convert string representation of a number into an unsigned long value. */ + /* Copyright (C) 1997 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. + This file is part of GNU Bash, the Bourne Again SHell. -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. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/sh/strtoull.c b/src/bin/bash/lib/sh/strtoull.c index 09a2fac95b..02ddebb902 100644 --- a/src/bin/bash/lib/sh/strtoull.c +++ b/src/bin/bash/lib/sh/strtoull.c @@ -1,18 +1,22 @@ +/* strtoull - convert string representation of a number into an unsigned long long value. */ + /* Copyright (C) 1997 Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. + This file is part of GNU Bash, the Bourne Again SHell. -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. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/sh/strtoumax.c b/src/bin/bash/lib/sh/strtoumax.c index c35461a2fa..3652b1e300 100644 --- a/src/bin/bash/lib/sh/strtoumax.c +++ b/src/bin/bash/lib/sh/strtoumax.c @@ -1,20 +1,22 @@ -/* Convert string representation of a number into an uintmax_t value. - Copyright 1999, 2001 Free Software Foundation, Inc. +/* strtoumax - convert string representation of a number into an uintmax_t value. */ - This program is free software; you can redistribute it and/or modify +/* Copyright 1999-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + 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, + Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ - + along with Bash. If not, see . +*/ /* Written by Paul Eggert. Modified by Chet Ramey for Bash. */ #if HAVE_CONFIG_H @@ -48,6 +50,10 @@ extern unsigned long strtoul __P((const char *, char **, int)); extern unsigned long long strtoull __P((const char *, char **, int)); #endif +#ifdef strtoumax +#undef strtoumax +#endif + uintmax_t strtoumax (ptr, endptr, base) const char *ptr; diff --git a/src/bin/bash/lib/sh/strtrans.c b/src/bin/bash/lib/sh/strtrans.c index 741927c667..355a3061ee 100644 --- a/src/bin/bash/lib/sh/strtrans.c +++ b/src/bin/bash/lib/sh/strtrans.c @@ -1,24 +1,22 @@ -/* strtrans.c - Translate and untranslate strings with ANSI-C escape - sequences. */ +/* strtrans.c - Translate and untranslate strings with ANSI-C escape sequences. */ -/* Copyright (C) 2000 - Free Software Foundation, Inc. +/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -44,7 +42,8 @@ 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 */ + 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; @@ -80,8 +79,18 @@ ansicstr (string, len, flags, sawc, rlen) case 'n': c = '\n'; break; case 'r': c = '\r'; break; case 't': c = '\t'; break; - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': + 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 @@ -92,10 +101,27 @@ ansicstr (string, len, flags, sawc, rlen) 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 */ - if (temp == 2) + else if (temp == 2) { *r++ = '\\'; c = 'x'; @@ -104,7 +130,7 @@ ansicstr (string, len, flags, sawc, rlen) break; case '\\': break; - case '\'': + case '\'': case '"': case '?': if (flags & 1) *r++ = '\\'; break; @@ -124,7 +150,10 @@ ansicstr (string, len, flags, sawc, rlen) break; } /*FALLTHROUGH*/ - default: *r++ = '\\'; break; + default: + if ((flags & 4) == 0) + *r++ = '\\'; + break; } if ((flags & 2) && (c == CTLESC || c == CTLNUL)) *r++ = CTLESC; @@ -145,7 +174,7 @@ ansic_quote (str, flags, rlen) int flags, *rlen; { char *r, *ret, *s; - int l, rsize, t; + int l, rsize; unsigned char c; if (str == 0 || *str == 0) diff --git a/src/bin/bash/lib/sh/times.c b/src/bin/bash/lib/sh/times.c index 7136cf20a2..47ddf57724 100644 --- a/src/bin/bash/lib/sh/times.c +++ b/src/bin/bash/lib/sh/times.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/timeval.c b/src/bin/bash/lib/sh/timeval.c index f7f624eba1..7bd9df8f6d 100644 --- a/src/bin/bash/lib/sh/timeval.c +++ b/src/bin/bash/lib/sh/timeval.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/tmpfile.c b/src/bin/bash/lib/sh/tmpfile.c index e28f94d052..a87c254fbd 100644 --- a/src/bin/bash/lib/sh/tmpfile.c +++ b/src/bin/bash/lib/sh/tmpfile.c @@ -6,19 +6,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include @@ -47,6 +47,9 @@ extern int errno; extern pid_t dollar_dollar_pid; +static char *get_sys_tmpdir __P((void)); +static char *get_tmpdir __P((int)); + static char *sys_tmpdir = (char *)NULL; static int ntmpfiles; static int tmpnamelen = -1; @@ -55,27 +58,25 @@ static unsigned long filenum = 1L; static char * get_sys_tmpdir () { - struct stat sb; - if (sys_tmpdir) return sys_tmpdir; #ifdef P_tmpdir sys_tmpdir = P_tmpdir; - if (stat (sys_tmpdir, &sb) == 0) + if (file_iswdir (sys_tmpdir)) return sys_tmpdir; #endif sys_tmpdir = "/tmp"; - if (stat (sys_tmpdir, &sb) == 0) + if (file_iswdir (sys_tmpdir)) return sys_tmpdir; sys_tmpdir = "/var/tmp"; - if (stat (sys_tmpdir, &sb) == 0) + if (file_iswdir (sys_tmpdir)) return sys_tmpdir; sys_tmpdir = "/usr/tmp"; - if (stat (sys_tmpdir, &sb) == 0) + if (file_iswdir (sys_tmpdir)) return sys_tmpdir; sys_tmpdir = DEFAULT_TMPDIR; @@ -90,6 +91,9 @@ get_tmpdir (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 (); diff --git a/src/bin/bash/lib/sh/uconvert.c b/src/bin/bash/lib/sh/uconvert.c new file mode 100644 index 0000000000..1009565328 --- /dev/null +++ b/src/bin/bash/lib/sh/uconvert.c @@ -0,0 +1,116 @@ +/* uconvert - convert string representations of decimal numbers into whole + number/fractional value pairs. */ + +/* Copyright (C) 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 "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" + +#define DECIMAL '.' /* XXX - should use locale */ + +#define RETURN(x) \ +do { \ + if (ip) *ip = ipart * mult; \ + if (up) *up = upart; \ + 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. + Return 1 if value converted; 0 if invalid integer for either whole or + fractional parts. */ +int +uconvert(s, ip, up) + char *s; + long *ip, *up; +{ + 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) + 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) + 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 */ + + RETURN(1); +} diff --git a/src/bin/bash/lib/sh/ufuncs.c b/src/bin/bash/lib/sh/ufuncs.c new file mode 100644 index 0000000000..ed526feef7 --- /dev/null +++ b/src/bin/bash/lib/sh/ufuncs.c @@ -0,0 +1,104 @@ +/* ufuncs - sleep and alarm functions that understand fractional values */ + +/* Copyright (C) 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 "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 + +/* 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) +int +fsleep(sec, usec) + unsigned int sec, usec; +{ + struct timeval tv; + + tv.tv_sec = sec; + tv.tv_usec = usec; + + return select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); +} +#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/src/bin/bash/lib/sh/vprint.c b/src/bin/bash/lib/sh/vprint.c index 929bdbcea0..567fba3849 100644 --- a/src/bin/bash/lib/sh/vprint.c +++ b/src/bin/bash/lib/sh/vprint.c @@ -2,21 +2,21 @@ /* Copyright (C) 1987,1989 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/wcsdup.c b/src/bin/bash/lib/sh/wcsdup.c new file mode 100644 index 0000000000..62a3c8641e --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/lib/sh/winsize.c b/src/bin/bash/lib/sh/winsize.c new file mode 100644 index 0000000000..81ebb378c0 --- /dev/null +++ b/src/bin/bash/lib/sh/winsize.c @@ -0,0 +1,83 @@ +/* winsize.c - handle window size changes and information. */ + +/* Copyright (C) 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 "config.h" + +#include + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#if !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) +/* For struct winsize on SCO */ +/* sys/ptem.h has winsize but needs mblk_t from sys/stream.h */ +# if defined (HAVE_SYS_PTEM_H) && defined (TIOCGWINSZ) && defined (SIGWINCH) +# if defined (HAVE_SYS_STREAM_H) +# include +# endif +# include +# endif /* HAVE_SYS_PTEM_H && TIOCGWINSZ && SIGWINCH */ +#endif /* !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 __P((int, int)); +#endif +extern void sh_set_lines_and_columns __P((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/src/bin/bash/lib/sh/xstrchr.c b/src/bin/bash/lib/sh/xstrchr.c index 3272837a10..6dd4d8ed28 100644 --- a/src/bin/bash/lib/sh/xstrchr.c +++ b/src/bin/bash/lib/sh/xstrchr.c @@ -4,19 +4,19 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include diff --git a/src/bin/bash/lib/sh/zcatfd.c b/src/bin/bash/lib/sh/zcatfd.c index 24020ebc7e..bdbcd91052 100644 --- a/src/bin/bash/lib/sh/zcatfd.c +++ b/src/bin/bash/lib/sh/zcatfd.c @@ -1,20 +1,22 @@ +/* zcatfd - copy contents of file descriptor to another */ + /* Copyright (C) 2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/sh/zgetline.c b/src/bin/bash/lib/sh/zgetline.c new file mode 100644 index 0000000000..33ac830da6 --- /dev/null +++ b/src/bin/bash/lib/sh/zgetline.c @@ -0,0 +1,121 @@ +/* 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,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 + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "xmalloc.h" + +#if !defined (errno) +extern int errno; +#endif + +extern ssize_t zread __P((int, char *, size_t)); +extern ssize_t zreadc __P((int, char *)); +extern ssize_t zreadintr __P((int, char *, size_t)); +extern ssize_t zreadcintr __P((int, char *)); + +typedef ssize_t breadfunc_t __P((int, char *, size_t)); +typedef ssize_t creadfunc_t __P((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 the first, and + (3) the addtion of thired 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, unbuffered_read) + int fd; + char **lineptr; + size_t *n; + 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 == '\n') + { + line[nr] = '\0'; + break; + } + } + + return nr - 1; +} diff --git a/src/bin/bash/lib/sh/zmapfd.c b/src/bin/bash/lib/sh/zmapfd.c new file mode 100644 index 0000000000..4000c4a5a8 --- /dev/null +++ b/src/bin/bash/lib/sh/zmapfd.c @@ -0,0 +1,90 @@ +/* zmapfd - read contents of file descriptor into a newly-allocated buffer */ + +/* 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 + +#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 + +extern ssize_t zread __P((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[128]; + char *result; + int rsize, rind; + + rval = 0; + result = (char *)xmalloc (rsize = 64); + rind = 0; + + while (1) + { + nr = zread (fd, lbuf, sizeof (lbuf)); + if (nr == 0) + { + rval = rind; + break; + } + else if (nr < 0) + { + rval = -1; + free (result); + if (ostr) + *ostr = (char *)NULL; + break; + } + + RESIZE_MALLOCED_BUFFER (result, rind, nr, rsize, 128); + 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/src/bin/bash/lib/sh/zread.c b/src/bin/bash/lib/sh/zread.c index b5155488f1..0fd1199ed1 100644 --- a/src/bin/bash/lib/sh/zread.c +++ b/src/bin/bash/lib/sh/zread.c @@ -1,20 +1,22 @@ +/* zread - read data from file descriptor into buffer with retries */ + /* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 @@ -58,7 +60,7 @@ zread (fd, buf, len) #define NUM_INTR 3 ssize_t -zreadintr (fd, buf, len) +zreadretry (fd, buf, len) int fd; char *buf; size_t len; @@ -73,7 +75,7 @@ zreadintr (fd, buf, len) return r; if (r == -1 && errno == EINTR) { - if (++nintr > NUM_INTR) + if (++nintr >= NUM_INTR) return -1; continue; } @@ -81,6 +83,16 @@ zreadintr (fd, buf, len) } } +/* 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; +{ + 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. */ @@ -111,6 +123,31 @@ zreadc (fd, cp) 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; +} + void zreset () { @@ -124,9 +161,13 @@ zsyncfd (fd) int fd; { off_t off; + int r; off = lused - lind; + r = 0; if (off > 0) - lseek (fd, -off, SEEK_CUR); - lused = lind = 0; + r = lseek (fd, -off, SEEK_CUR); + + if (r >= 0) + lused = lind = 0; } diff --git a/src/bin/bash/lib/sh/zwrite.c b/src/bin/bash/lib/sh/zwrite.c index cf1f9e62ac..3240f4f422 100644 --- a/src/bin/bash/lib/sh/zwrite.c +++ b/src/bin/bash/lib/sh/zwrite.c @@ -1,20 +1,22 @@ +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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 diff --git a/src/bin/bash/lib/tilde/Makefile.in b/src/bin/bash/lib/tilde/Makefile.in index aa7bbf0788..d5506c500b 100644 --- a/src/bin/bash/lib/tilde/Makefile.in +++ b/src/bin/bash/lib/tilde/Makefile.in @@ -4,21 +4,20 @@ # # #################################################################### -# Copyright (C) 1996 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . srcdir = @srcdir@ VPATH = .:@srcdir@ diff --git a/src/bin/bash/lib/tilde/doc/Makefile b/src/bin/bash/lib/tilde/doc/Makefile deleted file mode 100644 index a2246db44f..0000000000 --- a/src/bin/bash/lib/tilde/doc/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -clean distclean mostlyclean maintainer-clean: - rm -f tilde.?? - -all: - cp tilde.texi tilde.info diff --git a/src/bin/bash/lib/tilde/doc/tilde.texi b/src/bin/bash/lib/tilde/doc/tilde.texi deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/bin/bash/lib/tilde/shell.c b/src/bin/bash/lib/tilde/shell.c index a45af2d44a..40a95b6355 100644 --- a/src/bin/bash/lib/tilde/shell.c +++ b/src/bin/bash/lib/tilde/shell.c @@ -1,24 +1,23 @@ /* shell.c -- tilde utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998-2009 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 2, or + 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 + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/lib/tilde/tilde.c b/src/bin/bash/lib/tilde/tilde.c index 154f7f8108..088ff1540b 100644 --- a/src/bin/bash/lib/tilde/tilde.c +++ b/src/bin/bash/lib/tilde/tilde.c @@ -1,23 +1,23 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988,1989 Free Software Foundation, Inc. +/* Copyright (C) 1988-2009 Free Software Foundation, Inc. - This file is part of GNU Readline, a library for reading lines - of text with interactive input and history editing. + 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 2, or (at your option) any - later version. + 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. + Readline is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Readline; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Readline. If not, see . +*/ #if defined (HAVE_CONFIG_H) # include @@ -43,7 +43,9 @@ #endif /* HAVE_STDLIB_H */ #include +#if defined (HAVE_PWD_H) #include +#endif #include "tilde.h" @@ -54,8 +56,12 @@ static void *xmalloc (), *xrealloc (); #endif /* TEST || STATIC_MALLOC */ #if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) extern struct passwd *getpwuid PARAMS((uid_t)); +# endif +# if defined (HAVE_GETPWNAM) extern struct passwd *getpwnam PARAMS((const char *)); +# endif #endif /* !HAVE_GETPW_DECLS */ #if !defined (savestring) @@ -230,7 +236,7 @@ tilde_expand (string) string += end; expansion = tilde_expand_word (tilde_word); - free (tilde_word); + xfree (tilde_word); len = strlen (expansion); #ifdef __CYGWIN__ @@ -245,7 +251,7 @@ tilde_expand (string) strcpy (result + result_index, expansion); result_index += len; } - free (expansion); + xfree (expansion); } result[result_index] = '\0'; @@ -277,6 +283,39 @@ isolate_tilde_prefix (fname, lenp) 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 (fname, flags, lenp) + const char *fname; + int flags, *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 * @@ -338,7 +377,7 @@ tilde_expand_word (filename) if (expansion) { dirname = glue_prefix_and_suffix (expansion, filename, user_len); - free (username); + xfree (username); free (expansion); return (dirname); } @@ -347,7 +386,11 @@ tilde_expand_word (filename) /* 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, @@ -361,19 +404,20 @@ tilde_expand_word (filename) free (expansion); } } - free (username); /* 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 - { - free (username); - dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); - } + dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); +#endif + xfree (username); +#if defined (HAVE_GETPWENT) endpwent (); +#endif return (dirname); } diff --git a/src/bin/bash/lib/tilde/tilde.h b/src/bin/bash/lib/tilde/tilde.h index f8182c999d..e26dd0476f 100644 --- a/src/bin/bash/lib/tilde/tilde.h +++ b/src/bin/bash/lib/tilde/tilde.h @@ -1,25 +1,24 @@ /* tilde.h: Externally available variables and function in libtilde.a. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. - This file contains the Readline Library (the Library), a set of + This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask for it. - The Library is free software; you can redistribute it and/or modify + Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - The 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. + 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. - The GNU General Public License is often shipped with GNU software, and - is generally kept in a file called COPYING or LICENSE. If you do not - have a copy of the license, write to the Free Software Foundation, - 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -71,6 +70,9 @@ extern char *tilde_expand PARAMS((const char *)); 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 diff --git a/src/bin/bash/list.c b/src/bin/bash/list.c index bb7943a80c..88835f58e5 100644 --- a/src/bin/bash/list.c +++ b/src/bin/bash/list.c @@ -1,23 +1,22 @@ /* list.c - Functions for manipulating linked lists of objects. */ -/* Copyright (C) 1996 - Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" diff --git a/src/bin/bash/locale.c b/src/bin/bash/locale.c index 1805b2fbde..2f2e9fc45b 100644 --- a/src/bin/bash/locale.c +++ b/src/bin/bash/locale.c @@ -1,22 +1,22 @@ /* locale.c - Miscellaneous internationalization functions. */ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -30,10 +30,15 @@ #include "bashansi.h" #include #include "chartypes.h" +#include #include "shell.h" #include "input.h" /* For bash_input */ +#ifndef errno +extern int errno; +#endif + extern int dump_translatable_strings, dump_po_strings; /* The current locale when the program begins */ @@ -47,6 +52,16 @@ static char *default_dir; 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 __P((void)); + +static void locale_setblanks __P((void)); + /* Set the value of default_locale and make the current locale the system default locale. This should be called very early in main(). */ void @@ -57,10 +72,12 @@ set_default_locale () if (default_locale) default_locale = savestring (default_locale); #endif /* HAVE_SETLOCALE */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); } -/* Set default values for LC_CTYPE, LC_COLLATE, and LC_MESSAGES if they - are not specified in the environment, but LANG or LC_ALL is. This +/* 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 () @@ -68,9 +85,15 @@ 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); + { + setlocale (LC_CTYPE, lc_all); + locale_setblanks (); + } +# endif # if defined (LC_COLLATE) val = get_string_value ("LC_COLLATE"); @@ -90,6 +113,12 @@ set_default_locale_vars () 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"); @@ -97,7 +126,10 @@ set_default_locale_vars () { FREE (default_domain); default_domain = savestring (val); +#if 0 + /* Don't want to override the shell's textdomain as the default */ textdomain (default_domain); +#endif } val = get_string_value ("TEXTDOMAINDIR"); @@ -105,7 +137,8 @@ set_default_locale_vars () { FREE (default_dir); default_dir = savestring (val); - bindtextdomain (default_domain, default_dir); + if (default_domain && *default_domain) + bindtextdomain (default_domain, default_dir); } } @@ -115,18 +148,27 @@ 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 0 + /* Don't want to override the shell's textdomain as the default */ textdomain (default_domain); +#endif return (1); } else if (var[0] == 'T') /* TEXTDOMAINDIR */ { FREE (default_dir); default_dir = value ? savestring (value) : (char *)NULL; - bindtextdomain (default_domain, default_dir); + if (default_domain && *default_domain) + bindtextdomain (default_domain, default_dir); return (1); } @@ -137,15 +179,22 @@ set_locale_var (var, value) FREE (lc_all); if (value) lc_all = savestring (value); - else if (default_locale) - lc_all = savestring (default_locale); else { lc_all = (char *)xmalloc (1); lc_all[0] = '\0'; } #if defined (HAVE_SETLOCALE) - return (setlocale (LC_ALL, lc_all) != 0); + 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 (); + return r; #else return (1); #endif @@ -154,46 +203,91 @@ set_locale_var (var, value) #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') - return (setlocale (LC_CTYPE, value ? value : "") != 0); + { + x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); + locale_setblanks (); + } +# endif } else if (var[3] == 'C' && var[4] == 'O') /* LC_COLLATE */ { # if defined (LC_COLLATE) if (lc_all == 0 || *lc_all == '\0') - return (setlocale (LC_COLLATE, value ? value : "") != 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') - return (setlocale (LC_MESSAGES, value ? value : "") != 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') - return (setlocale (LC_NUMERIC, value ? value : "") != 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 (0); + return (x != 0); } -/* Called when LANG is assigned a value. Sets LC_ALL category with - setlocale(3) if that has not already been set. Doesn't change any - shell variables. */ +/* 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; { - return ((lc_all == 0 || *lc_all == 0) ? setlocale (LC_ALL, value?value:"") != NULL : 0); + 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); } -/* Get the value of one of the locale variables (LC_MESSAGES, LC_CTYPE) */ +/* 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; @@ -202,14 +296,54 @@ get_locale_var (var) locale = lc_all; - if (locale == 0) + if (locale == 0 || *locale == 0) locale = get_string_value (var); - if (locale == 0) - locale = default_locale; - + 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; +#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; + +# if defined (LC_CTYPE) + t = 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 (); + +#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 @@ -220,10 +354,8 @@ localetrans (string, len, lenp) int len, *lenp; { char *locale, *t; -#if defined (HAVE_GETTEXT) char *translated; int tlen; -#endif /* Don't try to translate null strings. */ if (string == 0 || *string == 0) @@ -238,10 +370,8 @@ localetrans (string, len, lenp) /* 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 defined (HAVE_GETTEXT) if (locale == 0 || locale[0] == '\0' || (locale[0] == 'C' && locale[1] == '\0') || STREQ (locale, "POSIX")) -#endif { t = (char *)xmalloc (len + 1); strcpy (t, string); @@ -250,9 +380,12 @@ localetrans (string, len, lenp) return (t); } -#if defined (HAVE_GETTEXT) /* Now try to translate it. */ - translated = gettext (string); + 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); @@ -269,7 +402,6 @@ localetrans (string, len, lenp) *lenp = tlen; } return (t); -#endif /* HAVE_GETTEXT */ } /* Change a bash string into a string suitable for inclusion in a `po' file. @@ -339,11 +471,12 @@ localeexpand (string, start, end, lineno, lenp) 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. */ + 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) @@ -378,3 +511,24 @@ localeexpand (string, start, end, lineno, lenp) 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 (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); + } +} diff --git a/src/bin/bash/mailcheck.c b/src/bin/bash/mailcheck.c index 5cc2fc2265..ed64bdfb39 100644 --- a/src/bin/bash/mailcheck.c +++ b/src/bin/bash/mailcheck.c @@ -1,22 +1,22 @@ /* mailcheck.c -- The check is in the mail... */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -31,20 +31,27 @@ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #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 __P((const char *, struct stat *)); -typedef struct { +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. */ @@ -54,15 +61,19 @@ static FILEINFO **mailfiles = (FILEINFO **)NULL; static int mailfiles_count; /* The last known time that mail was checked. */ -static time_t last_time_mail_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 __P((char *)); +static void init_mail_file __P((int)); static void update_mail_file __P((int)); static int add_mail_file __P((char *, char *)); +static FILEINFO *alloc_mail_file __P((char *, char *)); +static void dispose_mail_file __P((FILEINFO *)); + static int file_mod_date_changed __P((int)); static int file_access_date_changed __P((int)); static int file_has_grown __P((int)); @@ -118,9 +129,29 @@ find_mail_file (file) { \ 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; @@ -130,11 +161,7 @@ update_mail_file (i) file = mailfiles[i]->name; if (mailstat (file, &finfo) == 0) - { - mailfiles[i]->access_time = finfo.st_atime; - mailfiles[i]->mod_time = finfo.st_mtime; - mailfiles[i]->file_size = finfo.st_size; - } + UPDATE_MAIL_FILE (i, finfo); else RESET_MAIL_FILE (i); } @@ -154,11 +181,8 @@ add_mail_file (file, msg) if (i >= 0) { if (mailstat (filename, &finfo) == 0) - { - mailfiles[i]->mod_time = finfo.st_mtime; - mailfiles[i]->access_time = finfo.st_atime; - mailfiles[i]->file_size = finfo.st_size; - } + UPDATE_MAIL_FILE (i, finfo); + free (filename); return i; } @@ -167,10 +191,9 @@ add_mail_file (file, msg) mailfiles = (FILEINFO **)xrealloc (mailfiles, mailfiles_count * sizeof (FILEINFO *)); - mailfiles[i] = (FILEINFO *)xmalloc (sizeof (FILEINFO)); - mailfiles[i]->name = filename; - mailfiles[i]->msg = msg ? savestring (msg) : (char *)NULL; - update_mail_file (i); + mailfiles[i] = alloc_mail_file (filename, msg); + init_mail_file (i); + return i; } @@ -181,9 +204,30 @@ reset_mail_files () register int i; for (i = 0; i < mailfiles_count; i++) - { - RESET_MAIL_FILE (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. */ @@ -193,11 +237,7 @@ free_mail_files () register int i; for (i = 0; i < mailfiles_count; i++) - { - free (mailfiles[i]->name); - FREE (mailfiles[i]->msg); - free (mailfiles[i]); - } + dispose_mail_file (mailfiles[i]); if (mailfiles) free (mailfiles); @@ -206,8 +246,16 @@ free_mail_files () 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. */ + 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; @@ -222,6 +270,9 @@ file_mod_date_changed (i) if ((mailstat (file, &finfo) == 0) && (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); } @@ -289,6 +340,7 @@ parse_mailpath_spec (str) char * make_default_mailpath () { +#if defined (DEFAULT_MAIL_DIRECTORY) char *mp; get_current_user_info (); @@ -297,11 +349,15 @@ make_default_mailpath () 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 () { @@ -321,8 +377,11 @@ remember_mail_dates () if (mailpaths == 0) { mailpaths = make_default_mailpath (); - add_mail_file (mailpaths, (char *)NULL); - free (mailpaths); + if (mailpaths) + { + add_mail_file (mailpaths, (char *)NULL); + free (mailpaths); + } return; } @@ -371,9 +430,9 @@ check_mail () int file_is_bigger; use_user_notification = mailfiles[i]->msg != (char *)NULL; - message = mailfiles[i]->msg ? mailfiles[i]->msg : "You have mail in $_"; + message = mailfiles[i]->msg ? mailfiles[i]->msg : _("You have mail in $_"); - bind_variable ("_", current_mail_file); + bind_variable ("_", current_mail_file, 0); #define atime mailfiles[i]->access_time #define mtime mailfiles[i]->mod_time @@ -390,13 +449,13 @@ check_mail () 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) + 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 $_"; + message = _("You have new mail in $_"); #undef atime #undef mtime @@ -412,13 +471,13 @@ check_mail () if (mail_warning && file_access_date_changed (i)) { update_mail_file (i); - printf ("The mail in %s has been read\n", current_mail_file); + printf (_("The mail in %s has been read\n"), current_mail_file); } } if (dollar_underscore) { - bind_variable ("_", dollar_underscore); + bind_variable ("_", dollar_underscore, 0); free (dollar_underscore); } else diff --git a/src/bin/bash/mailcheck.h b/src/bin/bash/mailcheck.h index 1c6f24ff9e..3ca8440aa0 100644 --- a/src/bin/bash/mailcheck.h +++ b/src/bin/bash/mailcheck.h @@ -1,22 +1,22 @@ /* mailcheck.h -- variables and function declarations for mail checking. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991,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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_MAILCHECK_H_) #define _MAILCHECK_H_ @@ -28,6 +28,7 @@ extern void reset_mail_files __P((void)); extern void free_mail_files __P((void)); extern char *make_default_mailpath __P((void)); extern void remember_mail_dates __P((void)); +extern void init_mail_dates __P((void)); extern void check_mail __P((void)); #endif /* _MAILCHECK_H */ diff --git a/src/bin/bash/make_cmd.c b/src/bin/bash/make_cmd.c index 586db46459..58c4432ffb 100644 --- a/src/bin/bash/make_cmd.c +++ b/src/bin/bash/make_cmd.c @@ -1,29 +1,29 @@ /* make_cmd.c -- Functions for making instances of the various parser constructs. */ -/* Copyright (C) 1989-2002 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "filecntl.h" @@ -32,6 +32,8 @@ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ # include #endif +#include "bashintl.h" + #include "syntax.h" #include "command.h" #include "general.h" @@ -61,7 +63,7 @@ sh_obj_cache_t wlcache = {0, 0, 0}; #define WDCACHESIZE 60 #define WLCACHESIZE 60 -static COMMAND *make_for_or_select __P((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *)); +static COMMAND *make_for_or_select __P((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *, int)); #if defined (ARITH_FOR_COMMAND) static WORD_LIST *make_arith_for_expr __P((char *)); #endif @@ -74,16 +76,24 @@ cmd_init () 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; -#if 0 - temp = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); -#else - ocache_alloc (wdcache, WORD_DESC, temp); -#endif + + temp = alloc_word_desc (); if (*string) temp->word = savestring (string); @@ -93,7 +103,6 @@ make_bare_word (string) temp->word[0] = '\0'; } - temp->flags = 0; return (temp); } @@ -159,11 +168,8 @@ make_word_list (word, wlink) { WORD_LIST *temp; -#if 0 - temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); -#else ocache_alloc (wlcache, WORD_LIST, temp); -#endif + temp->word = word; temp->next = wlink; return (temp); @@ -199,39 +205,43 @@ command_connect (com1, com2, connector) } static COMMAND * -make_for_or_select (type, name, map_list, action) +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) +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)); + return (make_for_or_select (cm_for, name, map_list, action, lineno)); } COMMAND * -make_select_command (name, map_list, action) +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)); + return (make_for_or_select (cm_select, name, map_list, action, lineno)); #else last_command_exit_value = 2; return ((COMMAND *)NULL); @@ -244,14 +254,21 @@ make_arith_for_expr (s) char *s; { WORD_LIST *result; + WORD_DESC *wd; if (s == 0 || *s == '\0') return ((WORD_LIST *)NULL); - result = make_word_list (make_word (s), (WORD_LIST *)NULL); + wd = make_word (s); + wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_DQUOTE; /* no word splitting or globbing */ + 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; @@ -302,10 +319,10 @@ make_arith_for_command (exprs, action, lineno) if (nsemi != 3) { if (nsemi < 3) - parser_error (lineno, "syntax error: arithmetic expression required"); + parser_error (lineno, _("syntax error: arithmetic expression required")); else - parser_error (lineno, "syntax error: `;' unexpected"); - parser_error (lineno, "syntax error: `((%s))'", exprs->word->word); + parser_error (lineno, _("syntax error: `;' unexpected")); + parser_error (lineno, _("syntax error: `((%s))'"), exprs->word->word); last_command_exit_value = 2; return ((COMMAND *)NULL); } @@ -318,8 +335,10 @@ make_arith_for_command (exprs, action, lineno) 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); last_command_exit_value = 2; return ((COMMAND *)NULL); #endif /* ARITH_FOR_COMMAND */ @@ -337,14 +356,16 @@ make_group_command (command) } COMMAND * -make_case_command (word, clauses) +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)); @@ -361,6 +382,7 @@ make_pattern_list (patterns, action) temp->patterns = REVERSE_LIST (patterns, WORD_LIST *); temp->action = action; temp->next = NULL; + temp->flags = 0; return (temp); } @@ -511,7 +533,7 @@ make_simple_command (element, command) if (element.word) command->value.Simple->words = make_word_list (element.word, command->value.Simple->words); - else + else if (element.redirect) { REDIRECT *r = element.redirect; /* Due to the way <> is implemented, there may be more than a single @@ -531,8 +553,9 @@ make_simple_command (element, command) the redirectee.word with the new input text. If <<- is on, then remove leading TABS from each line. */ void -make_here_document (temp) +make_here_document (temp, lineno) REDIRECT *temp; + int lineno; { int kill_leading, redir_len; char *redir_word, *document, *full_line; @@ -541,7 +564,7 @@ make_here_document (temp) if (temp->instruction != r_deblank_reading_until && temp->instruction != r_reading_until) { - internal_error ("make_here_document: bad instruction type %d", temp->instruction); + internal_error (_("make_here_document: bad instruction type %d"), temp->instruction); return; } @@ -588,6 +611,11 @@ make_here_document (temp) 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 @@ -619,6 +647,9 @@ make_here_document (temp) 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'; @@ -658,11 +689,12 @@ make_redirection (source, instruction, dest_and_filename) case r_output_direction: /* >foo */ case r_output_force: /* >| foo */ - case r_err_and_out: /* command &>filename */ + 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; @@ -711,7 +743,7 @@ make_redirection (source, instruction, dest_and_filename) break; default: - programming_error ("make_redirection: redirection instruction `%d' out of range", instruction); + programming_error (_("make_redirection: redirection instruction `%d' out of range"), instruction); abort (); break; } @@ -725,6 +757,10 @@ make_function_def (name, command, lineno, lstart) 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; @@ -732,6 +768,19 @@ make_function_def (name, command, lineno, lstart) 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 +#if defined (DEBUGGER) + bind_function_def (name->word, temp); +#endif + + temp->source_file = 0; return (make_command (cm_function_def, (SIMPLE_COM *)temp)); } @@ -747,6 +796,20 @@ make_subshell_command (command) 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)); +} + /* 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. */ diff --git a/src/bin/bash/make_cmd.h b/src/bin/bash/make_cmd.h index 7fb5697d39..0a7456ee2f 100644 --- a/src/bin/bash/make_cmd.h +++ b/src/bin/bash/make_cmd.h @@ -1,22 +1,22 @@ /* make_cmd.h -- Declarations of functions found in make_cmd.c */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -25,6 +25,7 @@ extern void cmd_init __P((void)); +extern WORD_DESC *alloc_word_desc __P((void)); extern WORD_DESC *make_bare_word __P((const char *)); extern WORD_DESC *make_word_flags __P((WORD_DESC *, const char *)); extern WORD_DESC *make_word __P((const char *)); @@ -36,23 +37,23 @@ extern WORD_LIST *make_word_list __P((WORD_DESC *, WORD_LIST *)); extern COMMAND *make_command __P((enum command_type, SIMPLE_COM *)); extern COMMAND *command_connect __P((COMMAND *, COMMAND *, int)); -extern COMMAND *make_for_command __P((WORD_DESC *, WORD_LIST *, COMMAND *)); +extern COMMAND *make_for_command __P((WORD_DESC *, WORD_LIST *, COMMAND *, int)); extern COMMAND *make_group_command __P((COMMAND *)); -extern COMMAND *make_case_command __P((WORD_DESC *, PATTERN_LIST *)); +extern COMMAND *make_case_command __P((WORD_DESC *, PATTERN_LIST *, int)); extern PATTERN_LIST *make_pattern_list __P((WORD_LIST *, COMMAND *)); extern COMMAND *make_if_command __P((COMMAND *, COMMAND *, COMMAND *)); extern COMMAND *make_while_command __P((COMMAND *, COMMAND *)); extern COMMAND *make_until_command __P((COMMAND *, COMMAND *)); extern COMMAND *make_bare_simple_command __P((void)); extern COMMAND *make_simple_command __P((ELEMENT, COMMAND *)); -extern void make_here_document __P((REDIRECT *)); +extern void make_here_document __P((REDIRECT *, int)); extern REDIRECT *make_redirection __P((int, enum r_instruction, REDIRECTEE)); extern COMMAND *make_function_def __P((WORD_DESC *, COMMAND *, int, int)); extern COMMAND *clean_simple_command __P((COMMAND *)); extern COMMAND *make_arith_command __P((WORD_LIST *)); -extern COMMAND *make_select_command __P((WORD_DESC *, WORD_LIST *, COMMAND *)); +extern COMMAND *make_select_command __P((WORD_DESC *, WORD_LIST *, COMMAND *, int)); #if defined (COND_COMMAND) extern COND_COM *make_cond_node __P((int, WORD_DESC *, COND_COM *, COND_COM *)); @@ -62,6 +63,7 @@ extern COMMAND *make_cond_command __P((COND_COM *)); extern COMMAND *make_arith_for_command __P((WORD_LIST *, COMMAND *, int)); extern COMMAND *make_subshell_command __P((COMMAND *)); +extern COMMAND *make_coproc_command __P((char *, COMMAND *)); extern COMMAND *connect_async_list __P((COMMAND *, COMMAND *, int)); diff --git a/src/bin/bash/mksyntax.c b/src/bin/bash/mksyntax.c index 2aed86c3d2..56ade2e45d 100644 --- a/src/bin/bash/mksyntax.c +++ b/src/bin/bash/mksyntax.c @@ -2,23 +2,23 @@ * mksyntax.c - construct shell syntax table for fast char attribute lookup. */ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -62,6 +62,7 @@ struct wordflag { { CXQUOTE, "CXQUOTE" }, { CSPECVAR, "CSPECVAR" }, { CSUBSTOP, "CSUBSTOP" }, + { CBLANK, "CBLANK" }, }; #define N_WFLAGS (sizeof (wordflags) / sizeof (wordflags[0])) @@ -78,6 +79,7 @@ char preamble[] = "\ \n"; char includes[] = "\ +#include \"config.h\"\n\ #include \"stdc.h\"\n\ #include \"syntax.h\"\n\n"; @@ -128,8 +130,13 @@ cdesc (i) 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; @@ -190,6 +197,22 @@ addcchar (c, flag) 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 () @@ -224,6 +247,8 @@ load_lsyntax () addcstr ("@*#?-$!", CSPECVAR); /* omits $0...$9 and $_ */ addcstr ("-=?+", CSUBSTOP); /* OP in ${paramOPword} */ + + addblanks (); } static void @@ -270,7 +295,8 @@ dump_lsyntax (fp) { int i; - fprintf (fp, "const int sh_syntaxtab[%d] = {\n", SYNSIZE); + fprintf (fp, "int sh_syntabsiz = %d;\n", SYNSIZE); + fprintf (fp, "int sh_syntaxtab[%d] = {\n", SYNSIZE); for (i = 0; i < SYNSIZE; i++) { diff --git a/src/bin/bash/nojobs.c b/src/bin/bash/nojobs.c index 77632835ab..b73e3d6d1c 100644 --- a/src/bin/bash/nojobs.c +++ b/src/bin/bash/nojobs.c @@ -1,25 +1,25 @@ -/* The thing that makes children, remembers them, and contains wait loops. */ +/* 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, 1989, 1992 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -41,19 +41,11 @@ /* Need to include this up here for *_TTY_DRIVER definitions. */ #include "shtty.h" -#if !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) -/* For struct winsize on SCO */ -/* sys/ptem.h has winsize but needs mblk_t from sys/stream.h */ -# if defined (HAVE_SYS_PTEM_H) && defined (TIOCGWINSZ) && defined (SIGWINCH) -# if defined (HAVE_SYS_STREAM_H) -# include -# endif -# include -# endif /* HAVE_SYS_PTEM_H && TIOCGWINSZ && SIGWINCH */ -#endif /* !STRUCT_WINSIZE_IN_SYS_IOCTL */ +#include "bashintl.h" #include "shell.h" #include "jobs.h" +#include "execute_cmd.h" #include "builtins/builtext.h" /* for wait_builtin */ @@ -63,9 +55,9 @@ # define killpg(pg, sig) kill(-(pg),(sig)) #endif /* USG || _POSIX_VERSION */ -#if !defined (HAVE_SIGINTERRUPT) +#if !defined (HAVE_SIGINTERRUPT) && !defined (HAVE_POSIX_SIGNALS) # define siginterrupt(sig, code) -#endif /* !HAVE_SIGINTERRUPT */ +#endif /* !HAVE_SIGINTERRUPT && !HAVE_POSIX_SIGNALS */ #if defined (HAVE_WAITPID) # define WAITPID(pid, statusp, options) waitpid (pid, statusp, options) @@ -80,13 +72,9 @@ extern int errno; #endif /* !errno */ -#if defined (READLINE) -extern void rl_set_screen_size __P((int, int)); -#endif - extern int interactive, interactive_shell, login_shell; extern int subshell_environment; -extern int last_command_exit_value; +extern int last_command_exit_value, last_command_exit_signal; extern int interrupt_immediately; extern sh_builtin_func_t *this_shell_builtin; #if defined (HAVE_POSIX_SIGNALS) @@ -120,6 +108,7 @@ struct proc_status { #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 @@ -136,20 +125,26 @@ static int find_proc_slot __P((void)); static int find_index_by_pid __P((pid_t)); static int find_status_by_pid __P((pid_t)); static int process_exit_status __P((WAIT)); +static int find_termsig_by_pid __P((pid_t)); +static int get_termsig __P((WAIT)); static void set_pid_status __P((pid_t, WAIT)); static void set_pid_flags __P((pid_t, int)); static void unset_pid_flags __P((pid_t, int)); +static int get_pid_flags __P((pid_t)); static void add_pid __P((pid_t, int)); static void mark_dead_jobs_as_notified __P((int)); -static void get_new_window_size __P((int)); -static sighandler sigwinch_sighandler __P((int)); static sighandler wait_sigint_handler __P((int)); +static char *j_strsignal __P((int)); #if defined (HAVE_WAITPID) static void reap_zombie_children __P((void)); #endif +#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS) +static int siginterrupt __P((int, int)); +#endif + static void restore_sigint_handler __P((void)); /* Allocate new, or grow existing PID_LIST. */ @@ -225,6 +220,35 @@ process_exit_status (status) 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) @@ -233,12 +257,18 @@ set_pid_status (pid, status) { int slot; +#if defined (COPROCESS_SUPPORT) + coproc_pidchk (pid, status); +#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) @@ -275,6 +305,20 @@ unset_pid_flags (pid, flags) 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; @@ -348,6 +392,10 @@ cleanup_dead_jobs () pid_list[i].pid = NO_PID; } +#if defined (COPROCESS_SUPPORT) + coproc_reap (); +#endif + return 0; } @@ -368,69 +416,11 @@ initialize_job_control (force) get_tty_state (); } -#if defined (TIOCGWINSZ) && defined (SIGWINCH) -static SigHandler *old_winch = (SigHandler *)SIG_DFL; - -static void -get_new_window_size (from_sig) - int from_sig; -{ - struct winsize win; - int tty; - - tty = input_tty (); - if (tty >= 0 && (ioctl (tty, TIOCGWINSZ, &win) == 0) && - win.ws_row > 0 && win.ws_col > 0) - { -#if defined (aixpc) - shell_tty_info.c_winsize = win; /* structure copying */ -#endif - sh_set_lines_and_columns (win.ws_row, win.ws_col); -#if defined (READLINE) - rl_set_screen_size (win.ws_row, win.ws_col); -#endif - } -} - -static sighandler -sigwinch_sighandler (sig) - int sig; -{ -#if defined (MUST_REINSTALL_SIGHANDLERS) - set_signal_handler (SIGWINCH, sigwinch_sighandler); -#endif /* MUST_REINSTALL_SIGHANDLERS */ - get_new_window_size (1); -} -#else -static void -get_new_window_size (from_sig) - int from_sig; -{ -} -#endif /* TIOCGWINSZ && SIGWINCH */ - -void -set_sigwinch_handler () -{ -#if defined (TIOCGWINSZ) && defined (SIGWINCH) - old_winch = set_signal_handler (SIGWINCH, sigwinch_sighandler); -#endif -} - -void -unset_sigwinch_handler () -{ -#if defined (TIOCGWINSZ) && defined (SIGWINCH) - set_signal_handler (SIGWINCH, old_winch); -#endif -} - /* Setup this shell to handle C-C, etc. */ void initialize_job_signals () { set_signal_handler (SIGINT, sigint_sighandler); - set_sigwinch_handler (); /* If this is a login shell we don't wish to be disturbed by stop signals. */ @@ -444,15 +434,35 @@ initialize_job_signals () static void reap_zombie_children () { -#if defined (WNOHANG) +# if defined (WNOHANG) pid_t pid; WAIT status; + CHECK_TERMSIG; while ((pid = waitpid (-1, (int *)&status, WNOHANG)) > 0) set_pid_status (pid, status); -#endif +# endif /* WNOHANG */ + CHECK_TERMSIG; } -#endif /* WAITPID && WNOHANG */ +#endif /* WAITPID */ + +#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS) +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 @@ -464,9 +474,7 @@ make_child (command, async_p) int async_p; { pid_t pid; -#if defined (HAVE_WAITPID) - int retry = 1; -#endif /* HAVE_WAITPID */ + int forksleep; /* Discard saved memory. */ if (command) @@ -483,26 +491,27 @@ make_child (command, async_p) sync_buffered_stream (default_buffered_input); #endif /* BUFFERED_INPUT */ - /* Create the child, handle severe errors. */ -#if defined (HAVE_WAITPID) - retry_fork: -#endif /* HAVE_WAITPID */ - - if ((pid = fork ()) < 0) + /* 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. */ - if (errno == EAGAIN && retry) - { - reap_zombie_children (); - retry = 0; - goto retry_fork; - } + reap_zombie_children (); + if (forksleep > 1 && sleep (forksleep) != 0) + break; +#else + if (sleep (forksleep) != 0) + break; #endif /* HAVE_WAITPID */ + forksleep <<= 1; + } + if (pid < 0) + { sys_error ("fork"); - throw_to_top_level (); } @@ -517,9 +526,11 @@ make_child (command, async_p) sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); #endif +#if 0 /* Ignore INT and QUIT in asynchronous children. */ if (async_p) last_asynchronous_pid = getpid (); +#endif default_tty_job_signals (); } @@ -565,22 +576,27 @@ wait_for_single_pid (pid) { pid_t got_pid; WAIT status; - int pstatus; + int pstatus, flags; pstatus = find_status_by_pid (pid); if (pstatus == PROC_BAD) { - internal_error ("wait: pid %ld is not a child of this shell", (long)pid); + internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); return (127); } if (pstatus != PROC_STILL_ALIVE) - return (pstatus); + { + 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; if (got_pid < 0) { if (errno != EINTR && errno != ECHILD) @@ -688,6 +704,22 @@ wait_sigint_handler (sig) 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 @@ -704,7 +736,11 @@ wait_for (pid) return (0); if (pstatus != PROC_STILL_ALIVE) - return (pstatus); + { + 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. */ @@ -714,6 +750,7 @@ wait_for (pid) while ((got_pid = WAITPID (-1, &status, 0)) != pid) /* XXX was pid now -1 */ { + CHECK_TERMSIG; if (got_pid < 0 && errno == ECHILD) { #if !defined (_POSIX_VERSION) @@ -752,7 +789,7 @@ wait_for (pid) if (maybe_call_trap_handler (SIGINT) == 0) { if (temp_handler == SIG_DFL) - termination_unwind_protect (SIGINT); + termsig_handler (SIGINT); else if (temp_handler != INVALID_SIGNAL_HANDLER && temp_handler != SIG_IGN) (*temp_handler) (SIGINT); } @@ -762,6 +799,7 @@ wait_for (pid) /* 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) if ((WIFSTOPPED (status) == 0) && WIFSIGNALED (status) && @@ -771,9 +809,9 @@ wait_for (pid) (WTERMSIG (status) != SIGINT) && (WTERMSIG (status) != SIGPIPE)) #endif { - fprintf (stderr, "%s", strsignal (WTERMSIG (status))); + fprintf (stderr, "%s", j_strsignal (WTERMSIG (status))); if (WIFCORED (status)) - fprintf (stderr, " (core dumped)"); + fprintf (stderr, _(" (core dumped)")); fprintf (stderr, "\n"); } @@ -788,10 +826,8 @@ wait_for (pid) return (return_val); } -/* 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. */ +/* 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; @@ -799,6 +835,11 @@ kill_pid (pid, signal, group) { int result; + if (pid < -1) + { + pid = -pid; + group = 1; + } result = group ? killpg (pid, signal) : kill (pid, signal); return (result); } @@ -817,7 +858,7 @@ get_tty_state () ttgetattr (tty, &shell_tty_info); got_tty_state = 1; if (check_window_size) - get_new_window_size (0); + get_new_window_size (0, (int *)0, (int *)0); } } diff --git a/src/bin/bash/parse.y b/src/bin/bash/parse.y index 0f6d930a25..8461337eed 100644 --- a/src/bin/bash/parse.y +++ b/src/bin/bash/parse.y @@ -1,22 +1,22 @@ -/* Yacc grammar for bash. */ +/* parse.y - Yacc grammar for bash. */ -/* Copyright (C) 1989-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file LICENSE. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ %{ #include "config.h" @@ -40,6 +40,8 @@ #include "memalloc.h" +#include "bashintl.h" + #define NEED_STRFTIME_DECL /* used in externs.h */ #include "shell.h" @@ -48,6 +50,7 @@ #include "parser.h" #include "mailcheck.h" #include "test.h" +#include "builtins.h" #include "builtins/common.h" #include "builtins/builtext.h" @@ -69,6 +72,8 @@ #if defined (ALIAS) # include "alias.h" +#else +typedef void *alias_t; #endif /* ALIAS */ #if defined (PROMPT_STRING_DECODE) @@ -110,10 +115,9 @@ extern int extended_glob; extern int eof_encountered; extern int no_line_editing, running_under_emacs; extern int current_command_number; -extern int sourcelevel; +extern int sourcelevel, parse_and_execute_level; extern int posixly_correct; extern int last_command_exit_value; -extern int interrupt_immediately; extern char *shell_name, *current_host_name; extern char *dist_version; extern int patch_level; @@ -144,6 +148,7 @@ static int yy_readline_unget __P((int)); static int yy_string_get __P((void)); static int yy_string_unget __P((int)); +static void rewind_input_string __P((void)); static int yy_stream_get __P((void)); static int yy_stream_unget __P((int)); @@ -166,12 +171,13 @@ static int time_command_acceptable __P((void)); static int special_case_tokens __P((char *)); static int read_token __P((int)); static char *parse_matched_pair __P((int, int, int, int *, int)); +static char *parse_comsub __P((int, int, int, int *, int)); #if defined (ARRAY_VARS) static char *parse_compound_assignment __P((int *)); #endif #if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) static int parse_dparen __P((int)); -static int parse_arith_cmd __P((char **)); +static int parse_arith_cmd __P((char **, int)); #endif #if defined (COND_COMMAND) static void cond_error __P((void)); @@ -201,10 +207,6 @@ static void reset_readline_prompt __P((void)); #endif static void print_prompt __P((void)); -#if defined (HISTORY) -char *history_delimiting_chars __P((void)); -#endif - #if defined (HANDLE_MULTIBYTE) static void set_line_mbstate __P((void)); static char *shell_input_line_property = NULL; @@ -239,6 +241,11 @@ int expand_aliases = 0; decode_prompt_string. */ int promptvars = 1; +/* If non-zero, $'...' and $"..." are expanded when they appear within + a ${...} expansion, even when the expansion appears within double + quotes. */ +int extended_quote = 1; + /* The decoded prompt string. Used if READLINE is not defined or if editing is turned off. Analogous to current_readline_prompt. */ static char *current_decoded_prompt; @@ -246,6 +253,12 @@ static char *current_decoded_prompt; /* The number of lines read from input while creating the current command. */ int current_command_line_count; +/* The token that currently denotes the end of parse. */ +int shell_eof_token; + +/* The token currently being read. */ +int current_token; + /* Variables to manage the task of reading here documents, because we need to defer the reading until after a complete command has been collected. */ static REDIRECT *redir_stack[10]; @@ -270,6 +283,33 @@ static int function_bstart; /* The line number in a script at which an arithmetic for command starts. */ static int arith_for_lineno; +/* The current parser state. */ +static int parser_state; + +/* The last read token, or NULL. read_token () uses this for context + checking. */ +static int last_read_token; + +/* The token read prior to last_read_token. */ +static int token_before_that; + +/* The token read prior to token_before_that. */ +static int two_tokens_ago; + +/* The line number in a script where the word in a `case WORD', `select WORD' + or `for WORD' begins. This is a nested command maximum, since the array + index is decremented after a case, select, or for command is parsed. */ +#define MAX_CASE_NEST 128 +static int word_lineno[MAX_CASE_NEST]; +static int word_top = -1; + +/* If non-zero, it is the token that we want read_token to return + regardless of what text is (or isn't) present to be read. This + is reset by read_token. If token_to_read == WORD or + ASSIGNMENT_WORD, yylval.word should be set to word_desc_to_read. */ +static int token_to_read; +static WORD_DESC *word_desc_to_read; + static REDIRECTEE redir; %} @@ -287,7 +327,7 @@ static REDIRECTEE redir; in the case that they are preceded by a list_terminator. Members of the second group are for [[...]] commands. Members of the third group are recognized only under special circumstances. */ -%token IF THEN ELSE ELIF FI CASE ESAC FOR SELECT WHILE UNTIL DO DONE FUNCTION +%token 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 @@ -297,8 +337,9 @@ static REDIRECTEE redir; %token ARITH_CMD ARITH_FOR_EXPRS %token COND_CMD %token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND LESS_LESS_LESS -%token GREATER_AND SEMI_SEMI LESS_LESS_MINUS AND_GREATER LESS_GREATER -%token GREATER_BAR +%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. */ @@ -309,18 +350,20 @@ static REDIRECTEE redir; %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 '|' +%right '|' BAR_AND %% inputunit: simple_list simple_list_terminator @@ -330,6 +373,8 @@ inputunit: simple_list simple_list_terminator global_command = $1; eof_encountered = 0; /* discard_parser_constructs (0); */ + if (parser_state & PST_CMDSUBST) + parser_state |= PST_EOFTOKEN; YYACCEPT; } | '\n' @@ -337,6 +382,8 @@ inputunit: simple_list simple_list_terminator /* 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' @@ -345,7 +392,7 @@ inputunit: simple_list simple_list_terminator global_command = (COMMAND *)NULL; eof_encountered = 0; /* discard_parser_constructs (1); */ - if (interactive) + if (interactive && parse_and_execute_level == 0) { YYACCEPT; } @@ -501,6 +548,11 @@ redirection: '>' WORD redir.filename = $2; $$ = make_redirection (1, r_err_and_out, redir); } + | AND_GREATER_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_append_err_and_out, redir); + } | NUMBER LESS_GREATER WORD { redir.filename = $3; @@ -574,6 +626,8 @@ command: simple_command } | function_def { $$ = $1; } + | coproc + { $$ = $1; } ; shell_command: for_command @@ -601,65 +655,116 @@ shell_command: for_command ; for_command: FOR WORD newline_list DO compound_list DONE - { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if (word_top > 0) word_top--; + } | FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' - { $$ = make_arith_for_command ($2, $6, arith_for_lineno); } + { + $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if (word_top > 0) word_top--; + } | FOR ARITH_FOR_EXPRS DO compound_list DONE - { $$ = make_arith_for_command ($2, $4, arith_for_lineno); } + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if (word_top > 0) word_top--; + } | FOR ARITH_FOR_EXPRS '{' compound_list '}' - { $$ = make_arith_for_command ($2, $4, arith_for_lineno); } + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if (word_top > 0) word_top--; + } ; select_command: SELECT WORD newline_list DO list DONE { - $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5); + $$ = 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); + $$ = 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); + $$ = 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); + $$ = 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); + $$ = 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); + $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); + if (word_top > 0) word_top--; } ; case_command: CASE WORD newline_list IN newline_list ESAC - { $$ = make_case_command ($2, (PATTERN_LIST *)NULL); } + { + $$ = 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); } + { + $$ = 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); } + { + $$ = make_case_command ($2, $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } ; function_def: WORD '(' ')' newline_list function_body @@ -672,7 +777,6 @@ function_def: WORD '(' ')' newline_list function_body { $$ = make_function_def ($2, $4, function_dstart, function_bstart); } ; - function_body: shell_command { $$ = $1; } | shell_command redirection_list @@ -713,6 +817,57 @@ subshell: '(' compound_list ')' } ; +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->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $3; + } + else + 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->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $4; + } + else + 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 @@ -758,8 +913,17 @@ pattern_list: newline_list pattern ')' compound_list ; 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 @@ -824,8 +988,11 @@ simple_list_terminator: '\n' ; list_terminator:'\n' + { $$ = '\n'; } | ';' + { $$ = ';'; } | yacc_EOF + { $$ = yacc_EOF; } ; newline_list: @@ -843,6 +1010,13 @@ 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 '&' { @@ -852,12 +1026,26 @@ simple_list: simple_list1 $$ = 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; + } } ; @@ -883,29 +1071,72 @@ pipeline_command: pipeline { $$ = $1; } | BANG pipeline { - $2->flags |= CMD_INVERT_RETURN; + if ($2) + $2->flags |= CMD_INVERT_RETURN; $$ = $2; } | timespec pipeline { - $2->flags |= $1; + if ($2) + $2->flags |= $1; $$ = $2; } | timespec BANG pipeline { - $3->flags |= $1|CMD_INVERT_RETURN; + if ($3) + $3->flags |= $1|CMD_INVERT_RETURN; $$ = $3; } | BANG timespec pipeline { - $3->flags |= $2|CMD_INVERT_RETURN; + if ($3) + $3->flags |= $2|CMD_INVERT_RETURN; $$ = $3; } + | timespec list_terminator + { + ELEMENT x; + + /* Boy, this is unclean. `time' by itself can + time a null command. We cheat and push a + newline back if the list_terminator was a newline + to avoid the double-newline problem (one to + terminate this, one to terminate the command) */ + x.word = 0; + x.redirect = 0; + $$ = make_simple_command (x, (COMMAND *)NULL); + $$->flags |= $1; + /* XXX - let's cheat and push a newline back */ + if ($2 == '\n') + token_to_read = '\n'; + } + ; -pipeline: - pipeline '|' newline_list pipeline +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; + REDIRECT *r; + + tc = $1; + rd.dest = 1; + r = make_redirection (2, r_duplicating_output, rd); + 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; } ; @@ -917,46 +1148,20 @@ timespec: TIME ; %% -/* Possible states for the parser that require it to do special things. */ -#define PST_CASEPAT 0x001 /* in a case pattern list */ -#define PST_ALEXPNEXT 0x002 /* expand next word for aliases */ -#define PST_ALLOWOPNBRC 0x004 /* allow open brace for function def */ -#define PST_NEEDCLOSBRC 0x008 /* need close brace */ -#define PST_DBLPAREN 0x010 /* double-paren parsing */ -#define PST_SUBSHELL 0x020 /* ( ... ) subshell */ -#define PST_CMDSUBST 0x040 /* $( ... ) command substitution */ -#define PST_CASESTMT 0x080 /* parsing a case statement */ -#define PST_CONDCMD 0x100 /* parsing a [[...]] command */ -#define PST_CONDEXPR 0x200 /* parsing the guts of [[...]] */ -#define PST_ARITHFOR 0x400 /* parsing an arithmetic for command */ - /* 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 -/* The token currently being read. */ -static int current_token; +/* Should we call prompt_again? */ +#define SHOULD_PROMPT() \ + (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) -/* 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; - -/* 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; - -/* The current parser state. */ -static int parser_state; +#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; @@ -1104,10 +1309,12 @@ yy_readline_get () old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); interrupt_immediately++; } + terminate_immediately = 1; current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); + terminate_immediately = 0; if (signal_is_ignored (SIGINT) == 0 && old_sigint) { interrupt_immediately--; @@ -1218,6 +1425,33 @@ with_input_from_string (string, name) 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. */ @@ -1237,8 +1471,19 @@ yy_stream_get () result = EOF; if (bash_input.location.file) - result = getc_with_restart (bash_input.location.file); - + { + if (interactive) + { + interrupt_immediately++; + terminate_immediately++; + } + result = getc_with_restart (bash_input.location.file); + if (interactive) + { + interrupt_immediately--; + terminate_immediately--; + } + } return (result); } @@ -1399,10 +1644,6 @@ restore_token_state (ts) #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) -#if !defined (ALIAS) -typedef void *alias_t; -#endif - #define END_OF_ALIAS 0 /* @@ -1462,7 +1703,9 @@ push_string (s, expand, ap) shell_input_line_size = strlen (s); shell_input_line_index = 0; shell_input_line_terminator = '\0'; - parser_state &= ~PST_ALEXPNEXT; +#if 0 + parser_state &= ~PST_ALEXPNEXT; /* XXX */ +#endif set_line_mbstate (); } @@ -1523,6 +1766,14 @@ free_string_list () #endif /* ALIAS || DPAREN_ARITHMETIC */ +void +free_pushed_string_input () +{ +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + free_string_list (); +#endif +} + /* Return a line of text, taken from wherever yylex () reads input. If there is no more input, then we return NULL. If REMOVE_QUOTED_NEWLINE is non-zero, we remove unquoted \ pairs. This is used by @@ -1536,20 +1787,20 @@ read_a_line (remove_quoted_newline) int indx = 0, c, peekc, pass_next; #if defined (READLINE) - if (interactive && bash_input.type != st_string && no_line_editing) + if (no_line_editing && SHOULD_PROMPT ()) #else - if (interactive && bash_input.type != st_string) + if (SHOULD_PROMPT ()) #endif print_prompt (); pass_next = 0; while (1) { - c = yy_getc (); - /* Allow immediate exit if interrupted during input. */ QUIT; + c = yy_getc (); + /* Ignore null bytes in input. */ if (c == 0) { @@ -1587,7 +1838,10 @@ read_a_line (remove_quoted_newline) { peekc = yy_getc (); if (peekc == '\n') - continue; /* Make the unquoted \ pair disappear. */ + { + line_number++; + continue; /* Make the unquoted \ pair disappear. */ + } else { yy_ungetc (peekc); @@ -1615,9 +1869,27 @@ char * read_secondary_line (remove_quoted_newline) int remove_quoted_newline; { + char *ret; + int n, c; + prompt_string_pointer = &ps2_prompt; - prompt_again (); - return (read_a_line (remove_quoted_newline)); + if (SHOULD_PROMPT()) + prompt_again (); + ret = read_a_line (remove_quoted_newline); +#if defined (HISTORY) + if (remember_on_history && (parser_state & PST_HEREDOC)) + { + /* To make adding the 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; } /* **************************************************************** */ @@ -1655,6 +1927,9 @@ STRING_INT_ALIST word_token_alist[] = { #if defined (COND_COMMAND) { "[[", COND_START }, { "]]", COND_END }, +#endif +#if defined (COPROCESS_SUPPORT) + { "coproc", COPROC }, #endif { (char *)NULL, 0} }; @@ -1670,11 +1945,15 @@ STRING_INT_ALIST other_token_alist[] = { { "<&", 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 */ { ">", '>' }, @@ -1746,10 +2025,15 @@ shell_getc (remove_quoted_newline) register int i; int c; unsigned char uc; - static int mustpop = 0; QUIT; + if (sigwinch_received) + { + sigwinch_received = 0; + get_new_window_size (0, (int *)0, (int *)0); + } + if (eol_ungetc_lookahead) { c = eol_ungetc_lookahead; @@ -1778,20 +2062,27 @@ shell_getc (remove_quoted_newline) i = 0; shell_input_line_terminator = 0; + /* If the shell is interatctive, but not currently printing a prompt + (interactive_shell && interactive == 0), we don't want to print + notifies or cleanup the jobs -- we want to defer it until we do + print the next prompt. */ + if (interactive_shell == 0 || SHOULD_PROMPT()) + { #if defined (JOB_CONTROL) /* This can cause a problem when reading a command as the result of a trap, when the trap is called from flush_child. This call had better not cause jobs to disappear from the job table in that case, or we will have big trouble. */ - notify_and_cleanup (); + notify_and_cleanup (); #else /* !JOB_CONTROL */ - cleanup_dead_jobs (); + cleanup_dead_jobs (); #endif /* !JOB_CONTROL */ + } #if defined (READLINE) - if (interactive && bash_input.type != st_string && no_line_editing) + if (no_line_editing && SHOULD_PROMPT()) #else - if (interactive && bash_input.type != st_string) + if (SHOULD_PROMPT()) #endif print_prompt (); @@ -1911,7 +2202,8 @@ shell_getc (remove_quoted_newline) { shell_input_line_size = 0; prompt_string_pointer = ¤t_prompt_string; - prompt_again (); + if (SHOULD_PROMPT ()) + prompt_again (); goto restart_read; } @@ -1935,13 +2227,6 @@ shell_getc (remove_quoted_newline) if (uc) shell_input_line_index++; - if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') - { - prompt_again (); - line_number++; - goto restart_read; - } - #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 @@ -1950,22 +2235,21 @@ shell_getc (remove_quoted_newline) to. */ if (!uc && (pushed_string_list != (STRING_SAVER *)NULL)) { - if (mustpop) - { - pop_string (); - uc = shell_input_line[shell_input_line_index]; - if (uc) - shell_input_line_index++; - mustpop--; - } - else - { - mustpop++; - uc = ' '; - } + pop_string (); + uc = shell_input_line[shell_input_line_index]; + if (uc) + shell_input_line_index++; } #endif /* ALIAS || DPAREN_ARITHMETIC */ + if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') + { + if (SHOULD_PROMPT ()) + prompt_again (); + line_number++; + goto restart_read; + } + if (!uc && shell_input_line_terminator == EOF) return ((shell_input_line_index != 0) ? '\n' : EOF); @@ -2013,29 +2297,21 @@ discard_until (character) } void -execute_prompt_command (command) - char *command; +execute_variable_command (command, vname) + char *command, *vname; { - sh_builtin_func_t *temp_last, *temp_this; char *last_lastarg; - int temp_exit_value, temp_eof_encountered; + sh_parser_state_t ps; - temp_last = last_shell_builtin; - temp_this = this_shell_builtin; - temp_exit_value = last_command_exit_value; - temp_eof_encountered = eof_encountered; + save_parser_state (&ps); last_lastarg = get_string_value ("_"); if (last_lastarg) last_lastarg = savestring (last_lastarg); - parse_and_execute (savestring (command), "PROMPT_COMMAND", SEVAL_NONINT|SEVAL_NOHIST); + parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST); - last_shell_builtin = temp_last; - this_shell_builtin = temp_this; - last_command_exit_value = temp_exit_value; - eof_encountered = temp_eof_encountered; - - bind_variable ("_", last_lastarg); + restore_parser_state (&ps); + bind_variable ("_", last_lastarg, 0); FREE (last_lastarg); if (token_to_read == '\n') /* reset_parser was called */ @@ -2074,7 +2350,7 @@ yylex () /* Avoid printing a prompt if we're not going to read anything, e.g. after resetting the parser with read_token (RESET). */ - if (token_to_read == 0 && interactive) + if (token_to_read == 0 && SHOULD_PROMPT ()) prompt_again (); } @@ -2082,6 +2358,15 @@ yylex () 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); } @@ -2092,10 +2377,14 @@ static int esacs_needed_count; void gather_here_documents () { - int r = 0; + int r; + + r = 0; while (need_here_doc) { - make_here_document (redir_stack[r++]); + parser_state |= PST_HEREDOC; + make_here_document (redir_stack[r++], line_number); + parser_state &= ~PST_HEREDOC; need_here_doc--; } } @@ -2106,10 +2395,10 @@ static int open_brace_count; #define command_token_position(token) \ (((token) == ASSIGNMENT_WORD) || \ - ((token) != SEMI_SEMI && reserved_word_acceptable(token))) + ((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token))) -#define assignment_acceptable(token) command_token_position(token) && \ - ((parser_state & PST_CASEPAT) == 0) +#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. */ @@ -2124,7 +2413,7 @@ static int open_brace_count; { \ if ((parser_state & PST_CASEPAT) && (word_token_alist[i].token != ESAC)) \ break; \ - if (word_token_alist[i].token == TIME) \ + if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ break; \ if (word_token_alist[i].token == ESAC) \ parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ @@ -2157,6 +2446,23 @@ static int open_brace_count; Special cases that disqualify: In a pattern list in a case statement (parser_state & PST_CASEPAT). */ + +static char * +mk_alexpansion (s) + char *s; +{ + int l; + char *r; + + l = strlen (s); + r = xmalloc (l + 2); + strcpy (r, s); + if (r[l -1] != ' ') + r[l++] = ' '; + r[l] = '\0'; + return r; +} + static int alias_expand_token (tokstr) char *tokstr; @@ -2173,7 +2479,12 @@ alias_expand_token (tokstr) if (ap && (ap->flags & AL_BEINGEXPANDED)) return (NO_EXPANSION); - expanded = ap ? savestring (ap->value) : (char *)NULL; + /* mk_alexpansion puts an extra space on the end of the alias expansion, + so the lookahead by the parser works right. If this gets changed, + make sure the code in shell_getc that deals with reaching the end of + an expanded alias is changed with it. */ + expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; + if (expanded) { push_string (expanded, ap->flags & AL_EXPANDNEXT, ap); @@ -2317,10 +2628,12 @@ special_case_tokens (tokstr) return (TIMEOPT); #endif +#if 0 #if defined (COMMAND_TIMING) if (STREQ (token, "time") && ((parser_state & PST_CASEPAT) == 0) && time_command_acceptable ()) return (TIME); #endif /* COMMAND_TIMING */ +#endif #if defined (COND_COMMAND) /* [[ */ if ((parser_state & PST_CONDEXPR) && tokstr[0] == ']' && tokstr[1] == ']' && tokstr[2] == '\0') @@ -2411,7 +2724,7 @@ read_token (command) #endif /* ALIAS */ /* Read a single word from input. Start by skipping blanks. */ - while ((character = shell_getc (1)) != EOF && whitespace (character)) + while ((character = shell_getc (1)) != EOF && shellblank (character)) ; if (character == EOF) @@ -2439,9 +2752,14 @@ read_token (command) 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)) { @@ -2452,6 +2770,8 @@ read_token (command) parser_state &= ~PST_ALEXPNEXT; #endif /* ALIAS */ + parser_state &= ~PST_ASSIGNOK; + peek_char = shell_getc (1); if (character == peek_char) { @@ -2461,9 +2781,9 @@ read_token (command) /* If '<' then we could be at "<<" or at "<<-". We have to look ahead one more character. */ peek_char = shell_getc (1); - if (peek_char == '-') + if MBTEST(peek_char == '-') return (LESS_LESS_MINUS); - else if (peek_char == '<') + else if MBTEST(peek_char == '<') return (LESS_LESS_LESS); else { @@ -2479,7 +2799,15 @@ read_token (command) #if defined (ALIAS) parser_state &= ~PST_ALEXPNEXT; #endif /* ALIAS */ - return (SEMI_SEMI); + + 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); @@ -2505,8 +2833,27 @@ read_token (command) return (LESS_GREATER); else if MBTEST(character == '>' && peek_char == '|') return (GREATER_BAR); - else if MBTEST(peek_char == '>' && character == '&') - return (AND_GREATER); + 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); @@ -2546,6 +2893,7 @@ read_token (command) 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); @@ -2559,27 +2907,70 @@ read_token (command) /* * 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 (unless the - * P_NONL flag is passed), and returning correct error values if it reads - * EOF. + * reprompting the user, if necessary, after reading a newline, and returning + * correct error values if it reads EOF. */ #define P_FIRSTCLOSE 0x01 #define P_ALLOWESC 0x02 +#define P_DQUOTE 0x04 +#define P_COMMAND 0x08 /* parsing a command, so look for comments */ +#define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ + +/* Lexical state while parsing a grouping construct or $(...). */ +#define LEX_WASDOL 0x001 +#define LEX_CKCOMMENT 0x002 +#define LEX_INCOMMENT 0x004 +#define LEX_PASSNEXT 0x008 +#define LEX_RESWDOK 0x010 +#define LEX_CKCASE 0x020 +#define LEX_INCASE 0x040 +#define LEX_INHEREDOC 0x080 +#define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ + +#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, was_dollar; - int pass_next_character, nestlen, ttranslen, start_lineno; + int count, ch, tflags; + int nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; - int retind, retsize; + int retind, retsize, rflags; +/* itrace("parse_matched_pair: open = %c close = %c flags = %d", open, close, flags); */ count = 1; - pass_next_character = was_dollar = 0; + 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; @@ -2587,26 +2978,442 @@ parse_matched_pair (qc, open, close, lenp, flags) start_lineno = line_number; while (count) { - ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0); + 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); + 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' && interactive && - (bash_input.type == st_stdin || bash_input.type == st_stream)) + if (ch == '\n' && SHOULD_PROMPT ()) prompt_again (); - if (pass_next_character) /* last char was backslash */ + /* Don't bother counting parens or doing anything else if in a comment + or part of a case statement */ + if (tflags & LEX_INCOMMENT) { - pass_next_character = 0; + /* 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 */ + if (retind > 0) + retind--; /* swallow previously-added backslash */ + continue; + } + + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + if MBTEST(ch == CTLESC || ch == CTLNUL) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + /* 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; + +#if 0 + /* The big hammer. Single quotes aren't special in double quotes. The + problem is that Posix says 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." */ + if MBTEST(open == '{' && (flags & P_DQUOTE) && ch == '\'') /* } */ + continue; +#endif + + /* 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); + xfree (nestret); + + if ((rflags & P_DQUOTE) == 0) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } + else + { + nestret = ttrans; + nestlen = ttranslen; + } + retind -= 2; /* back up before the $' */ + } + else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + xfree (nestret); + + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ + } + + APPEND_NESTRET (); + FREE (nestret); + } + } + /* Parse an old-style command substitution within double quotes as a + single word. */ + /* XXX - sh and ksh93 don't do this - XXX */ + else if MBTEST(open == '"' && ch == '`') + { + nestret = parse_matched_pair (0, '`', '`', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + else if MBTEST(open != '`' && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside quoted string. */ + { + 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|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } + + ret[retind] = '\0'; + if (lenp) + *lenp = retind; + return ret; +} + +/* 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_firstind; + int nestlen, ttranslen, start_lineno; + char *ret, *nestret, *ttrans, *heredelim; + int retind, retsize, rflags, hdlen; + +/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/ + count = 1; + tflags = LEX_RESWDOK; + + 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 = 0; + + heredelim = 0; + lex_firstind = -1; + + while (count) + { +comsub_readchar: + ch = shell_getc (qc != '\'' && (tflags & LEX_PASSNEXT) == 0); + + if (ch == EOF) + { +eof_error: + 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; + lex_firstind = retind + 1; + } + else if (tflags & LEX_INHEREDOC) + { + int tind; + tind = lex_firstind; + while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') + tind++; + if (STREQN (ret + tind, heredelim, hdlen)) + { + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC); +/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ + lex_firstind = -1; + } + else + lex_firstind = retind + 1; + } + } + + /* Possible reprompting. */ + if (ch == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* Don't bother counting parens or doing anything else if in a comment */ + 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') + tflags &= ~LEX_INCOMMENT; + + continue; + } + + /* Skip whitespace */ + if MBTEST(shellblank (ch) && 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; + else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch)) + { + nestret = substring (ret, lex_firstind, retind); + heredelim = string_quote_removal (nestret, 0); + free (nestret); + hdlen = STRLEN(heredelim); +/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/ + if (ch == '\n') + { + tflags |= LEX_INHEREDOC; + tflags &= ~LEX_HEREDELIM; + lex_firstind = retind + 1; + } + 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)) + { + /* 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); + tflags |= LEX_RESWDOK; +/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ + 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 (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; +/*itrace("parse_comsub:%d: found `case', lex_incase -> 1", line_number);*/ +} + else if (STREQN (ret + retind - 4, "esac", 4)) +{ + tflags &= ~LEX_INCASE; +/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0", line_number);*/ +} + tflags &= ~LEX_RESWDOK; + } + else if (shellbreak (ch) == 0) +{ + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ +} + } + + 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); + tflags |= LEX_HEREDELIM; + lex_firstind = -1; + continue; + } + else + ch = peekc; /* fall through and continue XXX - this skips comments if peekc == '#' */ + } + /* 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; } @@ -2623,129 +3430,171 @@ parse_matched_pair (qc, open, close, lenp, flags) ret[retind++] = ch; continue; } - else if MBTEST(ch == close) /* ending delimiter */ - count--; -#if 1 - /* handle nested ${...} specially. */ - else if MBTEST(open != close && was_dollar && open == '{' && ch == open) /* } */ - count++; +#if 0 + else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')') + tflags &= ~LEX_INCASE; /* XXX */ #endif - else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && ch == open) /* nested begin */ + 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++; /* Add this character. */ RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); ret[retind++] = ch; - if (open == '\'') /* '' inside grouping construct */ - { - if MBTEST((flags & P_ALLOWESC) && ch == '\\') - pass_next_character++; - continue; - } + /* If we just read the ending character, don't bother continuing. */ + if (count == 0) + break; if MBTEST(ch == '\\') /* backslashes */ - pass_next_character++; + tflags |= LEX_PASSNEXT; - if (open != close) /* a grouping construct */ - { - if MBTEST(shellquote (ch)) + 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)) { - /* '', ``, or "" inside $(...) or other grouping construct. */ - push_delimiter (dstack, ch); - if MBTEST(was_dollar && ch == '\'') /* $'...' inside group */ - nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC); - else - nestret = parse_matched_pair (ch, ch, ch, &nestlen, 0); - pop_delimiter (dstack); - if (nestret == &matched_pair_error) + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + xfree (nestret); + + if ((rflags & P_DQUOTE) == 0) { - free (ret); - return &matched_pair_error; - } - if MBTEST(was_dollar && ch == '\'') - { - /* Translate $'...' here. */ - ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); nestret = sh_single_quote (ttrans); free (ttrans); nestlen = strlen (nestret); - retind -= 2; /* back up before the $' */ } - else if MBTEST(was_dollar && ch == '"') + else { - /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); - nestret = (char *)xmalloc (ttranslen + 3); - nestret[0] = '"'; - strcpy (nestret + 1, ttrans); - nestret[ttranslen + 1] = '"'; - nestret[ttranslen += 2] = '\0'; - free (ttrans); + nestret = ttrans; nestlen = ttranslen; - retind -= 2; /* back up before the $" */ } + 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); + xfree (nestret); - if (nestlen) - { - RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); - strcpy (ret + retind, nestret); - retind += nestlen; - } - FREE (nestret); - } - } - /* Parse an old-style command substitution within double quotes as a - single word. */ - /* XXX - sh and ksh93 don't do this - XXX */ - else if MBTEST(open == '"' && ch == '`') - { - nestret = parse_matched_pair (0, '`', '`', &nestlen, 0); - if (nestret == &matched_pair_error) - { - free (ret); - return &matched_pair_error; - } - if (nestlen) - { - RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); - strcpy (ret + retind, nestret); - retind += nestlen; + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ } + + APPEND_NESTRET (); FREE (nestret); } - else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ - /* check for $(), $[], or ${} inside quoted string. */ + else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside command substitution. */ { - if (open == ch) /* undo previous increment */ + if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */ count--; if (ch == '(') /* ) */ - nestret = parse_matched_pair (0, '(', ')', &nestlen, 0); + nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE); + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags); else if (ch == '[') /* ] */ - nestret = parse_matched_pair (0, '[', ']', &nestlen, 0); - if (nestret == &matched_pair_error) - { - free (ret); - return &matched_pair_error; - } - if (nestlen) - { - RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); - strcpy (ret + retind, nestret); - retind += nestlen; - } + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + FREE (nestret); } - was_dollar = MBTEST(ch == '$'); + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; } + FREE (heredelim); ret[retind] = '\0'; if (lenp) *lenp = retind; +/*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/ + return ret; +} + +/* XXX - this needs to handle functionality like subst.c:no_longjmp_on_fatal_error; + maybe extract_command_subst should handle it. */ +char * +xparse_dolparen (base, string, indp, flags) + char *base; + char *string; + int *indp; + int flags; +{ + sh_parser_state_t ps; + int orig_ind, nc, sflags; + char *ret, *s, *ep, *ostring; + + /*yydebug = 1;*/ + orig_ind = *indp; + ostring = string; + + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; + if (flags & SX_NOLONGJMP) + sflags |= SEVAL_NOLONGJMP; + save_parser_state (&ps); + + /*(*/ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ + shell_eof_token = ')'; + parse_string (string, "command substitution", sflags, &ep); + + restore_parser_state (&ps); + reset_parser (); + if (interactive) + token_to_read = 0; + + /* 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 (EX_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); +#endif + + 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; } @@ -2758,27 +3607,20 @@ static int parse_dparen (c) int c; { - int cmdtyp, len, sline; - char *wval, *wv2; + 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); + cmdtyp = parse_arith_cmd (&wval, 0); if (cmdtyp == 1) { - /* parse_arith_cmd adds quotes at the beginning and end - of the string it returns; we need to take those out. */ - len = strlen (wval); - wv2 = (char *)xmalloc (len); - strncpy (wv2, wval + 1, len - 2); - wv2[len - 2] = '\0'; - wd = make_word (wv2); + wd = alloc_word_desc (); + wd->word = wval; yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); - free (wval); - free (wv2); return (ARITH_FOR_EXPRS); } else @@ -2790,13 +3632,14 @@ parse_dparen (c) if (reserved_word_acceptable (last_read_token)) { sline = line_number; - cmdtyp = parse_arith_cmd (&wval); + + cmdtyp = parse_arith_cmd (&wval, 0); if (cmdtyp == 1) /* arithmetic command */ { - wd = make_word (wval); - wd->flags = W_QUOTED; + 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); - free (wval); /* make_word copies it */ return (ARITH_CMD); } else if (cmdtyp == 0) /* nested subshell */ @@ -2820,8 +3663,9 @@ parse_dparen (c) allocated buffer and make *ep point to that buffer. Return -1 on an error, for example EOF. */ static int -parse_arith_cmd (ep) +parse_arith_cmd (ep, adddq) char **ep; + int adddq; { int exp_lineno, rval, c; char *ttok, *tokstr; @@ -2840,20 +3684,28 @@ parse_arith_cmd (ep) tokstr = (char *)xmalloc (ttoklen + 4); - /* (( ... )) -> "..." */ - tokstr[0] = (rval == 1) ? '"' : '('; - strncpy (tokstr + 1, ttok, ttoklen - 1); /* don't copy the final `)' */ - if (rval == 1) + /* 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 + 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; @@ -2867,16 +3719,16 @@ cond_error () char *etext; if (EOF_Reached && cond_token != COND_ERROR) /* [[ */ - parser_error (cond_lineno, "unexpected EOF while looking for `]]'"); + 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); + 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"); + parser_error (cond_lineno, _("syntax error in conditional expression")); } } @@ -2919,7 +3771,7 @@ cond_skip_newlines () { while ((cond_token = read_token (READ)) == '\n') { - if (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) + if (SHOULD_PROMPT ()) prompt_again (); } return (cond_token); @@ -2954,11 +3806,11 @@ cond_term () dispose_cond_node (term); /* ( */ if (etext = error_token_from_token (cond_token)) { - parser_error (lineno, "unexpected token `%s', expected `)'", etext); + parser_error (lineno, _("unexpected token `%s', expected `)'"), etext); free (etext); } else - parser_error (lineno, "expected `)'"); + parser_error (lineno, _("expected `)'")); COND_RETURN_ERROR (); } term = make_cond_node (COND_EXPR, (WORD_DESC *)NULL, term, (COND_COM *)NULL); @@ -2972,7 +3824,7 @@ cond_term () if (term) term->flags |= CMD_INVERT_RETURN; } - else if (tok == WORD && test_unop (yylval.word->word)) + else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (READ); @@ -2986,11 +3838,11 @@ cond_term () dispose_word (op); if (etext = error_token_from_token (tok)) { - parser_error (line_number, "unexpected argument `%s' to conditional unary operator", etext); + 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"); + parser_error (line_number, _("unexpected argument to conditional unary operator")); COND_RETURN_ERROR (); } @@ -3005,6 +3857,13 @@ cond_term () tok = read_token (READ); if (tok == WORD && test_binop (yylval.word->word)) op = yylval.word; +#if defined (COND_REGEXP) + else if (tok == WORD && STREQ (yylval.word->word, "=~")) + { + op = yylval.word; + 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 @@ -3023,17 +3882,18 @@ cond_term () { if (etext = error_token_from_token (tok)) { - parser_error (line_number, "unexpected token `%s', conditional binary operator expected", etext); + parser_error (line_number, _("unexpected token `%s', conditional binary operator expected"), etext); free (etext); } else - parser_error (line_number, "conditional binary operator expected"); + parser_error (line_number, _("conditional binary operator expected")); dispose_cond_node (tleft); COND_RETURN_ERROR (); } /* rhs */ tok = read_token (READ); + parser_state &= ~PST_REGEXP; if (tok == WORD) { tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); @@ -3043,11 +3903,11 @@ cond_term () { if (etext = error_token_from_token (tok)) { - parser_error (line_number, "unexpected argument `%s' to conditional binary operator", etext); + 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"); + parser_error (line_number, _("unexpected argument to conditional binary operator")); dispose_cond_node (tleft); dispose_word (op); COND_RETURN_ERROR (); @@ -3058,14 +3918,14 @@ cond_term () else { if (tok < 256) - parser_error (line_number, "unexpected token `%c' in conditional command", tok); + 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); + 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); + parser_error (line_number, _("unexpected token %d in conditional command"), tok); COND_RETURN_ERROR (); } return (term); @@ -3096,11 +3956,12 @@ token_is_assignment (t, i) c = t[i]; c1 = t[i+1]; t[i] = '='; t[i+1] = '\0'; - r = assignment (t); + r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); t[i] = c; t[i+1] = c1; return r; } +/* XXX - possible changes here for `+=' */ static int token_is_ident (t, i) char *t; @@ -3133,6 +3994,10 @@ read_token_word (character) /* 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; @@ -3152,7 +4017,7 @@ read_token_word (character) token_index = 0; all_digit_token = DIGIT (character); - dollar_present = quoted = pass_next_character = 0; + dollar_present = quoted = pass_next_character = compound_assignment = 0; for (;;) { @@ -3162,7 +4027,7 @@ read_token_word (character) if (pass_next_character) { pass_next_character = 0; - goto got_character; + goto got_escaped_character; } cd = current_delimiter (dstack); @@ -3198,7 +4063,7 @@ read_token_word (character) if MBTEST(shellquote (character)) { push_delimiter (dstack, character); - ttok = parse_matched_pair (character, character, character, &ttoklen, 0); + ttok = parse_matched_pair (character, character, character, &ttoklen, (character == '`') ? P_COMMAND : 0); pop_delimiter (dstack); if (ttok == &matched_pair_error) return -1; /* Bail immediately. */ @@ -3214,9 +4079,34 @@ read_token_word (character) 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 (extended_glob && PATTERN_CHAR (character)) + if MBTEST(extended_glob && PATTERN_CHAR (character)) { peek_char = shell_getc (1); if MBTEST(peek_char == '(') /* ) */ @@ -3261,7 +4151,7 @@ read_token_word (character) history literally rather than causing a possibly- incorrect `;' to be added. ) */ push_delimiter (dstack, peek_char); - ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); + ttok = parse_comsub (cd, '(', ')', &ttoklen, P_COMMAND); pop_delimiter (dstack); } else @@ -3297,13 +4187,14 @@ read_token_word (character) { 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; - ttranslen = strlen (ttrans); } else { @@ -3312,12 +4203,9 @@ read_token_word (character) free (ttok); /* Add the double quotes back */ - ttok = (char *)xmalloc (ttranslen + 3); - ttok[0] = '"'; - strcpy (ttok + 1, ttrans); - ttok[ttranslen + 1] = '"'; - ttok[ttranslen += 2] = '\0'; + ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); + ttranslen += 2; ttrans = ttok; } @@ -3353,8 +4241,12 @@ read_token_word (character) } #if defined (ARRAY_VARS) - /* Identify possible array subscript assignment; match [...] */ - else if MBTEST(character == '[' && token_index > 0 && assignment_acceptable (last_read_token) && token_is_ident (token, token_index)) /* ] */ + /* 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, 0); if (ttok == &matched_pair_error) @@ -3370,7 +4262,7 @@ read_token_word (character) goto next_character; } /* Identify possible compound array variable assignment. */ - else if MBTEST(character == '=' && token_index > 0 && token_is_assignment (token, token_index)) + 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 == '(') /* ) */ @@ -3391,7 +4283,12 @@ read_token_word (character) 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); @@ -3408,20 +4305,21 @@ read_token_word (character) got_character: - all_digit_token &= DIGIT (character); - dollar_present |= character == '$'; - if (character == CTLESC || character == CTLNUL) token[token_index++] = CTLESC; + got_escaped_character: + + all_digit_token &= DIGIT (character); + dollar_present |= character == '$'; + token[token_index++] = character; RESIZE_MALLOCED_BUFFER (token, token_index, 1, token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); next_character: - if (character == '\n' && interactive && - (bash_input.type == st_stdin || bash_input.type == st_stream)) + if (character == '\n' && SHOULD_PROMPT ()) prompt_again (); /* We want to remove quoted newlines (that is, a \ pair) @@ -3486,27 +4384,48 @@ got_token: if (dollar_present) the_word->flags |= W_HASDOLLAR; if (quoted) - the_word->flags |= W_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)) + 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)) + if (assignment_acceptable (last_read_token) || (parser_state & PST_COMPASSIGN) != 0) the_word->flags |= W_NOSPLIT; } + if (command_token_position (last_read_token)) + { + struct builtin *b; + b = builtin_address_internal (token, 0); + if (b && (b->flags & ASSIGNMENT_BUILTIN)) + parser_state |= PST_ASSIGNOK; + else if (STREQ (token, "eval") || STREQ (token, "let")) + parser_state |= PST_ASSIGNOK; + } + yylval.word = the_word; result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) ? ASSIGNMENT_WORD : WORD; - if (last_read_token == FUNCTION) + switch (last_read_token) { + case FUNCTION: parser_state |= PST_ALLOWOPNBRC; function_dstart = line_number; + break; + case CASE: + case SELECT: + case FOR: + if (word_top < MAX_CASE_NEST) + word_top++; + word_lineno[word_top] = line_number; + break; } return (result); @@ -3539,14 +4458,21 @@ reserved_word_acceptable (toksym) case IF: case OR_OR: case SEMI_SEMI: + case SEMI_AND: + case SEMI_SEMI_AND: case THEN: case TIME: case TIMEOPT: + 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 return 0; } } @@ -3597,9 +4523,10 @@ reset_readline_prompt () /* A list of tokens which can be followed by newlines, but not by semi-colons. When concatenating multiple lines of history, the newline separator for such tokens is replaced with a space. */ -static int no_semi_successors[] = { +static const int no_semi_successors[] = { '\n', '{', '(', ')', ';', '&', '|', - CASE, DO, ELSE, IF, SEMI_SEMI, THEN, UNTIL, WHILE, AND_AND, OR_OR, IN, + CASE, DO, ELSE, IF, SEMI_SEMI, SEMI_AND, SEMI_SEMI_AND, THEN, UNTIL, + WHILE, AND_AND, OR_OR, IN, 0 }; @@ -3614,7 +4541,13 @@ history_delimiting_chars () 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). */ + if (parser_state & PST_HEREDOC) + return (current_command_line_count == 2 ? "\n" : ""); + /* First, handle some special cases. */ /*(*/ /* If we just read `()', assume it's a function definition, and don't @@ -3640,12 +4573,14 @@ history_delimiting_chars () { /* 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++) + 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++) { @@ -3664,7 +4599,7 @@ prompt_again () { char *temp_prompt; - if (!interactive) /* XXX */ + if (interactive == 0 || expanding_alias()) /* XXX */ return; ps1_prompt = get_string_value ("PS1"); @@ -3763,7 +4698,7 @@ decode_prompt_string (string) int last_exit_value; #if defined (PROMPT_STRING_DECODE) int result_size, result_index; - int c, n; + int c, n, i; char *temp, octal_string[4]; struct tm *tm; time_t the_time; @@ -3857,7 +4792,11 @@ decode_prompt_string (string) else if (c == 'A') n = strftime (timebuf, sizeof (timebuf), "%H:%M", tm); - timebuf[sizeof(timebuf) - 1] = '\0'; + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + temp = savestring (timebuf); goto add_string; @@ -3882,7 +4821,11 @@ decode_prompt_string (string) n = strftime (timebuf, sizeof (timebuf), timefmt, tm); free (timefmt); - timebuf[sizeof(timebuf) - 1] = '\0'; + 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 @@ -3941,7 +4884,8 @@ decode_prompt_string (string) #define ROOT_PATH(x) ((x)[0] == '/' && (x)[1] == 0) #define DOUBLE_SLASH_ROOT(x) ((x)[0] == '/' && (x)[1] == '/' && (x)[2] == 0) - if (c == 'W') + /* 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) { @@ -3957,6 +4901,7 @@ decode_prompt_string (string) no longer than PATH_MAX - 1 characters. */ strcpy (t_string, polite_directory_format (t_string)); + 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) @@ -4020,10 +4965,18 @@ decode_prompt_string (string) #if defined (READLINE) case '[': case ']': + if (no_line_editing) + { + string++; + break; + } temp = (char *)xmalloc (3); - temp[0] = '\001'; - temp[1] = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE; - temp[2] = '\0'; + 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 */ @@ -4083,7 +5036,7 @@ not_escape: if (promptvars || posixly_correct) { last_exit_value = last_command_exit_value; - list = expand_prompt_string (result, Q_DOUBLE_QUOTES); + list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0); free (result); result = string_list (list); dispose_words (list); @@ -4119,15 +5072,15 @@ yyerror (msg) } static char * -error_token_from_token (token) - int token; +error_token_from_token (tok) + int tok; { char *t; - if (t = find_token_in_alist (token, word_token_alist, 0)) + if (t = find_token_in_alist (tok, word_token_alist, 0)) return t; - if (t = find_token_in_alist (token, other_token_alist, 0)) + if (t = find_token_in_alist (tok, other_token_alist, 0)) return t; t = (char *)NULL; @@ -4239,7 +5192,7 @@ report_syntax_error (message) parser's complaining about by looking at current_token. */ if (current_token != 0 && EOF_Reached == 0 && (msg = error_token_from_token (current_token))) { - parser_error (line_number, "syntax error near unexpected token `%s'", msg); + parser_error (line_number, _("syntax error near unexpected token `%s'"), msg); free (msg); if (interactive == 0) @@ -4257,7 +5210,7 @@ report_syntax_error (message) msg = error_token_from_text (); if (msg) { - parser_error (line_number, "syntax error near `%s'", msg); + parser_error (line_number, _("syntax error near `%s'"), msg); free (msg); } @@ -4267,7 +5220,7 @@ report_syntax_error (message) } else { - msg = EOF_Reached ? "syntax error: unexpected end of file" : "syntax error"; + 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 @@ -4329,7 +5282,7 @@ handle_eof_input_unit () { if (eof_encountered < eof_encountered_limit) { - fprintf (stderr, "Use \"%s\" to leave the shell.\n", + fprintf (stderr, _("Use \"%s\" to leave the shell.\n"), login_shell ? "logout" : "exit"); eof_encountered++; /* Reset the parsing state. */ @@ -4366,8 +5319,9 @@ 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, whom) +parse_string_to_word_list (s, flags, whom) char *s; + int flags; const char *whom; { WORD_LIST *wl; @@ -4399,6 +5353,10 @@ parse_string_to_word_list (s, whom) 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') @@ -4410,7 +5368,7 @@ parse_string_to_word_list (s, whom) line_number = orig_line_number + line_number - 1; orig_current_token = current_token; current_token = tok; - yyerror ((char *)NULL); /* does the right thing */ + yyerror (NULL); /* does the right thing */ current_token = orig_current_token; if (wl) dispose_words (wl); @@ -4436,6 +5394,9 @@ parse_string_to_word_list (s, whom) 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) { last_command_exit_value = EXECUTION_FAILURE; @@ -4453,30 +5414,39 @@ parse_compound_assignment (retlenp) int *retlenp; { WORD_LIST *wl, *rl; - int tok, orig_line_number, orig_token_size; + 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 */ - continue; + { + 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 `)'"); + parser_error (orig_line_number, _("unexpected EOF while looking for matching `)'")); else - yyerror ((char *)NULL); /* does the right thing */ + yyerror(NULL); /* does the right thing */ if (wl) dispose_words (wl); wl = &parse_string_error; @@ -4489,6 +5459,8 @@ parse_compound_assignment (retlenp) token = saved_token; token_buffer_size = orig_token_size; + parser_state &= ~PST_COMPASSIGN; + if (wl == &parse_string_error) { last_command_exit_value = EXECUTION_FAILURE; @@ -4499,7 +5471,8 @@ parse_compound_assignment (retlenp) jump_to_top_level (DISCARD); } - last_read_token = WORD; + last_read_token = orig_last_token; /* XXX - was WORD? */ + if (wl) { rl = REVERSE_LIST (wl, WORD_LIST *); @@ -4511,9 +5484,112 @@ parse_compound_assignment (retlenp) if (retlenp) *retlenp = (ret && *ret) ? strlen (ret) : 0; + + if (assignok) + parser_state |= PST_ASSIGNOK; + return ret; } +/************************************************ + * * + * SAVING AND RESTORING PARTIAL PARSE STATE * + * * + ************************************************/ + +sh_parser_state_t * +save_parser_state (ps) + sh_parser_state_t *ps; +{ +#if defined (ARRAY_VARS) + SHELL_VAR *v; +#endif + + if (ps == 0) + ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); + if (ps == 0) + return ((sh_parser_state_t *)NULL); + + ps->parser_state = parser_state; + ps->token_state = save_token_state (); + + ps->input_line_terminator = shell_input_line_terminator; + ps->eof_encountered = eof_encountered; + + ps->current_command_line_count = current_command_line_count; + +#if defined (HISTORY) + ps->remember_on_history = remember_on_history; +# if defined (BANG_HISTORY) + ps->history_expansion_inhibited = history_expansion_inhibited; +# endif +#endif + + ps->last_command_exit_value = last_command_exit_value; +#if defined (ARRAY_VARS) + v = find_variable ("PIPESTATUS"); + if (v && array_p (v) && array_cell (v)) + ps->pipestatus = array_copy (array_cell (v)); + else + ps->pipestatus = (ARRAY *)NULL; +#endif + + ps->last_shell_builtin = last_shell_builtin; + ps->this_shell_builtin = this_shell_builtin; + + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; + + return (ps); +} + +void +restore_parser_state (ps) + sh_parser_state_t *ps; +{ +#if defined (ARRAY_VARS) + SHELL_VAR *v; +#endif + + if (ps == 0) + return; + + parser_state = ps->parser_state; + if (ps->token_state) + { + restore_token_state (ps->token_state); + free (ps->token_state); + } + + shell_input_line_terminator = ps->input_line_terminator; + eof_encountered = ps->eof_encountered; + + current_command_line_count = ps->current_command_line_count; + +#if defined (HISTORY) + remember_on_history = ps->remember_on_history; +# if defined (BANG_HISTORY) + history_expansion_inhibited = ps->history_expansion_inhibited; +# endif +#endif + + last_command_exit_value = ps->last_command_exit_value; +#if defined (ARRAY_VARS) + v = find_variable ("PIPESTATUS"); + if (v && array_p (v) && array_cell (v)) + { + array_dispose (array_cell (v)); + var_setarray (v, ps->pipestatus); + } +#endif + + last_shell_builtin = ps->last_shell_builtin; + this_shell_builtin = ps->this_shell_builtin; + + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; +} + /************************************************ * * * MULTIBYTE CHARACTER HANDLING * @@ -4524,7 +5600,7 @@ parse_compound_assignment (retlenp) static void set_line_mbstate () { - int i, previ, len; + int i, previ, len, c; mbstate_t mbs, prevs; size_t mbclen; @@ -4539,7 +5615,8 @@ set_line_mbstate () { mbs = prevs; - if (shell_input_line[i] == EOF) + c = shell_input_line[i]; + if (c == EOF) { int j; for (j = i; j < len; j++) @@ -4563,7 +5640,11 @@ set_line_mbstate () } else { - /* mbrlen doesn't return any other values */ + /* XXX - what to do if mbrlen returns 0? (null wide character) */ + int j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; } shell_input_line_property[i] = mbclen; diff --git a/src/bin/bash/parser-built b/src/bin/bash/parser-built index 565b03991b..552d7adb5a 100644 --- a/src/bin/bash/parser-built +++ b/src/bin/bash/parser-built @@ -1,8 +1,145 @@ -#ifndef BISON_Y_TAB_H -# define BISON_Y_TAB_H +/* A Bison parser, made by GNU Bison 2.3. */ -#ifndef YYSTYPE -typedef union { +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* 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. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IF = 258, + THEN = 259, + ELSE = 260, + ELIF = 261, + FI = 262, + CASE = 263, + ESAC = 264, + FOR = 265, + SELECT = 266, + WHILE = 267, + UNTIL = 268, + DO = 269, + DONE = 270, + FUNCTION = 271, + COPROC = 272, + COND_START = 273, + COND_END = 274, + COND_ERROR = 275, + IN = 276, + BANG = 277, + TIME = 278, + TIMEOPT = 279, + WORD = 280, + ASSIGNMENT_WORD = 281, + NUMBER = 282, + ARITH_CMD = 283, + ARITH_FOR_EXPRS = 284, + COND_CMD = 285, + AND_AND = 286, + OR_OR = 287, + GREATER_GREATER = 288, + LESS_LESS = 289, + LESS_AND = 290, + LESS_LESS_LESS = 291, + GREATER_AND = 292, + SEMI_SEMI = 293, + SEMI_AND = 294, + SEMI_SEMI_AND = 295, + LESS_LESS_MINUS = 296, + AND_GREATER = 297, + AND_GREATER_GREATER = 298, + LESS_GREATER = 299, + GREATER_BAR = 300, + BAR_AND = 301, + yacc_EOF = 302 + }; +#endif +/* Tokens. */ +#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 WORD 280 +#define ASSIGNMENT_WORD 281 +#define NUMBER 282 +#define ARITH_CMD 283 +#define ARITH_FOR_EXPRS 284 +#define COND_CMD 285 +#define AND_AND 286 +#define OR_OR 287 +#define GREATER_GREATER 288 +#define LESS_LESS 289 +#define LESS_AND 290 +#define LESS_LESS_LESS 291 +#define GREATER_AND 292 +#define SEMI_SEMI 293 +#define SEMI_AND 294 +#define SEMI_SEMI_AND 295 +#define LESS_LESS_MINUS 296 +#define AND_GREATER 297 +#define AND_GREATER_GREATER 298 +#define LESS_GREATER 299 +#define GREATER_BAR 300 +#define BAR_AND 301 +#define yacc_EOF 302 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 316 "/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; @@ -10,51 +147,14 @@ typedef union { REDIRECT *redirect; ELEMENT element; PATTERN_LIST *pattern; -} yystype; -# define YYSTYPE yystype +} +/* Line 1489 of yacc.c. */ +#line 153 "y.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -# define IF 257 -# define THEN 258 -# define ELSE 259 -# define ELIF 260 -# define FI 261 -# define CASE 262 -# define ESAC 263 -# define FOR 264 -# define SELECT 265 -# define WHILE 266 -# define UNTIL 267 -# define DO 268 -# define DONE 269 -# define FUNCTION 270 -# define COND_START 271 -# define COND_END 272 -# define COND_ERROR 273 -# define IN 274 -# define BANG 275 -# define TIME 276 -# define TIMEOPT 277 -# define WORD 278 -# define ASSIGNMENT_WORD 279 -# define NUMBER 280 -# define ARITH_CMD 281 -# define ARITH_FOR_EXPRS 282 -# define COND_CMD 283 -# define AND_AND 284 -# define OR_OR 285 -# define GREATER_GREATER 286 -# define LESS_LESS 287 -# define LESS_AND 288 -# define LESS_LESS_LESS 289 -# define GREATER_AND 290 -# define SEMI_SEMI 291 -# define LESS_LESS_MINUS 292 -# define AND_GREATER 293 -# define LESS_GREATER 294 -# define GREATER_BAR 295 -# define yacc_EOF 296 - extern YYSTYPE yylval; -#endif /* not BISON_Y_TAB_H */ diff --git a/src/bin/bash/parser.h b/src/bin/bash/parser.h index 626651cc4b..3c47dc96f0 100644 --- a/src/bin/bash/parser.h +++ b/src/bin/bash/parser.h @@ -1,23 +1,23 @@ /* parser.h -- Everything you wanted to know about the parser, but were afraid to ask. */ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -25,6 +25,27 @@ # include "command.h" # include "input.h" +/* Possible states for the parser that require it to do special things. */ +#define PST_CASEPAT 0x00001 /* in a case pattern list */ +#define PST_ALEXPNEXT 0x00002 /* expand next word for aliases */ +#define PST_ALLOWOPNBRC 0x00004 /* allow open brace for function def */ +#define PST_NEEDCLOSBRC 0x00008 /* need close brace */ +#define PST_DBLPAREN 0x00010 /* double-paren parsing */ +#define PST_SUBSHELL 0x00020 /* ( ... ) subshell */ +#define PST_CMDSUBST 0x00040 /* $( ... ) command substitution */ +#define PST_CASESTMT 0x00080 /* parsing a case statement */ +#define PST_CONDCMD 0x00100 /* parsing a [[...]] command */ +#define PST_CONDEXPR 0x00200 /* parsing the guts of [[...]] */ +#define PST_ARITHFOR 0x00400 /* parsing an arithmetic for command */ +#define PST_ALEXPAND 0x00800 /* OK to expand aliases - unused */ +#define PST_CMDTOKEN 0x01000 /* command token OK - unused */ +#define PST_COMPASSIGN 0x02000 /* parsing x=(...) compound assignment */ +#define PST_ASSIGNOK 0x04000 /* assignment statement ok in this context */ +#define PST_EOFTOKEN 0x08000 /* yylex checks against shell_eof_token */ +#define PST_REGEXP 0x10000 /* parsing an ERE/BRE as a single word */ +#define PST_HEREDOC 0x20000 /* reading body of here-document */ +#define PST_REPARSE 0x40000 /* re-parsing in parse_string_to_word_list */ + /* 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 diff --git a/src/bin/bash/patchlevel.h b/src/bin/bash/patchlevel.h index 4c2c67a457..2af2f568bf 100644 --- a/src/bin/bash/patchlevel.h +++ b/src/bin/bash/patchlevel.h @@ -1,22 +1,22 @@ /* patchlevel.h -- current bash patch level */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_PATCHLEVEL_H_) #define _PATCHLEVEL_H_ diff --git a/src/bin/bash/pathexp.c b/src/bin/bash/pathexp.c index a498672f51..ece200d3d1 100644 --- a/src/bin/bash/pathexp.c +++ b/src/bin/bash/pathexp.c @@ -1,22 +1,22 @@ /* pathexp.c -- The shell interface to the globbing library. */ -/* Copyright (C) 1995-2002 Free Software Foundation, Inc. +/* Copyright (C) 1995-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -34,6 +34,7 @@ #include "flags.h" #include "shmbutil.h" +#include "bashintl.h" #include @@ -53,6 +54,9 @@ int glob_dot_filenames; /* Control whether the extended globbing features are enabled. */ int extended_glob = 0; +/* Control enabling special handling of `**' */ +int glob_star = 0; + /* Return nonzero if STRING has any unquoted special globbing chars in it. */ int unquoted_glob_pattern_p (string) @@ -110,6 +114,55 @@ unquoted_glob_pattern_p (string) return (0); } +/* 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, @@ -142,6 +195,15 @@ quote_string_for_globbing (pathname, qflags) { if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/') continue; + if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0) + continue; + temp[j++] = '\\'; + i++; + if (pathname[i] == '\0') + break; + } + else if (pathname[i] == '\\') + { temp[j++] = '\\'; i++; if (pathname[i] == '\0') @@ -168,22 +230,8 @@ quote_globbing_chars (string) temp = (char *)xmalloc (slen * 2 + 1); for (t = temp, s = string; *s; ) { - switch (*s) - { - case '*': - case '[': - case ']': - case '?': - case '\\': - *t++ = '\\'; - break; - case '+': - case '@': - case '!': - if (s[1] == '(') /*(*/ - *t++ = '\\'; - break; - } + if (glob_char_p (s)) + *t++ = '\\'; /* Copy a single (possibly multibyte) character from s to t, incrementing both. */ @@ -251,7 +299,7 @@ shell_glob_filename (pathname) noglob_dot_filenames = glob_dot_filenames == 0; temp = quote_string_for_globbing (pathname, QGLOB_FILENAME); - results = glob_filename (temp, 0); + results = glob_filename (temp, glob_star ? GX_GLOBSTAR : 0); free (temp); if (results && ((GLOB_FAILED (results)) == 0)) diff --git a/src/bin/bash/pathexp.h b/src/bin/bash/pathexp.h index 6c41ebae69..20d0baf860 100644 --- a/src/bin/bash/pathexp.h +++ b/src/bin/bash/pathexp.h @@ -1,22 +1,22 @@ /* pathexp.h -- The shell interface to the globbing library. */ -/* Copyright (C) 1987,1989 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -32,6 +32,7 @@ extern char *glob_error_return; /* 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 */ #if defined (EXTENDED_GLOB) /* Flags to OR with other flag args to strmatch() to enabled the extended @@ -41,8 +42,12 @@ extern char *glob_error_return; # define FNMATCH_EXTFLAG 0 #endif /* !EXTENDED_GLOB */ +#define FNMATCH_IGNCASE (match_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 __P((char *)); @@ -58,6 +63,7 @@ extern int unquoted_glob_pattern_p __P((char *)); to match a filename should be performed. */ extern char *quote_string_for_globbing __P((const char *, int)); +extern int glob_char_p __P((const char *)); extern char *quote_globbing_chars __P((char *)); /* Call the glob library to do globbing on PATHNAME. */ diff --git a/src/bin/bash/pathnames.h b/src/bin/bash/pathnames.h deleted file mode 100644 index 27817afa8d..0000000000 --- a/src/bin/bash/pathnames.h +++ /dev/null @@ -1,30 +0,0 @@ -/* pathnames.h -- absolute filenames that bash wants for various defaults. */ - -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. - - This file is part of GNU Bash, the Bourne Again SHell. - - Bash is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - -#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" - -#endif /* _PATHNAMES_H */ diff --git a/src/bin/bash/pathnames.h.in b/src/bin/bash/pathnames.h.in new file mode 100644 index 0000000000..38d09393f8 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/pcomplete.c b/src/bin/bash/pcomplete.c index 181135129a..e1ccaac867 100644 --- a/src/bin/bash/pcomplete.c +++ b/src/bin/bash/pcomplete.c @@ -1,23 +1,22 @@ -/* pcomplete.c - functions to generate lists of matches for programmable - completion. */ +/* pcomplete.c - functions to generate lists of matches for programmable completion. */ -/* Copyright (C) 1999-2002 Free Software Foundation, Inc. +/* Copyright (C) 1999-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -40,6 +39,7 @@ #include #include "bashansi.h" +#include "bashintl.h" #include "shell.h" #include "pcomplete.h" @@ -163,6 +163,9 @@ ITEMLIST it_stopped = { LIST_DYNAMIC, it_init_stopped, (STRINGLIST *)0 }; ITEMLIST it_users = { LIST_DYNAMIC }; /* unused */ ITEMLIST it_variables = { LIST_DYNAMIC, it_init_variables, (STRINGLIST *)0 }; +COMPSPEC *pcomp_curcs; +const char *pcomp_curcmd; + #ifdef DEBUG /* Debugging code */ static void @@ -371,6 +374,11 @@ init_itemlist_from_varlist (itp, svfunc) 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); @@ -507,20 +515,23 @@ it_init_joblist (itp, jstate) register int i; register PROCESS *p; char *s, *t; - JOB_STATE js; + JOB *j; + JOB_STATE ws; /* wanted state */ + ws = JNONE; if (jstate == 0) - js = JRUNNING; + ws = JRUNNING; else if (jstate == 1) - js = JSTOPPED; + ws = JSTOPPED; - sl = strlist_create (job_slots); - for (i = job_slots - 1; i >= 0; i--) + sl = strlist_create (js.j_jobslots); + for (i = js.j_jobslots - 1; i >= 0; i--) { - if (jobs[i] == 0) + j = get_job_by_jid (i); + if (j == 0) continue; - p = jobs[i]->pipe; - if (jstate == -1 || JOBSTATE(i) == js) + p = j->pipe; + if (jstate == -1 || JOBSTATE(i) == ws) { s = savestring (p->command); t = strpbrk (s, " \t\n"); @@ -628,7 +639,8 @@ it_init_shopts (itp) /* 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. */ + new one before trying the match. TEXT is dequoted before attempting a + match. */ static STRINGLIST * gen_matches_from_itemlist (itp, text) ITEMLIST *itp; @@ -636,6 +648,7 @@ gen_matches_from_itemlist (itp, text) { STRINGLIST *ret, *sl; int tlen, i, n; + char *ntxt; if ((itp->flags & (LIST_DIRTY|LIST_DYNAMIC)) || (itp->flags & LIST_INITIALIZED) == 0) @@ -649,13 +662,18 @@ gen_matches_from_itemlist (itp, text) return ((STRINGLIST *)NULL); ret = strlist_create (itp->slist->list_len+1); sl = itp->slist; - tlen = STRLEN (text); + + ntxt = bash_dequote_text (text); + tlen = STRLEN (ntxt); + for (i = n = 0; i < sl->list_len; i++) { - if (tlen == 0 || STREQN (sl->list[i], text, tlen)) + 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; } @@ -673,10 +691,17 @@ pcomp_filename_completion_function (text, state) { FREE (dfn); /* remove backslashes quoting special characters in filenames. */ +#if 1 + if (RL_ISSTATE (RL_STATE_COMPLETING) && rl_filename_dequoting_function) +#else if (rl_filename_dequoting_function) +#endif { - qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0; - dfn = (*rl_filename_dequoting_function) ((char *)text, qc); + /* Use rl_completion_quote_character because any single or + double quotes have been removed by the time TEXT makes it + here, and we don't want to remove backslashes inside + quoted strings. */ + dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); } else dfn = savestring (text); @@ -793,6 +818,7 @@ gen_wordlist_matches (cs, 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); @@ -810,15 +836,19 @@ gen_wordlist_matches (cs, text) nw = list_length (l2); sl = strlist_create (nw + 1); - tlen = STRLEN (text); + + ntxt = bash_dequote_text (text); + tlen = STRLEN (ntxt); for (nw = 0, l = l2; l; l = l->next) { - if (tlen == 0 || STREQN (l->word->word, text, tlen)) + 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; } @@ -837,7 +867,9 @@ bind_comp_words (lwords) VUNSETATTR (v, att_readonly); if (array_p (v) == 0) v = convert_var_to_array (v); - v = assign_array_var_from_word_list (v, lwords); + v = assign_array_var_from_word_list (v, lwords, 0); + + VUNSETATTR (v, att_invisible); return v; } #endif /* ARRAY_VARS */ @@ -855,7 +887,7 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) /* 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); + v = bind_variable ("COMP_LINE", line, 0); if (v && exported) VSETATTR(v, att_exported); @@ -864,6 +896,16 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) if (v && exported) VSETATTR(v, att_exported); + value = inttostr (rl_completion_type, ibuf, sizeof (ibuf)); + v = bind_int_variable ("COMP_TYPE", value); + if (v && exported) + VSETATTR(v, att_exported); + + value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf)); + v = bind_int_variable ("COMP_KEY", value); + if (v && exported) + VSETATTR(v, att_exported); + /* Since array variables can't be exported, we don't bother making the array of words. */ if (exported == 0) @@ -884,6 +926,8 @@ unbind_compfunc_variables (exported) { unbind_variable ("COMP_LINE"); unbind_variable ("COMP_POINT"); + unbind_variable ("COMP_TYPE"); + unbind_variable ("COMP_KEY"); #ifdef ARRAY_VARS unbind_variable ("COMP_WORDS"); unbind_variable ("COMP_CWORD"); @@ -897,11 +941,12 @@ unbind_compfunc_variables (exported) $0 == function or command being invoked $1 == command name - $2 = word to be completed (possibly null) - $3 = previous word + $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. */ + 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, text, lwords, ind) @@ -960,6 +1005,8 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw) SHELL_VAR *f, *v; WORD_LIST *cmdlist; int fval; + sh_parser_state_t ps; + sh_parser_state_t * restrict pps; #if defined (ARRAY_VARS) ARRAY *a; #endif @@ -968,7 +1015,7 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw) f = find_function (funcname); if (f == 0) { - internal_error ("completion: function `%s' not found", funcname); + internal_error (_("completion: function `%s' not found"), funcname); rl_ding (); rl_on_new_line (); return ((STRINGLIST *)NULL); @@ -983,9 +1030,18 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw) bind_compfunc_variables (line, ind, lwords, cw - 1, 0); cmdlist = build_arg_list (funcname, text, lwords, cw); - + + pps = &ps; + 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); + /* Now clean up and destroy everything. */ dispose_words (cmdlist); unbind_compfunc_variables (0); @@ -997,6 +1053,8 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw) if (array_p (v) == 0) v = convert_var_to_array (v); + VUNSETATTR (v, att_invisible); + a = array_cell (v); if (a == 0 || array_empty (a)) sl = (STRINGLIST *)NULL; @@ -1037,6 +1095,7 @@ gen_command_matches (cs, text, line, ind, lwords, 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); @@ -1068,7 +1127,9 @@ gen_command_matches (cs, text, line, ind, lwords, nw, cw) } cscmd[cmdlen] = '\0'; - csbuf = command_substitute (cscmd, 0); + tw = command_substitute (cscmd, 0); + csbuf = tw ? tw->word : (char *)NULL; + dispose_word_desc (tw); /* Now clean up and destroy everything. */ dispose_words (cmdlist); @@ -1114,7 +1175,11 @@ command_line_to_word_list (line, llen, sentinel, nwp, cwp) WORD_LIST *ret; char *delims; +#if 0 delims = "()<>;&| \t\n"; /* shell metacharacters break words */ +#else + delims = rl_completer_word_break_characters; +#endif ret = split_at_delims (line, llen, delims, sentinel, nwp, cwp); return (ret); } @@ -1132,6 +1197,7 @@ gen_compspec_completions (cs, cmd, word, start, end) char *line; int llen, nw, cw; WORD_LIST *lwords; + COMPSPEC *tcs; #ifdef DEBUG debug_printf ("gen_compspec_completions (%s, %s, %d, %d)", cmd, word, start, end); @@ -1286,17 +1352,52 @@ gen_compspec_completions (cs, cmd, word, start, end) names. */ if ((ret == 0 || ret->list_len == 0) && (cs->options & COPT_DIRNAMES)) { - COMPSPEC *dummy; - - dummy = compspec_create (); - dummy->actions = CA_DIRECTORY; - ret = gen_action_completions (dummy, word); - compspec_dispose (dummy); + tcs = compspec_create (); + tcs->actions = CA_DIRECTORY; + ret = gen_action_completions (tcs, word); + compspec_dispose (tcs); + } + else if (cs->options & COPT_PLUSDIRS) + { + tcs = compspec_create (); + tcs->actions = CA_DIRECTORY; + tmatches = gen_action_completions (tcs, word); + ret = strlist_append (ret, tmatches); + strlist_dispose (tmatches); + compspec_dispose (tcs); } return (ret); } +void +pcomp_set_readline_variables (flags, nval) + int flags, nval; +{ + /* If the user specified that the compspec returns filenames, make + sure that readline knows it. */ + if (flags & COPT_FILENAMES) + rl_filename_completion_desired = nval; + /* If the user doesn't want a space appended, tell readline. */ + if (flags & COPT_NOSPACE) + rl_completion_suppress_append = nval; +} + +/* Set or unset FLAGS in the options word of the current compspec. + SET_OR_UNSET is 1 for setting, 0 for unsetting. */ +void +pcomp_set_compspec_options (cs, flags, set_or_unset) + COMPSPEC *cs; + int flags, set_or_unset; +{ + if (cs == 0 && ((cs = pcomp_curcs) == 0)) + return; + if (set_or_unset) + cs->options |= flags; + else + cs->options &= ~flags; +} + /* The driver function for the programmable completion code. Returns a list of matches for WORD, which is an argument to command CMD. START and END bound the command currently being completed in rl_line_buffer. */ @@ -1306,9 +1407,10 @@ programmable_completions (cmd, word, start, end, foundp) const char *word; int start, end, *foundp; { - COMPSPEC *cs; + COMPSPEC *cs, *oldcs; STRINGLIST *ret; char **rmatches, *t; + const char *oldcmd; /* We look at the basename of CMD if the full command does not have an associated COMPSPEC. */ @@ -1326,6 +1428,14 @@ programmable_completions (cmd, word, start, end, foundp) return ((char **)NULL); } + cs = compspec_copy (cs); + + oldcs = pcomp_curcs; + oldcmd = pcomp_curcmd; + + pcomp_curcs = cs; + pcomp_curcmd = cmd; + /* Signal the caller that we found a COMPSPEC for this command, and pass back any meta-options associated with the compspec. */ if (foundp) @@ -1333,6 +1443,11 @@ programmable_completions (cmd, word, start, end, foundp) ret = gen_compspec_completions (cs, cmd, word, start, end); + pcomp_curcs = oldcs; + pcomp_curcmd = oldcmd; + + compspec_dispose (cs); + if (ret) { rmatches = ret->list; diff --git a/src/bin/bash/pcomplete.h b/src/bin/bash/pcomplete.h index 9353fe1ef5..bc0541d9fd 100644 --- a/src/bin/bash/pcomplete.h +++ b/src/bin/bash/pcomplete.h @@ -1,23 +1,23 @@ /* pcomplete.h - structure definitions and other stuff for programmable - completion. */ +n completion. */ -/* Copyright (C) 1999-2002 Free Software Foundation, Inc. +/* Copyright (C) 1999-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -71,6 +71,8 @@ typedef struct compspec { #define COPT_FILENAMES (1<<2) #define COPT_DIRNAMES (1<<3) #define COPT_NOSPACE (1<<4) +#define COPT_BASHDEFAULT (1<<5) +#define COPT_PLUSDIRS (1<<6) /* List of items is used by the code that implements the programmable completions. */ @@ -122,6 +124,9 @@ 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 __P((void)); extern void compspec_dispose __P((COMPSPEC *)); @@ -148,4 +153,6 @@ extern STRINGLIST *completions_to_stringlist __P((char **)); extern STRINGLIST *gen_compspec_completions __P((COMPSPEC *, const char *, const char *, int, int)); extern char **programmable_completions __P((const char *, const char *, int, int, int *)); +extern void pcomp_set_readline_variables __P((int, int)); +extern void pcomp_set_compspec_options __P((COMPSPEC *, int, int)); #endif /* _PCOMPLETE_H_ */ diff --git a/src/bin/bash/pcomplib.c b/src/bin/bash/pcomplib.c index aa08fa5da4..fc4fbe4db8 100644 --- a/src/bin/bash/pcomplib.c +++ b/src/bin/bash/pcomplib.c @@ -1,22 +1,22 @@ /* pcomplib.c - library functions for programmable completion. */ -/* Copyright (C) 1999-2002 Free Software Foundation, Inc. +/* Copyright (C) 1999-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -32,6 +32,8 @@ # include #endif +#include "bashintl.h" + #include "shell.h" #include "pcomplete.h" @@ -174,18 +176,19 @@ progcomp_insert (cmd, cs) register BUCKET_CONTENTS *item; if (cs == NULL) - programming_error ("progcomp_insert: %s: NULL COMPSPEC", cmd); + 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; - cs->refcount++; + return 1; } diff --git a/src/bin/bash/po/._lt.po b/src/bin/bash/po/._lt.po new file mode 100644 index 0000000000000000000000000000000000000000..09ec0ede78a8649d1a8f76df60b3c29938b7899c GIT binary patch literal 4096 zcmeH~u?oU45QeXUh)Xw}q-1s|qAsPAi<=1A!A)XGG#C?&6;yl>AH!$zMf9pg(8XE2 zACAi%`48^f4$AcklmG@iWy3L>utIqcsu*nm|AHB7{|ev*`2M0^l8n68)PFkQjNh9d z77y#9UrX&Oa5TBx`iMcsBJJ8@q*A?-dsSvL +# +# 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 = @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 + +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/src/bin/bash/po/Makevars b/src/bin/bash/po/Makevars new file mode 100644 index 0000000000..84b2d95623 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/POTFILES.in b/src/bin/bash/po/POTFILES.in new file mode 100644 index 0000000000..6d9afbf426 --- /dev/null +++ b/src/bin/bash/po/POTFILES.in @@ -0,0 +1,77 @@ +# List of source files containing translatable strings. +# Copyright (C) 2004 Free Software Foundation, Inc. + +arrayfunc.c +bashhist.c +bashline.c +braces.c +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/malloc/malloc.c +lib/malloc/stats.c +lib/malloc/table.c +lib/malloc/watch.c +lib/sh/fmtulong.c +lib/sh/netopen.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 +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/src/bin/bash/po/README b/src/bin/bash/po/README new file mode 100644 index 0000000000..979884c634 --- /dev/null +++ b/src/bin/bash/po/README @@ -0,0 +1 @@ +This apparently requires GNU sed diff --git a/src/bin/bash/po/Rules-builtins b/src/bin/bash/po/Rules-builtins new file mode 100644 index 0000000000..57df81c9cd --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/Rules-quot b/src/bin/bash/po/Rules-quot new file mode 100644 index 0000000000..5f46d237d2 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/af.gmo b/src/bin/bash/po/af.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1b59cac12da920c6d86f081aa2b230675a74ebee GIT binary patch literal 1231 zcmY+DNpBoQ6vrzNwjnIC#3m4Wi8L&V%Jg^<<0gdQ#0V3NEyr*{9BR7X^pv}&YE)G{ zp5X&<<&;~#KrWo%8*t>#jSmnBap1~<|LZXrO4IeLGB-oW<&-z&1d zgb8B-z6378H^J}E_dkGZ*#CUK{}sef{f_Ah_y>3y{0n>Gkd=2~w6niqTR0yNfm%Zd6Hf4y8_>&?2WJn%jTjG=45$eC= zNvtG))sHz9#yOv;2y7DP)Q|r?L87ghy zBKffFj$pO)u7PUnie$Z0x!Uzr8!6h#nMU35j=Slde)+E2Ti8VXQti{k%o*m%nJHgY zU%J})GeJy(+@96ME-xf2F)_1ycZDiSw z&NlR5hXz~u_NLCZvkZdznCDikUdV0fY*P>3r@>~vHN2idv-i1)NuLDcVq;LUoQ^mJ zOP_fkQS=+3K0BSA-kP=bx+&JbH8-K)s@7DjPuNUz`gj~{ZJ|p3_nen<0RVR6{ zf3SCv*#Jr1Mzz?%-*Sd`PP|C(%^G9f2UJW(JmN0_ literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/af.po b/src/bin/bash/po/af.po new file mode 100644 index 0000000000..e60048fb57 --- /dev/null +++ b/src/bin/bash/po/af.po @@ -0,0 +1,4480 @@ +# 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: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2004-03-17 13:48+0200\n" +"Last-Translator: Petri Jooste \n" +"Language-Team: Afrikaans \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: arrayfunc.c:50 +#, fuzzy +msgid "bad array subscript" +msgstr "Os/2 Biskaart Skikking" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: illegal option -- %c\n" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: kan nie %s skep nie" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: bevel nie gevind nie" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: leesalleen-funksie" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "Afteken" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "3d modus" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "besig om te skryf" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +#, fuzzy +msgid "too many arguments" +msgstr "te veel parameters" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "%s: option `%s' requires an argument\n" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%s: illegal option -- %c\n" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%s: illegal option -- %c\n" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "Die datum is nie geldige!" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, fuzzy, c-format +msgid "%s: readonly variable" +msgstr "Veranderlike boom" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "argument verwag\n" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "geen taakbeheer in hierdie dop nie" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "geen taakbeheer in hierdie dop nie" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "Die bediener beëindig Die verbinding." + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "" +"\n" +"Bevel beëindig\n" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "pypfout: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: dubbelsinnige herroetering" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: leesalleen-funksie" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is 'n gids" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "Afteken" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "Bevelreël" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, 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 "%s: heelgetal-uitdrukking is verwag\n" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "Onbekende fout %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +#, fuzzy +msgid "expression expected" +msgstr "Bools uitdrukking verwag" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: illegal option -- %c\n" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: illegal option -- %c\n" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "Veranderlike boom" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "boonste lêergids." + +#: builtins/pushd.def:462 +#, fuzzy +msgid "" +msgstr "Nuutste gebruik word werksaam gids" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Stapel grootte verhoog" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "pypfout: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: kan nie %s skep nie" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "Veranderlike boom" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: leesalleen-funksie" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "Shift" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Begin aanteken tolk" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: leesalleen-funksie" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%s: illegal option -- %c\n" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "Filter beperk:" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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 "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "Onbekende fout %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "bevelnaam" + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "foutiewe verbinder`%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Spring na:" + +#: error.c:446 +#, fuzzy, c-format +msgid "%s: unbound variable" +msgstr "Veranderlike boom" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "pypfout: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: bevel nie gevind nie" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: is 'n gids" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Stapel grootte verhoog" + +#: expr.c:379 +#, fuzzy +msgid "syntax error in expression" +msgstr "Sintaks fout in patroon" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:440 expr.c:445 expr.c:756 +#, fuzzy +msgid "division by 0" +msgstr "devisie by nul." + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:513 +#, fuzzy +msgid "`:' expected for conditional expression" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +#, fuzzy +msgid "missing `)'" +msgstr "Ontbrekende '>'" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" +"Hierdie is die fout boodskap van %1:\n" +"%2" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "waarde te groot vir basis" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: heelgetal-uitdrukking is verwag\n" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "Kan nie die program uitvoer nie:" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "E108: Geen veranderlike: \"%s\"" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Sein kwaliteit:" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Klaar" + +#: jobs.c:1435 siglist.c:122 +#, fuzzy +msgid "Stopped" +msgstr "Op gehou" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Op gehou" + +#: jobs.c:1443 +#, fuzzy +msgid "Running" +msgstr "aktief" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Klaar(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Verlaat %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Onbekende status" + +#: jobs.c:1549 +#, fuzzy, c-format +msgid "(core dumped) " +msgstr "Kern Ontwikkelaar" + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "Aktiveer nou dadelik" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "Fout in die skryf van %s" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, fuzzy, c-format +msgid "%s: job has terminated" +msgstr "Die bediener beëindig Die verbinding." + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "3d modus" + +#: jobs.c:3506 nojobs.c:814 +#, fuzzy, c-format +msgid " (core dumped)" +msgstr "Kern Ontwikkelaar" + +#: jobs.c:3518 jobs.c:3531 +#, fuzzy, c-format +msgid "(wd now: %s)\n" +msgstr "Aktiveer nou dadelik" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "Inisialisering van OpenGL het misluk." + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "Inisialisering van OpenGL het misluk." + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "geen taakbeheer in hierdie dop nie" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "(onbekend)" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +#, fuzzy +msgid "You have mail in $_" +msgstr "Bevestig Pos In" + +#: mailcheck.c:458 +#, fuzzy +msgid "You have new mail in $_" +msgstr "Wanneer nuwe pos arriveer in" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "Sintaks fout in patroon" + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "sintaksfout" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "Sintaks fout in patroon" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "')' is verwag\n" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: parse.y:3889 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "Sintaks fout in patroon" + +#: parse.y:5223 +#, fuzzy +msgid "syntax error: unexpected end of file" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: parse.y:5223 +msgid "syntax error" +msgstr "sintaksfout" + +#: parse.y:5285 +#, fuzzy, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gebruik Kaart na Los Tronk" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: dubbelsinnige herroetering" + +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "Jy het gespesifiseer 'n bestaande lêer" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "Pypfout.\n" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%s: illegal option -- %c\n" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Ek het nie 'n naam nie!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "bedryfstelselkernweergawe" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:1781 +#, fuzzy +msgid "GNU long options:\n" +msgstr "Gnu C Saamsteller Opsies" + +#: shell.c:1785 +#, fuzzy +msgid "Shell options:\n" +msgstr "opneem opsies" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:1801 +#, fuzzy, c-format +msgid "\t-%s or -o option\n" +msgstr "" +"Gebruik so: %s LÊER \n" +" of: %s OPSIE\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, 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 "Gedruk: %s" + +#: 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 +#, fuzzy +msgid "Unknown Signal #" +msgstr "Sein kwaliteit:" + +#: siglist.c:224 +#, fuzzy, c-format +msgid "Unknown Signal #%d" +msgstr "Sein kwaliteit:" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "--Geen reëls in buffer--" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "Woord Substitusie" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "Woord Substitusie" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "Woord Substitusie" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "Woord Substitusie" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:5608 +#, fuzzy, c-format +msgid "%s: substring expression < 0" +msgstr "ongeldige uitdrukking" + +#: subst.c:6660 +#, fuzzy, c-format +msgid "%s: bad substitution" +msgstr "Woord Substitusie" + +#: subst.c:6740 +#, fuzzy, c-format +msgid "$%s: cannot assign in this way" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "--Geen reëls in buffer--" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +#, fuzzy +msgid "argument expected" +msgstr "argument verwag\n" + +#: test.c:154 +#, fuzzy, c-format +msgid "%s: integer expression expected" +msgstr "%s: heelgetal-uitdrukking is verwag\n" + +#: test.c:262 +#, fuzzy +msgid "`)' expected" +msgstr "')' is verwag\n" + +#: test.c:264 +#, fuzzy, c-format +msgid "`)' expected, found %s" +msgstr "')' is verwag, maar %s gevind\n" + +#: test.c:279 test.c:688 test.c:691 +#, fuzzy, c-format +msgid "%s: unary operator expected" +msgstr "%s: unitêre operator is verwag\n" + +#: test.c:444 test.c:731 +#, fuzzy, c-format +msgid "%s: binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: test.c:806 +#, fuzzy +msgid "missing `]'" +msgstr "Ontbrekende '>'" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "Die sein nommer wat was gevang het" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "bedryfstelselkernweergawe" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +#, fuzzy +msgid "alias [-p] [name[=value] ... ]" +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "Volle Naam:" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +#, fuzzy +msgid "break [n]" +msgstr "Breek" + +#: builtins.c:56 +#, fuzzy +msgid "continue [n]" +msgstr "Gaan voort" + +#: builtins.c:58 +#, fuzzy +msgid "builtin [shell-builtin [arg ...]]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "/Opsies/Toets" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "init_cache_dir %s... " + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "miniserv.pl is gestop\n" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +#, fuzzy +msgid "command [-pVv] command [arg ...]" +msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "Name=Plaaslike Netwerk" + +#: builtins.c:83 +#, fuzzy +msgid "echo [-neE] [arg ...]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:87 +#, fuzzy +msgid "echo [-n] [arg ...]" +msgstr "Konfigureer Eggo" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "Teruglus lêernaam:" + +#: builtins.c:92 +#, fuzzy +msgid "eval [arg ...]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +#, fuzzy +msgid "exit [n]" +msgstr "Verlaat" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "Afteken" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +#, fuzzy +msgid "fg [job_spec]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "Teruglus lêernaam:" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "enige patroon" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +#, fuzzy +msgid "let arg [arg ...]" +msgstr "Kom ons begin!" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +#, fuzzy +msgid "return [n]" +msgstr "Terug Adres - 3/4 x 2\"" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n" + +#: builtins.c:142 +#, fuzzy +msgid "unset [-f] [-v] [name ...]" +msgstr "Volle Naam:" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "Bediener of domein naam:" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "Bediener of domein naam:" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "Verlaat" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "Kies Lêernaam" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". lêernaam" + +#: builtins.c:155 +#, fuzzy +msgid "suspend [-f]" +msgstr "|uitsit}\n" + +#: builtins.c:158 +#, fuzzy +msgid "test [expr]" +msgstr "/Opsies/Toets" + +#: builtins.c:160 +#, fuzzy +msgid "[ arg... ]" +msgstr "Arg %1" + +#: builtins.c:162 +#, fuzzy +msgid "times" +msgstr "Herhaal %1 times " + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "Tipe die naam van die %1 speler." + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "Grootte beperk (Kb):" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "Belmetode" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "Wag:" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "Wag:" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +#, fuzzy +msgid "until COMMANDS; do COMMANDS; done" +msgstr "Bediener of domein naam:" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "Bediener of domein naam:" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "Opdragte" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "Bools uitdrukking verwag" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "Bools uitdrukking verwag" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "Tydelike gids:" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "Volle Naam:" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "Tipe die naam van die %1 speler." + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#, fuzzy +#~ msgid " new current working directory." +#~ msgstr "Nuutste gebruik word werksaam gids" + +#~ msgid "top directory." +#~ msgstr "boonste lêergids." + +#, fuzzy +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Verkeerde verklaring tipe" + +#, fuzzy +#~ msgid "Logout of a login shell." +#~ msgstr "Begin aanteken tolk" + +#~ 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 "%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 "%s: bad array subscript" +#~ msgstr "Os/2 Biskaart Skikking" + +#, fuzzy +#~ msgid "reading" +#~ msgstr "besig om te lees" + +#, 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 requires an argument" +#~ msgstr "%s: option `%s' requires an argument\n" + +#, 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" + +#, 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 "\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 "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/src/bin/bash/po/bash.pot b/src/bin/bash/po/bash.pot new file mode 100644 index 0000000000..3f78e05f07 --- /dev/null +++ b/src/bin/bash/po/bash.pot @@ -0,0 +1,3824 @@ +# 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: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: 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:50 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +msgid "unknown command error" +msgstr "" + +#: error.c:406 +msgid "bad command type" +msgstr "" + +#: error.c:407 +msgid "bad connector" +msgstr "" + +#: error.c:408 +msgid "bad jump" +msgstr "" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "" + +#: parse.y:5223 +msgid "syntax error" +msgstr "" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:262 +msgid "`)' expected" +msgstr "" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:806 +msgid "missing `]'" +msgstr "" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr "" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" diff --git a/src/bin/bash/po/bg.gmo b/src/bin/bash/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0d0cae363906e7fe60ea09e7ba51ae03eb66fe0a GIT binary patch literal 36341 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 G!~Y+oq8tkV literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/bg.po b/src/bin/bash/po/bg.po new file mode 100644 index 0000000000..d4e61c0282 --- /dev/null +++ b/src/bin/bash/po/bg.po @@ -0,0 +1,5489 @@ +# Bulgarian translation of bash po-file. +# Copyright (C) 2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Alexander Shopov , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2007-07-26 07:18+0300\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \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:50 +msgid "bad array subscript" +msgstr "неправилен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° маÑив" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: грешно име на дейÑтвие" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: не може да Ñе приÑвоÑва на нецифров индекÑ" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: не може да Ñе Ñъздаде: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"изпълнение на команда на Ð®Ð½Ð¸ÐºÑ Ð¾Ñ‚ bash: не може да Ñе открие подредбата на\n" +"функциите на клавишите за командата" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: първиÑÑ‚ непразен знак не е „\"“" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "в %2$s липÑва затварÑщ знак „%1$c“" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: разделителÑÑ‚ двоеточие липÑва" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: грешно име на подредбата на функциите на клавишите" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: не може да Ñе прочете: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не може да Ñе премахне приÑвоÑване" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: непознато име на функциÑ" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s не може да Ñе зададе на никой клавиш.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s може да Ñе извика чрез " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "валидно Ñамо за циклите Ñ â€žfor“, „while“ и „until“" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Връща контекÑта на текущото извикване на подпрограма." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "Променливата $HOME не зададена" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "Променливата $OLDPWD не е зададена" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: предупреждение: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: предупреждение: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "прекалено много аргументи" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: опциÑта изиÑква аргумент" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: изиÑква Ñе чиÑлов аргумент" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: не е открит" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: грешна опциÑ" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: грешно име на опциÑ" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: грешен идентификатор" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "неправилен номер на Ñигнал" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "грешно чиÑло" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "грешно чиÑло" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: грешно указване на Ñигнал" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: неправилен идентификатор на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ задача" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: променлива Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "аргументът" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: нÑма такава задача" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: нÑма управление на задачите" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "нÑма управление на задачите" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: ограничена обвивка" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "ограничена обвивка" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: не е команда вградена в обвивката" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "грешка при запиÑ: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: грешка при получаването на текущата директориÑ: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: нееднозначно указана задача" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: грешно име на дейÑтвие" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: не е указано допиÑване" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "предупреждение: опциÑта „-F“ може да не работи Ñпоред очакваниÑта ви" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "предупреждение: опциÑта „-C“ може да не работи Ñпоред очакваниÑта ви" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "може да Ñе използва Ñамо във функциÑ" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: променливите за маÑиви не могат да Ñе унищожават така" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "липÑва възможноÑÑ‚ за динамично зареждане" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "ÑподелениÑÑ‚ обект %s не може да бъде зареден: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "не може да Ñе открие %s в ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ %s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: не е зареден динамично" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: не може да Ñе изтрие: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: е директориÑ" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: не е обикновен файл" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: файлът е прекалено голÑм" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: не може да Ñе изпълни: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "това не е входна обвивка: използвайте „exit“" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Има Ñпрени задачи.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Има Ñпрени задачи.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "не е открита команда" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "указване на иÑториÑта" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: не може да Ñе отвори временен файл: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "хеширането е изключено" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: таблицата Ñ Ñ…ÐµÑˆÐ¾Ð²Ðµ е празна\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "поÑледна команда: %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Команди на обвивката, които напаÑват на ключовата дума „" +msgstr[1] "Команди на обвивката, които напаÑват на ключовата дума „" + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: не може да Ñе отвори: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "не може да Ñе ползва едновременно повече от една от опциите -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² иÑториÑта" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "не е позволена друга Ð¾Ð¿Ñ†Ð¸Ñ Ñ â€ž-x“" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: аргументите Ñ‚Ñ€Ñбва да Ñа идентификатори на процеÑи или задачи" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "ÐеизвеÑтна грешка" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "очаква Ñе израз" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: грешно указване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: грешен файлов деÑкриптор: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: грешна опциÑ" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: грешна опциÑ" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: грешно име на дейÑтвие" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: не е променлива за маÑив" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: липÑва форматиращ знак" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: грешен форматиращ знак" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: предупреждение: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "липÑва шеÑтнадеÑетична цифра за \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "нÑма друга директориÑ" + +#: builtins/pushd.def:462 +msgid "" +msgstr "«нÑма текуща директориÑ»" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "отрицателно препълване на Ñтека за рекурÑии" + +#: builtins/pushd.def:683 +#, fuzzy +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" +" ОпциÑта „-l“ кара командата „dirs“ да извежда пълните имена на " +"директориите,\n" +" а не Ñъкратените ÑпрÑмо домашната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð°. Това означава, че\n" +" „~/bin“ може да Ñе покаже като „/homes/pesho/bin“. ОпциÑта „-v“ води " +"до\n" +" отпечатване на Ñтека на директориите, като вÑеки елемент Ñе извежда на " +"нов\n" +" ред и Ñе предхожда от номера Ñи в Ñтека. ОпциÑта „-p“ Ñъщо води до " +"поредово\n" +" отпечатване, но без Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека. ОпциÑта „-c“ изчиÑтва Ñтека " +"на\n" +" директориите като изтрива вÑички елементи.\n" +" \n" +" +N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка показван от\n" +" командата „dirs“, когато е Ñтартирана без опции. Брои Ñе от 0.\n" +" \n" +" -N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка показван от\n" +" командата „dirs“, когато е Ñтартирана без опции. Брои Ñе от 0." + +#: builtins/pushd.def:705 +#, 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-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои\n" +" от лÑвата Ñтрана на ÑпиÑъка, показан от командата „dirs“\n" +" като Ñе почва от 0) да е най-отгоре.\n" +" \n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои\n" +" от дÑÑната Ñтрана на ÑпиÑъка, показан от командата „dirs“\n" +" като Ñе почва от 0) да е най-отгоре.\n" +" \n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸\n" +" добавÑнето на директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +"\n" +" dir Ð´Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸\n" +" новата текуща работна директориÑ.\n" +" \n" +" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins/pushd.def:730 +#, 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 премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка\n" +" показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“\n" +" премахва първата директориÑ, „popd +1“ - втората.\n" +"\n" +" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка\n" +" показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“\n" +" премахва поÑледната директориÑ, „popd -1“ - предпоÑледната.\n" +"\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето " +"на\n" +" директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +"\n" +" Стекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ Ñе визуализира Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: грешно указване на изтичането на времето" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "грешка при четене: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" +"„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ изпълнен в текущата обвивка Ñкрипт" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: не може да Ñе премахне" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: не е променлива за маÑив" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: не е функциÑ" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "брой на премеÑтваниÑта" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"не може едновременно да Ñе задават и да Ñе премахват опции на обвивката" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: грешно име на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° обвивката" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "изиÑква Ñе аргумент име на файл" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: файлът не е открит" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "не може да бъде временно ÑпрÑна" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "входната обвивка не може да бъде временно ÑпрÑна" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s е Ñиноним на „%s“\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s в ключова дума на обвивката\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s е функциÑ\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s е вградена команда в обвивката\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s е %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s е хеширан (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: неправилен аргумент за ограничение" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: неправилна команда" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ограничението не може да бъде получено: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ограничението не може да бъде променено: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "оÑмично чиÑло" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: неправилен оператор за опиÑателен режим" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: неправилен знак за опиÑателен режим" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "поÑледна команда: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "ПреуÑтановÑване…" + +#: error.c:405 +msgid "unknown command error" +msgstr "неизвеÑтна грешка в команда" + +#: error.c:406 +msgid "bad command type" +msgstr "неправилен вид команда" + +#: error.c:407 +msgid "bad connector" +msgstr "лоша връзка" + +#: error.c:408 +msgid "bad jump" +msgstr "неправилен преход" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: променлива без ÑтойноÑÑ‚" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" +"^Gвремето за изчакване на вход изтече: Ñледва автоматично излизане от " +"ÑиÑтемата\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "ÑтандартниÑÑ‚ вход от /dev/null не може да бъде пренаÑочен: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "грешка при запиÑ: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: командата не е открита" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: лош интерпретатор" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "файловиÑÑ‚ деÑкриптор %d не може да Ñе дублира като деÑкриптор %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "макÑималниÑÑ‚ брой нива за рекурÑÐ¸Ñ Ð² израз бÑха преминати" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "отрицателно препълване на Ñтека за рекурÑии" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "Ñинтактична грешка в израз" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "опит за приÑвоÑване на ÑтойноÑÑ‚ на нещо, което не е променлива" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "деление на 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "програмна грешка: неправилна лекÑема за приÑвоÑване на израз" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "за уÑловен израз Ñе изиÑква „:“" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "Ñтепента е по-малка от 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "очаква Ñе идентификатор Ñлед предварително увеличаване или намалÑване" + +#: expr.c:854 +msgid "missing `)'" +msgstr "липÑва „)“" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "Ñинтактична грешка: очаква Ñе оператор" + +#: expr.c:1177 +#, fuzzy +msgid "syntax error: invalid arithmetic operator" +msgstr "Ñинтактична грешка: изиÑква Ñе аритметичен израз" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "грешна аритметична оÑнова на бройна ÑиÑтема" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "ÑтойноÑтта е прекалено голÑма за оÑновата" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: очаква Ñе целочиÑлен израз" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: родителÑките директории не могат да бъдат доÑтъпени" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "не може да Ñе изчиÑти режимът без забавÑне на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"не може да Ñе задели нов файлов деÑкриптор за вход на bash от деÑкриптор %d" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"запазване на входа на bash: вече ÑъщеÑтвува буфер за Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор " +"%d" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "изтриване на ÑпрÑната задача %d в групата процеÑи %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" +"опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "изчакване: процеÑÑŠÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld не е дъщерен на тази обвивка" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "изчакване: липÑват данни за Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "изчакване на задача: задачата %d е ÑпрÑна" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: задачата е приключила" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: задача %d вече е във фонов режим" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: предупреждение: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "в тази обвивка нÑма управление на задачите" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "заделÑне на памет: грешно предположение: %s\n" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"заделÑне на памет: %s:%d: предположението е отпечатано\r\n" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "%s: непознат хоÑÑ‚" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" +"заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" +"изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "изчиÑтване на памет: извикано е Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блоков аргумент" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" +"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n" +"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" +"изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "презаделÑне: извикано е Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блок" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n" +"диапазон" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "презаделÑне: къÑовете на началната и крайната облаÑти Ñе различават" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" +"региÑтриране на презаделÑне: таблицата за заделÑниÑта е пълна Ñ FIND_ALLOC?\n" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "региÑтриране на презаделÑне: %p вече е в таблицата като заделен?\n" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "региÑтриране на Ñвободни: %p вече е в таблицата като Ñвободен?\n" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "не Ñе поддържат мрежови операции" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Имате поща в $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Имате нова поща в $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Пощата в %s вече е прочетена\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "Ñинтактична грешка: изиÑква Ñе аритметичен израз" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "Ñинтактична грешка: неочакван знак „;“" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Ñинтактична грешка: „((%s))“" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "вътрешен документ Ñ â€ž<<“: неправилен вид инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" +"неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше „]]“" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Ñинтактична грешка в уÑловен израз: неочаквана лекÑема „%s“" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "Ñинтактична грешка в уÑловен израз" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "неочаквана лекÑема „%s“, а Ñе очакваше знакът „)“" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "очакваше Ñе „)“" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "неочакван аргумент „%s“ за унарен уÑловен оператор" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "неочакван аргумент за унарен уÑловен оператор" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "неочаквана лекÑема „%s“, очакваше Ñе бинарен уÑловен оператор" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "очакваше Ñе бинарен уÑловен оператор" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "неочакван аргумент „%s“ за бинарен уÑловен оператор" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "неочакван аргумент за бинарен уÑловен оператор" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "неочаквана лекÑема „%c“ в уÑловна команда" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "неочаквана лекÑема „%s“ в уÑловна команда" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "неочаквана лекÑема %d в уÑловна команда" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Ñинтактична грешка в близоÑÑ‚ до неочакваната лекÑема „%s“" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "Ñинтактична грешка в близоÑÑ‚ до „%s“" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "Ñинтактична грешка: неочакван край на файл" + +#: parse.y:5223 +msgid "syntax error" +msgstr "Ñинтактична грешка" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Използвайте „%s“, за да излезете от обвивката.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "неочакван знак за край на файл „EOF“, очакваше Ñе знакът „)“" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "допиÑване: функциÑта „%s“ не е открита" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" +"вмъкване на завършване на команда: %s указване на команда, което е NULL" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "команда за печат: лош конектор „%d“" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "отпечатване: „%c“: неправилен форматиращ знак" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "файловиÑÑ‚ деÑкриптор е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: двуÑмиÑлено пренаÑочване" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: не може да Ñе презапише ÑъщеÑтвуващ файл" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: поради ограничение изходът не може да Ñе пренаÑочи" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "не може да Ñе Ñъздаде временен файл за вътрешен документ Ñ â€ž<<“: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port не Ñе поддържа, ако нÑма поддръжка на мрежа" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "грешка при пренаÑочване: файловиÑÑ‚ деÑкриптор не може да бъде дублиран" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "не е открита директориÑта /tmp. Създайте Ñ!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp Ñ‚Ñ€Ñбва да е директориÑ" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: неправилна опциÑ" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Ðе може да Ñе получи името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "Дълги опции на GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Опции на обвивката:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +" -irsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr " -%s или -o опциÑ\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° опциите на обвивката въведете „%s -c \"help set\"“.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c " +"help“.\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "За да докладвате грешки използвайте командата „bashbug“.\n" + +#: sig.c:583 +#, 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 "" + +#: 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 "Ñинтактична грешка" + +#: 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 +#, fuzzy +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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: на член от маÑив не може да Ñе приÑвои ÑпиÑък" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на процеÑи" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на процеÑи" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за четене" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за запиÑ" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"именуваниÑÑ‚ програмен канал %s не може да Ñе\n" +"дублира като Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на команди" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на команди" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "замеÑтване на команди: каналът не може да Ñе дублира като fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: аргументът е null или не е зададен" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: изразът от подниза е < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лошо замеÑтване" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: не може да Ñе задава по този начин" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "нÑма Ñъвпадение: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "очаква Ñе аргумент" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: очаква Ñе целочиÑлен израз" + +#: test.c:262 +msgid "`)' expected" +msgstr "очаква Ñе „)“" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "очаква Ñе „)“, а е получено %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: очаква Ñе унарен оператор" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: очаква Ñе бинарен оператор" + +#: test.c:806 +msgid "missing `]'" +msgstr "липÑва „]“" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "неправилен номер на Ñигнал" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" +"Ñтартиране на предÑтоÑщите капани: неправилна ÑтойноÑÑ‚ в trap_list[%d]: %p" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"Ñтартиране на предÑтоÑщите капани: обработката на Ñигнали е SIG_DFL.\n" +"%d (%s) е преизпратено на текущата обвивка" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "обработка на капани: неправилен Ñигнал %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "грешка при внаÑÑнето на дефинициÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "нивото на обвивката (%d) е прекалено голÑмо. Задава Ñе да е 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" +"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата " +"облаÑÑ‚\n" +"на видимоÑÑ‚" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" +"вÑички локални променливи: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚ на\n" +"видимоÑÑ‚" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "неправилен знак на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %d в низа за изнаÑÑне за %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "липÑва „=“ в низа за изнаÑÑне за %s" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи " +"на\n" +"обвивката (shell_variables) е нещо, което не е контекÑÑ‚ на функциÑ" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" +"изваждане на контекÑÑ‚ на променливи: липÑва контекÑÑ‚ за глобални променливи\n" +"(global_variables)" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"изваждане на облаÑÑ‚: поÑледниÑÑ‚ елемент Ñтруктурата за променливи на " +"обвивката\n" +"(shell_variables) не е временна облаÑÑ‚ в обкръжението" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "ÐвторÑки права (C) 2005 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"заделÑне на памет: %lu байта не могат да Ñе заделÑÑ‚ (заделени Ñа\n" +"%lu байта)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "заделÑне на памет: %lu байта не могат да Ñе заделÑÑ‚" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"презаделÑне на памет: %lu байта не могат да Ñе заделÑÑ‚ наново (заделени Ñа\n" +"%lu байта)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "презаделÑне на памет: %lu байта не могат да Ñе заделÑÑ‚" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"заделÑне на памет: %s:%d: %lu байта не могат да Ñе заделÑÑ‚ (заделени Ñа\n" +"%lu байта)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "заделÑне на памет: %s:%d: %lu байта не могат да Ñе заделÑÑ‚" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"презаделÑне на памет: %s:%d: %lu байта не могат да Ñе заделÑÑ‚ (заделени Ñа %" +"lu байта)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "презаделÑне на памет: %s:%d: %lu байта не могат да Ñе заделÑÑ‚" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "брой на премеÑтваниÑта" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "изиÑква Ñе аргумент име на файл" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "изиÑква Ñе аргумент име на файл" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "очаква Ñе израз" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "очаква Ñе израз" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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“ без аргументи или Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-p“ отпечатва ÑпиÑъка ÑÑŠÑ Ñинонимите " +"във\n" +" формат ИМЕ=СТОЙÐОСТ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´. Ð’ противен Ñлучай за вÑÑко " +"ИМЕ,\n" +" за което е зададена ÑтойноÑÑ‚, Ñе дефинира Ñиноним. Интервал в ÐºÑ€Ð°Ñ Ð½Ð°\n" +" ÑтойноÑÑ‚ предизвиква Ñинонимно замеÑтване на Ñледващата дума при\n" +" замеÑтването на Ñинонима. Командата „alias“ връща иÑтина, оÑвен в " +"Ñлучаите,\n" +" когато Ñе зададе ИМЕ, за което не е дефиниран Ñиноним." + +#: builtins.c:276 +#, 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" +" опциÑта „-a“ тогава Ñе премахват вÑички Ñиноними." + +#: builtins.c:289 +#, 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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +" ПриÑвоÑване на поÑледователноÑÑ‚ от клавиши на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¾Ñ‚ " +"readline\n" +" или задаване на променлива на readline. СинтакÑиÑÑŠÑ‚ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ без " +"опции\n" +" е еквивалентен на този във файла „~/.inputrc“, но Ñ‚Ñ€Ñбва да Ñе подаде " +"като\n" +" единÑтвен аргумент:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" bind приема Ñледните опции:\n" +" -m ПОДРЕДБРИзползване на ПОДРЕДБÐта като подредба на функциите " +"на\n" +" клавишите докато командата Ñе изпълнÑва. Валидни " +"Ñа\n" +" Ñледните имена: „emacs“, „emacs-standard“,\n" +" „emacs-meta“, „emacs-ctlx“, „vi“, „vi-move“,\n" +" „vi-command“ и „vi-insert“.\n" +" -l СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите.\n" +" -P СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта.\n" +" -p СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта във " +"вид,\n" +" който може да Ñе използва за вход.\n" +" -r КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ\n" +" Премахване на приÑвоената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚\n" +" КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" +" -x КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТÐ\n" +" Изпълнение на КОМÐÐДÐта_ÐÐ_ОБВИВКÐТРпри въвеждането " +"на\n" +" КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" +" -f ФÐЙЛ Прочитане на приÑвоÑваниÑта на клавиши от ФÐЙЛа.\n" +" -q ИМЕ_ÐÐ_ФУÐКЦИЯ\n" +" Проверка кои клавиши извикват функциÑта Ñ Ñ‚Ð¾Ð²Ð° име.\n" +" -u ИМЕ_ÐÐ_ФУÐКЦИЯ\n" +" Премахване на приÑвоÑваниÑта към вÑички клавиши на\n" +" функциÑта Ñ Ñ‚Ð¾Ð²Ð° име.\n" +" -V СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им.\n" +" -v СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им във " +"вид,\n" +" който може да Ñе използва за вход.\n" +" -S СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват\n" +" макроÑи и ÑтойноÑтите им.\n" +" -s СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват\n" +" макроÑи и ÑтойноÑтите им във вид, който може да " +"Ñе\n" +" използва за вход." + +#: builtins.c:326 +#, fuzzy +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, Ñе продължава от N-Ñ‚Ð¸Ñ Ð¾Ð±Ñ…Ð²Ð°Ñ‰Ð°Ñ‰ цикъл." + +#: builtins.c:338 +#, 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 "" +" Продължение ÑÑŠÑ Ñледващата Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ цикъл ползващ FOR, WHILE или UNTIL.\n" +" Ðко е указан N, Ñе продължава от N-Ñ‚Ð¸Ñ Ð¾Ð±Ñ…Ð²Ð°Ñ‰Ð°Ñ‰ цикъл." + +#: builtins.c:350 +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:365 +#, 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 "" +" Връща контекÑта на текущото извикване на подпрограма.\n" +" \n" +" Без ИЗРÐЗ връща „$line $filename“. С ИЗРÐЗ връща\n" +" „$line $subroutine $filename“. Допълнителната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да Ñе\n" +" използва за получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на Ñтека.\n" +" \n" +" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе " +"изведе\n" +" информациÑ. Ðай-горната рамка е 0." + +#: builtins.c:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +" СмÑна на текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð´Ð° е ДИРЕКТОРИЯ. Променливата $HOME е\n" +" Ñтандартната директориÑ. Променливата $CDPATH Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿ÑŠÑ‚Ñ Ð·Ð° Ñ‚ÑŠÑ€Ñене\n" +" на директории, които могат да Ñъдържат ДИРЕКТОРИЯта. Директориите в " +"$CDPATH\n" +" Ñа разделени Ñ â€ž:“. ЛипÑващо име на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° текущата\n" +" директориÑ, Ñ‚.е. „.“. Ðко името на ДИРЕКТОРИЯта започва Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° " +"черта\n" +" „/“, $CDPATH не Ñе ползва. Ðко директориÑта не е открита, но е " +"зададена\n" +" опциÑта на обвивката „cdable_vars“, то думата Ñе пробва като име на\n" +" променлива. Ðко променливата има ÑтойноÑÑ‚, то директориÑта Ñе ÑменÑ\n" +" към ÑтойноÑтта на таи променлива. ОпциÑта „-P“ налага използването на\n" +" фактичеÑката подредба на директориите, вмеÑто да Ñе Ñледват Ñимволните\n" +" връзки. ОпциÑта „-L“ налага Ñледването на Ñимволните връзки." + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr " Без ефект - командата нищо не прави. Връща Ñе изходен код 0." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +#, 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +" ОбÑвÑване на променливи и/или задаване на техните атрибути. Ðко не Ñа " +"зададени\n" +" ИМЕна, то Ñе показват ÑтойноÑтите на променливите. ОпциÑта „-p“ " +"показва\n" +" ÑтойноÑтта и атрибутите за вÑÑко ИМЕ.\n" +" \n" +" Опциите Ñа:\n" +" \n" +" -a да Ñе Ñъздадат маÑиви Ñ Ñ‚ÐµÐ·Ð¸ ИМЕна (ако това Ñе поддържа)\n" +" -f да Ñе избира Ñамо измежду имената на функциите\n" +" -F да Ñе изведат имената на функциите (Ñ Ð½Ð¾Ð¼ÐµÑ€ на реда и име на " +"файла\n" +" Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ при изчиÑтване на грешки) без дефинициите.\n" +" -i на ИМЕто Ñе дава атрибут „цÑло чиÑло“\n" +" -r маха Ñе възможноÑтта за промÑна на ИМЕната\n" +" -t на ИМЕто Ñе дава атрибут „проÑледÑване“\n" +" -x ИМЕто да бъде изнаÑÑно\n" +"\n" +" При променливите Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ за цÑло чиÑло Ñе извършва аритметично " +"замеÑтване\n" +" (вижте командата „let“) при първоначално приÑвоÑване.\n" +" \n" +" При извеждането на ÑтойноÑтите на променливите „-f“ извежда имената и\n" +" дефинициите на функциите. ОпциÑта „-F“ ограничава изведената " +"информациÑ\n" +" до имената.\n" +"\n" +" Използването на „+“ вмеÑто „-“ премахва атрибута. При използването във\n" +" Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð˜ÐœÐ•Ð½Ð°Ñ‚Ð° Ñтават локални, както при използването на командата " +"„local“." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +#, fuzzy +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +" Извеждане на ÐРГУМЕÐТите. Когато е зададена опциÑта „-n“, не Ñе извежда " +"знак\n" +" за нов ред. Ðко е зададена опциÑта „-e“, Ñе включва интерпретирането " +"на\n" +" Ñледните знаци екранирани Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð° наклонена черта - „\\“:\n" +" \\a ÑиÑтемен звънец\n" +" \\b триене назад\n" +" \\c пропуÑкане на знака за нов ред\n" +" \\E знак за екраниране\n" +" \\f знак „Завършване на формулÑра“ (form feed)\n" +" \\n знак за нов ред\n" +" \\r знак „Връщане на каретката“ (carriage return)\n" +" \\t хоризонтална табулациÑ\n" +" \\v вертикална табулациÑ\n" +" \\\\ обратно наклонена черта\n" +" \\ÐМР знакът Ñ ÐºÐ¾Ð´ в ASCII - ÐоМеР (в оÑмична бройна ÑиÑтема).\n" +"\n" +" Можете изрично да Ñпрете интерпретирането на горните знаци Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-" +"E“." + +#: builtins.c:571 +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:586 +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:614 +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:626 +#, 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 ($0 - $9), but if\n" +" more arguments are given, 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 "" +" 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“ Ñлага „:“ в $NAME, а в $OPTARG - ÑÑ€ÐµÑ‰Ð½Ð°Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº за опциÑ. " +"Ðко\n" +" „getopts“ не е в режим на тихо докладване, в $NAME Ñе Ñлага „?“, $OPTARG " +"Ñе\n" +" премахва и Ñе изпиÑва диагноÑтично Ñъобщение.\n" +" \n" +" Ðко променливата на обвивката $OPTERR е ÑÑŠÑ ÑтойноÑÑ‚ 0, „getopts“ " +"изключва\n" +" извеждането на диагноÑтични ÑъобщениÑ, дори първиÑÑ‚ знак в $OPTSTRING да " +"не\n" +" е двоеточие. По подразбиране $OPTERR е ÑÑŠÑ ÑтойноÑÑ‚ 1.\n" +" \n" +" „getopts“ по принцип анализира позиционните аргументи ($0 - $9), но ако " +"Ñа\n" +" дадени повече аргументи, те биват анализирани вмеÑто това." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "" +" Изход от обвивката Ñ ÐºÐ¾Ð´ N. Ðко N е изпуÑнат, то изходниÑÑ‚ код е този на\n" +" поÑледната изпълнена команда." + +#: builtins.c:698 +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:708 +#, fuzzy +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 "" +" „fc“ Ñе използва, за изброÑването или редактирането и повторното изпълнение " +"на\n" +" команди от ÑпиÑъка на иÑториÑта. ПЪРВИ и ПОСЛЕДЕРÑа номера, които " +"могат да\n" +" указват допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½. Ðко е зададен Ñамо ПЪРВИÑÑ‚ аргумент, той\n" +" задава низ, който е началото на команда.\n" +" \n" +" -e РЕДÐКТОР показва редактора, който да Ñе използва. Стандартно " +"е\n" +" $FCEDIT, Ñлед това Ñе проверÑва $EDITOR и Ð½Ð°ÐºÑ€Ð°Ñ " +"„vi“.\n" +" -l означава редовете да Ñе покажат вмеÑто редактират.\n" +" -n означава номерата на редовете да не Ñе показват.\n" +" -r означава обратна подредба (отпред да е най-новиÑÑ‚ " +"ред).\n" +" \n" +" При варианта „fc -s [ШÐБЛ=ЗÐМЕСТ …] [КОМÐÐДÐ]“ командата Ñе изпълнÑва, " +"като\n" +" вÑÑка поÑва на ШÐБЛона Ñе Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑŠÑ Ð—ÐМЕСТителÑ.\n" +" \n" +" Удобен за използване Ñиноним е „r='fc -s'“. По такъв начин, ако " +"напишете\n" +" „r cc“, ще Ñе изпълни поÑледната команда, коÑто започва Ñ â€žcc“, а " +"когато\n" +" Ñе въведе Ñамо „-r“, ще Ñе изпълни поÑледната команда." + +#: builtins.c:738 +#, fuzzy +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" +" аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред обвивката." + +#: builtins.c:753 +#, fuzzy +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" +" Ðко липÑва аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред обвивката." + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +#, 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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 на брой реда. ОпциÑта „-c“ предизвиква изчиÑтването на\n" +" ÑпиÑъка, като Ñе изтриват вÑички елементи от него. ОпциÑта „-d“ " +"изтрива\n" +" елемента в иÑториÑта намиращ Ñе поÑочената ПОЗИЦИЯ. ОпциÑта „-w“ " +"запиÑва\n" +" текущата иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÑŠÐ² файла за иÑториÑта. ОпциÑта „-r“ означава ÑъщиÑÑ‚ " +"файл\n" +" да Ñе прочете, а Ñъдържанието му да Ñе добави към иÑториÑта. ОпциÑта „-" +"a“\n" +" Ð´Ð¾Ð±Ð°Ð²Ñ Ð¸ÑториÑта от текущата ÑеÑÐ¸Ñ ÐºÑŠÐ¼ файла Ñ Ð¸ÑториÑта. ОпциÑта „-n“\n" +" предизвиква вÑички редове от файла Ñ Ð¸ÑториÑта, които вÑе още не Ñа\n" +" прочетени от файла Ñ Ð¸ÑториÑта, да Ñе прочетат и добавÑÑ‚ към текущата\n" +" иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° командите.\n" +" \n" +" Ðко аргументът ИМЕ_ÐÐ_ФÐЙЛ е зададен, той Ñе използва като файл за\n" +" иÑториÑта. Ðко той липÑва, Ñе използва файлът Ñочен в променливата на\n" +" Ñредата $HISTFILE. Ð’ противен Ñлучай Ñе ползва „~/.bash_history“. Ðко е\n" +" зададена опциÑта „-s“, аргументите, които не Ñа опции, Ñе добавÑÑ‚ като " +"един\n" +" елемент към файла Ñ Ð¸ÑториÑта. ОпциÑта „-p“ означава да Ñе извърши\n" +" иÑторичеÑко замеÑтване за вÑеки ÐРГУМЕÐТ, а резултатът да Ñе изведе, " +"без\n" +" нищо да Ñе запиÑва в иÑториÑта на командите.\n" +" \n" +" Ðко променливата $HISTTIMEFORMAT е зададена и не е „null“, ÑтойноÑтта Ñ " +"Ñе\n" +" използва като Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð· за функциÑта „strftime“, за да Ñе " +"отбелÑзва\n" +" времето Ñвързано Ñ Ð²Ñеки елемент от иÑториÑта. Ð’ противен Ñлучай " +"времето не\n" +" Ñе запиÑва." + +#: builtins.c:852 +#, 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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 "" +" Извежда ÑпиÑък Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ‚Ðµ задачи. ОпциÑта „-l“ включва и идентификатора " +"на\n" +" процеÑите в добавка към Ñтандартната информациÑ. ОпциÑта „-p“ извежда " +"Ñамо\n" +" идентификаторите на процеÑите. Ðко е зададена опциÑта „-n“ Ñе извеждат " +"Ñамо\n" +" процеÑите Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÐµÐ½Ð¾ ÑÑŠÑтоÑние от поÑледното извеждане на тази " +"информациÑ.\n" +" ЗÐДÐЧÐта ограничава информациÑта до Ñебе Ñи. Опциите „-r“ и „-s“\n" +" ограничават Ñъответно изхода Ñамо до работещите и Ñпрени задачи. Без " +"опции\n" +" Ñе отпечатва ÑÑŠÑтоÑнието на вÑички активни задачи. Ðко е зададена " +"опциÑта\n" +" „-x“, КОМÐÐДÐта Ñе изпълнÑва, Ñлед като вÑички ЗÐДÐЧи, които Ñе поÑвÑват " +"като\n" +" аргументи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° на водача на групата процеÑи." + +#: builtins.c:879 +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" +" \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:898 +#, 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" +" \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 "" +" Изпращане на Ñигнала SIGSPEC на процеÑа Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ ИдП (или ЗÐДÐЧÐ).\n" +" Ðко Ñигналът SIGSPEC не ÑъщеÑтвува, Ñе използва SIGTERM.\n" +" ОпциÑта „-l“ изброÑва имената на Ñигналите. Ðко към Ð½ÐµÑ Ñа добавени\n" +" аргументи, те Ñе интерпретират като номера на Ñигналите чиито имена\n" +" да Ñе изброÑÑ‚. „kill“ е команда вградена в обвивката поради две\n" +" причини: позволÑва да Ñе използват и идентификатори на задачи оÑвен\n" +" идентификатори на процеÑи, а и ако Ñте пуÑнали макÑимално разрешениÑ\n" +" за Ð²Ð°Ñ Ð±Ñ€Ð¾Ð¹ процеÑи, нÑма да ви Ñе налага да пуÑнете още един процеÑ,\n" +" за да убиете друг." + +#: builtins.c:921 +#, 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 "" +" Ð’Ñеки аргумент е аритметичен израз, който Ñе бъде изчиÑлен. ИзчиÑлениÑта\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" +" expr ? expr : expr\n" +" уÑловен оператор\n" +" =, *=, /=, %=,\n" +" +=, -=, <<=, >>=,\n" +" &=, ^=, |= приÑвоÑване\n" +" \n" +" Разрешено е ползването на променливи на обвивката като операнди.\n" +" Името на променлива Ñе замеÑтва Ñ Ð½ÐµÐ¹Ð½Ð°Ñ‚Ð° ÑтойноÑÑ‚ (коÑто Ñе\n" +" преобразува до цÑло чиÑло Ñ Ð¿Ð¾ÑтоÑнна широчина) в израза. Ðе\n" +" е необходимо за променливата да е Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ за целочиÑленоÑÑ‚, за\n" +" да Ñе използва в израз.\n" +" \n" +" Операторите Ñе изчиÑлÑват по приоритет. Подизразите в Ñкоби Ñе\n" +" изчиÑлÑват първи и могат да променÑÑ‚ приоритета.\n" +" \n" +" Ðко поÑледниÑÑ‚ ÐРГУМЕÐТ Ñе изчиÑлÑва като 0, „let“ връща 1. Ð’\n" +" противен Ñлучай - връща 0." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +" От ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ или от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор ФД, ако е използвана опциÑта " +"„-u“,\n" +" Ñе прочита един ред и първата дума Ñе приÑвоÑва на първото ИМЕ, втората " +"дума\n" +" на второто ИМЕ и Ñ‚.н., а на поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите " +"думи.\n" +" Като разделители на думи Ñе използват Ñамо знаците указани в $IFS. Ðко " +"не Ñа\n" +" дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата $REPLY. Когато " +"е\n" +" използвана опциÑта „-r“, входът не Ñе обработва и замеÑтването на\n" +" екранираните Ñ â€ž\\“ знаци Ñе изключва. ОпциÑта „-d“ кара „read“ да\n" +" продължи до прочитането на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº, който приÑÑŠÑтва в променливата\n" +" $DELIM, а не до минаването на нов ред. Ðко е зададена опциÑта „-p“, Ñе\n" +" извежда низът ПОДСКÐЗКРбез минаване на нов ред, преди да Ñе четат знаци " +"на\n" +" входа. Когато е зададена опциÑта „-a“, прочетените уми Ñе приÑвоÑват\n" +" поÑледователно на елементите на ÐœÐСИВа, като индекÑÑŠÑ‚ му започва от 0. " +"Ðко\n" +" приÑÑŠÑтва опциÑта „-e“, а обвивката е интерактивна, за четене на реда " +"Ñе\n" +" използва „readline“. Когато опциÑта „-n“ има аргумент БРОЙ_ЗÐÐЦИ, то " +"„read“\n" +" Ñвършва Ñлед прочитането на този БРОЙ_ЗÐÐЦИ. С опциÑта „-s“ входът от\n" +" терминал не Ñе отпечатва на екрана.\n" +" \n" +" ОпциÑта „-t“ задава ИÐТЕРВÐЛ, в който Ñ‚Ñ€Ñбва да Ñе въведе цÑл ред. Ð’\n" +" противен Ñлучай „read“ завършва Ñ Ð³Ñ€ÐµÑˆÐºÐ°. Ðко е зададена, ÑтойноÑтта " +"на\n" +" променливата $TMOUT обозначава времето, за което Ñ‚Ñ€Ñбва да Ñе въведе " +"редът.\n" +" ИзходниÑÑ‚ код е 0, оÑвен ако не Ñе Ñрещне знак за край на файл „EOF“, " +"мине\n" +" ИÐТЕРВÐЛът за въвеждане или е зададен неправилен файлов деÑкриптор като\n" +" аргумент на „-u“." + +#: builtins.c:1006 +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:1019 +#, 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 follow 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" +" 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 "" +" -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" +" 1003.2\n" +" privileged Ñъщото като „-p“\n" +" verbose Ñъщото като „-v“\n" +" vi използване на Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране подобен на „vi“\n" +" xtrace Ñъщото като „-x“\n" +" -p ОпциÑта включена. когато реалниÑÑ‚ и ефективниÑÑ‚ идентификатори " +"процеÑи\n" +" не Ñъвпадат. Изключва обработката на файла $ENV и внаÑÑнето " +"на\n" +" функции на обвивката. Изключването на тази Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ð¾Ð´Ð¸ до " +"това\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“ да Ñе наÑледÑва от функциите на обвивката.\n" +" - ОÑтаващите аргументи да Ñе тълкуват като позиционни. Опциите „-x“ " +"и\n" +" Ñа изключени.\n" +" \n" +" Използването на „+“ вмеÑто „-“ изключва опциите. Тези опции могат да " +"Ñе\n" +" използват и при Ñтартирането на обвивката. Текущото им ÑÑŠÑтоÑние Ñе " +"намира\n" +" в „$-“. ОÑтаналите n на брой ÐРГументи Ñа позиционни и Ñе приÑвоÑват\n" +" Ñъответно на $1, $2,… $n. Ðко не Ñа зададени ÐРГументи, Ñе извеждат\n" +" вÑички променливи на Ñредата." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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 "" +" Изчитане и изпълнение на командите от ФÐЙЛа и изход. Директориите опиÑани " +"в\n" +" променливата $PATH Ñе използват за изпълнението на командите от ФÐЙЛа. " +"Ðко\n" +" Ñа зададени ÐРГУМЕÐТИ, те Ñе превръщат в позиционни аргументи при\n" +" изпълнението на ФÐЙЛа." + +#: builtins.c:1204 +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:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +" Изход Ñ ÐºÐ¾Ð´ 0 (иÑтина) или 1 (лъжа) в завиÑимоÑÑ‚ от ÑтойноÑтта на ИЗРÐЗа.\n" +" Изразите могат да бъдат унарни или бинарни. Унарните най-чеÑто Ñе " +"използват\n" +" за проверка на ÑÑŠÑтоÑнието на файл. ОÑвен Ñ‚ÑÑ… има и оператори за " +"чиÑлови\n" +" ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ низови оператори.\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" +" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗът е лъжа.\n" +" ИЗРÐЗ_1 -a ИЗРÐЗ_2 ИÑтина, ако и двата ИЗРÐЗа Ñа иÑтина.\n" +" ИЗРÐЗ_1 -o ИЗРÐЗ_2 ИÑтина, ако поне един от ИЗРÐЗите е иÑтина.\n" +" \n" +" ÐРГ_1 ОПЕРÐТОР ÐРГ_2 Ðритметични теÑтове. Те връщат иÑтина, ако " +"Ñе\n" +" изпълнÑва математичеÑкото уÑловие на " +"ОПЕРÐТОРа,\n" +" който е един от Ñледните (значението е в " +"Ñкоби):\n" +" „-eq“ (=), „-ne“ (!=), „-lt“ (<),\n" +" „-le“ (<=), „-gt“ (>) , „-ge“ (>=)." + +#: builtins.c:1296 +#, fuzzy +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 "" +" Това е Ñиноним на вградената команда „test“, но поÑледниÑÑ‚ аргумент Ñ‚Ñ€Ñбва\n" +" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата Ñкоба " +"„[“." + +#: builtins.c:1305 +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:1317 +#, 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.\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" +" УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „EXIT (0)“, то командата ÐРГУМЕÐТ Ñе изпълнÑва от\n" +" обвивката при изход. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „DEBUG“, ÐРГУМЕÐТът Ñе\n" +" изпълнÑва Ñлед вÑÑка проÑта команда. Ðко е дадена опциÑта „-p“, то\n" +" Ñе извеждат командите Ñвързани Ñ Ð²Ñеки УКÐЗÐÐ_СИГÐÐЛ. Ð’Ñеки " +"УКÐЗÐÐ_СИГÐÐЛ\n" +" е или име на Ñигнал от файла „signal.h“ или номер на Ñигнал. ÐÑма " +"разлика\n" +" между главни и малки букви в имената на Ñигнали, а предÑтавката „SIG“ не " +"е\n" +" задължителна. „trap -l“ отпечатва ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на Ñигналите и\n" +" ÑъответÑтващите им номера. Забележете, че Ñигнал може да бъде изпратен " +"на\n" +" обвивката Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „kill -signal $$“." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +#, 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" +" -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" +" \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 "" +" ulimit оÑъщеÑтвÑва контрол върху реÑурÑите, които Ñа доÑтъпни на процеÑите\n" +" Ñтартирани през обвивката върху ÑиÑтемите, които поддържат такова\n" +" управление. Ðко Ñа зададени опции, те означават Ñледното:\n" +" \n" +" -S използване на „мекото“ ограничение на реÑурÑ\n" +" -H използване на „твърдото“ ограничение на реÑурÑ\n" +" -a извеждат Ñе вÑички текущи ограничениÑ\n" +" -c макÑималниÑÑ‚ размер на Ñъздадените файлове ÑÑŠÑ Ñъдържание на\n" +" паметта (core)\n" +" -d макÑималниÑÑ‚ размер на Ñегмента на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° данни\n" +" -f макÑималниÑÑ‚ размер на файловете Ñъздадени от обвивката\n" +" -i макÑималниÑÑ‚ брой на изчакващите Ñигнали\n" +" -l макÑималниÑÑ‚ размер памет, коÑто Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ да заключи\n" +" -m макÑималниÑÑ‚ поÑтоÑнно зареден в паметта Ñегмент\n" +" -n макÑималниÑÑ‚ брой деÑкриптори на отворени файлове\n" +" -p размер на буфера за конвейери\n" +" -q макÑималниÑÑ‚ брой байтове в опашките за ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ POSIX\n" +" -s макÑималниÑÑ‚ размер на Ñтека\n" +" -t макÑималното процеÑорно време в Ñекунди\n" +" -u макÑималниÑÑ‚ брой потребителÑки процеÑи\n" +" -v размерът на виртуалната памет\n" +" -x макÑималниÑÑ‚ брой Ð·Ð°ÐºÐ»ÑŽÑ‡Ð²Ð°Ð½Ð¸Ñ Ð½Ð° файлове\n" +" \n" +" Ðко е зададено ОГРÐÐИЧЕÐИЕ, то това е новата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ " +"реÑурÑ.\n" +" Специалните ÑтойноÑти „soft“, „hard“ и „unlimited“ означават текущите " +"меко,\n" +" твърдо и никакво ограничение Ñъответно. Ð’ противен Ñлучай Ñе извежда\n" +" текущата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ. СтойноÑтите Ñа в блокове от по " +"1024\n" +" байта, Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на:\n" +" - опциÑта „-p“, при коÑто блоковете Ñа от по 512 байта;\n" +" - опциÑта „-t“, при коÑто ÑтойноÑтта е в Ñекунди;\n" +" - опциÑта „-u“, при коÑто ÑтойноÑтта е точниÑÑ‚ брой процеÑи." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +" Изчакване на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸ докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не е " +"зададен N,\n" +" вÑички текущо активни дъщерни процеÑи Ñе изчакват и изходниÑÑ‚ код е 0. " +"N\n" +" може да е идентификатор на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ задача. Ðко е задача, изчакват " +"Ñе\n" +" вÑички процеÑи в Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» на задачата." + +#: builtins.c:1478 +#, fuzzy +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 "" +" Цикълът „for“ изпълнÑва поÑледователноÑÑ‚ от команди за вÑеки член в ÑпиÑък " +"от\n" +" елементи. Ðко блокът „в ДУМИ …“ не приÑÑŠÑтва, използва Ñе „in \"$@\"“. " +"За\n" +" вÑеки елемент в ДУМИте, ИМЕто Ñе задава да е елементът и Ñе изпълнÑват\n" +" КОМÐÐДИте." + +#: builtins.c:1492 +#, fuzzy +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" +" (( ИЗРÐЗ_1 ))\n" +" while (( ИЗРÐЗ_2 )); do\n" +" КОМÐÐДИ\n" +" (( EXP_3 ))\n" +" done\n" +" ИЗРÐЗ_1, ИЗРÐЗ_2, и ИЗРÐЗ_3 Ñа аритметични изрази. Ð’Ñеки изпуÑнат израз " +"Ñе\n" +" изчиÑлÑва да е 1." + +#: builtins.c:1510 +#, fuzzy +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" +" грешка, като вÑÑка от Ñ‚ÑÑ… Ñе предшеÑтва от номер. Ðко клаузата „in " +"ДУМИ“\n" +" липÑва, използва Ñе „in \"$@\"“. Ð’ такива Ñлуча Ñе отпечатва " +"подÑказката PS3\n" +" и от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ Ñе прочита ред. Ðко редът Ñе ÑÑŠÑтои от номера, " +"който\n" +" ÑъответÑтва на нÑÐºÐ¾Ñ Ð¾Ñ‚ показаните думи, ИМЕто Ñе задава да е тази " +"дума.\n" +" Ðко редът е празен, отново Ñе отпечатват ДУМИте и подÑказката. Ðко Ñе\n" +" прочете „EOF“, командата завършва. Ð’ÑÑка друга ÑтойноÑÑ‚ приÑвоÑва " +"„null“ на\n" +" ИМЕ. ПрочетениÑÑ‚ ред „null“ Ñе запазва в променливата REPLY. КОМÐÐДИте " +"Ñе\n" +" изпълнÑват Ñлед вÑеки избор до изпълнÑването на команда за прекъÑване\n" +" (break)." + +#: builtins.c:1531 +#, fuzzy +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" +" „-p“ води до извеждане на ÑтатиÑтиката за времето в различен формат - " +"Ñпоред\n" +" ÑтойноÑтта на променливата на Ñредата $TIMEFORMAT." + +#: builtins.c:1548 +#, fuzzy +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" +" Шаблоните Ñе разделÑÑ‚ ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „|“." + +#: builtins.c:1560 +#, fuzzy +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 "" +" Първо Ñе изпълнÑват командите в блока „if КОМÐÐДИ“. Ðко изходниÑÑ‚ код е 0, " +"то\n" +" Ñе изпълнÑва блокът „then КОМÐÐДИ“. Ð’ противен Ñлучай поÑледователно " +"Ñе\n" +" изпълнÑва вÑеки блок „elif КОМÐÐДИ“ - ако изходниÑÑ‚ код е 0, то Ñе " +"изпълнÑва\n" +" ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº „then КОМÐÐДИ“, Ñлед което завършва изпълнението на " +"целиÑ\n" +" блок „if“. Ðко изходниÑÑ‚ код на никой от блоковете „if“ и „elif“ не е " +"бил 0,\n" +" изпълнÑва Ñе блока „else КОМÐÐДИ“, Ñтига такъв да приÑÑŠÑтва. ИзходниÑÑ‚ " +"код\n" +" от цÑлата конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ðµ този на поÑледната изпълнена команда или е 0, " +"ако\n" +" никое теÑтово уÑловие, не Ñе е оценило като иÑтина." + +#: builtins.c:1577 +#, 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 "" +" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока " +"„while“\n" +" е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който е 0." + +#: builtins.c:1589 +#, 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 "" +" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока " +"„until“\n" +" е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който не е 0." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "" +" ИзпълнÑване на цÑл набор от команди в група. Това е един от начините да " +"Ñе\n" +" цÑл набор от команди." + +#: builtins.c:1641 +#, fuzzy +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 "" +" Еквивалентно на аргумента ЗÐДÐЧРна командата „fg“. ВъзобновÑва ÑпрÑна\n" +" задача или такава на заден фон. ЗÐДÐЧÐта може да указва или име, или\n" +" номер на задача. Ðко Ñлед ЗÐДÐЧÐта Ñе въведе знакът „&“, задачата\n" +" Ñе изпълнÑва във фонов режим, вÑе едно е била подадена като аргумент\n" +" на командата „bg“." + +#: builtins.c:1656 +#, 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" +" Еквивалентно на „let ИЗРÐЗ“." + +#: builtins.c:1668 +#, fuzzy +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 "" +" Връща ÑÑŠÑтоÑние 0 или 1 в завиÑимоÑÑ‚ от оценката на уÑÐ»Ð¾Ð²Ð½Ð¸Ñ Ð˜Ð—Ð ÐЗ. " +"Изразите\n" +" Ñа ÑÑŠÑтавени от Ñъщите примитиви, както вградената команда „test“ и " +"могат да\n" +" Ñе Ñъчетават чрез Ñледните оператори:\n" +" \n" +" ( ИЗРÐЗ ) Връща ÑтойноÑтта на ИЗРÐЗа\n" +" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗ Ñе Ð¾Ñ†ÐµÐ½Ñ Ð½Ð° лъжа, в оÑтаналите " +"Ñлучаи\n" +" е лъжа\n" +" ИЗРÐЗ1 && ИЗРÐЗ2 ИÑтина, ако едновременно ИЗРÐЗ1 и ИЗРÐЗ2 Ñа " +"иÑтина,\n" +" в оÑтаналите Ñлучаи е лъжа.\n" +" ИЗРÐЗ1 || ИЗРÐЗ2 ИÑтина, ако поне единиÑÑ‚ от ИЗРÐЗ1 и ИЗРÐЗ2 е " +"иÑтина,\n" +" в оÑтаналите Ñлучаи е лъжа.\n" +" \n" +" Когато Ñе използват операторите „==“ и „!=“, низът от дÑÑната Ñтрана на\n" +" оператора Ñе използва като шаблон и Ñе извършва напаÑване. Операторите\n" +" „&&“ и „||“ не оценÑÑ‚ ИЗРÐЗ2, ако ИЗРÐЗ1 е доÑтатъчен за определÑне на\n" +" ÑтойноÑтта на израза." + +#: builtins.c:1694 +#, fuzzy +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 "" +" BASHVERSION Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта на bash.\n" +" CDPATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които да Ñе\n" +" Ñ‚ÑŠÑ€ÑÑÑ‚ като аргументи за командата „cd“.\n" +" GLOBIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ на файлови имена, разделени Ñ " +"двоеточие,\n" +" които да Ñе игнорират от замеÑтването на пътÑ.\n" +" HISTFILE Името на файла, в който Ñе ÑъхранÑва иÑториÑта на " +"командите.\n" +" HISTFILESIZE МакÑималниÑÑ‚ брой редове, които горниÑÑ‚ файл може да\n" +" Ñъдържа.\n" +" HISTSIZE МакÑималниÑÑ‚ брой редове, които една работеща обвивка " +"може да\n" +" доÑтъпи.\n" +" HOME ПълниÑÑ‚ път до домашната ви директориÑ.\n" +" HOSTNAME Името на текущата машина.\n" +" HOSTTYPE Видът на процеÑора, под който работи текущата обвивка.\n" +" IGNOREEOF УправлÑва дейÑтвието на обвивката при Ñрещането на " +"единичен\n" +" знак за край на файл „EOF“. Ðко променливата е " +"зададена,\n" +" Ñ‚Ñ ÑƒÐºÐ°Ð·Ð²Ð° Ð±Ñ€Ð¾Ñ Ð½Ð° знаците „EOF“, който могат да Ñе\n" +" Ñрещнат ÑамоÑтоÑтелно на един ред, преди обвивката " +"да\n" +" завърши работа и излезе (Ñтандартно е 10). Когато\n" +" променливата не е зададена, един „EOF“ означава край " +"на\n" +" входÑщите данни.\n" +" MACHTYPE Ðиз, който опиÑва текущата ÑиÑтема, на коÑто работи " +"bash.\n" +" MAILCHECK Колко чеÑто, в Ñекунди, да проверÑва bash за нови " +"пиÑма.\n" +" MAILPATH СпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ, които bash проверÑва за нови пиÑма.\n" +" OSTYPE ВерÑиÑта на ЮникÑ, на коÑто работи bash.\n" +" PATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸, които да Ñе претърÑват за команди.\n" +" PROMPTCOMMAND Команда, коÑто да Ñе изпълнÑва преди отпечатването на\n" +" оÑновната подÑказка на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´.\n" +" PS1 Ðиз за оÑновната подÑказка.\n" +" PS2 Ðиз за втората подÑказка.\n" +" PWD ПълниÑÑ‚ път и име на текущата директориÑ.\n" +" SHELLOPTS СпиÑък Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ опции на обвивката, разделени Ñ\n" +" двоеточие.\n" +" TERM Името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð²Ð¸Ð´ терминал.\n" +" TIMEFORMAT ИзходниÑÑ‚ формат за ÑтатиÑтиката за времето за " +"изпълнение\n" +" на команда, който Ñе използва от запазената дума " +"„time“.\n" +" autoresume СтойноÑÑ‚, коÑто не е „null“, означава, че командна дума, " +"коÑто\n" +" Ñе поÑвÑва ÑамоÑтоÑтелно на ред, първо Ñе проверÑва " +"в\n" +" ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ Ñпрените задачи. Ðко бъде открита " +"там,\n" +" задачата Ñе пуÑка и Ñе Ñлага на преден план. " +"СтойноÑÑ‚\n" +" „exact“ (Ñтрого Ñъвпадение) означава, че командната\n" +" дума, Ñ‚Ñ€Ñбва точно да Ñъвпада Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на команда в\n" +" ÑпиÑъка ÑÑŠÑ Ñпрени задачи. СтойноÑÑ‚ „substring“\n" +" (Ñъвпадение на подниз) означава, че командната дума\n" +" Ñ‚Ñ€Ñбва да е подниз на задачата. Ð’ÑÑка друга " +"ÑтойноÑÑ‚\n" +" означава, че командата думата Ñ‚Ñ€Ñбва да е началото " +"на\n" +" ÑпрÑна задача.\n" +" histchars Знаци, които определÑÑ‚ бързото замеÑтване и това по " +"иÑториÑ.\n" +" ПървиÑÑ‚ знак е за замеÑтването по иÑториÑ, " +"обикновено е\n" +" „!“. ВториÑÑ‚ е за бързото замеÑтване, обикновено е " +"„^“.\n" +" ТретиÑÑ‚ е за коментарите в иÑториÑта, обикновено е " +"„#“.\n" +" HISTIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които указват " +"кои\n" +" команди да не Ñе запазват в иÑториÑта.\n" + +#: builtins.c:1751 +#, 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" +" \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.\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" +" от лÑвата Ñтрана на ÑпиÑъка, показан от командата „dirs“\n" +" като Ñе почва от 0) да е най-отгоре.\n" +" \n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои\n" +" от дÑÑната Ñтрана на ÑпиÑъка, показан от командата „dirs“\n" +" като Ñе почва от 0) да е най-отгоре.\n" +" \n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸\n" +" добавÑнето на директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +"\n" +" dir Ð´Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸\n" +" новата текуща работна директориÑ.\n" +" \n" +" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins.c:1785 +#, 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" +" \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.\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" +" показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“\n" +" премахва първата директориÑ, „popd +1“ - втората.\n" +"\n" +" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка\n" +" показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“\n" +" премахва поÑледната директориÑ, „popd -1“ - предпоÑледната.\n" +"\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето " +"на\n" +" директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +"\n" +" Стекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ Ñе визуализира Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +" Показва ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва чрез\n" +" командата „pushd“. Можете да вадите директории от ÑпиÑъка Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n" +" „popd“.\n" +" \n" +" ОпциÑта „-l“ кара командата „dirs“ да извежда пълните имена на " +"директориите,\n" +" а не Ñъкратените ÑпрÑмо домашната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð°. Това означава, че\n" +" „~/bin“ може да Ñе покаже като „/homes/pesho/bin“. ОпциÑта „-v“ води " +"до\n" +" отпечатване на Ñтека на директориите, като вÑеки елемент Ñе извежда на " +"нов\n" +" ред и Ñе предхожда от номера Ñи в Ñтека. ОпциÑта „-p“ Ñъщо води до " +"поредово\n" +" отпечатване, но без Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека. ОпциÑта „-c“ изчиÑтва Ñтека " +"на\n" +" директориите като изтрива вÑички елементи.\n" +" \n" +" +N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка показван от\n" +" командата „dirs“, когато е Ñтартирана без опции. Брои Ñе от 0.\n" +" \n" +" -N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка показван от\n" +" командата „dirs“, когато е Ñтартирана без опции. Брои Ñе от 0." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +#, 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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +" printf форматира и отпечатва ÐРГУМЕÐТИте Ñпоред управлението на ФОРМÐТа.\n" +" ФОРМÐТът е поÑледователноÑÑ‚ от знаци, коÑто Ñъдържа три вида обекти:\n" +" обикновени знаци, които биват отпечатани директно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´;\n" +" екраниращи знакови поÑледователноÑти, които биват преобразувани и " +"отпечатани\n" +" на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´; и форматиращи знакови поÑледователноÑти, вÑÑка от\n" +" които предизвиква отпечатването на Ñледващ аргумент. ОÑвен " +"Ñтандартните\n" +" Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸Ñани в ръководÑтвото на printf, „%b“ предизвиква " +"замеÑтването\n" +" на екранираниÑта Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾ наклонени черти в ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, а „%" +"q“\n" +" предизвиква цитирането на аргумента, така че да може да бъде използван " +"като\n" +" вход за обвивката. Ðко е включена опциÑта „-v“, изходът Ñе поÑÑ‚Ð°Ð²Ñ Ð²\n" +" променливата на обвивката VAR, вмеÑто да Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +" Показване на възможните допиÑÐ²Ð°Ð½Ð¸Ñ Ð½Ð° базата на възможноÑтите. Целта е да " +"Ñе\n" +" ползва в рамките Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, коÑто генерира възможните " +"допиÑваниÑ.\n" +" Ðко е зададен незадължителниÑÑ‚ аргумент ДУМÐ, генерират Ñе напаÑваниÑта " +"Ñ\n" +" него." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Без ИЗРÐЗ връща „$ред $име_на_файл“. С ИЗРÐЗ връща" + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "„$ред $Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ $име_на_файл“. Тази допълнителна информациÑ" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "може да Ñе използва да получаването на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñтека." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "СтойноÑтта на ИЗРÐЗа показва колко Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¸ текущото" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "Ñ‚Ñ€Ñбва да Ñе върнат. ПоÑледното извикване е 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: грешно чиÑло" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Команди на обвивката, които напаÑват на ключовите думи „" + +#~ 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/geek/" +#~ "bin“." + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "ОпциÑта „-v“ кара „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 displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка показван от" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "" +#~ " командата „dirs“, когато е Ñтартирана без опции. Брои Ñе от 0." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N показва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка показван от" + +#~ 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 Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " от лÑвата Ñтрана на ÑпиÑъка, показан от командата „dirs“" + +#~ msgid " zero) is at the top." +#~ msgstr " като Ñе почва от 0) да е най-отгоре." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " от дÑÑната Ñтрана на ÑпиÑъка, показан от командата „dirs“" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr "" +#~ " добавÑнето на директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir Ð´Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸" + +#~ msgid " new current working directory." +#~ msgstr " новата текуща работна директориÑ." + +#~ 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 "top directory." +#~ msgstr "поÑледна директориÑ." + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "" +#~ " показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " премахва първата директориÑ, „popd +1“ - втората." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "" +#~ " показван от командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " премахва поÑледната директориÑ, „popd -1“ - предпоÑледната." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ " +#~ "премахването на" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " директории от Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той." + +#~ msgid "allocated" +#~ msgstr "заделени" + +#~ msgid "freed" +#~ msgstr "оÑвободени" + +#~ msgid "requesting resize" +#~ msgstr "изиÑква Ñе преоразмераване" + +#~ msgid "just resized" +#~ msgstr "току що преораземерени" + +#~ msgid "bug: unknown operation" +#~ msgstr "грешка: непозната операциÑ" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "заделÑне на памет: предупреждение при наблюдение: %p %s " + +#~ msgid "" +#~ " Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ " Изход от цикъл ползващ FOR, WHILE или UNTIL. Ðко е указан N, Ñе излиза " +#~ "от N\n" +#~ " обхващащи цикъла." + +#~ 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 "" +#~ " Изпълнение на команда вградена в обвивката. Това е полезно, когато " +#~ "иÑкате да\n" +#~ " използвате името на команда вградена в обвивката за име на функциÑ, " +#~ "но във\n" +#~ " функциÑта Ñе нуждаете от командата." + +#~ 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 "" +#~ " Отпечатва текущата работна директориÑ. С опциÑта „-P“ командата „pwd“ " +#~ "извежда\n" +#~ " физичеÑката Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ - без Ñимволни връзки. ОпциÑта „-L“ кара " +#~ "командата\n" +#~ " „pwd“ да Ñледва физичеÑките връзки." + +#~ msgid " Return a successful result." +#~ msgstr " Връща уÑпешен резултат." + +#~ msgid " Return an unsuccessful result." +#~ msgstr " Връща неуÑпешен резултат." + +#~ 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 "" +#~ " Изпълнение на КОМÐÐÐ”Ð Ñ ÐРГументи като Ñе пренебрегват функциите в " +#~ "обвивката.\n" +#~ " Ðко ÑъщеÑтвува Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката наречена „ls“, можете да " +#~ "извикате\n" +#~ " командата чрез „command ls“. Ðко е зададена опциÑта „-p“ Ñе " +#~ "използва\n" +#~ " Ñтандартна ÑтойноÑÑ‚ на променливата $PATH, коÑто гарантирано открива " +#~ "вÑички\n" +#~ " Ñтандартни програми. Ðко е зададена нÑÐºÐ¾Ñ Ð¾Ñ‚ опциите „-V“ или „-v“, " +#~ "Ñе\n" +#~ "\t отпечатва опиÑание на КОМÐÐДÐта. ОпциÑта „-V“ води до по-подробен " +#~ "изход." + +#~ msgid " Obsolete. See `declare'." +#~ msgstr " ОÑтарÑло, да не Ñе използва. Виж „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 "" +#~ " Създаване на локална променлива Ñ Ð˜ÐœÐ• и приÑвоÑване на СТОЙÐОСТ. " +#~ "ЛОКÐЛÐÐта може\n" +#~ " да Ñе използва Ñамо във функциÑ. Ð¢Ñ ÐºÐ°Ñ€Ð° променливата на ИМЕ да е Ñ " +#~ "облаÑÑ‚\n" +#~ " на видимоÑÑ‚, коÑто е ограничена до тази Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ наÑледниците Ñ." + +#~ msgid "" +#~ " Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ " ÐРГУМЕÐТите Ñе извеждат. Ðко е дадена опциÑта „-n“, Ñе подтиÑка " +#~ "извеждането\n" +#~ "на нов ред." + +#~ 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 "" +#~ " Включване или изключване на вградените в обвивката команди. Това ви " +#~ "позволÑва\n" +#~ " да използвате външна команда, коÑто има Ñъщото име като вградена в " +#~ "обвивката\n" +#~ " команда, без да указвате име Ñъдържащо път. Ðко използвате опциÑта „-" +#~ "n“\n" +#~ " ИМЕната Ñе изключват, в противен Ñлучай Ñе включват. Ðапример, за " +#~ "да\n" +#~ " използвате командата „test“, коÑто Ñе намира в пътищата указани Ñ " +#~ "$PATH, а\n" +#~ " не верÑиÑта вградена в обвивката, използвайте „enable -n test“. При\n" +#~ " ÑиÑтемите, които разполагат Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡Ð½Ð¾ зареждане, опциÑта „-f“ може " +#~ "да Ñе\n" +#~ " използва за зареждането на нова команда вградена в обвивката от " +#~ "Ñподелен\n" +#~ " обект ÑÑŠÑ Ñъответното ИМЕ_ÐÐ_ФÐЙЛ. ОпциÑта „-d“ изтрива реÑурÑа " +#~ "зареден Ñ\n" +#~ " „-f“. Ðко не Ñа зададени имена, които да не Ñа опции, или Ñе " +#~ "използва\n" +#~ " опциÑта „-p“, Ñе извеждат имената на вградените команди. ОпциÑта „-" +#~ "a“\n" +#~ " означава вÑÑка вградена команда да Ñе изведе заедно Ñ Ñ‚Ð¾Ð²Ð° дали е " +#~ "включена\n" +#~ " или изключена. ОпциÑта „-s“ ограничава изхода до „Ñпециалните“ " +#~ "вградени\n" +#~ " команди на POSIX.2. ОпциÑта „-s“ извежда ÑпиÑъка на вÑички " +#~ "изключени\n" +#~ " вградени команди." + +#~ msgid "" +#~ " Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ " Изчитане на ÐРГУМЕÐТите като вход за обвивката и изпълнение на " +#~ "получените\n" +#~ "команди." + +#~ 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 "" +#~ " Изпълнение на ФÐЙЛ, като обвивката бива заменена Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð°Ñ‚Ð° програма. " +#~ "Ðко\n" +#~ " ФÐЙЛът не е указан, пренаÑочването Ñе извършва в тази обвивка. Ðко " +#~ "първата\n" +#~ " Ð¾Ð¿Ñ†Ð¸Ñ Ðµ „-l“, нулевиÑÑ‚ аргумент подаден на ФÐЙЛа e тире - подобно на " +#~ "това,\n" +#~ " което Ñе Ñлучва при влизане в ÑиÑтемата. При подаването на опциÑта " +#~ "„-c“\n" +#~ " ФÐЙЛът Ñе изпълнÑва Ñ Ð¿Ñ€Ð°Ð·Ð½Ð¾ обкръжение. ОпциÑта „-a“ означава " +#~ "нулевиÑÑ‚\n" +#~ " елемент от маÑива Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ (argv[0]) да е ИМЕ. Ðко ФÐЙЛът не може " +#~ "да Ñе\n" +#~ " изпълни и обвивката не е интерактивна, обвивката завършва работа, " +#~ "оÑвен ако\n" +#~ " не е зададена опциÑта на обвивката „execfail“." + +#~ msgid " Logout of a login shell." +#~ msgstr " Изход от входна обвивка" + +#~ 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 "" +#~ " За вÑÑко ИМЕ Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¸ Ð·Ð°Ð¿Ð¾Ð¼Ð½Ñ Ð¿ÑŠÐ»Ð½Ð¾Ñ‚Ð¾ име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° командата.\n" +#~ " Когато е указана опциÑта „-p“, ПЪТÑÑ‚ Ñе използва като пълен път за " +#~ "името и\n" +#~ " не Ñе Ñ‚ÑŠÑ€Ñи в Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¸Ñ Ð¿ÑŠÑ‚. ОпциÑта „-r“ кара обвивката да забрави " +#~ "вÑички\n" +#~ " запомнени меÑта. ОпциÑта „-d“ кара обвивката да забрави запомненото " +#~ "мÑÑто\n" +#~ " на обекта ÑÑŠÑ Ñъответното ИМЕ. Ðко е зададена опциÑта „-t“, извежда " +#~ "Ñе\n" +#~ " цÑлото име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° Ñъответното ИМЕ. Ðко на опциÑта „-t“ Ñа " +#~ "подадени\n" +#~ " множеÑтво ИМЕна, те Ñе отпечатват преди хешираното пълно име. " +#~ "ОпциÑта „-l“\n" +#~ " форматира изхода по начин, който го прави удобен за вход. Ðко не Ñа\n" +#~ " подадени аргументи, Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° запомнените команди." + +#~ 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 "" +#~ " Извеждане на полезна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди. Ðко е указан " +#~ "ШÐБЛОÐ,\n" +#~ " Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñамо за командите, които напаÑват, в противен " +#~ "Ñлучай\n" +#~ " Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички команди. ОпциÑта „-s“ ограничава\n" +#~ " информациÑта за вÑÑка вградена команда до кратко Ñъобщение за\n" +#~ " предназначението Ñ." + +#~ 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 "" +#~ " По подразбиране премахва вÑеки аргумент ЗÐДÐЧРот таблицата на " +#~ "активните\n" +#~ " задачи. Когато е зададена опциÑта „-h“, задачата не Ñе премахва от\n" +#~ " таблицата, но Ñе отбелÑзва да не получава Ñигнал „SIGHUP“, когато " +#~ "обвивката\n" +#~ " получи такъв Ñигнал. ОпциÑта „-а“, когато не е указана ЗÐДÐЧÐ, " +#~ "означава\n" +#~ " вÑички задачи да Ñе извадÑÑ‚ от таблицата ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸. ОпциÑта „-r“ " +#~ "кара да\n" +#~ " Ñе махнат Ñамо вървÑщите задачи." + +#~ 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 "" +#~ " Води до изход от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð²ÑŠÑ€Ð½Ð°Ñ‚ код N. Ðко не е указан N, връща Ñе " +#~ "изходниÑ\n" +#~ " код на поÑледната команда." + +#~ 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 "" +#~ " За вÑÑко ИМЕ Ñе премахва Ñъответната променлива или име. Когато е " +#~ "зададена\n" +#~ " опциÑта „-v“, „unset“ дейÑтва Ñамо на променливи. Когато е зададена " +#~ "опциÑта\n" +#~ " „-f“, „unset“ дейÑтва Ñамо на функции. Когато командата Ñе използва " +#~ "без\n" +#~ " опции, първо Ñе прави опита за премахване на променлива и Ñлед това " +#~ "на\n" +#~ " функциÑ. ÐÑкои променливи не могат да Ñе премахнат. Вижте " +#~ "вградената\n" +#~ " команда „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" +#~ " команди. Ðко е зададена опциÑта „-f“, ИМЕната Ñа на функции. Ðко не " +#~ "Ñа\n" +#~ " дадени ИМЕна, или е използвана опциÑта „-p“, Ñе извежда ÑпиÑък Ñ " +#~ "вÑички\n" +#~ " имена, които Ñа изнеÑени от тази обвивка. ОпциÑта „-n“ указва " +#~ "Ñледващите\n" +#~ " ИМЕна повече да не Ñа изнеÑени. Ðргументът „--“ изключва третирането " +#~ "на\n" +#~ " Ñледващите аргументи като опции." + +#~ 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 "" +#~ " Премахва възможноÑтта за промÑна на дадените ИМЕна при поÑледващи " +#~ "приÑвоÑваниÑ.\n" +#~ " Когато е използвана опциÑта „-f“, Ñе премахва възможноÑтта за промÑна " +#~ "на\n" +#~ " функциите Ñ Ñ‚ÐµÐ·Ð¸ ИМЕна. Ðко не Ñа дадени аргументи или е използвана " +#~ "опциÑта\n" +#~ " „-p“, Ñе извеждат имената, които Ñа без възможноÑÑ‚ за промÑна. " +#~ "ОпциÑта „-a“\n" +#~ " означава вÑÑко име да Ñе интерпретира като променлива за маÑив. " +#~ "Ðргументът\n" +#~ " „--“ изключва третирането на Ñледващите аргументи като опции." + +#~ msgid "" +#~ " The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ " Позиционните аргументи от $N+1 и нагоре Ñъответно Ñе преименуват на $1 " +#~ "и\n" +#~ " нагоре. Ðко N не е зададен, приема Ñе, че е 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 "" +#~ " Временно Ñпиране на изпълнението на текущата обвивка до получаването на " +#~ "Ñигнала\n" +#~ " „SIGCONT“. Ðко е зададена опциÑта „-f“, Ñе подтиÑка " +#~ "предупреждението, че\n" +#~ " това е входна обвивка, изпълнението Ñ Ð¿Ñ€Ð¾Ñто Ñе Ñпира." + +#~ msgid "" +#~ " Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ " Отпечатване на натрупаното потребителÑко и ÑиÑтемно време за процеÑи, " +#~ "които Ñа\n" +#~ " Ñтартирани през обвивката." + +#~ 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 "" +#~ " За вÑÑко ИМЕ Ñе отпечатва как ще Ñе интерпретира, ако Ñе използва за име " +#~ "на\n" +#~ " команда.\n" +#~ " \n" +#~ " Ðко Ñе използва опциÑта „-t“, командата „type“ извежда единÑтвена " +#~ "дума,\n" +#~ " коÑто е нÑÐºÐ¾Ñ Ð¾Ñ‚ „alias“, „keyword“, „function“, „builtin“, „file“ " +#~ "или „“,\n" +#~ " ако ИМЕто Ñъответно е Ñиноним, запазена дума на обвивката, Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ " +#~ "на\n" +#~ " обвивката, вградена команда в обвивката, файл или не е намерено.\n" +#~ " \n" +#~ " Ðко Ñе използва опциÑта „-p“, командата „type“ или извежда името на " +#~ "файла,\n" +#~ " който ще Ñе изпълни, или не извежда в нищо, в Ñлучаите, когато „type -" +#~ "t ИМЕ“\n" +#~ " не връща „file“.\n" +#~ " \n" +#~ " Ðко Ñе използва опциÑта „-a“, командата „type“ извежда вÑички меÑта, " +#~ "които\n" +#~ " Ñъдържат изпълним обект Ñ Ñ‚Ð°ÐºÐ¾Ð²Ð° ИМЕ. Това включва Ñинонимите, " +#~ "вградените\n" +#~ " команди и функции, но Ñамо ако не Ñе използва и опциÑта „-p“.\n" +#~ " \n" +#~ " ОпциÑта „-f“ подтиÑка Ñ‚ÑŠÑ€Ñенето във функциите на обвивката.\n" +#~ " \n" +#~ " ОпциÑта „-P“ кара ИМЕто да Ñе Ñ‚ÑŠÑ€Ñи в Ð¿ÑŠÑ‚Ñ $PATH, дори ИМЕто да е\n" +#~ " Ñиноним, вградена команда или функциÑ, и да Ñе изведе името на файла, " +#~ "който\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 "" +#~ " МаÑката за Ñъздадените от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ е зададена да е РЕЖИМ. " +#~ "Ðко той\n" +#~ " е пропуÑнат или е дадена опциÑта „-S“, отпечатва Ñе текущата ÑтойноÑÑ‚ " +#~ "на\n" +#~ " маÑката. ОпциÑта „-S“ води до опиÑателен изход, в противен Ñлучай " +#~ "Ñе\n" +#~ " отпечатва чиÑло в оÑмична бройна ÑиÑтема. Ðко е дадена опциÑта „-p“, " +#~ "а\n" +#~ " режимът е пропуÑнат, изходът може да Ñе използва като вход. Ðко " +#~ "РЕЖИМът\n" +#~ " започва Ñ Ñ†Ð¸Ñ„Ñ€Ð°, то той Ñе интерпретира като оÑмично чиÑло, в " +#~ "противен\n" +#~ " Ñлучай е опиÑателен низ, който Ñе приема от командата „chmod“." + +#~ 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 "" +#~ " Изчакване на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸ докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не е " +#~ "зададен N,\n" +#~ " вÑички текущо активни дъщерни процеÑи Ñе изчакват и изходниÑÑ‚ код е " +#~ "0. N\n" +#~ " е идентификатор на процеÑ. Ðко не е задача, изчакват Ñе вÑички " +#~ "процеÑи в\n" +#~ " Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» на задачата." + +#~ 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 "" +#~ " Създаване на проÑта команда, коÑто Ñе извиква чрез ИМЕ, коÑто Ñтартира " +#~ "КОМÐÐДИ.\n" +#~ " Ðргументите на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´, заедно Ñ Ð˜ÐœÐ•Ñ‚Ð¾, Ñе предават на " +#~ "функциÑта като\n" +#~ " $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 "" +#~ " Превключва ÑтойноÑтите на променливите, които управлÑват допълнителното\n" +#~ " поведение. ОпциÑта „-s“ позволÑва задаването на вÑÑка ОПЦИЯ. " +#~ "ОпциÑта „-q“\n" +#~ " премахва вÑÑка ОПЦИЯ. ОпциÑта „-q“ предотвратÑва извеждането на " +#~ "информациÑ.\n" +#~ " ВърнатиÑÑ‚ код показва дали вÑÑка Ð¾Ð¿Ñ†Ð¸Ñ Ðµ зададена или премахната. " +#~ "ОпциÑта\n" +#~ " „-o“ ограничава ОПЦИите до тези, които Ñа дефинирани да Ñе използват " +#~ "ÑÑŠÑ\n" +#~ " „set -o“. Без опции или Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-p“ Ñе извежда ÑпиÑъка на вÑички " +#~ "опции\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 "" +#~ " За вÑÑко ИМЕ поÑочва как да Ñе допиÑват аргументите.\n" +#~ " Ðко е зададена опциÑта -p или не Ñа зададени никакви опции, " +#~ "ÑъщеÑтвуващите\n" +#~ " клаÑове допиÑÐ²Ð°Ð½Ð¸Ñ Ñе отпечатват по начин, който позволÑва да Ñе " +#~ "използват\n" +#~ " повторно за вход. ОпциÑта -r премахва ÐºÐ»Ð°Ñ Ð´Ð¾Ð¿Ð¸ÑÐ²Ð°Ð½Ð¸Ñ Ð·Ð° вÑÑко " +#~ "поÑочено\n" +#~ " ИМЕ, а ако не е дадено такова - махат Ñе вÑички клаÑове." diff --git a/src/bin/bash/po/boldquot.sed b/src/bin/bash/po/boldquot.sed new file mode 100644 index 0000000000..4b937aa517 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/ca.gmo b/src/bin/bash/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b6dc10b4e9e8e56b472de6c5eb2aae68ea5e5106 GIT binary patch literal 10101 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 wBkvr?lz>-$Rr9KOyjn_y7O^ literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/ca.po b/src/bin/bash/po/ca.po new file mode 100644 index 0000000000..7b84ffe4f4 --- /dev/null +++ b/src/bin/bash/po/ca.po @@ -0,0 +1,6378 @@ +# Catalan messages for the GNU bash-2.0 +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Montxo Vicente i Sempere , 2003. +# Jordi Mas i Hern?ndez , 2004 (correccions). +# +msgid "" +msgstr "" +"Project-Id-Version: bash-2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2003-12-28 19:59+0100\n" +"Last-Translator: Montxo Vicente i Sempere \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "la matriu est? mal composta" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%c%c: opci? inv?lida" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: no es pot assignar a un ?ndex que no ?s num?ric" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: no es pot crear: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: no s'ha trobat l'ordre" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: funci? nom?s de lectura" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "fi de sessi?" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "encaix %3d:" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "s'est? escrivint" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "nombre excessiu de par?metres" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "cal un par?metre per a l'opci?: -" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: no s'ha trobat l'ordre" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: opci? inv?lida" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: opci? inv?lida" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "'%s' no ?s un identificador v?lid" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "n?mero inv?lid de senyal" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "n?mero inv?lid de senyal" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "n?mero inv?lid de senyal" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: ?s una variable nom?s de lectura" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "s'esperava un par?metre" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: s'ha finalitzat la tasca" + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "Terminat" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "error del conducte: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Redirecci? ambigua" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +#, fuzzy +msgid "can only be used in a function" +msgstr "" +"servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funci? nom?s de lectura" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: no es pot assignar d'aquesta manera" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: ?s un directori" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: no es pot executar el fitxer binari" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: no es pot executar el fitxer binari" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "fi de sessi?" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: no s'ha trobat l'ordre" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "opci? ilžlegal: -" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "cal un par?metre per a l'opci?: -" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "si s'escriu \"r\" s'executar? la darrera ordre." + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s: s'esperava una expressi? de nombre enter" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: s'esperava una expressi? de nombre enter" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "Error desconegut %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "s'esperava una expressi?" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%c%c: opci? inv?lida" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%c%c: opci? inv?lida" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "n?mero inv?lid de senyal" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: variable sense vincle" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "seguent entrada de la pila (o sia, la nova primera entrada)." + +#: builtins/pushd.def:462 +#, fuzzy +msgid "" +msgstr "\taquest ser? el nou directori actual de treball." + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "S'ha desbordat la base de la pila." + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "error del conducte: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +#, fuzzy +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" + +#: builtins/set.def:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: no es pot crear: %s" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s: variable sense vincle" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: funci? nom?s de lectura" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: no s'ha trobat l'ordre" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Finalitzar una sessi? de l'int?rpret d'ordres." + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: funci? nom?s de lectura" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: opci? inv?lida" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "L?mit de la UCP" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: no es pot crear: %s" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "n?mero inv?lid de senyal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, fuzzy, c-format +msgid "last command: %s\n" +msgstr "si s'escriu \"r\" s'executar? la darrera ordre." + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "Error desconegut %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "un nom d'una ordre." + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "connector inv?lid '%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Salt incorrecte %d" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variable sense vincle" + +#: eval.c:181 +#, fuzzy, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" +"%c ha excedit el temps d'espera per una entrada: fi autom?tica de sessi?\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "error del conducte: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: no s'ha trobat l'ordre" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: ?s un directori" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" +"no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 0: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "s'ha excedit el nivell de recursivitat de l'expressi?" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "S'ha desbordat la base de la pila." + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "error de sintaxi a l'expressi?" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "s'ha intentat assignar una variable inexistent" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "divisi? per 0" + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "error de programaci?: pas incorrecte del senyal %d per a expassing()." + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "s'esperava ':' per a l'expressi? condicional" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "falta algun ')'" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (la prova d'error ?s \"%s\")\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "valor massa gran per a la base de numeraci?" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: s'esperava una expressi? de nombre enter" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: no s'ha pogut accedir als directoris pares" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" +"no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 0: %s" + +#: input.c:258 +#, fuzzy, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"no s'ha pogut assignar una nova descripci? de fitxer per a l'entrada de " +"bash\n" +"a partir del descriptor de fitxer %d: %s" + +#: input.c:266 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"check_bash_input: ja hi existeix mem?ria interm?dia per a la nova\n" +"descripci? de fitxer %d" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: L'identificador de proc?s (pid) no existeix (%d)!\n" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Senyal desconeguda #%d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Fet" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Aturat" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Aturat" + +#: jobs.c:1443 +msgid "Running" +msgstr "S'est? executant" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Fet (%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Fi d'execuci? amb l'estat %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Estat desconegut" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(la imatge del nucli ha estat bolcada) " + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "(wd ara: %s)\n" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "error en l'execuci? de setpgid (%d a %d) en el proc?s fill %d: %s\n" + +#: jobs.c:2099 nojobs.c:585 +#, fuzzy, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" +"wait: l'identificador del proc?s (pid) %d no ?s un fill d'aquest int?rpret" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: s'ha finalitzat la tasca" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "encaix %3d:" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (bolcat de la imatge del nucli)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd ara: %s)\n" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp ha fallat: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: disciplina de l?nia: %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp ha fallat: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, c-format +msgid "%s: host unknown" +msgstr "desconegut" + +#: 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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Teniu correu en $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Teniu correu nou en $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "S'ha llegit el correu a %s\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "error de sintaxi a l'expressi?" + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "error de sintaxi" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: el tipus d'instrucci? %d ?s incorrecte" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" +"s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" +"es buscava per '%c'" + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "" +"s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" +"es buscava per '%c'" + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "error de sintaxi a l'expressi?" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "s'esperava ')'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: s'esperava un operador binari" + +#: parse.y:3889 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: s'esperava un operador binari" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "s'esperava ':' per a l'expressi? condicional" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "s'esperava ':' per a l'expressi? condicional" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "s'esperava ':' per a l'expressi? condicional" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" + +#: parse.y:5223 +msgid "syntax error" +msgstr "error de sintaxi" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Utilitzeu ?%s? per a eixir de l'int?rpret d'ordres.\n" + +#: parse.y:5447 +#, fuzzy +msgid "unexpected EOF while looking for matching `)'" +msgstr "" +"s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" +"es buscava per '%c'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: el connector '%d' ?s incorrecte" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Redirecci? ambigua" + +# No acabe d'entendre el significat de l'original "clobber" +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: No s'ha pogut sobreescriure el fitxer existent" + +#: redir.c:157 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "no es pot establir un conducte per a la substituci? del proc?s: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "error de redirecci?" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opci? inv?lida" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "No tinc cap nom d'usuari!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, versi? %s\n" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Sintaxi:\t%s [opci?-format-llarg GNU] [opci?] ...\n" +"\t%s [opci?-format-llarg GNU] [opci?] fitxer_de_seq??ncies ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "opcions de formes llargues de GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opcions de l'int?rpret d'ordres:\n" + +#: shell.c:1786 +#, fuzzy +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD o -c ordre\t\t(nom?s per a invocar)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s o -o opci?\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Per a obtindre m?s informaci? sobre les opcions de l'int?rpret\n" +"d'ordres, teclegeu ?%s -c \"help set\"?.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Per a obtindre m?s informaci? sobre les ordres integrades de l'int?rpret,\n" +"teclegeu '%s -c help' .\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Senyal falsa" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Penjar" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrumpeix" + +#: siglist.c:58 +msgid "Quit" +msgstr "Eixir" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrucci? ilžlegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT rastrejament/captura" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instrucci? d'avortament (ABORT)" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instrucci? per a emular una captura EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Excepci? en operaci? amb coma flotant" + +#: siglist.c:86 +msgid "Killed" +msgstr "Finalitzat" + +#: 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 inv?lida del sistema" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Conducte trencat" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Temporitzador" + +#: siglist.c:110 +#, fuzzy +msgid "Terminated" +msgstr "" +"opci? incorrecta, la funci? getopts() introdueix el signe '?' dins de\n" +"la variable NAME i esborra la variable OPTARG. Si no es troba una \n" +"opci? necess?ria, s'introdueix el signe '?' en la variable NAME, \n" +"s'esborra la variable OPTARG, i s'imprimir? un missatge de\n" +"diagn?stic." + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condici? urgent d'Entrada/Eixida (En/Ei)" + +#: 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 "S'ha mort o s'ha aturat el proc?s fill" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Aturat (entrada per terminal)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Aturat (eixida per terminal)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "Entrada/Eixida preparades" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "L?mit de la UCP" + +#: siglist.c:154 +msgid "File limit" +msgstr "L?mit de la grand?ria del fitxer" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarma (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarma (entorn)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "S'ha canviat la finestra" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Bloqueig de gravaci?" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Senyal 1 definida per l'usuari" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Senyal 2 definida per l'usuari" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "pendent de l'entrada de dades HFT" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "fallida imminent d'energia" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "fallida imminent del sistema" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "proc?s de migraci? cap a un altre UPC en curs" + +#: siglist.c:198 +msgid "programming error" +msgstr "error de programaci?" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "S'ha concedit el mode de monitor HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "S'ha rebutjat el mode de monitor HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "S'ha completat la seq??ncia de so HFT" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Senyal desconeguda #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Senyal desconeguda #%d" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substituci? inv?lida: no existeix '%s' en %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: no es pot assignar la llista a un element de la matriu" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "no es pot establir un conducte per a la substituci? del proc?s: %s" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "no es pot establir un proc?s fill per a la substituci? del proc?s: %s" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"no es pot duplicar el conducte anomenat %s\n" +"com a descripci? de fitxer %d: %s" + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "no es poden establir conductes per a la substituci? de l'ordre: %s" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "no es pot crear un proc?s fill per a la substituci? del proc?s: %s" + +#: subst.c:4816 +#, fuzzy +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute(): el coducte no es pot duplicar\n" +"com a descripci? de fitxer 1: %s" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: par?metre nul o no ajustat" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: la sub-cadena de l'expressi? ?s < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituci? inv?lida" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: no es pot assignar d'aquesta manera" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substituci? inv?lida: no existeix '%s' en %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "s'esperava un par?metre" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: s'esperava una expressi? de nombre enter" + +#: test.c:262 +msgid "`)' expected" +msgstr "s'esperava ')'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "mentre es buscava ?)?, s'ha trobat %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: s'esperava un operador unari" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: s'esperava un operador binari" + +#: test.c:806 +msgid "missing `]'" +msgstr "s'ha perdut algun ']'" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "n?mero inv?lid de senyal" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Senyal inv?lida %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "'%s': error en importar la definici? de la funci?" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, versi? %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:94 +#, fuzzy, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" + +#: xmalloc.c:116 +#, fuzzy, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" + +#: xmalloc.c:150 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:152 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:174 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" + +#: xmalloc.c:176 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nom[=valor] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [nom ...]" + +#: builtins.c:51 +#, fuzzy +msgid "" +"bind [-lpvsPVS] [-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 fitxer] [-q nom] [-r keyseq] [keyseq:funci?-" +"readline] " + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [ordre-interna [arg ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [expressi?]" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "cd [-PL] [directori]" + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] ordre [par?metre ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] nom[=valor] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] nom[=valor] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local nom[=valor] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [par?metre ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [par?metre ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f fitxer] [nom ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [par?metre ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts cadena_opcions nom [par?metre]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a nom] fitxer [redireccionament ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "fi de sessi?" + +#: builtins.c:103 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e nom_e] [-nlr] [primer] [darrer]\n" +"o\n" +"fc -s [patr?=rep] [ordre]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [id_tasca]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [id_tasca]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p cam?] [nom ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [patr? ...]" + +#: builtins.c:121 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [n]\n" +"o\n" +"history -awrn [fitxer]\n" +"o\n" +"history -ps par?metre [par?metre...]" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" +"jobs [-lnprs] [id_tasca ...]\n" +"o\n" +"jobs -x ordre [par?metres]" + +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [id_tasca ...]" + +#: builtins.c:132 +#, fuzzy +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s id_senyal | -n n?m_senyal | -id_senyal] [id_proc?s | tasca]...\n" +"o\n" +"kill -l [id_senyal]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let par?metres [par?metres ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o opci?] [par?metres ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [nom ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" +"export [-nf] [nom ...]\n" +"o\n" +"export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" +"readonly [-anf] [nom ...]\n" +"o\n" +"readonly -p" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "exit [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "nom del fitxer d'origen" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". nom del fitxer" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expressi?]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ par?metres... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" +"trap [par?metres] [id_senyal], o \n" +"trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] nom [nom ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [l?mit]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [mode]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOM [in PARAULES ... ;] do ORDRES; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NOM [in PARAULES ... ;] do ORDRES; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOM [in PARAULES ... ;] do ORDRES; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PARAULES in [PATR? [| PATR?]...) ORDRES ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ORDRES; do ORDRES; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ORDRES; do ORDRES; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NOM { ORDRES ; } or NOM () { ORDRES ; }" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ ORDRES }" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [id_tasca]" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "s'esperava una expressi?" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "s'esperava una expressi?" + +#: builtins.c:210 +#, fuzzy +msgid "variables - Names and meanings of some shell variables" +msgstr "Es permeten les variables de l'int?rpret d'ordres com a operands. El" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [directori | +N | -N] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o opci?_format_llarg] nom_opci? [nom_opci?...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] nom [nom ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +#, 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 "" +"Es treuen NOMs de la llista de les definicions d'?lies. Si s'especifica" + +#: builtins.c:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +#, fuzzy +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 "Repr?n la seg?ent iteraci? del bucle envoltant FOR, WHILE, o UNTIL." + +#: builtins.c:338 +#, 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 "Repr?n la seg?ent iteraci? del bucle envoltant FOR, WHILE, o UNTIL." + +#: builtins.c:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Cap efecte; no es fa res. Es retorna amb el codi zero com a eixida." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "Finalitza l'int?rpret d'ordres amb l'estat d'N. Si s'ometeix N," + +#: builtins.c:698 +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:708 +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:738 +#, fuzzy +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 "Ubica la ID_TASCA en primer pla, i l'activa com a la tasca actual." + +#: builtins.c:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +#, fuzzy +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 "" +"par?metre ha de ser el signe \"]\" perqu? es puga tancar l'expressi? que\n" +"comen?a pel signe \"[\"." + +#: builtins.c:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +#, fuzzy +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 selectivament les ordres especificades en ORDRES seguint una " + +#: builtins.c:1560 +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:1577 +#, 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 "" +"Expandeix i executa les ordres especificades en ORDRES i els executa\n" +"de tal manera que la darrera ordre" + +#: builtins.c:1589 +#, 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 "" +"Expandeix i executa les ordres especificades en ORDRES i els executa\n" +"de tal manera que la darrera ordre" + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "Executa un conjunt d'ordres en un grup. A?? ?s una manera de" + +#: builtins.c:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "" +#~ "Mostra la llista dels directoris actualment recordats. Els directoris " + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "troben el seu cam? en la llista amb l'ordre ?pushd?; podeu anar cap" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "endarrere a trav?s de la llista amb l'ordre ?popd?." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Si s'especifica el senyalador \"-l\" no es mostrar? la forma abreviada" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "dels directoris que estiguen relacionats amb el vostre directori" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "d'usuari. Aix? vol dir que ?~/bin? pot ser exhibit com" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "?/home/bfox/bin?. Amb el senyalador \"-v\" l'ordre ?dirs? mostrar? la" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "pila de directoris amb una l?nia per a cada entrada, afegint el nom de" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "directori amb la seua posici? en la pila. Amb el senyalador \"-p\"" + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "esdevindr? el mateix, per? no mostrar? les posicions. El senyalador\n" +#~ "\"-c\" buidar? la pila de directoris esborrant tots els seus elements." + +#, fuzzy +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N\texhibeix l'entrada N?sima comptant des de l'esquerra de la llista " + +#, fuzzy +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "" +#~ "\tmostrada per ?dirs? quan se l'invoca sense opcions, comen?ant per\n" +#~ "\tzero." + +#, fuzzy +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N\texhibeix l'entrada N?sima comptant des de la dreta de la llista " + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "Afegeix un directori en el principi de la pila de dicrectoris, o gira " + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "" +#~ "la pila fent que el primer directori de la pila siga l'actual. Sense" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "cap par?metre, intercanvia els dos primers directoris." + +#, fuzzy +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N\tGira la pila de tal manera que el directori N?sim (comptant des de" + +#, fuzzy +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "\tl'esquerra de la llista mostrada per \"dirs\") ?s al principi." + +#, fuzzy +#~ msgid " zero) is at the top." +#~ msgstr "\tla dreta) ?s el primer." + +#, fuzzy +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "-N\tGira la pila de tal manera que el directori N?sim (comptant des de " + +#, fuzzy +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "\tl'esquerra de la llista mostrada per \"dirs\") ?s al principi." + +#, fuzzy +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n\tsuprimeix el canvi normal de directori quan se'n afegeix a la pila, " + +#, fuzzy +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr "\tde tal manera que nom?s es manipula la pila." + +#, fuzzy +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "" +#~ "dir\tafegeix DIR a la pila de directoris al principi, de tal manera que " + +#, fuzzy +#~ msgid " new current working directory." +#~ msgstr "\taquest ser? el nou directori actual de treball." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Podeu comprovar la pila de directori amb l'ordre ?dirs?." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Esborra entrades de la pila de directoris. Sense cap par?metre," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "esborra el primer directori de la pila, i canvia el directori a la" + +#~ msgid "top directory." +#~ msgstr "seguent entrada de la pila (o sia, la nova primera entrada)." + +#, fuzzy +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N\ttreu l'entrada N?sima comptant des de l'esquerra de la llista" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tmostrada per ?dirs?, comen?ant per zero. Per exemple: ?popd +0?" + +#, fuzzy +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr "\ttreu el primer directori, ?popd +1? el segon, etc..." + +#, fuzzy +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N\ttreu l'entrada N?sima comptant des de la dreta de la llista" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "" +#~ "\tmostrada per ?dirs?, comen?ant per zero. Per exemple: ?popd -0? treu" + +#, fuzzy +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr "\tel darrer directori, ?popd -1? treu el pen?ltim, etc..." + +#, fuzzy +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n\tsuprimeix el canvi normal de directori quan es treu cap directori " + +#, fuzzy +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr "\tde la pila, de tal manera que nom?s es manipula la pila." + +#, fuzzy +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "Ix d'un bucle FOR, WHILE o UNTIL." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsoleta. Llegiu ?declare?." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Mostra els PAR?METREs. Si especifiqueu -n, se suprimir? el car?cter\n" +#~ "d'inici de l?nia." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Llegeix els PAR?METRES a l'entrada de l'int?rpret d'ordres i executa les\n" +#~ "ordres resultants." + +#~ msgid "Logout of a login shell." +#~ msgstr "Finalitzar una sessi? de l'int?rpret d'ordres." + +#, fuzzy +#~ 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 "" +#~ "Provoca l'eixida d'una funci? amb un valor de retorn especificat per" + +#, fuzzy +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Es reanomenen els par?metres posicionals des de $N+1 ... com a $1 ... " + +#, fuzzy +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Mostra el temps acumulat per l'usuari i pel sistema d'haver executat " + +#~ msgid "Missing `}'" +#~ msgstr "S'ha perdut '}'" + +#~ msgid "brace_expand> " +#~ msgstr "clau_expansi?> " + +# Ac? vaig tindre dubtes sobre quina paraula fer servir +# per al terme "command". Mirant-me el diccionari auxiliar +# de Sebasti? Pla i Sanz, traductor del KDE, vaig trobar-ne tres +# de traduccions: ordre, comandament, i comanda. I vaig triar +# la paraula "comanda". +# +# No obstant aix?, no s? si la paraula "command" pot traduir-se +# tamb? amb els altres termes depenent del context. Reviseu +# sobre el terme "comanda". +# Mtx (12/10/2002). +# +# Llegint al TERMCAT, la paraula "comanda" no apareix enlloc. Al glossari +# de termes del Softcatal? si hi apareix. Encara no ho tinc clar. Mentre +# m'informe una mica m?s, per?, ho deixar? com a "ordre", tal com ho +# heu fet fins ara. El problema que t? el TERMCAT, a la meua opini?, ?s +# que s'apropa massa a l'espanyol. No en tinc res en contra d'aquesta +# llengua, per? algunes traduccions en catal?, per exemple, basant-se +# en l'espanyol, em semblen poc naturals, i n'he trobat d'altres basats +# en el franc?s que s? me'n semblen m?s naturals. +# Mtx (15/10/2002) +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Intenteu lliurar l'ordre de mena desconeguda '%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Informeu d'aix? a %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Aturant-me..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Digueu a %s que solucione aix? algun dia.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "ordre_execuci?: el tipus d'ordre ?s inv?lid '%d'" + +#~ msgid "real\t" +#~ msgstr "real\t" + +#~ msgid "user\t" +#~ msgstr "usuari\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" +#~ "usuari\t0m0.00s\n" +#~ "sistema\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "" +#~ "no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 1: %" +#~ "s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: redirecci? d'eixida restringida" + +#~ msgid "Out of memory!" +#~ msgstr "Mem?ria esgotada!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Ja hi heu afegit l'element: '%s'\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Heu introdu?t %d (%d) elements. La distribuci? ?s:\n" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: suggeriment: voleu executar 'bg' en segon pla?" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "La instrucci? de redirecci? de la funci? yyparse () '%d' ?s fora\n" +#~ "de l'interval en la funci? make_redirection()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () heu rebut un ordre del tipus %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "s'ha rebut l'error %d mentre s'esperava per %d" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "hi ha un error inesperat de sintaxi a prop del senyal '%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: tipus d'ordre inv?lid '%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "crintf: el par?metre '%%' de l'opci? %c ?s inv?lid" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "l'opci? '%s' requereix un par?metre" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: l'opci? no ?s reconeguda" + +#~ msgid "`-c' requires an argument" +#~ msgstr "'-c' requereix un par?metre" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: no es poden executar els directoris" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Codi incorrecte a la rutina sig.c: sigprocmask" + +#~ msgid "bad substitution: no ending `}' in %s" +#~ msgstr "substituci? inv?lida: no s'ha tancat %s amb cap '}'" + +#~ msgid "%s: bad array subscript" +#~ msgstr "%s: la composici? de la matriu no ?s v?lida" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "no es poden establir conductes per a la substituci? del proc?s: %s" + +#~ msgid "reading" +#~ msgstr "s'est? llegint" + +#~ msgid "process substitution" +#~ msgstr "proc?s de substituci? en curs" + +#~ msgid "command substitution" +#~ msgstr "substituci? de l'ordre" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "El conducte no es pot reobrir per a substituir\n" +#~ "l'ordre (descripci? de fitxer%d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: variable sense vincle" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: substituci? aritm?tica inv?lida" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: s'esperava un operador binari" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: sub-?ndex inv?lid" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: sub-?ndex inv?lid" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "les xifres apareixen dins de dos par?metres diferents.\n" + +#~ msgid "option %c\n" +#~ msgstr "opci? %c\n" + +#~ msgid "option a\n" +#~ msgstr "opci? a\n" + +#~ msgid "option b\n" +#~ msgstr "opci? b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opci? c amb el valor ?%s?\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "sh_getopt() retorn? 0%o com a codi de car?cter??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elements d'ARGV que no s?n opcions: " + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Senyalador desconegut %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "Directiva desconeguda ?%s?" + +#~ msgid "%s requires an argument" +#~ msgstr "%s cal un par?metre" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s ha d'estar dins d'un bloc $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "%s trobat abans de $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s ja cont? la funci? definida: %s" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "%s ja t? un nom de document (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "%s ja t? una documentaci? r?pida (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "%s ja t? una definici? %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins(): S'ha esgotat la mem?ria virtual!\n" + +# Tot i que no he trobat cap traducci? t?cnica oficial al TERMCAT +# crec que la traducci? de "prompt" com a "apuntador" ?s prou +# ilustratiu i significatiu per al context, no?. +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p apuntador] [-a matriu] [-e] [nom ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[XIFRES | PARAULES] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variables - Algunes variables i els seus significats" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "" +#~ "Si 'alias' no porta arguments o porta l'opci? -p es mostra la llista" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "d'?lies en la forma 'alias NOM=VALOR' en l'eixida per defecte." + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "Altrament, es defineix un ?lies per cada NOM que en d?na el seu VALOR." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "Un salt de l?nia dins del VALOR for?a la substituci? de la seg?ent " +#~ "paraula per" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "substituci? de l'?lies quan aquest s'hi expandeix. L'?lies torna" + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "cert almenys que es d?ne un NOM pel qual no s'haja estat definit cap ?" +#~ "lies." + +#~ msgid "then remove all alias definitions." +#~ msgstr "l'opci? -a, aleshores se suprimeixen totes les definicions." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "Vincula una seq??ncia de tecles cap una funci? de lectura, o a una macro." + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "" +#~ "La sintaxi ?s equivalent al que es troba a ~/.inputrc, per? ha s'ha de fer" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "el pas com a ?nic par?metre: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Els par?metres acceptats s?n:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m mapa_tecles Fa servir 'keymap' com el mapa de car?cters " +#~ "durant" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr "" +#~ " l'execuci? d'aquest ordre. S'accepten els noms 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 Mostra la llista de noms de les funcions." + +#~ msgid " -P List function names and bindings." +#~ msgstr "" +#~ " -P Mostra la llista de noms i vincles de les funcions." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Mostra la llista de funcions i vincles d'una manera" + +#~ msgid " reused as input." +#~ msgstr "" +#~ " que puga ser reutilitzada com a entrada de dades." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr "" +#~ " -r seq??ncia_tecles Treu els vincles de la seq??ncia de tecles." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f fitxer Llegeix les assignacions de tecles d'un fitxer." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q nom_funci? Consultar quines tecles invoquen la funci? demanada." + +#~ msgid " -V List variable names and values" +#~ msgstr "" +#~ " -V Mostra la llista de noms i valors de les variables." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Mostra la llista de noms i valors de variables de " +#~ "manera" + +#~ msgid " be reused as input." +#~ msgstr "" +#~ " que puga ser reutilitzada com a entrada de dades." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S Mostra la llista de seq??ncies de tecles que criden\n" +#~ " macros i els seus valors." + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s Mostra la llista de seq??ncies de tecles que criden" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " macros i els seus valors de manera que puga ser\n" +#~ " reutilitzada com a entrada de dades." + +#~ msgid "break N levels." +#~ msgstr "Si s'especifica N, s'ix despr?s de N iteracions." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "Si s'especifica N, es repr?n el bucle al N-?sim cicle." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "" +#~ "Executa una ordre integrada de l'int?rpret. Aix? ?s ?til quan desitgeu" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "" +#~ "renomenar una ordre integrada de l'int?rpret perqu? siga una funci?, per?" + +#~ msgid "builtin within the function itself." +#~ msgstr "cal la funcionalitat de l'ordre integrada dins de la pr?pia funci?." + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Fa servir DIR com el directori actual. La variable $HOME ?s el" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "" +#~ "valor per defecte de DIR. La variable $CDPATH defineix el cam? de recerca" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "per al directori que cont? DIR. Els noms de directoris alternatius que " +#~ "hi ha" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "en CDPATH s?n separats per dos punts. Un nom buit de directori ?s el " +#~ "mateix" + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "" +#~ "que el directori actual, p.e. ?.?. Si es comen?a en DIR amb una barra " +#~ "(/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "" +#~ "aleshores no es fa servir $CDPATH. Si no es troba el directori, i l'opci?" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "de l'int?rpret ?cdable_vars? ?s activa, aleshores intenta fer servir la" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "paraula com a nom de variable. Si aquesta variable ja tenia un valor," + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "aleshores es canvia al directori d'aquest valor. L'opci? -P indica" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "l'emprament de l'estructura f?sica del directori en voltes d'enlla?os" + +#~ msgid "to be followed." +#~ msgstr "simb?lics; l'opci? -L for?a el seguiment d'enlla?os simb?lics." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "" +#~ "Mostra el directori actual de treball. Amb l'opci? -P, pwd mostra el" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "" +#~ "directori f?sic, sense cap enlla? simb?lic; l'opci? -L fa que pwd seguisca" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "els enlla?os simb?lics." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Executa ORDRE amb PAR?METRES ignorant les funcions de l'int?rpret. Si " +#~ "teniu" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "una funci? de l'int?rpret anomenat ?ls?, i desitgeu cridar l'ordre ?ls?," + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "podeu escriure ?command ls?. Si doneu l'opci? -p, es far? servir un valor" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "" +#~ "per defecte per al PATH, que garanteix la cerca de les eines est?ndard. " +#~ "Si hi" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "" +#~ "indiqueu l'opci? -V o -v, es mostrar? una cadena de text descrivint " +#~ "l'ORDRE." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "L'opci? -V produeix una descripci? m?s acurada." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "Es declara les variables i/o se'ls d?na atributs. Si no es proporcionen " +#~ "NOMS," + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "" +#~ "aleshores mostra els valors de les variables. L'opci? -p mostrar? els" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "atributs i valors de cada NOM." + +#~ msgid "The flags are:" +#~ msgstr "Els senyaladors s?n:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tper a fer matrius de NOMS (si n'?s suportat)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\ttriar nom?s entre els noms de les funcions" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tmostrar noms de funcions ometent les seues definicions" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tblocar l'acc?s d'escriptura de les variables NOMs" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\texportar les variables de NOMs" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tactivar l'atribut num?ric enter les variables NOMs" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "" +#~ "Les variables que tinguen l'atribut num?ric enter tenen feta l'evaluaci?" + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "aritm?tica (mirar ?let?) quan se'ls assigna la variable." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "" +#~ "Quan es mostra els valors de les variables, amb -f es mostra un nom de " +#~ "funci?" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "" +#~ "i la definici?. Amb l'opci? -F es limita nom?s en mostrar el nom de la" + +#~ msgid "name only." +#~ msgstr "funci?." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "" +#~ "Emprant \"+\" en voltes de \"-\" desactiva l'atribut especificat. Quan ?s" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "emprat en una funci?, converteix NOMs en variables locals, igual com es " +#~ "fa\n" +#~ "amb l'ordre ?local?." + +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "" +#~ "Es crea una variable local anomenat NOM, i el d?na un VALOR. Nom?s es " +#~ "pot fer" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "variable NOM nom?s per a aquesta funci? i per als seus fills." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "" +#~ "Mostra els PAR?METREs. Si especifiqueu -n, s'eliminar? el car?cter de " +#~ "salt" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "de l?nia. Si especifiqueu l'opci? -e, s'activar? la interpretaci? de les" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "seq??ncies d'escapada (barra inclinada inversa):" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\talerta (camponada)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tesborrar cap enrere" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tsuprimeix el car?cter de salt de l?nia" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tcar?cter d'escapada" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\talimentaci? manual de paper" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tl?nia nova" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\ttecla de retorn de carro" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\tpestanya horitzontal" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\tpestanya vertical" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tbarra invertida" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\tcar?cter del qual codi ASCII ?s NUM (octal)." + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "" +#~ "Podeu desactivar expl?citament la interpretaci? dels car?cters esmentats " +#~ "amb" + +#~ msgid "with the -E option." +#~ msgstr "l'opci? -E." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "" +#~ "Activa i desactiva les ordres integrades de l'int?rpret d'ordres. A?? us" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "" +#~ "permet fer servir una ordre de disc que tinga el mateix nom d'una ordre " +#~ "interna" + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "de l'int?rpret d'ordres. Si utilitzeu -n, els NOMs es desactiven; " +#~ "altrament" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "s'activarien els NOMs. Per exemple, per a fer servir l'ordre ?test? del " +#~ "cam?" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "" +#~ "d'acc?s (PATH) en voltes de la versi? integrada de l'int?rpret d'ordres," + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "" +#~ "teclegeu ?enable -n test?. En sistemes que suporten c?rrega din?mica, " +#~ "l'opci?" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "-f es pot fer servir per a carregar noves ordres predefinides de l'objecte" + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "" +#~ "de FITXER compartit. L'opci? -d esborrar? una ordre integrada carregada " + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "" +#~ "pr?viament amb -f. Si no s'especifica cap opci?, o s'especifica l'opci? -" +#~ "p, es" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "mostra una llista d'ordres predefinides. L'opci? -a implica mostrar cada" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "" +#~ "ordre integrada amb una indicaci? de si est? activa o no. L'opci? -s " +#~ "impedeix" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "" +#~ "l'eixida de les ordres predefinides \"especials\" Posix.2. L'opci? -n " +#~ "mostra" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "una llista de totes les funcions internes desactivades." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "La funci? getopts() ?s utilitzada pels procediments de l'int?rpret " +#~ "d'ordres\n" +#~ "per a analitzar par?metres posicionals." + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "" +#~ "La variable OPTSTRING cont? les opcions de forma curta per a ser " +#~ "reconegudes;" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "" +#~ "si una lletra ?s seguida per dos punts, s'ha de donar un par?metre que " +#~ "hauria" + +#~ msgid "which should be separated from it by white space." +#~ msgstr "d'estar separat per un espai en blanc." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "" +#~ "Cada vegada que se'l invoca, ?getops? posar? la seg?ent opci? en la " +#~ "variable" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "" +#~ "$name de l'int?rpret d'ordres, creant-lo si no existeix, i l'?ndex del " +#~ "seg?ent" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "" +#~ "par?metre per a processar-se dins de la variable OPTIND de l'int?rpret" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "" +#~ "d'ordres. OPTIND s'inicia amb 1 cada vegada que s'invoca l'int?rpret " +#~ "d'ordres" + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "" +#~ "o una seq??ncia d'ordres. Quan una opci? requereix un par?metre, la funci?" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "" +#~ "getopts() colžloca aquest par?metre dins de la variable OPTARG de l'int?" +#~ "rpret." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "La funci? getopts() comunica errors en una de les dues maneres. Si el" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "primer car?cter de la variable OPSTRING ?s el signe ':', la funci?" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "" +#~ "getopts() corre silenciosament. D'aquesta manera, no s'imprimir? cap" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "missatge d'error. Si es troba una opci? incorrecta, la funci?" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "colžloca aquesta opci? de forma curta dins de la variable OPTARG " + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "" +#~ "si no es troba un patr?metre esperat, la funci? getopts() introdueix" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "el signe ':' dins de la variable NAME i estableix el valor de la" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "" +#~ "variable OPTARG amb l'opci? de forma curta que s'hi haja trobada. Si" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "la funci? getopts() no est? en mode silenci?s, i s'ha trobat una" + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "Si la variable OPTERR de l'int?rpret d'ordres t? un valor nul, la" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "" +#~ "funci? getopts() desactiva la impressi? dels missatges d'error, tot i" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "" +#~ "que el primer car?cter de OPSTRING no siga el signe ':'. La variable\n" +#~ "OPTERR t? el valor 1 com a defecte." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "La funci? getopts() normalment analitza els par?metres posicionals" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "" +#~ "($0-$9), per? si se'n d?na m?s arguments, se'ls analitza en voltes\n" +#~ "dels posicionals." + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "" +#~ "Executa el FITXER, reempla?ant aquest int?rpret d'ordres pel programa." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "" +#~ "especificat. Si no s'especifica FITXER, els redre?aments tindran efecte" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "en aquest int?rpret d'ordres. Si el primer par?metre ?s \"-l\"," + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "aleshores es reempla?a el par?metre 0 pel signe \"-\" referenciat a" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "" +#~ "FITXER, com aix? es fa en l'inici de sessi?. Si s'especifica l'opci? \"-c" +#~ "\"," + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "" +#~ "s'executa FITXER en un entorn nul. L'opci? \"-a\" estableix que el\n" +#~ "proc?s executat portar? aquest NOM." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "Si no es pot executar el fitxer i l'int?rpret d'ordres no ?s" + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "interactiu, aleshores l'int?rpret finalitza la seua execuci?, a" + +#~ msgid "is set." +#~ msgstr "menys que s'inicialitze la variable \"no_exit_on_failed_exec\"." + +#~ msgid "is that of the last command executed." +#~ msgstr "l'estat d'eixida ?s el darrer ordre executat." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "PRIMER i ?LTIM poden ser n?meros que especifiquen el rang, o PRIMER" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "" +#~ "pot ser una cadena, que representa l'ordre m?s recent el qual comen?a" + +#~ msgid "string." +#~ msgstr "amb eixa cadena." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ENAME tria quin editor emprar. FCEDIT ?s per defecte, despr?s ?s" + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr "" +#~ " EDITOR, despr?s l'editor que correspon amb l'actual editor del " + +#~ msgid " mode, then vi." +#~ msgstr " mode de l?nia d'ordre, i per ?ltim ?vi?." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l mostra les l?nies en voltes d'editar-les." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n no es mostraran els n?meros de l?nia." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r inverteix l'ordre de les l?nies (els m?s recents es llisten primer)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "Amb el format ?fc -s [pat=rep ...] [command]?, es reexecuta l'ordre " + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "despr?s de que es realitze la substituci? de ANTIC per NOU." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "Un ?lies ?til per a usar-lo amb aix? ?s r='fc -s', per tant si" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "s'escriu ?r cc? s'executar? la darrera ordre que comen?a per ?cc? i" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "Si no s'especifica ID_TASCA, s'aplicaran els atributs d'execuci? de" + +#~ msgid "used." +#~ msgstr "l'int?rpret d'ordres de la tasca actual." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "Ubica ID_TASCA en segon pla, com si s'haguera iniciat amb \"&\"." + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "Si no s'especifica ID_TASCA, s'aplicaran els atributs d'execuci? de" + +#~ msgid "job is used." +#~ msgstr "l'int?rpret d'ordres de la tasca actual." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Per a cada NOM, es determina i es recorda el nom del cam? d'acc?s" + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "complet de l'ordre. Si s'especifica l'opci? -p , es fa servir" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "CAM?_ACC?S com el nom del cam? complet de NOM, i no es realitzar?" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "cap cerca de camins. L'opci? -r fa que l'int?rpret d'ordres oblide" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "" +#~ "totes les ubicacions del cam? d'acc?s. Si no s'hi d?na arguments, es\n" +#~ "mostrar? informaci? sobre els camins d'acc?s triats per les ordres." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "Mostra informaci? d'utilitat sobre les ordres integrades. Si" + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "s'especifica PLANTILLA, s'hi d?na ajuda detallada sobre totes les" + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "" +#~ "ordres que coincidisquen amb PLANTILLA, altrament s'hi mostrar? una\n" +#~ "llista de les ordres integrades." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "Mostra el llistat de l'hist?ric de manera numerada. Les l?nies qu?" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "han sigut modificades s?n llistades amb el signe \"*\". El par?metre" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "" +#~ "N mostra les darreres N l?nies. L'opci? -c fa que es buide l'hist?ric" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "esborrant totes les seues entrades. L'opci? \"-w\" escriu l'hist?ric" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "actual al fitxer d'hist?ric; d'altra banda, l'opci? \"-r\" llegeix el" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "" +#~ "fitxer i afegeix els continguts a l'hist?ric. L'opci? \"-a\" afegeix" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "les l?nies de l'hist?ric d'aquesta sessi? al fitxer de l'hist?ric." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "" +#~ "Amb el par?metre \"-n\" es llegeix totes les l?nies de l'hist?ric que" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "encara no hagen sigut llegides del fitxer d'hist?ric i l'afegeix a" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "la llista de l'hist?ric. Si s'especifica FITXER, aquest es far?" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "servir com el fitxer d'hist?ric, altrament s'utilitzar? el valor de\n" +#~ "$HISTFILE, si en t?, i sin? es mirar? en ~/.bash_history." + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "Si s'especifica l'opci? \"-s\", els PAR?METRES que no s?n opcions" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "" +#~ "seran afegits a l'hist?ric com una entrada ?nica. Amb l'opci? \"-p\"" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "es realitza una expansi? de l'hist?ric en cada PAR?METRE i mostra el " + +#~ msgid "anything in the history list." +#~ msgstr "resultat, sense al?ar res en l'hist?ric." + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "Llista les tasques actives. Amb l'opci? \"-l\" es llista els" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "identificadors de proc?s a m?s de la informaci? normal; amb l'opci? \n" +#~ "\"-p\" es llista nom?s els identificadors de proc?s." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "Si s'especifica \"-n\", nom?s s'imprimeixen els processos que hagen" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "canviat el seu estat despr?s del seu darrer av?s.\n" +#~ "ID_TASCA restringeix que es mostre una tasca particular." + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "Amb les opcions \"-r\" i \"-s\" es restringeix nom?s la impressi? de" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "les tasques actives i aturades, respectivamente. Sense cap opci?," + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "es mostren l'estat de totes les tasques actives Si s'especifica\n" +#~ "\"-X\" s'executa ORDRE despr?s de que totes les especificacions de" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "" +#~ "tasca que apareixen en PAR?METRES hagen sigut reempla?ades pel proc?s" + +#~ msgid "process group leader." +#~ msgstr "ID del proc?s de la tasca mestressa del grup." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "" +#~ "Suprimeix cada par?metre de ID_TASCA de la taula de tasques actives." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "Envia el SENYAL als processos especificats pel seu PID o pel seu nom" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "de tasca. Si no s'especifica el SENYAL, aleshores s'assumeix" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "SIGTERM. Amb un par?metre de \"-l\" es llista els noms de les" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "senyals; si hi ha un par?metre despr?s de l'opci? \"-l\", es mostra\n" +#~ "el valor num?ric del n?mero de senyal. L'ordre ?kill? ?s " + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "integrada de l'int?rpret per dues raons: permet fer servir els" + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "" +#~ "identificadors de tasca en voltes dels identificadors de proc?s i, si" + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "no heu excedit el l?mit de processos que pots crear-hi, no heu\n" +#~ "d'iniciar un altre proc?s per a finalitzar un altre." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "Cada PARAMETRE ?s una expressi? aritm?tica per a avaluar-se." + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "L'avaluaci? es fa amb enters long sense control de sobreeiximent, si" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "" +#~ "b? la divisi? per 0 ?s capturada i marcada com un error. La seg?ent" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "llista d'operadors s'agrupa dins del mateix nivell de preced?ncia." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "La llista dels nivells est? ordenada de manera decreixent." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tunari minus, m?s" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tnegaci? l?gica i bin?ria" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tmultiplicaci?, divisi?, restant" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\taddici?, substracci?" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tdecalaments bin?ries dreta i esquerra" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tcomparaci?" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tequival?ncia, inequival?ncia" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tAND binari" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tXOR binari" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tOR binari" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tAND l?gic" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tOR l?gic" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpr ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\texpressi? condicional" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tassignaci?" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "" +#~ "nom de la variable ?s reempla?at pel seu valor (convertit for?osament" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "" +#~ "en un enter long) dins d'una expressi?. No cal que la variable tinga" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "" +#~ "activada el seu atribut d'enter per ser utilitzada en una expressi?." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "" +#~ "S'avaluen els operadors per ordre de preced?ncia. Les subexpressions" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "qu? que es troben dins dels par?ntesis s?n avaluades primer i poden" + +#~ msgid "rules above." +#~ msgstr "saltar-se les regles de preced?ncies esmentades." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "Si el darrer PARAMETRE avalua a 0, let retorna 1; altrament, es" + +#~ msgid "otherwise." +#~ msgstr "retorna 1." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "" +#~ "Es llegeix una l?nia des de l'entrada de dades est?ndard, i s'assigna" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "la primera paraula al primer NOM, la segona paraula al segon NOM, i" + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "aix? successivament, assignant-se les ?ltimes paraules als ?ltims" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "NOMs. Nom?s es reconeixen com a delimitadors els car?cters que es" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "troben en $IFS. El codi de retorn ?s zero, mentre no es trobe el fi" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "de fitxer (EOF). Si no s'especifica NOMs, s'al?a la l?nia llegida en" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "la variable REPLY. Si s'especifica l'opci? \"-r\", aix? vol dir que es" + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "tracta d'una entrada de dades directa (\"raw data\"), i es desactiva la" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "barra invertida d'escapada. Si s'especifica l'opci? \"-p\", la cadena" + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "especificada com a par?metre es mostra sense salts de l?nia abans" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "d'intentar llegir-la. Si s'especifica l'opci? \"-a\", s'assignen les" + +#~ msgid "readline is used to obtain the line." +#~ msgstr "" +#~ "paraules llegides a ?n ?ndex seq?encial de MATRIU, incialitzant a\n" +#~ "zero. Si s'especifica l'opci? \"-e\" i l'int?rpret d'ordres ?s\n" +#~ "interactiu, es fa servir \"readline\" per a obtindre la l?nia." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "N. Si s'omet N, l'estat del retorn ?s el de la darrera ordre." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Marca les variables modificades o creades per a exportar-les." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Avisa immediatament de la finalitzaci? d'una tasca." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr "" +#~ " -e Ix immediatament si una ordre ix amb un estat distint de zero." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Desactiva la generaci? de noms de fitxer (globbing)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Recorda la ubicaci? de les ordres quan siguen buscades." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr "" +#~ " -i For?a l'int?rpret d'ordres el mode \"interactiu\". Aquest mode" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " llegeix sempre ?~/.bashrc? en iniciar-se." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr "" +#~ " -k Ubica totes les assignacions de par?metres en l'entorn per una" + +#~ msgid " command, not just those that precede the command name." +#~ msgstr "" +#~ " ordre, no tan sols aquells que precedeix del nom de l'ordre." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Activa el control de tasques." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Llegeix les ordres per? no els executa." + +#~ msgid " -o option-name" +#~ msgstr " -o nom-opci?" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " Especifiqueu la variable corresponent per a nom-opci?:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport el mateix que -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand el mateix que -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs utilitza una interfa? d'edici? de l?nia de\n" +#~ " l'estil d'emacs." + +#~ msgid " errexit same as -e" +#~ msgstr " errexit el mateix que -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall el mateix que -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand el mateix que -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr "" +#~ " ignoreeof l'int?rpret d'ordres no terminar? fins llegir\n" +#~ " el fi de fitxer (EOF)." + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " permet mostrar-se comentaris en les ordres\n" +#~ " interactives" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword el mateix que -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor el mateix que -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber el mateix que -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec el mateix que -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob el mateix que -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify el mateix que -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset el mateix que -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd el mateix que -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical el mateix que -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix canvia el comportament de bash en l'operaci?" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr " per defecte de l'est?ndard 1003.2 per a" + +#~ msgid " match the standard" +#~ msgstr " coincidir amb l'est?ndard" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged el mateix que -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose el mateix que -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr "" +#~ " vi utilitza una intefa? d'edici? de l?nia de\n" +#~ " l'estil de ?vi?" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace el mateix que -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p S'activa quan no coincideixen els identificadors d'usuari real \n" +#~ " i efectiu." + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr " Desactiva el proc?s del fitxer $ENV i la importaci? de les" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr " funcions de l'int?rpret d'ordres. Si es desactiva aquesta" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr "" +#~ " opci?, s'estableix l'identificador d'usuari (uid) i\n" +#~ " l'identificador de grup (gid) efectius per l'uid i gid reals." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Ix despr?s de llegir i executar una ordre." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u Considerar les variables no inicialitzades com un error quan\n" +#~ " se substitu?sca." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr "" +#~ " -v Imprimeix les l?nies d'entrada de dades de l'int?rpret\n" +#~ " d'ordres mentre es llegeixen." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr "" +#~ " -x Imprimeix les ordres i els seus par?metres mentre s'executen." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B l'int?rpret d'ordres realitzar? una expansi? de claus." + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr " -H Activa l'estil ! en la substituci? de l'hist?ric. Aquest" + +#~ msgid " by default." +#~ msgstr " senyalador est? marcat per defecte." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr " -C Evita que els fitxers regulars siguen sobreescrits per la" + +#~ msgid " by redirection of output." +#~ msgstr " redirecci? de l'eixida de dades." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P No rastreja els enlla?os simb?lics quan s'executa ordres com " + +#~ msgid " such as cd which change the current directory." +#~ msgstr " per exemple cd que canvia el directori actual." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "" +#~ "Si feu servir el signe \"+\" en voltes del signe \"-\" desmarcareu els\n" +#~ "senyaladors. Tamb? es poden utilitzar els senyaladors des de la" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "invocaci? de l'int?rpret d'ordres. Es pot trobar la configuraci?" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "actual dels senyaladors en $-. Els restants PAR?METRES n s?n" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "" +#~ "par?metres posicionals i estan assignats, en ordre, a $1, $2, ... $n." + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "" +#~ "Si no s'especifiquen els PAR?METRES, es mostraran totes les variables de\n" +#~ "l'int?rpret d'ordres." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "" +#~ "Esborra la variable o funci? corresponent per a cada NOM. Amb l'opci? " + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "\"-v\", ?unset? opera nom?s en les variables. Amb el senyalador \"-f\"," + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "nom?s en funcions. Amb cap dels dos senyaladors, ?unset? primer" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "" +#~ "intentar? eliminar una variable, i si en falla, aleshores ho intenta" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "amb una funci?. Algunes variables (aix? com CAMI_ACCES i IFS) no es" + +#~ msgid "see readonly." +#~ msgstr "poden esborrar (veure l'opci? \"readonly\")." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "" +#~ "S'assenyalen els NOMs per a exportar-los autom?ticament a l'entorn de " + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "" +#~ "les ordres executades subseq?entment. Si s'especifica l'opci? \"-f\", " + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "els NOMs fan refer?ncia a les funcions. Si no s'especifica NOMs, o si " + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "s'especifica \"-p\", es mostra una llista de tots els noms exportats cap " + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "aquest int?rpret d'ordres. Amb \"-n\" s'esborra les propietats " + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "d'exportaci? per als NOMs subseq?ents. Amb \"--\" s'atura el " + +#~ msgid "processing." +#~ msgstr "tractament subseq?ent de les opcions." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Els NOMs especificats es marquen amb l'atribut de nom?s lectura, els" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "valors dels quals no poden ser canviats per assignacions subseq?ents." + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "" +#~ "Si s'especifica l'opci? \"-f\", aleshores les funcions corresponents als" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "NOMs tamb? se'n marquen. Si no s'especifica par?metres, o si" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "s'especifica \"-p\", es mostra una llista de tots els noms amb l'atribut" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "de nom?s lectura. Amb l'opci? \"-n\" s'esborra l'atribut de nom?s" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "" +#~ "lectura pels NOMs subseq?ents. Amb \"-a\" tracta cada NOM com una\n" +#~ "variable de matriu. Amb el par?metre \"--\" s'atura el tractament\n" +#~ "subseq?ent de les opcions." + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "Si no s'especifica N, s'assumeix el valor com a 1." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "Llegeix i executa ordres de FITXER i retorna. Es fan servir els" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "camins d'acc?s de $PATH per a trobar el directori que cont? FITXER." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "" +#~ "Susp?n l'execuci? d'aquest int?rpret d'ordres fins que reba una senyal" + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "" +#~ "SIGCONT. Si s'especifica \"-f\" no es mostrar? cap missatge d'av?s de" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "si l'int?rpret ?s un d'inici de sessi? (shell login); simplement ho susp?" +#~ "n de\n" +#~ "qualsevol manera." + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "Ix amb l'estat de 0 (cert) o 1 (fals) depenent de l'avaluaci? de " + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "l'EXPRESSIO. Les expressions poden ser un?ries o bin?ries. Les" + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "expressions un?ries sovint es fan servir per a examinar l'estat d'un" + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "fitxer. Tamb? hi ha operadors de cadenes i de comparaci? num?rica." + +#~ msgid "File operators:" +#~ msgstr "Operadors de fitxer:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b FITXER Cert si el fitxer ?s un bloc especial." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr " -c FITXER Cert si el fitxer ?s un car?cter especial." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d FITXER Cert si el fitxer ?s un directori." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e FITXER Cert si el fitxer existeix." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -f FITXER Cert si el fitxer existeix i ?s un fitxer normal." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr " -g FITXER Cert si el fitxer ?s set-group-id." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h FITXER Cert si el fitxer ?s un enlla? simb?lic.\n" +#~ " Utilitzeu \"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L FITXER Cert si el fitxer ?s un enlla? simb?lic." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k FITXER Cert si el fitxer t? activat el seu bit \"sticky\"." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p FITXER Cert si el fitxer ?s un conducte anomenat." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r FITXER Cert si podeu llegir el fitxer." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s FITXER Cert si el fitxer existeix i no ?s buit." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S FITXER Cert si el fitxer ?s un s?col." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr " -t FD Cert si FD ?s obert en una terminal." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr " -u FITXER Cert si el fitxer ?s set-user-id." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w FITXER Cert si podeu escriure el fitxer." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr " -w FITXER Cert si podeu escriure el fitxer." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr " -O FITXER Cert si sou el propietari del fitxer." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr " -G FITXER Cert si sou del grup propietari del fitxer." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " FITXER1 -nt FITXER2\n" +#~ " Cert si fitxer1 ?s tan recent com fitxer2" + +#~ msgid " modification date) file2." +#~ msgstr " (d'acord amb les dates d'?ltima modificaci?)." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr "" +#~ " FITXER1 -ot FITXER2\n" +#~ " Cert si fitxer1 ?s tan antic com fitxer2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr "" +#~ " FITXER1 -ef FITXER2\n" +#~ " Cert si fitxer 1 ?s un enlla? fort cap a fitxer2." + +#~ msgid "String operators:" +#~ msgstr "Operadors de cadena:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z CADENA Cert si la cadena ?s bu?da." + +#~ msgid " -n STRING" +#~ msgstr " -n CADENA" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " CADENA Cert si la cadena no ?s bu?da." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " CADENA1 = CADENA2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Cert si les cadenes s?n iguals." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " CADENA1 != CADENA2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " Cert si les cadenes s?n diferents." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " CADENA1 < CADENA2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Cert si CADENA1 precedeix alfab?ticament CADENA2." + +#~ msgid " STRING1 > STRING2" +#~ msgstr " CADENA1 > CADENA2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Cert si CADENA1 poscedeix alfab?ticament CADENA2." + +#~ msgid "Other operators:" +#~ msgstr "Altres operadors:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! EXPR Cert si l'expressi? ?s falsa." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " EXPR1 -a EXPR2 Cert si ambdues expressions s?n certes." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr " EXPR1 -o EXPR2 Cert si cap d'ambdues expresi?ns s?n certes." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " arg1 OP arg2 C?lcul aritm?tic. OP ?s una de les seg?ents" + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " opcions: -eq, -ne, -lt, -le, -gt, or -ge." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "Els operadors aritm?tics binaris retornen un valor de cert si " + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "" +#~ "PARAMETRE1 ?s 'igual', 'diferent', 'menys que', 'menys o igual que'," + +#~ msgid "than ARG2." +#~ msgstr "'m?s que', o 'm?s o igual que', el PARAMETRE2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "Es tracta del sin?nim de l'ordre integrada ?test?, per? el darrer " + +#~ msgid "the shell." +#~ msgstr "processos des de l'int?rpret d'ordres." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "L'ordre especificada en PARAMETRE s'ha de llegir i executar quan" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "l'int?rpret d'ordres rep alguna senyal de SIGNAL_SPEC. Si s'omet" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "PARAMETRE s'inicialitzen totes les senyals especificades als seus" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "corresponents valors originals Si el PARAMETRE ?s una cadena buida" + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "" +#~ "l'int?rpret, i les ordres que els invoquen, ignoren cada SIGNAL_SPEC." + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "Si s'especifica SIGNAL_SPEC com EXIT(0), s'executa l'ordre" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "" +#~ "especificada en PARAMETRE despr?s de la finalitzaci? de la sessi? de\n" +#~ "l'int?rpret d'ordres. Si s'especifica DEBUG en SIGNAL_SPEC, s'executa" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "" +#~ "l'ordre especificada en PARAMETRE despr?s de la finalitzaci? de la\n" +#~ "sessi? de l'int?rpret d'ordres. Si s'especifica \"-p\" en PARAMETRE" + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "aleshores es mostren les ordres de ?trap? associades amb cadascuna de\n" +#~ "les especificacions del SENYAL. Si no s'especifica cap par?metre," + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "?trap? mostra una llista d'ordres associades amb cadascun dels n?meros\n" +#~ "de senyal. L'especificaci? del SENYAL pot ser b? un nom de senyal" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "especificat en , b? tindre un valor num?ric. L'ordre ?trap\n" +#~ "-l? mostra una llista dels noms de senyal i els seus corresponents" + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "n?meros. Observeu que una senyal pot ser lliurada a l'int?rpret" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "d'ordres amb ?kill -signal $$?." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "" +#~ "Per a cada NOM, indica com s'hauria d'interpretar si es fa servir com " + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "" +#~ "Si es fa servir l'opci? \"-t\", retorna una paraula ?nica que pot ser" + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "\"alias\", \"keyword\", \"function\", \"builtin\", \"file\" o \"\", si un " +#~ "NOM ?s" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "un ?lies, una paraula reservada, una funci?, una ordre integrada, un" + +#~ msgid "or unfound, respectively." +#~ msgstr "fitxer del disc o no trobat, respectivament." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "Si es fa servir l'opci? \"-p\", o b? retorna el nom del fitxer del disc" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "" +#~ "que es podria executar, o b? no retorna res si l'opci? \"-t\" no\n" +#~ "retornara \"file\"." + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "Si es fa servir el senyalador \"-a\", mostra totes les ubicacions que" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "contenen un executable anomenat \"file\". Aix? inclou per a ?lies i" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "" +#~ "funcions si, i nom?s si, el senyalador \"-p\" tampoc no es fa servir." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "" +#~ "L'ordre integrada ?type? accepta que s'especifique \"-all\", \"-path\", i" + +#~ msgid "respectively." +#~ msgstr "" +#~ "\"-type\", per a les opcions de \"-a\", \"-p\", i \"-t\", respectivament." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "L'ordre integrada ?ulimit? inclou el control sobre els recursos" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "disponibles als processos iniciats per l'int?rpret, en sistemes que" + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "" +#~ "ho permeten. Si s'especifica una opci?, ser? especificada com\n" +#~ "segueix:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tutilitza el l?mit dels recursos l?gics" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tutilitza el l?mit dels recursos de maquinari" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tmostra tots els l?mits actuals" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr "" +#~ " -c\tlimita la grand?ria m?xima dels fitxers de bolcat de mem?ria" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\tlimita la grand?ria m?xima d'un segment de proc?s de dades" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\tlimita la grand?ria m?xima d'una variable resident" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tlimita la grand?ria m?xima de la pila" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tlimita el temps m?xim d'an?lisi per la UCP en segons" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\tlimita la grand?ria d'un fitxer creat per l'int?rpret" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tlimita la grand?ria de la mem?ria interm?dia d'un conducte" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tlimita el nombre m?xim utilitzable de descriptors de fitxer" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tlimita el nombre m?xim de processos per usuari" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tlimita la grand?ria de la mem?ria virtual" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "Si s'especifica LIMIT, aquest ser? el nou valor del recurs " + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "especificat. Altrament, mostra el valor actual del recurs" + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "especificat. Si no s'especifica cap opci?, aleshores s'assumeix" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "l'opci? \"-f\". Els valors s'especifiquen en increments de 1k, tret del" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "" +#~ "cas de l'opci? \"-t\", que es en segons, de l'opci? \"-p\", que es tracta" + +#~ msgid "processes." +#~ msgstr "" +#~ "d'increments de 512 octets, i de l'opci? \"-u\", que ?s un recompte\n" +#~ "num?ric de processos." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "La m?scara dels modes d'acc?s durant la creaci? d'un fitxer ?s MODE." + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "Si s'omet MODE, o si s'especifica l'opci? \"-S\", es mostra el valor" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "" +#~ "actual de la m?scara. Amb l'opci? \"-S\" es mostra de manera simb?lica;" + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "d'altra manera l'eixida de dades ?s n?meros octals. Si MODE comen?a" + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "per un d?git, aquest ser? interpretat com un n?mero octal, altrament" + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "s'accepten els valors simb?lics de ?chmod? (veure ?man?, secci? 1)." + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "Espera la fi d'execuci? d'un proc?s especificat i informa el seu" + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "" +#~ "estat de fi d'execuci?. Si no s'especifica N, s'espera per tots els" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "processos fills actuals, i el codi de retorn ?s zero. La variable N" + +#~ msgid "pipeline are waited for." +#~ msgstr "" +#~ "pot ser un IDentificador de proc?s o l'especificaci? d'una tasca; si\n" +#~ "s'especifica una especificaci? de tasca, s'esperen per tots els\n" +#~ "processos dels conductes." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "i el codi de retorn ?s zero. El par?metre N ?s un IDentificador de" + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "" +#~ "proc?s; si aquest no s'hi especifica, s'espera per tots els processos\n" +#~ "fills de l'int?rpret d'ordres." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "" +#~ "L'ordre de repetici? ?for? executa una seq??ncia d'ordres per a cada" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "item de la llista. Si no s'especifica l'expressi? \"in WORDS...;\"," + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "" +#~ "aleshores es fa servir el contingut de \"$@\". Per a cada element que" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "" +#~ "hi ha en PARAULES, s'inicialitza NOM a aquest element, i s'executen\n" +#~ "les ORDRES." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "S'expandeix les PARAULES, generant-se una llista de paraules. Es" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "mostra el conjunt de les paraules expandides per l'eixida d'error" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "" +#~ "est?ndard, precedit d'un n?mero. Si no s'especifica l'expressi? \"in" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "WORDS\", es fa servir el contingut de \"$@\". Aleshores s'exhibeix" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "l'indicador de PS3 i es llegeix la l?nia des de l'entrada de dades" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "" +#~ "est?ndard. Si la l?nia consisteix d'un n?mero corresponent a una de" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "les paraules exhibides, aleshores el valor de la variable NOM" + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "s'inicialitza amb aquesta paraula. Si la l?nia ?s buida, la variable" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "" +#~ "PARAULES i l'indicador s'exhibeixen una altra vegada. Si es detecta" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "" +#~ "un la fi del fitxer (EOF), l'ordre termina. Si es llegeix qualsevol" + +#~ msgid "until a break or return command is executed." +#~ msgstr "" +#~ "altre valor, s'inicialitzar? el valor de NOM com nul. La l?nia\n" +#~ "llegida s'al?a en la variable REPLY. Les ordres al?ades en el\n" +#~ "par?metre ORDRES s'executa despr?s de cada selecci? fins que s'execute\n" +#~ "una ordre de ?break? o ?return?." + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "" +#~ "concord?ncia del valor en PARAULA amb del valor en PATRO. Es fa\n" +#~ "servir el signe \"|\" per a separar m?ltiples patrons." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "S'executen els ORDRES ?if?. Si l'estat d'eixida ?s zero, aleshores" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "s'executen les ORDRES ?then?. Altrament, s'executen cadascun de les" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "ORDRES de ?elif?, i si l'estat d'eixida ?s zero, les corresponents" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "ORDRES de ?else? s'executen, si n'hi han. L'estat d'eixida ?s el" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "corresponent de la darrera ordre executada, o zero si no hi ha cap" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "condici? resolta com a certa." + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "de la instrucci? ?while? tinga un estat d'eixida igual a zero." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "de la instrucci? ?until? tinga un estat d'eixida que no siga zero." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Crea una ordre simple invocada pel NOM que executa ORDRES. Els " + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "" +#~ "par?metres especificats al llarg de la l?nia de l'ordre es passen a la" + +#~ msgid "function as $0 .. $n." +#~ msgstr "funci? com a $0 ... $n." + +#~ msgid "entire set of commands." +#~ msgstr "redireccionar un conjunt sencer d'ordres." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "A?? ?s semblant amb qu? passa amb l'ordre ?fg?. Repr?n una tasca " + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "aturada o ubicada en segon pla. Si especifiqueu DIGITS, aleshores es" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "fa servir aquesta tasca. Si especifiqueu PARAULES, aleshores es fa" + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "" +#~ "servir la tasca, el nom de la qual comence pel valor en PARAULA. Si\n" +#~ "s'especifica la tasca comen?ant pel signe \"&\" s'ubica la tasca en\n" +#~ "segon pla." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Cont? la versi? de Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "CDPATH Cont? una llista de directoris, separats" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "" +#~ " pel signe de dos punts, per a cercar quan el par?metre" + +#~ msgid "\t\tdirectory." +#~ msgstr "" +#~ " especificat per a l'ordre ?cd? no es troba en el\n" +#~ " directori actual." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE Cont? el nom del fitxer on ?s al?ada l'hist?ric\n" +#~ " d'ordres executades." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "" +#~ "HISTFILESIZE Cont? el nombre m?xim de l?nies que un fitxer pot \n" +#~ " contindre." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE Cont? el nombre m?xim de l?nies de l'hist?ric que " + +#~ msgid "\t\tshell can access." +#~ msgstr " l'int?rpret d'ordres pot accedir." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "" +#~ "HOME Cont? el nom cam? d'acc?s cap el directori de la\n" +#~ " vostra sessi? d'usuari." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE Cont? la mena de CPU sota la qual aquesta versi?\n" +#~ " de bash est? corrent." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREOEOF Controla l'acci? de l'int?rpret d'ordres quan rep un" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr " car?cter de fi de fitxer (EOF) com a ?nica entrada." + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr " Si s'activa, aleshores el seu valor ?s el nombre de" + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "" +#~ " car?cters EOF que pot ser mostrat en un afilera d'una" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ " l?nia bu?da despr?s de que l'int?rpret eixir? (per\n" +#~ " omissi? el valor ?s 10). Quan ?s desactivat, EOF vol\n" +#~ " dir que s'ha finalitzat l'entrada de dades." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK Cont? el temps, en segons, pel qual bash cada vegada \n" +#~ " comprova si hi ha nou correu." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "MAILPATH Cont? una llista de noms de fitxers, separats pel " + +#~ msgid "\t\tfor new mail." +#~ msgstr " signe \":\", on Bash comprova si hi ha correu nou." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "" +#~ "OSTYPE Cont? la versi? d'Unix sota la qual aquesta versi? de \n" +#~ " Bash est? corrent." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "PATH Cont? una llista de directoris, separats pel signe " + +#~ msgid "\t\tlooking for commands." +#~ msgstr " \":\", per on es recorrer? quan es busca una ordre." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "" +#~ "PROMPT_COMMAND Cont? l'ordre que s'executar? despr?s de mostrar-se " + +#~ msgid "\t\tprimary prompt." +#~ msgstr " cada indicador primari." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 Cont? la cadena de l'indicador primari." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 Cont? la cadena de l'indicador secundari." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM Cont? el nom de la mena de terminal actual." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "auto_resume Cont? el nom de l'ordre que es buscar? primer d'una" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "" +#~ " llista de tasques actualment aturades. Si se'n troba," + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "" +#~ " aquesta tasca s'ubicar? en primer pla. Amb el valor" + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr " de \"exact\" el nom de l'ordre ha de coincidir" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr " exactament una ordre qu? es trobe a la llista de" + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr " tasques aturades. Amb \"substring\", la paraula de" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "" +#~ " l'ordre ha de coincidir parcialment amb el nom de la" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "" +#~ " tasca (una subcadena d'aquesta). Altrament, amb\n" +#~ " qualsevol altre valor la paraula de l'ordre ha de\n" +#~ " coincidir amb un prefix de la tasca aturada." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Si no ?s buit, s'al?ar? juntament les ordres escrites" + +#~ msgid " a single history line." +#~ msgstr "" +#~ " en m?ltiples l?nies en una sola l?nia de l'hist?ric." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "histchars Cont? els car?cters que controlen l'expansi? de " + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr " l'hist?ric i la substituci? r?pida. El primer" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr " car?cter ?s el de substituci? de l'hist?ric," + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr " normalment \"!\". El segon ?s el de \"substituci?" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "" +#~ " r?pida\", normalment \"^\". El tercer ?s el de\n" +#~ " \"comentari de l'hist?ric\", normalment \"#\"." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "HISTCONTROL Si s'hi especifica \"ignorespace\", no s'introduir?" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "" +#~ " l?nies que comencen amb un espai o de tabulaci? en la" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "" +#~ " llista de l'hist?ric. Si s'activa amb \"ignoredups\"," + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "" +#~ " no s'introduir? l?nies que concidisquen amb la darrera" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "" +#~ " l?nia executada. Amb \"ignoreboth\" s'actuar? amb els" + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr " dos criteris anteriors alhora. Desactivada, o" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "" +#~ " especificant-se qualsevol altre valor, que no siga un\n" +#~ " dels esmentats anteriorment, al?a totes les l?nies a\n" +#~ " la llista de l'hist?ric." + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "" +#~ "Commuta els valors de les variables, controlant els comportaments \n" +#~ "opcionals." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "" +#~ "El senyalador ?-s? activa cada variable de OPTNAME; el senyalador \"-u\" " + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "desactiva cada OPTNAME. El senyalador \"-q\" suprimeix l'eixida de" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "dades; l'estat d'eixida indica si cada OPTNAME ?s activat o no." + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "L'opci? \"o\" restringeix els OPTNAMEs d'aquells definits per a" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "utilitzar-ho amb l'ordre ?set -o?. Sense cap opci?, o amb l'opci?" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "" +#~ "\"-p\", s'exhibeix una llista de totes les opcions activables, amb una" + +#~ msgid "not each is set." +#~ msgstr "indicaci? si ja ho ?s o no." diff --git a/src/bin/bash/po/cs.gmo b/src/bin/bash/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..42ae24650755ddde67db3d901417d4bf63a40585 GIT binary patch literal 153701 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Ð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 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/cs.po b/src/bin/bash/po/cs.po new file mode 100644 index 0000000000..986c4ce590 --- /dev/null +++ b/src/bin/bash/po/cs.po @@ -0,0 +1,6002 @@ +# 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. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-09-07 13:09+0200\n" +"Last-Translator: Petr Pisar \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "chybný podskript pole" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: Äíslované pole nezle pÅ™evést na pole asociativní" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: neplatný klÃ­Ä asociativního pole" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: pÅ™es neÄíselný indexu nelze dosadit" + +# FIXME: subscript je klicove slovo bashe 4 nebo skutecne podprogram? +# pÅ™iÅ™azuje se do pole nebo pole nÄ›kam? +#: arrayfunc.c:517 +#, fuzzy, 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 podprogram" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nelze vytvoÅ™it: %s" + +#: bashline.c:3413 +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:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: první nebílý znak není „\"“" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ne zavírající „%c“ v %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: chybí dvojteÄkový oddÄ›lovaÄ" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: chybný název klávesové mapy" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nelze Äíst: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nelze zruÅ¡it vazbu" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: neznámé jméno funkce" + +#: builtins/bind.def:303 +#, 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:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s lze vyvolat pÅ™es " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "poÄet smyÄek" + +#: builtins/break.def:137 +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:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Vrací kontext aktuálního volání podrutiny." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "není nestavena HOME" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "není nastaveno OLDPWD" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "řádek %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "varování: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: užití: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "příliÅ¡ mnoho argumentů" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: pÅ™epínaÄ vyžaduje argument" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vyžadován Äíselný argument" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: nenalezeno" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: chybný pÅ™epínaÄ" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: chybný název pÅ™epínaÄe" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: není platným identifikátorem" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "neplatné osmiÄkové Äíslo" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "chybné Å¡estnáctkové Äíslo" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "chybné Äíslo" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: chybné urÄení signálu" + +#: builtins/common.c:257 +#, 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:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: promÄ›nná pouze pro Ätení" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s mimo rozsah" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s mimo rozsah" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: žádná taková úloha" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: žádné řízení úloh" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "žádné řízení úloh" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: omezeno" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "omezeno" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: není vestavÄ›ným příkazem shellu" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "chyba zápisu: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: nejednoznaÄné urÄení úlohy" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: neplatný název akce" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: žádné doplňování neurÄeno" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "doplňovací funkce se právÄ› nevykonává" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "může být použito jen ve funkci" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ nezle použít na výrobu funkce" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkce jen pro Ätení" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: takto nelze likvidovat pole" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: asociativní pole nelze pÅ™evést na Äíslované pole" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dynamické nahrávání není dostupné" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "sdílený objekt %s nelze otevřít: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: není dynamicky nahráno" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nelze smazat: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: je adresářem" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: není obyÄejný soubor" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: soubor je příliÅ¡ velký" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: binární soubor nelze spustit" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nelze provést: %s" + +# FIXME: Toto je literál, jedná se o syntaxi příkazu, který nemá žádné +# parametry? Nebo se jedná o zprávu shellu pÅ™i odhlášení? +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "toto není login shell: použijte „exit“" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Jsou zde pozastavení úlohy.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Jsou zde běžící úlohy.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "žádný příkaz nenalezen" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "urÄení historie" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: doÄasný soubor nelze otevřít: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "souÄasný" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "hashování zakázáno" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabulka hashů je prázdná\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "zásahů\tpříkaz\n" + +#: builtins/help.def:130 +#, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nelze otevřít: %s" + +#: builtins/help.def:337 +#, 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“, aby ste " +"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:154 +msgid "cannot use more than one of -anrw" +msgstr "nelze použít více jak jeden z -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "místo v historii" + +#: builtins/history.def:365 +#, 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:197 +#, 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:260 +msgid "Unknown error" +msgstr "Neznámá chyba" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "oÄekáván výraz" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: chybné urÄení deskriptoru souboru" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: neplatný deskriptor souboru: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: chybný poÄet řádků" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: chybný poÄátek pole" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: neplatné množství mezi voláními" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "prázdný název promÄ›nné typu pole" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "je vyžadována podpora promÄ›nných typu pole" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: postrádám formátovací znak" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: neplatný formátovací znak" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "varování: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "u \\x chybí Å¡estnáctková Äíslovka" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "žádný další adresář" + +#: builtins/pushd.def:462 +msgid "" +msgstr "<žádný aktuální adresář>" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "prázdný zásobník adresářů" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "poÅ™adí v zásobníku adresářů" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: chybné urÄení Äasového limitu" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "chyba Ätení: %d: %s" + +#: builtins/return.def:73 +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:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "funkci i promÄ›nnou nelze ruÅ¡it souÄasnÄ›" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nelze zruÅ¡it" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: není (promÄ›nnou typu) pole" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: není funkcí" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "poÄet shiftů" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "pÅ™epínaÄ shellu nelze zároveň nastavit a zruÅ¡it" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: soubor nenalezen" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "nelze pozastavit" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "login shell nelze pozastavit" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s je alias na „%s“\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je klíÄové slovo shellu\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkce\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je souÄást shellu\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s je zahashován (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: chybný argument s limitou" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: chybný příkaz" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: limit nelze zjistit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: limit nelze zmÄ›nit: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "osmiÄkové Äíslo" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: chybný operátor symbolických práv" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: chybný znak symbolický práv " + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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…" + +#: error.c:405 +msgid "unknown command error" +msgstr "chyba neznámého příkazu" + +#: error.c:406 +msgid "bad command type" +msgstr "chybný druh příkazu" + +#: error.c:407 +msgid "bad connector" +msgstr "chybný konektor" + +#: error.c:408 +msgid "bad jump" +msgstr "chybný skok" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nevázaná promÄ›nná" + +#: eval.c:181 +#, c-format +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:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "chyba v rouÅ™e" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: příkaz nenalezen" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: chybný interpretr" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "úroveň rekurze výrazu byla pÅ™ekroÄena" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "zásobník rekurze podtekl" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntaktická chyba ve výrazu" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "pokus o pÅ™iÅ™azení do ne-promÄ›nné" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "dÄ›lení nulou" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "chyba: chybný expassing token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "v podmínÄ›ném výrazu oÄekávána „:“" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "mocnitel menší než 0" + +#: expr.c:826 +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:854 +msgid "missing `)'" +msgstr "postrádám „)“" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntaktická chyba: oÄekáván operand" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaktická chyba: chybný aritmetický operátor" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (chybný token je „%s“)" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "chybný aritmetický základ" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "hodnot je pro základ příliÅ¡ velká" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: chyba výrazu\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: rodiÄovské adresáře nejsou přístupné" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "na deskriptoru %d nelze resetovat režim nodelay" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp roury" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forknutý PID %d se objevil v běžící úloze %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" + +# FIXME: in the_pipeline znamená do nebo v? +#: jobs.c:1110 +#, fuzzy, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: proces %5ld (%s) do the_pipeline" + +#: jobs.c:1113 +#, 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:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: žádný takový PID" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signál %d" + +# FIXME: rod a zkontrolovat následující +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Dokonán" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Pozastaven" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Pozastaven (%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Běží" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Dokonán (%d)" + +# FIXME: Jedná se o způsob ukonÄení zavoláním funkce exit(%d)? +#: jobs.c:1459 +#, fuzzy, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Stav neznámý" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped [obraz pamÄ›ti uložen]) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (cwd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid na potomku (z %ld na %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: PID %ld není potomkem tohoto shellu" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Žádný záznam o procesu %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: úloha %d je pozastavena" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: úloha skonÄila" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: úloha %d je již na pozadí" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: řádek %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped [obraz pamÄ›ti uložen])" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(cwd nyní: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp selhalo" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplína linky" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nelze nastavit skupinu procesů terminálu (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "žádná správa úloh v tomto shellu" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: pÅ™edpoklad nesplnÄ›n: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "není známo" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok v seznamu uvolnÄ›ných zbit" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: zavoláno s argumentem již uvolnÄ›ného bloku" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: zavoláno s argumentem nenaalokovaného bloku" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:902 +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:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:1022 +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:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "síťové operace nejsou podporovány" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "V $_ máte poÅ¡tu" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "V $_ máte novou poÅ¡tu" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PoÅ¡ta v %s je pÅ™eÄtená\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "chyba syntaxe: vyžadován aritmetický výraz" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "chyba syntaxe: neoÄekávaný „;“" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "chyba syntaxe: „((%s))“" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: chybný druh instrukce %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrukce pÅ™esmÄ›rování „%d“ mimo rozsah" + +#: parse.y:2986 parse.y:3218 +#, 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:3722 +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:3727 +#, 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:3731 +msgid "syntax error in conditional expression" +msgstr "chyba syntaxe ve výrazu podmínky" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "neoÄekávaný token „%s“, oÄekávána „)“" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "oÄekávána „)“" + +#: parse.y:3841 +#, 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:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "neoÄekávaný argument u podmínkového unárního operátoru" + +#: parse.y:3885 +#, 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:3889 +msgid "conditional binary operator expected" +msgstr "oÄekáván podmínkový binární operátor" + +#: parse.y:3906 +#, 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:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "neoÄekávaný argument u podmínkového binárního operátoru" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "neoÄekávaný token „%c“ v podmínkovém příkazu" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "neoÄekávaný token „%s“ v podmínkovém příkazu" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "neoÄekávaný token %d v podmínkovém příkazu" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "chyba syntaxe poblíž neoÄekávaného tokenu „%s“" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "chyba syntaxe poblíž „%s“" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "chyba syntaxe: nenadálý konec souboru" + +#: parse.y:5223 +msgid "syntax error" +msgstr "chyba syntaxe" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Shell lze ukonÄit příkazem „%s“.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "nenadálý konec souboru pÅ™i hledání odpovídající „)“" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "doplňování: funkce „%s“ nenalezena" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULLOVà COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: chybná propojka „%d“" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: chybný formátovací znak" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "deskriptor souboru mimo rozsah" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: nejednoznaÄné pÅ™esmÄ›rování" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: existující soubor nelze pÅ™epsat" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: omezeno: výstup nelze pÅ™esmÄ›rovat" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "pro „here“ dokument nelze vytvoÅ™it doÄasný soubor: %s" + +#: redir.c:517 +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:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "chyba pÅ™esmÄ›rování: deskriptor souboru nelze duplikovat" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "nelze nalézt /tmp, vytvoÅ™te jej, prosím!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musí být platným názvem pro adresář" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: chybný pÅ™epínaÄ" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Nemám žádné jméno!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, verze %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "Dlouhé GNU pÅ™epínaÄe:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "PÅ™epínaÄe shellu:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD nebo -c příkaz nebo -O shopt_pÅ™epínaÄ\t(pouze pÅ™i vyvolání)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s nebo -o pÅ™epínaÄ\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Chyby nahlásíte příkazem „bashbug“.\n" + +#: sig.c:583 +#, 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" + +# FIXME: rod a následující +#: siglist.c:54 +#, fuzzy +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" + +# FIXME: WTF? +# „Zámek záznamu“ nebo „Zaznamenej zámek“ +#: siglist.c:170 +#, fuzzy +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 +msgid "Unknown Signal #" +msgstr "Neznámé Äíslo signálu" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Neznámý signál Ä. %d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: seznam nelze pÅ™iÅ™adit do prvku pole" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "nelze vyrobit rouru za úÄelem substituce procesu" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "nelze vytvoÅ™it potomka za úÄelem substituce procesu" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "pojmenovanou rouru %s nelze otevřít pro Ätení" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "nelze vytvoÅ™it rouru pro substituci příkazu" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "nelze vytvoÅ™it potomka pro substituci příkazu" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr null nebo nenastaven" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podÅ™etÄ›zce < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substituce" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: takto nelze pÅ™iÅ™azovat" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "chybná substituce: v %s chybí uzavírací „`“" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "žádná shoda: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "oÄekáván argument" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oÄekáván celoÄíselný výraz" + +#: test.c:262 +msgid "`)' expected" +msgstr "oÄekávána „)“" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "oÄekávána „)“, nalezeno %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oÄekáván unární operátor" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oÄekáván binární operátor" + +#: test.c:806 +msgid "missing `]'" +msgstr "postrádám „]“" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "neplatné Äíslo signálu" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: chybný signál %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "chyba pÅ™i importu definice „%s“" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "neplatný znak %d v exportstr pro %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "v exportstr pro %s chybí „=“" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: hlava shell_variables není kontextem funkce" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: chybí kontext global_variables" + +#: variables.c:3881 +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í" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright © 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, verze %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "Toto je svobodné programové vybavení: máte právo jej mÄ›nit a šířit.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "VEÅ KERÉ ZÃRUKY chybí, jak jen zákon dovoluje.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nelze alokovat %'lu bajtů (%'lu bajtů alokováno)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nezle alokovat %'lu bajtů" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nelze pÅ™ealokovat %'lu bajtů (%'lu bajtů alokováno)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: nelze alokovat %'lu bajtů" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: nelze alokovat %'lu bajtů (%'lu bajtů alokováno)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: nelze alokovat %'lu bajtů" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %s:%d: nelze pÅ™ealokovat %'lu bajtů (%'lu bajtů alokováno)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: nelze alokovat %'lu bajtů" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [název[=hodnota] …]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] název [název…]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-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á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:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [vestavÄ›ný-příkaz-shellu [argument…]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [výraz]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [adr]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "true" + +#: builtins.c:72 +msgid "false" +msgstr "false" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] příkaz [argument…]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [název[=hodnota]…]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] název[=hodnota]…" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [pÅ™epínaÄ] název[=hodnota]…" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [argument…]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [argument…]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f soubor] [název…]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [argument…]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring name [argument]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a název] [příkaz [argument…]] [pÅ™esmÄ›rování…]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [úloha]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [úloha…]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p název_cesty] [-dt] [název…]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [vzorek…]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [úloha…]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let argument [argument…]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a pole] [-d oddÄ›lovaÄ] [-i text] [-n p_znaků] [-p výzva] [-t " +"limit] [-u fd] [jméno…]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o název_pÅ™epínaÄe] [argument…]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [jméno…]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [název[=hodnota] …] nebo export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [název[=hodnota] …] nebo readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source název_souboru [argumenty]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". název_souboru [argumenty]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [výraz]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ argument… ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[argument] signal_spec…]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] název [název…]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mód]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NÃZEV [in SLOVECH…] ; do PŘÃKAZY; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( výr1; výr2; výr3 )); do PŘÃKAZY; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÃZEV [in SLOVA…;] do PŘÃKAZY; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] kolona" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SLOVO in [VZOR [| VZOR]…) PŘÃKAZY ;;]… esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PŘÃKAZY; do PŘÃKAZY; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PŘÃKAZY; do PŘÃKAZY; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function jméno { PŘÃKAZY ; } nebo jméno () { PŘÃKAZY ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ PŘÃKAZY ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "úloha [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( výraz ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ výraz ]]" + +# XXX: "variable" je literál na seznamy vestavÄ›ných příkazů +#: builtins.c:210 +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:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | adresář]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [název_volby…]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v promÄ›nná] formát [argumenty]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-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:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o 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:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o pÅ™epínaÄ] [název…]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u fd] [-C volání] [-c " +"množství] [pole]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u fd] [-C volání] [-c " +"množství] [pole]" + +#: builtins.c:254 +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:276 +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" +" Vrací úspÄ›ch, pokud NÃZEV není neexistující alias." + +#: builtins.c:289 +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" +" \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. -" +"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" +" \n" +" Návratový kód:\n" +" bind vrací 0, pokud není zadán nerozpoznaný pÅ™epínaÄ nebo nedojde " +"k chybÄ›." + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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\tvynutí následování symbolických odkazů\n" +" -P\tnaÅ™izuje použít fyzickou adresářovou strukturu namísto\n" +" \tnásledování symbolických odkazů\n" +" \n" +" Symbolické odkazy se implicitnÄ› následují, jako by bylo zadáno „-L“.\n" +" \n" +" Návratový kód:\n" +" Vrací 0, byl-li adresář zmÄ›nÄ›n, jinak nenulovou hodnotu." + +#: builtins.c:411 +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" +" \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\tvypíše hodnotu $PWD, pokud pojmenovává souÄasný pracovní\n" +" \tadresář\n" +" -P\tvypíš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:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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\tpro PATH bude použita implicitní hodnota, která zaruÄuje,\n" +" \tže budou nalezeny vÅ¡echny standardní nástroje\n" +" -v\tzobrazí popis PŘÃKAZU podobný vestavÄ›nému příkazu „type“\n" +" -V\tzobrazí 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an 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\tomezí akce nebo výpis na názvy funkcí a deklarace\n" +" -F\tomezí výpis jen na názvy funkcí (a Äíslo řádku a název\n" +" \tzdrojového souboru, je-li zapnuto ladÄ›ní)\n" +" -p zobrazí atributy a hodnotu každého NÃZVU\n" +" \n" +" PÅ™epínaÄe, které nastavují atributy:\n" +" -a\tuÄiní NÃZVY Äíslovanými poli (je-li podporováno)\n" +" -A\tuÄiní NÃZVY asociativními poli (je-li podporováno)\n" +" -i\tpÅ™iÅ™adí NÃZVÅ®M atribut „integer“ (Äíslo)\n" +" -l\tpÅ™evede NÃZVY na malá písmena v dobÄ› pÅ™iÅ™azení\n" +" -r\tuÄiní NÃZVY jen pro Ätení\n" +" -t\tpÅ™iÅ™adí NÃZVÅ®M atribut „trace“ (sledování)\n" +" -u\tpÅ™evede NÃZVY na velká písmena v dobÄ› pÅ™iÅ™azení\n" +" -x\tvyexportuje 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“.\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ›." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Nastaví hodnoty a atributy promÄ›nných\n" +" \n" +" Příkaz je zastaralý. Vizte „help declare“." + +#: builtins.c:520 +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, an error occurs,\n" +" 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í může 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 a\n" +" vykonává-li shell funkci." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two 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 na standardním výstupu a ukonÄí je z novým " +"řádkem.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n\tnepÅ™ipojuje nový řádek\n" +" -e\tzapne interpretování následujících znaků uvozených zpÄ›tným " +"lomítkem\n" +" -E\texplicitnÄ› 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\tpoplach (zvonek)\n" +" \\b\tbackspace\n" +" \\c\tpotlaÄí další výstup\n" +" \\E\tznak escapu\n" +" \\f\tposun formuláře (form feed)\n" +" \\n\tnový řádek\n" +" \\r\tnávrat vozíku\n" +" \\t\tvodorovný tabulátor\n" +" \\v\tsvislý tabulátor\n" +" \\\\\tzpÄ›tné lomítko\n" +" \\0nnn\tznak, jehož ASCII kód je NNN (osmiÄkovÄ›). NNN smí být\n" +" \t0 až 3 osmiÄkové Äíslice\n" +" \\xHH\tosmibitový znak, jehož hodnota je HH (Å¡estnáctkovÄ›). HH smí\n" +" \tbýt jedna nebo dvÄ› Å¡estnáctkové Äíslice\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, nedojde-li k chybÄ› zápisu na výstup." + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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\tpÅ™edá název jakožto nultý argument PŘÃKAZU\n" +" -c\t\tspustí PŘÃKAZ s prázdným prostÅ™edím\n" +" -t\t\tdo 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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\t\tzapomene zapamatovaná umístÄ›ní každého NÃZVU\n" +" -l\t\tvypíše v takové podobÄ›, kterou lze opÄ›t použít jako vstup\n" +" -p cesta\tpoužije NÃZEV_CESTY jako plnou cestu k NÃZVU\n" +" -r\t\tzapomene vÅ¡echna zapamatovaná umístÄ›ní\n" +" -t\t\tvypíše zapamatované umístÄ›ní každého NÃZVU a každému umístÄ›ní\n" +" \t\tpÅ™edepíše odpovídající NÃZEV, bylo zadáno více NÃZVÅ®\n" +" Argumenty:\n" +" NÃZEV\t\tKaždý NÃZEV je vyhledán v $PATH a pÅ™idán do seznamu\n" +" \t\tzapamatovaný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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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\tvypíše krátké pojednání na každé téma\n" +" -m\tzobrazí použití v jakoby manuálovém formátu\n" +" -s\tvypíše pouze krátký popis použití o každém příkazu odpovídajícímu\n" +" \tVZORKU\n" +" \n" +" Argumenty:\n" +" VZOREK\tVzorek 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Ä." + +# FIXME: bash-4.0-pre1: Orphaned line between -w and -p option. It belongs to -n. +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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\tvyprázdní seznam historie smazáním vÅ¡ech položek\n" +" -d pozice\tsmaže ze seznamu historie položku na pozici POZICE\n" +" \n" +" -a\tpÅ™ipojí řádky historie z této relace do souboru historie\n" +" -n\tnaÄte vÅ¡echny řádky historie, které jeÅ¡tÄ› nebyly naÄteny,\n" +" \tze souboru historie a pÅ™ipojí je do seznamu historie\n" +" -r\tnaÄte soubor historie a obsah pÅ™ipojí do seznamu historie\n" +" -w\tzapíše souÄasnou historii do souboru historie\n" +" \n" +" -p\tprovede expanzi historie na každém ARGUMENTU a výsledek zobrazí,\n" +" \taniž by cokoliv uložil do seznamu historie\n" +" -s\tpÅ™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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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\tvypíše navíc ID procesů\n" +" -n\tvypíše pouze procesy, které od minulého oznámení zmÄ›nily stav\n" +" -p\tvypíše pouze ID procesů\n" +" -r\tzúží výstup jen na běžící úlohy\n" +" -s\tzúží 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:879 +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" +" \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\todstraní vÅ¡echny úlohy, pokud nebyla žádná ÚLOHA urÄena\n" +" -h\toznaÄí každou ÚLOHU tak, že jí nebude zaslán SIGHUP, až shell sám\n" +" \tobdrží tento signál\n" +" -r\todstraní 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:898 +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" +" \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 "" +"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\tSIG je název signálu\n" +" -n sig\tSIG je Äíslo signálu\n" +" -l\tvypíše Äísla signálů; pokud „-l“ následují argumenty, má\n" +" \tse za to, že se jedná o Äísla signálů, pro které se mají vyspat\n" +" \tjejich názvy.\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:921 +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:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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 pole.\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í ba pole 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 uvedeny žádná JMÉNA, naÄtený řádek bude uložen do promÄ›nné " +"REPLY.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a pole\tnaÄtená slova budou pÅ™iÅ™azena do postupných prvků POLE\n" +" \t\tpoÄínaje nulou\n" +" -d oddÄ›lovaÄ\tpokraÄuje, dokud se není naÄten první znak ODDÄšLOVAÄŒE\n" +" \t\tnamísto nového řádku\n" +" -e\t\tv interaktivním shellu bude řádek naÄten pomocí Readline\n" +" -i text\tpoužije TEXT jako prvotní text pro Readline\n" +" -n p_znaků\tvrátí řízení po naÄtení P_ZNAKÅ® znaků, aniž by Äekal na\n" +" \t\tnový řádek\n" +" -p výzva\tvypíše Å™etÄ›zec VÃZVA bez závÄ›reÄného nového řádku,\n" +" \t\tdříve než se zahájí naÄítání\n" +" -r\t\tnepovolí zpÄ›tná lomítka pro escapování jakýchkoliv znaků\n" +" -s\t\tvstup pocházející z terminálu nebude zobrazován\n" +" -t limit\tumožní vyprÅ¡ení Äasového limitu a vrácení chyby, pokud\n" +" \t\tnebude naÄten celý řádek do LIMIT sekund. Hodnota promÄ›nné\n" +" \t\tTMOUT pÅ™edstavuje implicitní limit. TIMEOUT smí být desetinné\n" +" \t\tÄíslo. Návratový kód bude vÄ›tší než 128, pokud Äasový limit\n" +" \t\tvyprší.\n" +" -u fd\t\tÄ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ší nebo není poskytnut neplatný deskriptor souboru jako\n" +" argument -u." + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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í histore. Tento příznak je automaticky\n" +" zapnut pÅ™i interaktivním shellu.\n" +" -P Je-li nastaveno, nebudou následová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í) bude dÄ›dÄ›na do\n" +" funkcí shellu.\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:1101 +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" +" 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\tpovažuje každé JMÉNO za funkci shellu\n" +" -v\tpovažuje každé JMÉNO za promÄ›nnou shellu\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:1121 +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:1140 +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 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 "" +"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\tvztahuje se na promÄ›nné typu Äíslované pole\n" +" -A\tvztahuje se na promÄ›nné typu asociativní pole\n" +" -f\tvztahuje se funkce shellu\n" +" -p\tzobrazí seznam vÅ¡ech promÄ›nných a funkcí jen pro Ätení\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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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" +" 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Ã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:1296 +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:1305 +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:1317 +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.\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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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\tzobrazí vÅ¡echna místa, kde se nalézá spustitelný program\n" +" \tpojmenovaný NÃZEV. To zahrnuje aliasy, vestavÄ›né příkazy a funkce\n" +" \tjen a pouze tehdy, když není rovněž použit pÅ™epínaÄ -p.\n" +" -f\tpotlaÄí hledání mezi funkcemi shellu\n" +" -P\tvynutí prohledání PATH na každý NÃZEV, dokonce i když se\n" +" \tjedná o alias, vestavÄ›ný příkaz nebo funkci, a vrátí název\n" +" \tsouboru na disku, který by byl spuÅ¡tÄ›n\n" +" -p\tbuÄ vrátí jméno souboru na disku, který by byl spuÅ¡tÄ›n,\n" +" \tnebo nic, pokud „type -t NÃZEV“ by nevrátil „file“ (soubor)\n" +" -t\tvypíše jedno slovo z tÄ›chto: „alias“, „keyword“, „function“,\n" +" \t„builtin“, „file“ nebo „“, je-li NÃZEV alias, klíÄové slovo\n" +" \tshellu, shellová funkce, vestavÄ›ný příkaz shellu, soubor na\n" +" \tdisku nebo nenalezený příkaz\n" +" \n" +" Argumenty:\n" +" NÃZEV\tNá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:1380 +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" +" -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" +" \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\tpoužije se „mÄ›kké“ (soft) omezení zdroje\n" +" -H\tpoužije se „tvrdé“ (hard) omezení zdroje\n" +" -a\tnahlásí vÅ¡echna souÄasná omezení (limity)\n" +" -b\tvelikost vyrovnávací pamÄ›ti socketů\n" +" -c\tmaximální velikost vytvářených core souborů (výpis pamÄ›ti " +"programu)\n" +" -d\tmaximální velikost datového segmentu procesu\n" +" -e\tmaximální plánovací priorita („nice“)\n" +" -f\tmaximální velikost souborů zapsaných shellem a jeho potomky\n" +" -i\tmaximální poÄet Äekajících signálů\n" +" -l\tmaximální velikost pamÄ›ti, kterou může proces zamknout\n" +" -m\tmaximální velikost rezidentní pamÄ›ti (resident set size)\n" +" -n\tmaximální poÄet otevÅ™ených deskriptorů souboru\n" +" -p\tvelikost vyrovnávací pamÄ›ti rour\n" +" -q\tmaximální poÄet bajtů ve frontÄ› posixových zpráv\n" +" -r\tmaximální priorita plánování v reálném Äase\n" +" -s\tmaximální velikost zásobníku\n" +" -t\tmaximální množství procesorového Äasu v sekundách\n" +" -u\tmaximální poÄet procesů uživatele\n" +" -v\tvelikost virtuální pamÄ›ti\n" +" -x\tmaximální poÄet zámků na souborech\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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"PoÄká na dokonÄení úlohy a vrátí její návratový kód.\n" +" \n" +" PoÄká na 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 úlohy.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód ID, selže, pokud ID není platný nebo byl zadán neplatný " +"pÅ™epínaÄ." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"PoÄká na dokonÄení procesu a vrátí jeho návratový kód.\n" +" \n" +" PoÄká na zadaný proces a nahlásí jeho návratový kód. Není-li PID zadán,\n" +" bude se Äekat na vÅ¡echny právÄ› aktivní procesy potomků a návratová " +"hodnota\n" +" bude nula. PID musí být ID procesu.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód ID, selže, pokud ID není platný nebo byl zadán neplatný " +"pÅ™epínaÄ." + +#: builtins.c:1478 +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:1492 +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 smyÄek.\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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\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\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“.\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:1785 +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" +" \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.\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\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\n" +" \tpomocí „dirs“, poÄínaje nulou. Na příklad: „popd +0“ odstraní\n" +" první adresář, „popd -1“ druhý.\n" +" \n" +" -N\tOdstraní N. položku poÄítáno zprava na seznamu zobrazovaném\n" +" \tpomocí „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:1815 +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" +" \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.\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\tvyprázdní zásobník adresářů tím, že smaže vÅ¡echny jeho prvky\n" +" -l\tnevypíše vlnkou zkrácené verze adresářů, které jsou relativní\n" +" \tvaÅ¡emu domovskému adresáři\n" +" -p\tvypíše zásobník adresářů po jedné položce na řádek\n" +" -v\tvypíše zásobník adresářů po jedné položce na řádek, pÅ™iÄemž\n" +" \tnázvu adresáře pÅ™edÅ™adí jeho umístÄ›ní 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. \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 seznam vÅ¡ech pÅ™epínaÄů shellu s příznakem, zda je, " +"nebo\n" +" není 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 (nastaví) každý NÃZEV_VOLBY\n" +" -u\tvypne (odnastaví) 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:1865 +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" +" and printf(3), 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" +" \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á\tvýstup umístí do promÄ›nné shellu PROMÄšNNà namísto\n" +" \t\todeslá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) a printf(3) též:\n" +" \n" +" %b\texpanduje posloupnosti escapované zpÄ›tným lomítkem\n" +" \t\tv odpovídajícím argumentu\n" +" %q\toescapuje argument takovým způsobem, že jej bude možné\n" +" \t\tpoužít jako vstup shellu\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:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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í na vstupu.\n" +" \n" +" PÅ™epínaÄe:\n" +" -p\tvypíše existující pravidla doplňování v znovu použitelném tvaru\n" +" -r\todstraní pro každý NÃZEV doplňovací pravidlo, nebo není-li zadán\n" +" \tžádný NÃZEV, zruší vÅ¡echna pravidla\n" +" \n" +" PÅ™i doplňování se akce uplatňují v poÅ™adí, v jakém by byla tímto " +"příkazem\n" +" vypsána pravidla psaná velkými písmeny.\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:1915 +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." + +# FIXME: Příkaz compopt je ve verzi 4.0 zcela nový. Je tÅ™eba prozkoumat, co +# pÅ™esnÄ› dÄ›lá, aby bylo možné správnÄ› pÅ™eložit slovo „option“, tak aby se +# nepletlo s pomlÄkovými pÅ™epínaÄi příkazu. +# FIXME: Je tÅ™eba dohledat msgid pro řádek se syntaxí příkazu a patÅ™iÄnÄ› ji +# opravit. +# TODO: Tento pÅ™eklad je vemli kostrbatý a místy nedává smysl. Je tÅ™eba +# ujednotit pravidlo–pravidla doplnÄ›ní–doplňování (completion specification). +#: builtins.c:1930 +#, 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 begin executed. If no OPTIONs are givenm, " +"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" +" \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í volby doplňování u každého NÃZVU, nebo, není-li zadán žádný\n" +" NÃZEV, právÄ› probíhající doplnÄ›ní. Nejsou-li zadány žádné VOLBY, vypíše\n" +" volby doplňování pro každý NÃZEV nebo pravidlo souÄasného doplnÄ›ní.\n" +" \n" +" PÅ™epínaÄe:\n" +" \t-o volba\tNastaví volbu doplňování VOLBA u každého NÃZVU\n" +" \n" +" Pomocí „+o“ namísto „-o“ zadanou volbu vypnete.\n" +" \n" +" Argumenty:\n" +" Každý NÃZEV ukazuje na příkaz, pro který pravidlo doplnÄ›ní musí být\n" +" pÅ™edem definováno pomocí vestavÄ›ného příkazu „complete“. Nejsou-li " +"zadány\n" +" žádné NÃZVY, musí být compopt volán funkcí, která právÄ› generuje " +"doplnÄ›ní,\n" +" a zmÄ›nÄ›ny budou volby tohoto právÄ› běžícího generátoru doplnÄ›ní.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a NÃZEV již mÄ›l\n" +" definováno pravidlo pro doplnÄ›ní." + +#: builtins.c:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"NaÄte řádky ze souboru do promÄ›nné typu 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 pole. Implicitním " +"POLEM\n" +" je promÄ›nná MAPFILE.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n poÄet\tZkopíruje nejvýše POÄŒET řádků. Je-li POÄŒET 0,\n" +" \t\tzkopíruje vÅ¡echny řádky.\n" +" -O poÄátek\tPÅ™iÅ™azování do POLE zaÄne na indexu POÄŒÃTEK.\n" +" \t\tImplicitní index je 0.\n" +" -s poÄet\tZahodí prvních POÄŒET naÄtených řádků.\n" +" -t\t\tOdstraní znaky konce řádku z každého naÄteného řádku.\n" +" -u fd\t\tŘádky Äte z deskriptoru souboru FD namísto ze\n" +" \t\tstandardního vstupu.\n" +" -C volání\tVyhodnotí VOLÃNà pokaždé, když je naÄteno MNOŽSTVÃ\n" +" \t\třádků.\n" +" -c množství\tUdává poÄet řádků, které je tÅ™eba pÅ™eÄíst, mezi\n" +" \t\tkaždým zavoláním VOLÃNÃ.\n" +" \n" +" Argumenty:\n" +" POLE\t\tNázev promÄ›nné typu pole, do které budou pÅ™iÅ™azena data\n" +" \t\tze souboru.\n" +" \n" +" Je-li uvedeno -C bez -c, implicitní množství bude 5000.\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Ä a POLE nebylo jen pro\n" +" Ätení." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "top directory." +#~ msgstr "vrcholového adresáře." + +#~ 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/src/bin/bash/po/de.gmo b/src/bin/bash/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e0340474c2d3d24c05e39d6d5634a538acecbcc6 GIT binary patch literal 35764 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, 1996, 2008. +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-12-20 16:56+0100\n" +"Last-Translator: Nils Naumann \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "Falscher Feldbezeichner." + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: Ungültiger Schlüssel für das assoziative Array." + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: Kann die Datei %s nicht erzeugen." + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: Das erste nicht Leerzeichen ist nicht `\\'." + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "fehlende schließende `%c' in %s." + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: Fehlender Doppelpunkt." + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': Ungültiger KEYMAP Name." + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: Nicht lesbar: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': Bindung kann nicht gelöst werden." + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "%s: Unbekannter Funktionsname." + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ist keiner Taste zugeordnet.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kann aufgerufen werden durch " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "Schleifen Zähler" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll." + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME ist nicht zugewiesen." + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD ist nicht zugewiesen." + +# Debug Ausgabe +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "Zeile %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "Warnung: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: Gebrauch: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "Zu viele Argumente." + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: Ein numerischer Paremeter ist erforderlich." + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: Ein numerischer Parameter ist erforderlich." + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: Nicht gefunden." + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: Ungültige Option" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: Ungültiger Optionsname." + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': Ist kein gültiger Bezeichner." + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "Ungültige Oktalzahl." + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "Ungültige hexadezimale Zahl." + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "Ungültige Zahl." + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: Ungültige Signalbezeichnung." + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Schreibgeschützte Variable." + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "Argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s ist außerhalb des Gültigkeitsbereiches." + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: Kein solche Job." + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: Keine Job Steuerung in dieser Shell." + +#: builtins/common.c:292 +msgid "no job control" +msgstr "Keine Job Steuerung in dieser Shell." + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: gesperrt" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "gesperrt" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: Ist kein Shell Kommando." + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "Schreibfehler: %s." + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: Kann das nicht aktuelle Verzeichnis wiederfinden: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Mehrdeutige Job Bezeichnung." + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "kann nur innerhalb einer Funktion benutzt werden." + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "Mit `-f' können keine Funktionen erzeugt werden." + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Schreibgeschützte Funktion." + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: Kann nicht löschen: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: ist ein Verzeichnis." + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: Ist keine normale Datei." + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: Die Datei ist zu groß." + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: Kann die Datei nicht ausführen." + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: Kann nicht ausführen: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "Abgemeldet\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "Keine Login Shell: Mit exit abmelden." + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Es gibt noch angehaltene Prozesse.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Es gibt noch laufende Prozesse.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "Kein Kommando gefunden." + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: Kann die tempräre Datei nicht öffnen: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: Kann die Datei nicht öffnen: %s" + +#: builtins/help.def:337 +#, 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 "" +"Die Shell Kommandos sind intern definiert. Mit `help' kann eine Liste\n" +"angesehen werden. Durch `help Name' wird eine Beschreibung der\n" +"Funktion `Name' angezeigt. Die Dokumentation ist mit `info bash'\n" +"einsehbar. Detaillierte Beschreibungen der Shellkommandos sind mit\n" +"`man -k' oder `info' abrufbar.\n" +"\n" +"Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" +"\n" + +#: builtins/history.def:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: History Substitution 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein." + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Unbekannter Fehler." + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "Ausdruck erwartet." + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "Warnung: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "kein anderes Verzeichnis" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "der Verzeichnisstapel ist leer" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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 ein 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 `dirs' Kommando zeigt den Verueichnisstapel an." + +#: builtins/pushd.def:730 +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 "" +"Erntfernt Einträge vom Stapel. Ohne Argumente wird der oberste Eintrag\n" +" gelöscht und anschließend in das das neue oben liegede 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 `dirs' Kommando zeigt den Verzeichnisstapel an." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "Lesefehler: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: Datei nicht gefunden." + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +# logout +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "Kann die Loginshell nicht unterbrechen." + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s ist eine Funktion.\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': Falsches Kommando." + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "Grenze" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: Kann die Grenze nicht ändern: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "" + +#: error.c:406 +msgid "bad command type" +msgstr "" + +# Programmierfehler +#: error.c:407 +msgid "bad connector" +msgstr "" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Falscher Sprung %d." + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s ist nicht gesetzt." + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "Pipe-Fehler" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: Kommando nicht gefunden." + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: ist ein Verzeichnis." + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "Kann fd %d nicht auf fd 0 verdoppeln: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "Zu viele Rekursionen in Ausdruck." + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Rekursionsstapel leer." + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "Syntaxfehler im Ausdruck." + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "Zuweisung zu einer Nicht-Variablen versucht." + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "Division durch 0." + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "Fehler: Falsches Zuweisungszeichen %d." + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' erwartet für ein bedingten Ausdruck." + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "Der Exponent ist kleiner als 0." + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." + +#: expr.c:854 +msgid "missing `)'" +msgstr "Fehlende `)'" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "Syntax Fehler: Unerwartetes Dateiende." + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (Fehlerverursachendes Wort ist \\\"%s\\\").\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "Ungültige Basis." + +#: expr.c:1279 +msgid "value too great for base" +msgstr "Der Wert ist zu groß für die aktuelle Basis." + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "Umlenkfehler" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getwd: Kann nicht auf das übergeordnete Verzeichnis zugreifen." + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen." + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen." + +# Debug Ausgabe +#: input.c:266 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "check_bash_input: buffer already exists for new fd %d" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +# Programmierfehler +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: Prozeß-Nummer existiert nicht (%d)!\n" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Fertig" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Angehalten" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Angehalten(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Läuft" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Fertig(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Unbekannter Status" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(Speicherabzug geschrieben) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +# interner Fehler +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: Prozeß %ld wurde nicht von dieser Shell gestartet." + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: Programm ist beendet." + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +# Debug Ausgabe +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: Zeile %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (Speicherabzug geschrieben)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" + +# interner Fehler +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp war nicht erfolgreich." + +# interner Fehler +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +# interner Fehler +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "Keine Job Steuerung in dieser Shell." + +#: lib/malloc/malloc.c:296 +#, fuzzy, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: Fehler bei Speicherzuweisung: %s\n" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +msgid "unknown" +msgstr "Unbekannt" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "" + +# Du oder Sie? +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Sie haben Post in $_." + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Sie haben neue Post in $_." + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Die Post in %s wurde bereits gelesen.\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "Syntaxfehler im Ausdruck." + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "Syntax Fehler: Unerwartetes Dateiende." + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "Syntax Fehler" + +# interner Fehler +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: Falscher Befehlstyp %d." + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "Dateiende beim Suchen nach `%c' erreicht." + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "Dateiende beim Suchen nach `%c' erreicht." + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Syntaxfehler beim unerwarteten Wort `%s'" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "Syntaxfehler im Ausdruck." + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "`)' erwartet." + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Syntaxfehler beim unerwarteten Wort `%s'" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "Syntaxfehler beim unerwarteten Wort `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "Syntax Fehler: Unerwartetes Dateiende." + +#: parse.y:5223 +msgid "syntax error" +msgstr "Syntax Fehler" + +# Du oder Sie? +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "Dateiende beim Suchen nach passender `)' erreicht." + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: Falsches Verbindungszeichen `%d'." + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Mehrdeutige Umlenkung." + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: Kann existierende Datei nicht überschreiben." + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp muß ein gültiger Verzeichnisname sein." + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: Ungültige Option" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Ich habe keinen Benutzernamen!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, Version %s-(%s)\n" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Benutzung:\t%s [Lange GNU Option] [Option] ...\n" +"\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "Lange GNU Optionen:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Shell-Optionen:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD oder -c Kommando\t\t(Nur Aufruf)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s oder Option -o\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "`%s -c \"help set\"' für mehr Informationen über Shell-Optionen.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "`%s -c help' für mehr Information über Shell-Kommandos.\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" + +#: sig.c:583 +#, 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" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quit" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ungültige Anweisung." + +# Was heisst das? +#: siglist.c:66 +#, fuzzy +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Abbruchkommando" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-Kommando" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Gleitkommafehler" + +#: siglist.c:86 +msgid "Killed" +msgstr "Gekillt" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus-Fehler" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Speicherzugriffsfehler" + +#: 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 "Beendet" + +#: 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 "Prozeßbearbeitung wieder aufgenommen." + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Kindprozeß 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 "Nutzer-Signal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Nutzer-Signal 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 Prozeß 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" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Unbekannte Signalnummer." + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unbekanntes Signal Nr.: %d." + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: Kann einem Feldelement keine Liste zuweisen." + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen." + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen." + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "Kann die benannte Pipe %s nicht auf fd %d." + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." + +# interner Fehler +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren." + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: Parameter ist Null oder nicht gesetzt." + +# interner Fehler +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: Teilstring-Ausdruck < 0." + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Variablenersetzung." + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: Kann so nicht zuweisen." + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "Keine Entsprechung: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "Argument erwartet." + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: Ganzzahliger Ausdruck erwartet." + +#: test.c:262 +msgid "`)' expected" +msgstr "`)' erwartet." + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' erwartet, %s gefunden." + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: Einstelliger (unärer) Operator erwartet." + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: Zweistelliger (binärer) Operator erwartet." + +#: test.c:806 +msgid "missing `]'" +msgstr "Fehlende `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "Ungültige Signalnummer." + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +# Programmierfehler +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Falsches Signal %d." + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, Version %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "Für dieses Programm besteht keinerlei Garantie.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: Kann %lu Bytes nicht reservieren (%lu bytes reserviert)." + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: Kann nicht %lu Bytes reservieren." + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: Kann %lu Bytes nicht reservieren (%lu bytes reserviert)." + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: Kann nicht %lu Bytes reservieren." + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xmalloc: %s:%d: Kann nicht %lu Bytes reservieren (%lu bytes reserviert)." + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: Kann nicht %lu Bytes reservieren." + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: %s:%d: Kann nicht %lu Bytes reservieren (%lu bytes reserviert)." + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: Kann nicht %lu Bytes reservieren." + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [Name[=Wert] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] Name [Name ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name] [-r " +"Tastenfolge:Shell Kommando] [Tastenfolge:readline Funktion oder Kommando]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [Shellkommando [Argument ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [Ausdruck]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [Verzeichnis]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "Wahr" + +#: builtins.c:72 +msgid "false" +msgstr "Falsch" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] Kommando [Argument ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [Name[=Wert] ...]" + +# +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] Name[=Wert] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [Option] Name[=Wert] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [Argument ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [Argument ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f Dateiname] [Name ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [Argument ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts Optionen Variable [Argumente]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [Jobbezeichnung]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [Jobbezeichnung ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p Pfadname] [-dt] [Name ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [Muster ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [Jobbezeichnung ...]" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder " +"kill -l [Signalname]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let Argument [Argument ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-p " +"Prompt] [-t Zeitlimit] [-u fd] [Name ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o Option] [ARG ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [NAME ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [Name[=Wert] ...] oder export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [Name[=Wert] ...] oder readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source Dateiname [Argumente]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". Dateiname [Argumente]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [Ausdruck]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ Argument... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[Argument] Signalbezeichnung ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] Name [Name ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [Grenzwert]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [Modus]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for Name [in Wortliste ... ] ; do Kommandos; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( Ausdr1; Ausdr2; Ausdr3 )); do Kommandos; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select Name [in Wortliste ... ;] do Kommandos; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... \n" +"\t[ else Kommandos; ] fi" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while Kommandos; do Kommandos; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until Kommandos; do Kommandos; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function Name { Kommandos ; } oder Name () { Kommandos ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ Kommandos ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "Jobbezeichnung [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( Ausdruck ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ Ausdruck ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Namen und Bedeutung einiger Shell Variablen" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | Verzeichnis]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [Optionsname ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] Format [Argumente]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o Option] [-A Aktion] [-G Suchmuster] [-W " +"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"Suffix] [Name ...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " +"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"Suffix] [Wort]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o Option] [Name ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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 gedruckt.\n" +"\n" +" Sonst wird ein Alias für jeden angegebenen Namen definiert, für den ein\n" +" Wert angegeben wurde. \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" +" Rückgabewert:\n" +" Meldet Erfolg, außer wenn NAME nicht existiert." + +#: builtins.c:276 +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 "" +"Entferne jeden Namen von der Aliasliste.\n" +" \n" +" Optionen:\n" +" -a\tEnferne alle Alias Definitionen.\n" +" \n" +" Gibt immer Erfolg zurück, wenn der Name existiert." + +#: builtins.c:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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 "" +"Beendet for, while oder until Schleifen.\n" +" \n" +" Break beendet eine FOR, WHILE oder UNTIL Schleife. Wenn N angegeben " +"ist, werden N geschachtelte\n" +" Schleifen beendet.\n" +" \n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, es sei den N ist größer oder gleich 1." + +#: builtins.c:338 +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" +" Continoue springt zum Schleifenanfang der aktuellen FOR, WHILE oder " +"UNTIL \n" +" Schleife. Wenn N angegeben ist, werden N wird zum Beginn der N-ten\n" +" übergeordneten Schleife gesprungen.\n" +" \n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, außer wenn N größer oder gleich 1 ist." + +#: builtins.c:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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 Arbeitsverzeichnis aus.\n" +" \n" +" Optionen:\n" +" -L\tGibt den Wert der $PWD Umgebungsvariable aus, wenn diese\n" +"\tauf das aktuelle Arbeitsverzeichnis verweist.\n" +"\n" +" -P\tGibt den wirklichen Verzeichnisnahen aus, ohne symbolische " +"Verweise.\n" +" \n" +" Standardmäßig wird die -L Option verwendet.\n" +" \n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, außer wenn eine ungültige Option angegeben oder " +"das aktuelle\n" +" Verzeichnis nicht gelesen werden kann." + +# colon +#: builtins.c:428 +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 erfolgreich." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Setzt Variablen Werte und Eigenschaften\n" +"\n" +" Veraltet. Siehe `help declare'." + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" +"Definiert lokale Vatiablen.\n" +" \n" +" Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu. " +"OPTION\n" +" kann eine beliebige von `declare' akzeptierte Option sein.\n" +"\n" +" Lokale Variablen können nur innerhalb einer Funktion benutzt werden. " +"Sie\n" +" sind nur in der sie erzeugenden Funktion und ihren Kindern " +"sichtbar. \n" +" \n" +" Rückgabewert:\n" +" Liefert \"Erfolg\" außer bei einer ungültigen Option, einem Fehler oder\n" +" die Shell führt keine Funktion aus." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +# exit +#: builtins.c:689 +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" +" Beendt die die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " +"angegeben ist,\n" +" wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." + +#: builtins.c:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "Missing `}'" +#~ msgstr "Fehlende `}'." + +#~ msgid "brace_expand> " +#~ msgstr "Klammererweiterung>" + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Versuche den unbekannten Kommandotyp `%d' zu freizugeben.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Schicke eine Fehlermeldung an: %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Abbruch ..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Schicke eine Fehlermeldung an: %s\n" + +# Programmierfehler +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: Falscher Kommandotyp `%d'." + +#~ msgid "real\t" +#~ msgstr "Gesamt\t" + +#~ msgid "user\t" +#~ msgstr "Nutzer\t" + +#~ msgid "sys\t" +#~ msgstr "System\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "Gesamt\t0m0.00s\n" +#~ "Nutzer\t0m0.00s\n" +#~ "System\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "Kann fd %d nicht auf fd 1 verdoppeln: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: Das Umlenken der Ausgabe ist verboten." + +#~ msgid "Out of memory!" +#~ msgstr "Arbeitsspeicher erschöpft!" + +# Debug Ausgabe +#~ msgid "You have already added item `%s'\n" +#~ msgstr "You have already added item `%s'.\n" + +# Debug Ausgabe +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "You have entered %d (%d) items. The distribution is:\n" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: bg Hintergrundprozeß?" + +# Programmierfehler +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "Umlenkung von yyparse() `%d' in make_redirection\n" +#~ "ist außerhalb des zulässigen Bereichs." + +# Programmierfehler +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () erhielt ein Kommando vom Typ %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "Erhielt Fehlernummer %d beim Warten auf %d." + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "Syntaxfehler beim unerwarteten Zeichen `%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: Falscher Kommandotyp `%d'." + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: Falsches `%%' Argument (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "Option `%s' erfordert ein Argument." + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: Option nicht erkannt." + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' erfordert ein Argument." + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: Kann Verzeichnisse nicht ausführen." + +# interner Fehler +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Falscher Code in sig.c: Sigprocmask." + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "Kann keine Pipes für die Prozeßersetzung erzeugen: %s." + +#~ msgid "reading" +#~ msgstr "lese" + +#~ msgid "process substitution" +#~ msgstr "Prozeßersetzung" + +#~ msgid "command substitution" +#~ msgstr "Kommandoersetzung" + +# interner Fehler +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "Kann Pipe für Kommandoersetzung nicht wieder öffnen (fd %d): %s." + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c ist nicht gesetzt." + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: Falsche arithmetische Ersetzung." + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: Zweistelliger (binärer) Operator erwartet." + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: Falscher Index." + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: Falscher Index." + +# Testprogramm für sh_getopts +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "Ziffer taucht in zwei verschiedenen Elementen von argv auf.\n" + +#~ msgid "option %c\n" +#~ msgstr "Option %c\n" + +#~ msgid "option a\n" +#~ msgstr "Option a\n" + +#~ msgid "option b\n" +#~ msgstr "Option b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "Option c mit Wert `%s'\n" + +# Testprogramm für sh_getopts +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt gab Code 0%o zurück??\n" + +# Testprogramm für sh_getopts +#~ msgid "non-option ARGV-elements: " +#~ msgstr "Elemente von ARGV, die keine Optionen sind: " + +# mkbuilltins Hilfsprogramm +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Unbekannter Schalter %s.\n" + +# mkbuiltins Hilfsprogramm +#~ msgid "Unknown directive `%s'" +#~ msgstr "Unbekannte Anweisung `%s'." + +#~ msgid "%s requires an argument" +#~ msgstr "%s erfordert ein Argument." + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s muß innerhalb eines $BUILTIN Blocks stehen." + +#~ msgid "%s found before $END" +#~ msgstr "%s vor $END gefunden." + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s hat schon eine Funktion (%s)." + +# docname --> Bezeichnung ?? +#~ msgid "%s already had a docname (%s)" +#~ msgstr "%s hat schon eine Bezeichnung (%s)." + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "%s hat schon eine Kurzbeschreibung (%s)." + +#~ msgid "%s already has a %s definition" +#~ msgstr "%s ist schon %s definiert." + +# mkbuildins Hilfsprogramm +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: Virtueller Speicher erschöpft!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "" +#~ "read [-r] [-p Eingabeaufforderung] [-a Feldvariable] [-e] [Name ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[Ziffern | Wort] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "Variablen - Einige Variablennamen und ihre Bedeutung" + +# alias +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' ohne Argumente oder mit der Option -p gibt die Liste der" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "Synonyme in der Form NAME=WERT auf die Standardausgabe aus." + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "Sonst wird ein Synonym für jeden NAMEN definiert, dessen WERT angegeben " +#~ "wird." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "Ein Leerzeichen nach WERT bewirkt, daß das nächste WORT auf ein Synonym" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "" +#~ "untersucht wird wenn SYNONYM ausgewertet wird. `Alias' gibt wahr zurück," + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "außer wenn ein NAME angegeben wurde, für den kein SYNONYM vorhanden ist." + +# unalias +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "Entfernt NAMEn aus der Liste der Synonyme. Wenn die Option -a" + +#~ msgid "then remove all alias definitions." +#~ msgstr "angegeben ist, werden alle Synonyme gelöscht." + +# readline +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "Verbindet eine Tastenfolge mit einer Readline-Funktion oder einem Makro. " +#~ "Die" + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "" +#~ "Syntax entspricht der der Datei `~/.inputrc', sie muß jedoch als Argument" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "angegeben werden. Z.B.: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Gültige Argumente:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m Tastaturtabelle wählt die Tastaturtabelle für die Dauer dieses " +#~ "Kommandos." + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr "" +#~ " Mögliche Namen für Tastaturtabellen sind: 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, und vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l Listet die Namen der Funktionen." + +#~ msgid " -P List function names and bindings." +#~ msgstr "" +#~ " -P Listet die Namen der Funktion und deren " +#~ "Tastenzuordnung." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Listet die Funktionsnamen und deren Tastenzuordnung " +#~ "so," + +#~ msgid " reused as input." +#~ msgstr "" +#~ " daß sie als Eingabe wiederverwendet werden können." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r Tastenfolge Entfernt die Zuordnung für Tastenfolge." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f Dateiname Liest die Tastenzuordnungen von Dateiname." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q Funktionsname Gibt die Tastenzuordnung für den Funktionsnamen aus." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V Gibt Variablennamen und deren Werte aus." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Gibt Variablennamen und deren Werte in einer Form " +#~ "aus," + +#~ msgid " be reused as input." +#~ msgstr " die als Eingabe wiederverwendet werden kann." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr " -S Gibt Tastenfolgen aus, die Makros aufrufen." + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr " -s Gibt Tastenfolgen aus, die Makros aufrufen." + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " Die Ausgabe kann als Eingabe wiederverwendet werden." + +# break +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "" +#~ "Bricht eine for, while oder until Schleife ab. Wenn N angegeben ist, dann" + +#~ msgid "break N levels." +#~ msgstr "werden N Schleifenebenen verlassen." + +# continue +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "" +#~ "Springt zur nächsten Iteration der for, while oder until Schleife. Wenn N" + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "" +#~ "angegeben ist, wird mit der N-ten übergeordneten Schleife fortgefahren." + +# builtin +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "" +#~ "Führt eine Shellfunktion aus. Das ist nützlich, wenn eine Shellfunktion" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "umbenannt wurde, aber das ursprüngliche Verhalten benötigt wird." + +#~ msgid "builtin within the function itself." +#~ msgstr " " + +# cd +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "" +#~ "Setzt das Arbeitsverzeichnis auf Verz. Wenn Verz. nicht angegeben ist, " +#~ "dann" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "" +#~ "wird in das $HOME-Verzeichnis gewechselt. In der Variable $CDPATH kann " +#~ "eine" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "durch Doppelpunkt (:) getrennte Liste angegeben werden, in denen Verz. " +#~ "gesucht" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "wird. Beginnt Verz. mit einem `/', wird $CDPATH nicht benutzt." + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "" +#~ "Wenn das Verzeichnis nicht gefunden wird und die Shelloption `cdable_vars'" + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "" +#~ "gesetzt ist, dann wird Verz. als ein Variablenname interpretiert. Ergibt" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "dies einen Wert für die Variable, dann wird das aktuelle" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "Verzeichnis auf diesen Wert gesetzt. Option -P veranlaßt cd symbolische" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "Verweise zu ignorieren; -L erzwingt das Benutzen symbolischer" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "Verweise." + +#~ msgid "to be followed." +#~ msgstr " " + +# pwd +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "" +#~ "Gibt das Arbeitsverzeichnis aus. Die Angabe von -P ignoriert symbolische" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "Verweise. Mit -L wird das Verwenden von symbolischen Verweisen" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "erzwungen." + +# command +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Führt das Kommando mit den Argumenten aus, ohne die Shellfunktionen zu" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "berücksichtigen. Wenn eine Shellfunktion `ls' definiert ist, führt" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "\"command ls\" das Kommando `ls' aus. Mit der Option -p wird ein" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "Standardwert für PATH verwendet. -v gibt eine kurze Beschreibung" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "des Kommandos aus; -V eine ausführliche." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr " " + +# declare +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "Deklariert Variablen oder weist ihnen Werte zu. Wenn kein Name angegeben" + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "" +#~ "ist, dann wird der Wert der Variablen ausgegeben. Option -p gibt die" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "Merkmale und Werte der Namen aus." + +#~ msgid "The flags are:" +#~ msgstr "Die Schalter sind:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tDeklariert Name als Feldvariable (wenn unterstützt)." + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tZeigt nur Funktionsnamen." + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tZeigt Funktionsnamen ohne Definition an." + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tSetzt Name auf `nur Lesen'-Status." + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\tMarkiert Name für automatischen Export in alle Subshells." + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tSetzt den Typ von Name auf Ganzzahl." + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "" +#~ "Wenn der Variablen ein Wert zugewiesen wird (siehe `let'), findet eine" + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "arithmetische Auswertung statt." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "" +#~ "Wenn Variablenwerte angezeigt werden, gibt die Option -f Funktionsnamen" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "und -definitionen aus. Die Option -F beschränkt die Ausgabe auf" + +#~ msgid "name only." +#~ msgstr "Funktionsnamen." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "`+' statt `-' schaltet das angegebene Merkmal ab. `declare'" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "innerhalb einer Funktion wirkt wie `local'." + +# typset +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Veraltet. Siehe `declare'." + +# local +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "" +#~ "Erzeugt eine lokale Variable Name und weist ihr Wert zu. Die Anweisung " +#~ "kann" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "nur innerhalb dieser Funktion und allen Unterfunktionen zugänglich." + +# echo +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "" +#~ "Gibt die Argumente aus. Wenn -n angegeben ist, wird kein Zeilenumbruch" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "angefügt. Die Option -e interpretiert folgende Sonderzeichen zur " +#~ "Formatierung" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "der Ausgabe:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\tAlarm (Glocke)." + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tSchritt zurück." + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tKein Zeilenumbruch." + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tEscape-Zeichen." + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\tSeitenvorschub." + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tZeilenumbruch." + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tWagenrücklauf." + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\tHorizontaler Tabulator." + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\tVertikaler Tabulator." + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tDas Zeichen `\\'." + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\tDas Zeichen mit dem (oktalen) ASCII-Code num." + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "" +#~ "Die Option -E schaltet die Auswertung der oben angegebenen Sonderzeichen" + +#~ msgid "with the -E option." +#~ msgstr "ab." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Gibt ARGUMENTE aus. Die Option -n verhindert den abschließenden " +#~ "Zeilenumbruch." + +# enable +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "Schaltet Shellfunktionen ab und an. Damit kann ein gleichnamiges" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "externes Kommando anstatt des Shellkommandos benutzt werden." + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "-n schaltet Namen ab, sonst werden NAMEn angeschaltet." + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "Um z.B. die externe Funktion `test' zu verwenden," + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "" +#~ "muß `enable -n test' eingegeben werden. Auf Systemen, die Bibiliotheken" + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "" +#~ "dynamisch nachladen können, kann die Option -f genutzt werden, um neue" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "Shellfunktionen aus der dynamischen Bibiliothek Dateiname zu laden. -d" + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "entlädt dynamisch geladene Shellfunktionen wieder. Wenn" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "keine Option oder -p angegeben ist, wird eine Liste der" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "Shellfunktionen ausgegeben. -a gibt eine Liste der Shellfunktionen" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "" +#~ "aus, in der ein- und ausgeschaltete Funktionen gekennzeichnet sind; -s" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "beschränkt die Ausgabe auf Posix.2-Shellfunktionen. -n" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "zeigt eine Liste aller abgeschalteter Funktionen an." + +# eval +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "Verbindet die Argumente zu einer Kommandozeile und führt sie aus." + +# getopts +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "Shellprozeduren benutzen getopts, um die Kommandozeole auszuwerten." + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "" +#~ "Optstring enthält die zu erkennenden Buchstaben. Folgt einem Buchstaben " +#~ "ein" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "Doppelpunkt, dann erwartet die Funktion ein Argument, das durch ein" + +#~ msgid "which should be separated from it by white space." +#~ msgstr "Leerzeichen vom Optionszeichen getrennt ist." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "" +#~ "Bei jedem Aufruf weist getopt die nächste Option der Shell-Variablen " +#~ "$name zu," + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "erzeugt sie gegebenenfalls und setzt den Zeiger in der" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "Shellvariablen OPTIND auf die nächste abzuarbeitende Option." + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "OPTIND wird beim Start der Shell mit 1 initialisiert." + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "Erwartet eine Option ein Argument, wird dieses Argument in der" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "Shellvariablen OPTARG zurückgegeben." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "Es gibt zwei Möglichkeiten der Fehlerbehandlung. Wenn das erste Zeichen " +#~ "von" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "OPTSTRING ein Doppelpunkt ist, wird keine Fehlermeldung angezeigt " +#~ "(\"stille" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "" +#~ "Fehlermeldung\") Wenn ein ungültiges Optionszeichen erkannt wird, dann " +#~ "wird" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "" +#~ "es der Shellvariablen OPTARG zugewiesen. Wenn ein Argument fehlt, dann" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "wird der Shellvariablen NAME ein ':' zugewiesen und an OPTARG das " + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "" +#~ "Optionszeichen übergeben. Wenn getopt sich nicht im \"stillen\" Modus" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "" +#~ "befindet und ein ungültiges Optionszeichen erkannt wird, weist getopt der" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "" +#~ "Variable Name '?' zu und löscht OPTARG. Wenn eine erforderliche Option " +#~ "nicht" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "" +#~ "gefunden wurde, wird `?` an NAME zugewiesen, OPTARG gelöscht und eine " +#~ "Fehler-" + +#~ msgid "printed." +#~ msgstr "meldung ausgegeben." + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "" +#~ "Wenn die Shellvariable OPTERR den Wert 0 besitzt, unterdrückt getopts die " +#~ "Aus-" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "" +#~ "gabe von Fehlermeldungen, auch dann, wenn das erste Zeichen von OPTSTRING " +#~ "kein" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "Doppelpunkt ist. OPTERR hat standardmäßig den Wert 1." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "" +#~ "Getopts wertet normalerweise die übergebenen Parameter $0 - $9 aus, aber " +#~ "wenn" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "mehr Argumente angegeben sind, werden diese auch ausgewertet." + +# exec +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "Fürt Datei aus und ersetzt die Shell durch das angegebene Programm." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "" +#~ "Wenn kein Kommando angegeben ist, werden die Ein-/Ausgabeumleitungen auf " +#~ "die" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "" +#~ "aufrufende Shell angewendet. Wenn das erste Argument -l ist, dann wird " +#~ "dieses" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "" +#~ "als nulltes Argument an die Datei übergeben (wie login). Mit der -c " +#~ "Option" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "" +#~ "wird die Datei ohne gesetzte Umgebungsvariablen ausgeführt. Die -a Option" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "setzt argv[0] des ausgeführten Prozeßes auf Name." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "" +#~ "Wenn die Datei nicht ausgeführt werden kann und die Shell nicht " +#~ "interaktiv ist," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "dann wird sie verlassen, außer die Variable \"no_exit_on_failed_exec\" ist" + +#~ msgid "is set." +#~ msgstr "gesetzt." + +#~ msgid "is that of the last command executed." +#~ msgstr "der Rückkehrstatus des zuletzt ausgeführten Kommandos verwendet." + +# fc +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "Anfang und Ende bezeichnen einen Bereich oder, wenn Anfang eine " +#~ "Zeichenkette" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "ist, das letzte Kommando welches mit dieser Zeichkette beginnt." + +#~ msgid "string." +#~ msgstr " " + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e Editor ist der aufzurufende Texteditor. Standardmäßig wird FCEDIT, " +#~ "dann" + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr "" +#~ " EDITOR, anschließend der dem readline Modus entsprechende Editor" + +#~ msgid " mode, then vi." +#~ msgstr " und sonst vi aufgerufen." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l zeigt nur die Zeilen an." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n unterdrückt das Anzeigen von Zeilennummern." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r dreht die Sortierreihenfolge um (jüngster Eintrag wird zuerst " +#~ "angezeigt)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "Mit `fc -s [Muster=Ersetzung ...] [command]' wird das Kommando wiederholt," + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "nachdem die Substitution Alt=Neu durchgeführt wurde." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "" +#~ "Eine nützliche Aliasersetzung kann r='fc -s' sein, mit der z.B. durch `r " +#~ "cc`" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "" +#~ "das letzte Kommando welches mit `cc' beginnt aufgerufen wird und die " +#~ "Eingabe" + +# fg +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "Bringt den mit `^Z' angehaltenen Job in den Vordergrund. Wenn eine" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "" +#~ "Jobbezeichnung angegeben ist, dann wird der zuletzt angehaltene Job im" + +#~ msgid "used." +#~ msgstr "Vordergrund gestartet." + +# bg +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "Startet einen mit `^Z' angehaltenen Job im Hintergrund, als ob er mit `&'" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "" +#~ "gestartet worden wäre. Ist keine Jobbezeichnung angegeben, wird der " +#~ "zuletzt" + +#~ msgid "job is used." +#~ msgstr "angehaltene Job im Hintergrund gestartet." + +# hash +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "" +#~ "Für jeden angegebenen Namen wird der vollständige Pfadname des Kommandos" + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "" +#~ "ermittelt und gemerkt. Wenn die -p Option angegeben wird, dann wird der" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "" +#~ "Pfadname verwendet und keine Suche durchgeführt. Die -r Option löscht die" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "" +#~ "gespeicherten Pfade. Wenn keine Option angegeben ist, dann werden alle" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "gespeicherten Kommandos angezeigt." + +# help +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "" +#~ "Gibt Hilfetexte für die eingebauten Kommandos aus. Wenn ein Muster " +#~ "angegeben" + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "ist, dann wird eine detailierte Beschreibung der Kommandos angezeigt, die " +#~ "dem" + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "" +#~ "Muster entsprechen. Sonst werden die eingebauten Kommandos gelistet." + +# history +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "" +#~ "Zeigt den Kommandozeilenspeicher mit Zeilennummern an. Mit `*' markierte" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "Zeilen wurden verändert. Mit einer Zahl als Argument wird nur die " +#~ "angegebene" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "" +#~ "Anzahl Zeilen ausgegeben. Mit der `-c' Option kann der " +#~ "Kommandozeilenspeicher" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "gelöscht werden. Ist die `-w' Option angegeben, wird der Kommandozeilen-" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "speicher in die history Datei geschrieben. `-r' liest diese Datei und fügt" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "" +#~ "ihren Inhalt an den Kommandozeilenspeicher an. Durch die Option `-a' " +#~ "kann der" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "" +#~ "Kommandozeilenspeicher der Sitzung an die history Datei angefügt werden." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "" +#~ "Das Argument `-n' bewirkt, daß alle Zeilen die noch nicht aus der history " +#~ "Datei" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "" +#~ "gelesen wurden an den Kommandozeilenspeicher angefügt werden. Wenn ein " +#~ "Datei-" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "" +#~ "name angegeben ist, dann wird dieser als Name der history Datei " +#~ "verwendet. Sonst" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "wird der Inhalt der Variablen $HISTFILE und anschließend ~/.bash_history " +#~ "verwendet." + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "" +#~ "Durch die -s Option wird bewirkt, daß die Nicht-Options-Argumente als " +#~ "eigene" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "" +#~ "Zeile an den Kommandospeicher angefügt werden. Mit -p wird für jedes " +#~ "Argument" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "die Kommandosubstitution durchgeführt und das Ergebnis angezeigt, ohne " +#~ "jedoch" + +#~ msgid "anything in the history list." +#~ msgstr "etwas im Kommandozeilenspeicher abzulegen." + +# jobs +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "" +#~ "Gibt eine Liste der aktiven Jobs aus. Mit der -l Option werden " +#~ "zusätzlich die" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "Prozeßnummern und mit der -p Option nur die Prozeßnummern ausgsgegeben." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Die Option -n bewirkt, daß nur Jobs angezeigt werden, die ihren Status " +#~ "seid dem" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "letzten Aufruf geändert haben. Jobbez. beschränkt die Anzeige auf diesen " +#~ "Job." + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "-r zeigt nur laufende und -s nur gestoppte Jobs an. Wenn keine Optionen" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "angegeben sind, dann wird der Status aller aktiven Jobs angezeigt." + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "Wenn -x in der Kommandozeile angegeben ist, wird das Kommando ausgeführt " +#~ "und" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "vorher alle vorkommenden Jobspezifikationen durch ihre Prozeßnummer" + +#~ msgid "process group leader." +#~ msgstr "ersetzt." + +# disown +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "Entfernt die angegebenen Jobs von der Liste der aktiven Jobs." + +# kill +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "Sendet den durch pid (oder job) angegebenen Prozessen das Signal " +#~ "SIGSPEC. Wenn" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "" +#~ "kein Signal angegeben ist wird SIGTERM gesendet. Mit der Option -l kann " +#~ "eine" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "Liste der möglichen Signalnamen angezeigt werden. Wenn Zahlen nach der " +#~ "Option" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "angegeben werden, wird deren Signalbezeichnung angezeigt. Kill ist aus " +#~ "zwei" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "" +#~ "Gründen eine Shellfunktion: es können Jobbezeichnungen anstatt " +#~ "Prozeßnummern" + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "" +#~ "genutzt werden und, wenn die maximale Anzahl laufender Prozesse erreicht " +#~ "ist" + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "braucht kein weiterer Prozeß gestartet zu werden, um einen anderen zu " +#~ "beenden." + +# let +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "" +#~ "Jedes Argument ist ein auszuwertender arithmetischer Ausdruck. Es werden " +#~ "long" + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "integer Variablen verwendet. Ein Überlauftest wird nicht ausgeführt, " +#~ "jedoch" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "" +#~ "wird eine Division durch 0 erkannt und als Fehler gekennzeichnet. Die" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "Liste von Operatoren ist in Gruppen gleichen Vorrangs geordnet." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Die Gruppen selbst sind nach abnehmendem Vorrang sortiert." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tVorzeichen." + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tLogische und bitweise Negation." + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tMultiplikation, Division und Modulo." + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tAddition und Subtraktion." + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tBitweise Links- und Rechtsverschiebung." + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tVergleichsoperatoren." + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tGleich und ungleich." + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tBitweises UND." + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tBitweises XOR." + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tBitweises OR." + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tLogisches UND." + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tLogisches ODER." + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\tAusdruck1 ? Ausdruck2 : Ausdruck3" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\tBedingte Befehlsausführung." + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tZuweisungen." + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "" +#~ "Ausdruck durch ihren in long integer umgewandelten Wert ersetzt. Um " + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "die Variable in einem Ausdruck verwenden zu können, muß ihr " + +#~ msgid "turned on to be used in an expression." +#~ msgstr "Integerattribut nicht aktiviert sein." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "Die Operatoren werden in Reihenfolge ihres Vorrangs ausgewertet." + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "" +#~ "Geklammerte Teilausdrücke werden zuerst ausgewertet und können von den" + +#~ msgid "rules above." +#~ msgstr "oben angegebenen Vorrangregeln abweichen." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "Wenn das zuletzt ausgewertete Argument 0 ergibt, liefert let " + +#~ msgid "otherwise." +#~ msgstr "1 als Rückgabewert, sonst 0." + +# read +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "" +#~ "Es wird eine Zeile von der Standardeingabe gelesen und das erste Wort der" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "ersten Variablen NAME zugewiesen, das zweite Wort der zweiten Variablen " +#~ "und so" + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "weiter, bis ein Wort der letzten Variablen zugewiesen wurde. Nur die in " +#~ "$IFS" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "" +#~ "angegebenen Zeichen werden als Trennzeichen erkannt. Wenn kein EOF " +#~ "Zeichen" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "aufgetreten ist, ist der Rückgabewert Null. Wenn kein NAME angegeben " +#~ "wurde," + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "verwendet read die REPLY Variable. Durch die Option -r wird das " +#~ "Auswerten von" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "mit `\\' markierten Sonderzeichen unterdrückt. Wenn die Option -r " +#~ "angegeben" + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "ist, dann wird die Eingabeaufforderung ohne einen abschließenden " +#~ "Zeilenumbruch" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "angezeigt. Wenn die Option -a angegeben ist, dann wird die Eingabe an die" + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "" +#~ "Feldvariable ARRAY übergeben und für jeden Eintrag der Index von Null " +#~ "beginnend" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "um Eins erhöht wird. Mit der -e Option wird bei einer interaktiven Shell " +#~ "die" + +#~ msgid "readline is used to obtain the line." +#~ msgstr "" +#~ "die readline Funktionen aktiviert, um die Eingabezeile zu editieren." + +# return +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "" +#~ "Beendet eine Shellfunktion und setzt den Rückgabewert auf N. Wenn kein " +#~ "Rückga-" + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "bewert angegeben ist, wird der des zuletzt ausgeführten Kommandos " +#~ "verwendet." + +# set +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Markiert erzeugte oder veränderte Variablen als exportierbar." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Zeigt das Beenden von Prozessen sofort an." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr "" +#~ " -e Beendet die Shell sofort, wenn ein Kommando ein Fehler " +#~ "zurückliefert." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Unterdrückt das Erzeugen von Dateinamen." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Speichert die eingegebenen Kommandos sofort." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr "" +#~ " -i Erzwingt, daß die Shell interaktiv arbeitet. Interaktive Shells" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr "" +#~ " interpretieren beim Aufrufen den Inhalt der Datei `~/.bashrc'." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr "" +#~ " -k Die komplette Kommandozeile wird in die Umgebung der Funktion" + +#~ msgid " command, not just those that precede the command name." +#~ msgstr "" +#~ " geschrieben, nicht bloß die Argumente nach dem Funktionsnamen." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Jobsteuerung wird aktiviert." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Kommandos werden gelesen aber nicht ausgeführt." + +#~ msgid " -o option-name" +#~ msgstr " -o Option" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " Setzt die angegebene Option:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport Wie die Option -a." + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand Wie die Option -B." + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs Schaltet den Kommandozeileneditor in den emacs-" +#~ "Stil." + +#~ msgid " errexit same as -e" +#~ msgstr " errexit Wie die Option -e." + +#~ msgid " hashall same as -h" +#~ msgstr " hashall Wie die Option -h." + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand Wie die Option -H." + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr "" +#~ " ignoreeof Shell wird nach dem Lesen von EOF nicht " +#~ "verlassen ." + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " Kommentare werden auch in der Kommandozeile " +#~ "erlaubt." + +#~ msgid " keyword same as -k" +#~ msgstr " keyword Wie die Option -k." + +#~ msgid " monitor same as -m" +#~ msgstr " monitor Wie die Option -m." + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber Wie die Option -C." + +#~ msgid " noexec same as -n" +#~ msgstr " noexec Wie die Option -n." + +#~ msgid " noglob same as -f" +#~ msgstr " noglob Wie die Option -f." + +#~ msgid " notify save as -b" +#~ msgstr " notify Wie die Option -b." + +#~ msgid " nounset same as -u" +#~ msgstr " nounset Wie die Option -u." + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd Wie die Option -t." + +#~ msgid " physical same as -P" +#~ msgstr " physical Wie die Option -P." + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix Ändert das Verhalten der Shell, wo sie vom," + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr " 1003.2 Standard abweicht, zu einem POSIX " + +#~ msgid " match the standard" +#~ msgstr " kompatibelen Verhalten." + +#~ msgid " privileged same as -p" +#~ msgstr " privileged Wie die Option -p." + +#~ msgid " verbose same as -v" +#~ msgstr " verbose Wie die Option -v." + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr "" +#~ " vi Schaltet den Kommandozeileneditor in den vi-Stil." + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace Wie die Option -x." + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Ist aktiviert, wenn die reale und effektive Nutzer ID nicht " +#~ "überein-" + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr "" +#~ " stimmen. Die $ENV Datei wird nicht ausgeführt und keine " +#~ "Shellfunk-" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " tionen importiert. Das Deaktivieren dieser Option setzt die " +#~ "Effektive" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " uid und gid auf die Reale uid und gid." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr "" +#~ " -t Beendet die Shell sofort nach Ausfühern eines einzelnen Kommandos." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u Der Versuch leere (ungesetzte) Variablen zu erweitern erzeugt " +#~ "einen Fehler." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Gibt die Kommandozeilen aus wie sie gelesenen wurden." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr "" +#~ " -x Gibt die Kommandos mit ihren Argumenten aus wie es ausgeführt " +#~ "wird." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B Schaltet die Klammernerweiterung der Shell ein." + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr "" +#~ " -H Schaltet den Zugriff auf den Kommandozeilenspeicher durch `!' ein." + +#~ msgid " by default." +#~ msgstr " Diese Option ist standardmäßig aktiviert." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr "" +#~ " -C Verhindert das Überschreiben von existierenden Dateien durch" + +#~ msgid " by redirection of output." +#~ msgstr " Umleiten der Ausgabe (wie noclobber)." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Symbolische Verweise werden beim Ausführen von Kommandos, wie z." +#~ "B. cd" + +#~ msgid " such as cd which change the current directory." +#~ msgstr " welches das aktuelle Arbeitsverzeichnis ändert, ignoriert." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "" +#~ "Durch `+' an Stelle von `-' kann eine Option deaktiviert werden. Die " +#~ "Optionen" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ "können auch beim Aufruf der Shell benutzt werden. Die gegenwärtig " +#~ "aktivierten" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "Optionen sind in der Variablen $- gespeichert. Die verbleibenden n " +#~ "Argumente" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "" +#~ "sind Parameter und werden den Variablen $1, $2, .. $n zugewiesen. Wenn " +#~ "kein" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "Argument angegeben ist, dann werden alle Shellvariablen ausgegeben." + +# unset +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "" +#~ "Für jeden angegebenen NAMEn wird die entsprechende Variable oder Funktion " +#~ "ge-" + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "löscht. Mit `-v' werden nur Variablen und mit `-f' nur Funktionen " +#~ "gelöscht." + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "" +#~ "Wenn kein Schalter angegeben ist, wird zunächst eine Variable gesucht und " +#~ "wenn" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "" +#~ "eine solche nicht gefunden wurde, dann wird versucht eine Funktion zu " +#~ "löschen." + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "Einige Variablen (z.B. PATH und IFS) können nicht gelöscht werden. Siehe" + +#~ msgid "see readonly." +#~ msgstr "diesbezüglich auch die Hilfe der Funktion readonly." + +# export +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "" +#~ "Die NAMEn werden für den automatischen Export in die Umgebung von der " +#~ "Shell" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "" +#~ "gestarteten Prozesse markiert. Wenn die -f Option angegenen ist, dann " +#~ "bezeich-" + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "nen die NAME'n Funktionen. Wenn keine NAMEn angegeben sind, oder die `-p'" + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "Option angegeben ist, dann wird eine Liste aller von der Shell " +#~ "exportierter" + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "" +#~ "Namen ausgegeben. Mit dem Argument `-n' wird die Exporteigenschaft des " +#~ "NAMENs" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "" +#~ "gelöscht. Ein Argument `--' verhindert, daß nach diesem Zeichen weitere" + +#~ msgid "processing." +#~ msgstr "Optionen ausgewertet werden." + +# readonly +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Die angegebenen NAMEn werden als Nur-Lesen markiert. Deren Inhalte können" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "nicht mehr geändert werden. Wenn die -f Option angegeben wird, dann " +#~ "werden nur" + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "" +#~ "Funktionen markiert. Ohne oder mit dem `-p' Argument, werden alle auf " +#~ "Nur- " + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "Lesen gesetzte Namen ausgegeben. Mit dem Argument `-n' kann die Nur-Lese" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "Eigenschaft für die angegebenen Namen entfernt werden. Der `-a' Schalter" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "" +#~ "bewirkt, daß jeder Name als Feldvariable behandelt wird. Das Argument " +#~ "`--'" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "unterdrückt das Auswerten weiterer Optionen." + +# shift +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Die Positionsvariablen $N+1 ... werden nach $1 ... umbenannt. Wenn N " +#~ "nicht" + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "angegeben ist, dann wird 1 verwendet." + +# source +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "" +#~ "Liest und führt anschließend die Kommandos in DATEINAME aus. $PATH wird" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "als Suchpfad benutzt, um DATEINAME zu finden." + +# suspend +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "" +#~ "Hält das Ausführen der Shell solange an, bis sie das Signal SIGCONT " +#~ "empfängt." + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "" +#~ "Die `-f' Option unterdrückt eine Warnung, wenn es sich um eine Login Shell" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "handelt und hält auch deren Abarbeitung an." + +# test +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "" +#~ "Liefert den Rückgabewert 0 (wahr) oder 1 (falsch), abhängig vom Ergebnis " +#~ "des" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "" +#~ "Ausdruckes EXPR. Die Ausdrücke können ein- (unär) oder zweistellig " +#~ "(binär) sein." + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "Einstellige Ausdrücke werden oft zum Ermitteln eines Dateizustandes " +#~ "verwendet." + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "" +#~ "Es gibt außerden Zeichenketten- und numerische Vergleichsoperatoren." + +#~ msgid "File operators:" +#~ msgstr "Datei Operatoren:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr "" +#~ " -b DATEI Wahr, wenn der Dateiname ein Blockgerät bezeichnet." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr "" +#~ " -c DATEI Wahr, wenn der Dateiname ein sequentielles Gerät " +#~ "bezeichnet." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d DATEI Wahr, wenn es ein Verzeichnis ist." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e DATEI Wahr, wenn die Datei existiert." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -f DATEI Wahr, wenn die Datei existiert und eine reguläre Datei " +#~ "ist." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr " -g DATEI Wahr, wenn das SGID Bit gesetzt ist." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h DATEI Wahr, wenn FILE symbolischer Verweis ist. (Besser -L " +#~ "verw.)" + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L DATEI Wahr, wenn FIIE einen symbolischen Verweis ist." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k DATEI Wahr, wenn nur der Besitzer die Datei ändern darf " +#~ "(sticky)." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr "" +#~ " -p DATEI Wahr, wenn FILE eine benannte Pipeline (named pipe) " +#~ "ist." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr "" +#~ " -r DATEI Wahr, wenn die Datei vom aktuellen Benutzer lesbar ist." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr "" +#~ " -s DATEI Wahr, wenn die Datei existiert und nicht leer ist." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S DATEI Wahr, wenn die Datei ein \"Socket\" ist." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr "" +#~ " -t FD Wahr, wenn die Dateinummer FD für ein Terminal " +#~ "geöffnet ist." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr "" +#~ " -u DATEI Wahr, wenn für diese Datei das SUID Bit gesetzt ist." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr "" +#~ " -w DATEI Wahr, wenn die Datei vom aktuellen Benutzer schreibbar " +#~ "ist." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr "" +#~ " -x DATEI Wahr, wenn die Datei vom aktuellen Benutzer ausführbar " +#~ "ist." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr "" +#~ " -O DATEI Wahr, wenn der aktuelle Benutzer Eigentümer der Datei " +#~ "ist." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G DATEI Wahr, wenn GID des Benutzers und der Datei " +#~ "übereinstimmen." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " DATEI1 -nt DATEI2 Wahr, wenn der letzte Änderungszeitpunkt von DATEI1 " +#~ "jünger" + +#~ msgid " modification date) file2." +#~ msgstr " ist als der von DATEI2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " DATEI1 -ot DATEI2 Wahr, wenn DATEI1 älter ist als DATEI2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr "" +#~ " DATEI1 -ef DATEI2 Wahr, wenn beide Inodes übereinstimmen (hard link)." + +#~ msgid "String operators:" +#~ msgstr "Operatoren für Zeichenketten (Strings):" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z STRING Wahr, wenn die Länge der Zeichenkette Null ist." + +#~ msgid " -n STRING" +#~ msgstr " -n STRING" + +#~ msgid " STRING True if string is not empty." +#~ msgstr "" +#~ " STRING Wahr, wenn die Länge der Zeichenkette größer als Null " +#~ "ist." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " STRING1 = STRING2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Wahr, wenn die Zeichenketten identisch sind." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " STRING1 != STRING2" + +#~ msgid " True if the strings are not equal." +#~ msgstr "" +#~ " Wahr, wenn die Zeichenketten unterschiedlich sind." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " STRING1 < STRING2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Wahr, wenn STRING1 vor STRING2 alphabetisch geordnet " +#~ "ist." + +#~ msgid " STRING1 > STRING2" +#~ msgstr " STRING1 > STRING2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Wahr, wenn STRING1 nach STRING2 alphabetisch geordnet " +#~ "ist." + +#~ msgid "Other operators:" +#~ msgstr "Andere Operatoren:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! EXPR Wahr, wenn der Ausdruck EXPR `falsch' liefert." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr "" +#~ " EXPR1 -a EXPR2 Wahr, wenn die Ausdrücke EXPR1 und EXPR2 `wahr' " +#~ "liefern." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr "" +#~ " EXPR1 -o EXPR2 Wahr, wenn entweder EXPR1 oder EXPR2 wahr liefern." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr "" +#~ " arg1 OP arg2 Arithmetische Operatoren. OP kann -eq, -ne, -lt, -le, -" +#~ "gt" + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " oder -ge sein." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "" +#~ "Diese binären arithmetischen Operatoren liefern Wahr, wenn ARG1 gleich," + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "" +#~ "ungleich, kleiner als, kleiner gleich, größer als oder größer gleich" + +#~ msgid "than ARG2." +#~ msgstr "ARG2 ist." + +# [ +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "" +#~ "Dies ist ein Synonym für die Shellfunktion test. Das letzte Argument muß " +#~ "ein" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "`]' sein, das mit dem öffnenden `[' korrespondiert." + +# times +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "" +#~ "Gibt die verbrauchte Benutzer- und Systemzeit für die Shell und der von" + +#~ msgid "the shell." +#~ msgstr "ihr gestarteten Prozesse aus." + +# trap +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "Die Shell fängt die in SIG_SPEC angegebenen Signale ab führt das Kommando " +#~ "ARG" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "aus. Wenn kein ARG angegeben ist, werden alle bezeichneten Signale " +#~ "zurück-" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "gesetzt. Ist ARG eine leere Zeichenkette, dann wird jedes angegebne Sig-" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "" +#~ "nal von der Shell und den von ihr aufgerufenen Kommandos ignoriert. Wenn " +#~ "das" + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "" +#~ "Signal EXIT (0) abgefangen wird, dann wird ARG bei Verlassen der Shell " +#~ "ausge-" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "" +#~ "führt. Durch Abfangen des Signals DEBUG, wird ARG nach jedem Kommando" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "" +#~ "aufgerufen. Mit `-p' werden Kommandos angezeigt, die für jedes " +#~ "abgefangene" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "" +#~ "Signal ausgeführt werden. Wenn keine Argumente angegeben sind, oder wenn " +#~ "das" + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "Argument `-p' angegeben ist, wird eine Liste der Kommandos für jedes " +#~ "abgefan-" + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "gene Signal angezeigt. SIGNAL_SPEC ist entweder ein Signalname (aus " +#~ "signal.h)" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "oder eine Signalnummer. `trap -l' gibt eine Liste der Signalnamen und " +#~ "der ent-" + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "" +#~ "sprechenden Nummern aus. Ein Signal kann an eine Shell mit dem Befehl " +#~ "\"kill" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "-signal $$\" gesendet werden." + +# type +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "" +#~ "Gibt aus, wie der angegebene NAME interpretiert würde, wenn er in der" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "" +#~ "Die Option -t bewirkt, daß eins der Worte: `alias', `keyword', `function'," + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`file' oder `' ausgegeben wird, wenn NAME ein Alias, ein in der Shell " +#~ "reser-" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "viertes Wort, eine Skriptfunktion, eine eingebaute Shellfunktion, eine " +#~ "Datei" + +#~ msgid "or unfound, respectively." +#~ msgstr "ist oder kein Kommandotyp gefunden wurde." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "Wenn der -p Schalter angegeben ist, dann wird, wenn eine entsprechende " +#~ "Datei" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "existiert, ihr Name ausgegegeben," + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "Mit dem -a Schalter werden alle ausführbaren Dateien mit dem Namen `file'" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "angezeigt. Dieses schließt Aliase und Funktionen ein, aber nur dann" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "wenn nicht gleichzeitig der -p Schalter gesetzt ist." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "" +#~ "Type akzeptiert auch die Argumente -all, -path und -type an Stelle von -a," + +#~ msgid "respectively." +#~ msgstr "-p und -t." + +# ulimit +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "" +#~ "Ulimit steuert die Ressourcen, die den von der Shell aufgerufenen " +#~ "Prozessen" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "" +#~ "zur Verfügung stehen, wenn das System Ressourcensteuerung unterstützt. " +#~ "Wenn" + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "eine Option angegebe ist, dann wird sie wie folgt interpretiert:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tNutze die `weiche (soft)' Ressourceneinstellung." + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tNutze die `harte (hard)' Ressourceneinstellung." + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tDie gegenwärtige Ressourceneinstellung wird ausgegeben." + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\tDie maximale Größe der erzeugten core-Dateien." + +# für ein Prozeß oder für alle? +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\tDie maximale Größe des Datensegmentes eines Prozesses." + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr "" +#~ " -m\tMaximale Größe des nicht auszulagenden (residenten) " +#~ "Prozeßspeichers." + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tDie maximale Größe des Stapelspeichers." + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tDie maximal verfügbare CPU-Zeit (in Sekunden)." + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr "" +#~ " -f\tDie maximal erlaubte Größe für von der Shell erzeugte Dateien." + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tDie Größe des Pipeline-Puffers." + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tDie maximale Anzahl gleichzeitig geöffneter Dateien." + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tDie maximale Anzahl von Prozessen des Benutzers." + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tDie Größe des virtuellen Arbeitsspeichers." + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "" +#~ "Wenn eine Grenze angegeben ist, wird die Resouce auf diesen Wert gesetzt." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "" +#~ "Sonst wird der gegenwärtig eingestellte Wert ausgegeben. Wenn keine " +#~ "Option" + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "" +#~ "angegeben ist wird -f verwendet. Die Einheit ist 1k außer für -t, deren" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "Wert in Sekunden angegeben wird, -p, dessen Einheit 512 bytes ist und -u," + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "für das die Anzahl der Prozesse verwendet" + +#~ msgid "processes." +#~ msgstr "wird." + +# umask +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "Die Dateierzeugungsmaske wird auf MODE gesetzt. Wenn MODE nicht, oder -S" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "angegeben ist, dann wird die aktuelle Dateierzeugungsmaske ausgegeben." + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "" +#~ "Die `-S' Option bewirkt, daß die symbolische Entsprechung ausgegeben " +#~ "wird. " + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "Wenn MODE mit einer Ziffer beginnt, wird diese als Oktalzahl " +#~ "interpretiert." + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "Ansonsten wird eine symbolische Notation (analog chmod(1)) angenommen." + +# wait +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Wartet auf das Beenden der angegebenen Prozesse und gibt deren " +#~ "Rückgabewert" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "aus. Wenn keine Prozesse angegeben sind, wird auf alle aktiven" + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "" +#~ "Hintergrundprozesse gewartet und Null zurückgegeben. An wait können" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "Prozeßnummern und Jobbezeichnungen übergeben werden. Wenn " +#~ "Jobbezeichnungen" + +#~ msgid "pipeline are waited for." +#~ msgstr "" +#~ "angegeben sind, dann wird auf alle Prozesse in der Job-Pipeline gewartet " +#~ "und" + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "Null zurückgegeben." + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr " " + +# for +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "" +#~ "`for' führt eine Reihe von Kommandos für jeden Eintrag einer Liste aus." + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "Ohne `in WORTLISTE' wird als Argument `in \"$@\"' verwendet." + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "NAME wird nacheinander ein Element aus WORTLISTE zugewiesen" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "und die KOMMANDOS ausgeführt." + +# select +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "" +#~ "Die WORTE werden erweitert und erzeugen eine Wortliste. Diese wird als" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "numerierte Liste auf dem Standardfehlerkanal ausgegeben." + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "" +#~ "Wenn `in WORTE' nicht angegeben ist, dann wird `in \"$@\"' verwendet." + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "" +#~ "Das PS3-Promt wird angezeigt und eine Zeile von der Standardeingabe " +#~ "gelesen." + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "" +#~ "Wenn die gelesene Zeile eine Zeilennummer der angezeigten Liste enhält, " +#~ "dann" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "wird NAME entsprechend dem WORT in der bezeichneten Zeile gesetzt." + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "" +#~ "Wird eine leere Zeichenkette gelesen, dann wird die Liste erneut " +#~ "angezeigt." + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "Mir einem EOF Zeichen wird die Eingabe abgebrochen. Jeder andere Inhalt " +#~ "der" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "" +#~ "Zeichenkette bewirkt, daß NAME auf Null gesetzt wird. Die gelesene Zeile " +#~ "wird" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "" +#~ "in der Variable REPLY gespeichert. Die KOMMANDOS werden so lange " +#~ "wiederholt," + +#~ msgid "until a break or return command is executed." +#~ msgstr "bis die Schleife mit break oder return verlassen wird." + +# case +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "Führt KOMMANDOS abhängig von einem WORT aus, das MUSTER entspricht." + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "Das Zeichen `|' trennt mehrere Muster." + +# if +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Die KOMMANDOS werden ausgewertet. Ist der Rückgabewert Null, dann werden " +#~ "die" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "then KOMMANDOS ausgeführt. Ansonsten werden die elif KOMMANDOS der Reihe " +#~ "nach" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "ausgewertet und bei einem Rückgabewert Null die dazugehörigen KOMMANDOS" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "ausgeführt und if beendet. Sonst wird, wenn ein else Kommandozweig" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "" +#~ "existiert, dieser ausgeführt. Der Exitstatus ist der des letzten Kommandos" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "oder Null, wenn keine Bedingung wahr ergab." + +# while +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "" +#~ "Wiederholt den Schleifenkörper `do KOMMANDOS done' so lange die letzte" + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "Kommando `while KOMMANDOS' einen Rückkehrstatus Null liefert." + +# until +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "" +#~ "Kommando in `until KOMMANDOS' einen Rückkehrstatus ungleich Null liefert." + +# function +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Erzeugt eine neue Shellfunktion NAME, die KOMMANDOS ausführt. " + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "NAME und Kommandozeilenagumente werden an die Funktion als $0 .. $n" + +#~ msgid "function as $0 .. $n." +#~ msgstr "übergeben." + +# grouping_braces +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "" +#~ "Führt Kommandos in einer Gruppe aus. Das ist eine Möglichkeit die " +#~ "Ausgabe von" + +#~ msgid "entire set of commands." +#~ msgstr "einer Gruppe Kommandos umzuleiten." + +# fg_percent +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Ist ähnlich dem `fg' Kommando. Nimmt einen angehaltenen oder hintergrund " +#~ "Job" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "wieder auf. Wenn eine Jobnummer angegeben ist, dann wird dieser " +#~ "aufgenommen." + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "Wenn eine Zeichenkette angegeben ist, dann wird der Job der mit diesen " +#~ "Zeichen" + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "beginnt wieder aufgenommen. `&' bringt den Job in den Hintergrund." + +# variable_help +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Versionsnummer der Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "" +#~ "CDPATH Eine durch Doppelpunkt getrennte Liste von " +#~ "Verzeichnissen, die" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\tdurchsucht werden, wenn das Argument von `cd' nicht im" + +#~ msgid "\t\tdirectory." +#~ msgstr "\t\taktuellen Verzeichnis gefunden wird." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "HISTFILE Datei, die den Kommandozeilenspeicher enthält. " + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "" +#~ "HISTFILESIZE Maximale Zeilenanzahl, die diese Datei enthalten darf." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "" +#~ "HISTSIZE Maximale Anzahl von Zeilen, auf die der Historymechanismus" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tder Shell zurückgreifen kann." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "HOME Heimatverzeichnis des aktuellen Benutzers." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE CPU-Typ des Rechners, auf dem die Bash gegenwärtig läuft." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF Legt die Reaktion der Shell auf ein EOF-Zeichen fest." + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "\t\tWenn die Variable eine ganze Zahl enthält, wird diese Anzahl" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\tEOF Zeichen (Ctrl-D) abgewartet, bis die Shell verlassen wird." + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tDer Vorgabewert ist 10. Ist IGNOREEOF nicht gesetzt," + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "\t\tsignalisiert EOF das Ende der Eingabe." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tZeitintervall [s], in dem nach angekommener Post gesucht wird." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "" +#~ "MAILPATH\tEine durch Doppelpunkt getrennte Liste von Dateien, die nach" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tneu angekommener Post durchsucht werden." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "" +#~ "OSTYPE\t\tBetriebssystemversion, auf der die Bash gegenwärtig läuft." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "PATH\t\tDurch Doppelpunkt getrennte Liste von Verzeichnissen, die " + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tnach Kommandos durchsucht werden." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "" +#~ "PROMPT_COMMAND Kommando, das vor der Anzeige einer primären " +#~ "Eingabeaufforderung" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\t(PS1) ausgeführt wird." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "" +#~ "PS1 Zeichenkette, die die primäre Eingabeaufforderung enthält." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "" +#~ "PS2 Zeichenkette, die die sekundäre Eingabeaufforderung " +#~ "enthält." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM Name des aktuellen Terminaltyps." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Ein Wert ungleich Null bewirkt, daß ein einzelnes " +#~ "Kommando auf" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\teiner Zeile zunächst in der Liste gegenwärtig gestoppter Jobs" + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "\t\tgesucht und dieser in den Vordergrund geholt wird. `exact'" + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\tbewirkt, daß das Kommando genau dem Kommando in der" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "\t\tListe der gestoppten Jobs entsprechen muß. Wenn die Variable" + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\tden Wert `substring' enthält, muß das Kommando einem Substring" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "\t\tder Jobbezeichnung entsprechen. Bei einem anderen Wert müssen" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "\t\tdie ersten Zeichen übereinstimmen." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "\t\tMehrzeilige Kommandos werden im Kommandozeilenspeicher in einer" + +#~ msgid " a single history line." +#~ msgstr "\t\tZeile abgelegt, wenn die Variable ungleich Null gesetzt ist." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "" +#~ "histchars Zeichen, die die Befehlswiederholung und die " +#~ "Schnellersetzung" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tsteuern. An erster Stelle steht das Befehlswiederholungszeichen" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\t(normalerweise `!'); an zweiter das `Schnell-Ersetzen-Zeichen'" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\t(normalerweise `^'). Das dritte Zeichen ist das" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\t`Kommentarzeichen' (normalerweise `#')." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "HISTCONTROL\tGesetzt auf `ignorespace' werden keine mit einem" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "" +#~ "\t\tLeerzeichen oder Tabulator beginnenden Zeilen im Kommandospeicher" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\tabgelegt. Der Wert `ignoredups' verhindert das Speichern" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\taufeinanderfolgender identischer Zeilen. `ignoreboth'" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "\t\tkombiniert beide Einstellungen. Wenn die Variable" + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "\t\tnicht oder auf einen anderen Wert gesetzt ist, werden alle" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\teingegebenen Zeilen im Kommandospeicher abgelegt." + +# pushd +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "Legt ein Verzeichnisnamen auf den Verzeichnisstapel oder rotiert diesen " +#~ "so," + +# Gibt's denn auch andere als "aktuelle" Arbeitsverzeichnisse? +# "Arbeit" impliziert .m.E. "aktuell" +# ck +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "daß das Arbeitsverzeichnis auf der Spitze des Stapels liegt. Ohne" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "" +#~ "Argumente werden die obersten zwei Verzeichnisse auf dem Stapel " +#~ "vertauscht." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von `dirs'," + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "gezählt von links) sich an der Spitze des Stapels befindet." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "-N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von `dirs'," + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "gezählt von rechts) sich an der Spitze des Stapels befindet." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "-n\tunterdrückt das Wechseln in das Verzeichnis beim Hinzufügen zum" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tStapel, so daß nur der Stapel verändert wird." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "DIR\tLegt DIR auf die Spitze des Verzeichnisstapels und wechselt" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "" +#~ "Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt werden." + +# pushd +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "" +#~ "Entfernt Einträge vom Verzeichnisstapel. Ohne Argumente wird die Spitze " +#~ "des" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "Stapels entfernt und in das Verzeichnis gewechselt, das dann an der" + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "" +#~ "+N\tEntfernt den N'ten Eintrag vom Stapel, gezählt von Null von der " +#~ "Liste," + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tdie `dirs' anzeigt. Beispielsweise entfernen `popd +0' das" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\terste Verzeichnis und `popd +1' das zweite." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "" +#~ "-N\tEntfernt den N'ten Eintrag vom Stapel, beginend rechts bei Null in der" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\tListe, die `dirs' angeigt. Beispielsweise entfernen `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tdas letzte Verzeichnis und `popd -1' das vorletzte." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n\tVerhindert das Wechseln des Arbeitsverzeichnisses wenn Verzeichnisse" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tvom Stapel entfernt werden, so daß nur der Stapel verändert wird." + +# dirs +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "" +#~ "Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an. " +#~ "Gespeichert" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "" +#~ "werden die Verzeichnisse durch das `popd' Kommando und können durch das " +#~ "`pushd'" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "Kommando wieder vom Stapel entfernt werden." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Wenn die -l Option angegeben ist, dann werden keine Kurzversionen der " +#~ "Verzeich-" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "nisse angezeigt, die relativ zum Heimatverzeichnis sind. Es wird also an" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "Stelle von `~/bin' der absolute Pfad `/home/foo/bin' angezeigt. Mit der -" +#~ "v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "Option wird von `dirs' ein Eintrag pro Zeile ausgegeben. Die Position im" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "Stapel wird vorangestellt. Die -p Option wirkt ähnlich, es wird " +#~ "allerdings" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "" +#~ "nicht die Position im Stapel angezeigt. Wenn -c angegeben ist, damm " +#~ "werden" + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "alle Einträge vom Verzeichnisstapel gelöscht." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N\tZeigt den N'ten Eintrag, gezählt von links begginnend bei Null, aus" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tder Liste, die von `dirs' ohne Optionen angezeigt wird." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N\tZeigt den N'ten Eintrag, gezählt von rechts begginnend bei Null, aus" + +# shopt_builtin +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "" +#~ "Ändert die Werte von Variablen die zusätzliche Eigenschaften der Shell " +#~ "steuern." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "" +#~ "Mit der -s Option wird jeder OPTIONSMAME gesetzt. Die -u Option setzt " +#~ "jeden" + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "" +#~ "OPTIONSNAMEN zurück. Die -q Option unterdrückt Ausgaben. Der " +#~ "Rückgabewert" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "" +#~ "des Kommandos gibt an ob der OPTIONSNAME ein- oder ausgeschalten wurde. " +#~ "Die" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "" +#~ "Option beschränkt die OPTIONSNAMEN auf jene die mit `set -o' benutzt " +#~ "werden" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "" +#~ "können. Ohne oder mit der -p Option wird eine Liste aller `settable' " +#~ "Optionen" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "" +#~ "mit einer Markierung ob die angegebene Option gesetzt oder nicht gesetzt" + +#~ msgid "not each is set." +#~ msgstr "ist angezeigt." diff --git a/src/bin/bash/po/en@boldquot.gmo b/src/bin/bash/po/en@boldquot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e4dc9596b1c1b24577202e66929b954c44d12ca5 GIT binary patch literal 155921 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" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "directory stack empty" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "directory stack index" + +#: builtins/pushd.def:683 +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:705 +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:730 +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" +"[0m’\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" +"[0m’\n" +" \tremoves the last directory, ‘popd -1’ the next to last.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: cannot unset" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: cannot unset: readonly %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "unknown command error" + +#: error.c:406 +msgid "bad command type" +msgstr "bad command type" + +#: error.c:407 +msgid "bad connector" +msgstr "bad connector" + +#: error.c:408 +msgid "bad jump" +msgstr "bad jump" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: unbound variable" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atimed out waiting for input: auto-logout\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:854 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: invalid arithmetic operator" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token is “%sâ€)" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "value too great for base" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expression error\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "cannot reset nodelay mode for fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d appears in running job %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: process %5ld (%s) in the_pipeline" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marked as still alive" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Done" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Stopped" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Stopped(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Running" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Done(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Unknown status" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld to %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: line %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp failed" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "cannot set terminal process group (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "unknown" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:5223 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s†to leave the shell.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: function ‘%s’ not found" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "cannot create temp file for here-document: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "Unknown Signal #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unknown Signal #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "bad substitution: no closing “`†in %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:262 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:806 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2009 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "This is free software; you are free to change and redistribute it.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "There is NO WARRANTY, to the extent permitted by law.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: cannot allocate %lu bytes" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: cannot allocate %lu bytes" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-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 filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [dir]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "true" + +#: builtins.c:72 +msgid "false" +msgstr "false" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [name[=value] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] name[=value] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [pattern ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [name ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] or export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [name[=value] ...] or readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". filename [arguments]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Names and meanings of some shell variables" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o option] [name ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:242 +msgid "" +"readarray [-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:254 +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:276 +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:289 +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" +" \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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if ‘-L’ were " +"specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." + +#: builtins.c:411 +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" +" \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" +" \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:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the ‘type’ " +"builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the ‘trace’ attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See ‘help declare’." + +#: builtins.c:520 +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, an error occurs,\n" +" 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, an error occurs,\n" +" or the shell is not executing a function." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two 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 on the standard output followed by a newline.\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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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" +"[0m’\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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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" +" \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:898 +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" +" \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 "" +"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" +" \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." + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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 follow 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" +" 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:1101 +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" +" 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" +" 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:1121 +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:1140 +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 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 "" +"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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if ‘type -t NAME’ would not return ‘file’.\n" +" -t\toutput a single word which is one of ‘alias’, ‘keyword" +"[0m’,\n" +" \t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME " +"is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." + +#: builtins.c:1478 +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:1492 +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:1510 +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 “$@" +"[0m‒\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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" +"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." + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1785 +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" +" \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.\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" +" \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" +"[0m’\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" +"[0m’\n" +" \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:1815 +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" +" \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.\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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." + +#: builtins.c:1990 +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/src/bin/bash/po/en@quot.gmo b/src/bin/bash/po/en@quot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..64e513ecc80c3eba3a3b2bc38c6d15a1f65d943f GIT binary patch literal 154417 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 RaZcXNm-!j(j}6X~{|8s<6" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "directory stack empty" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "directory stack index" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: cannot unset" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: cannot unset: readonly %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "unknown command error" + +#: error.c:406 +msgid "bad command type" +msgstr "bad command type" + +#: error.c:407 +msgid "bad connector" +msgstr "bad connector" + +#: error.c:408 +msgid "bad jump" +msgstr "bad jump" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: unbound variable" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atimed out waiting for input: auto-logout\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:854 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: invalid arithmetic operator" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token is “%sâ€)" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "value too great for base" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expression error\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "cannot reset nodelay mode for fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d appears in running job %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: process %5ld (%s) in the_pipeline" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marked as still alive" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Done" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Stopped" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Stopped(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Running" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Done(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Unknown status" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld to %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: line %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp failed" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "cannot set terminal process group (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "unknown" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:5223 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s†to leave the shell.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: function ‘%s’ not found" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "cannot create temp file for here-document: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "Unknown Signal #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unknown Signal #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "bad substitution: no closing “`†in %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:262 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:806 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2009 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "This is free software; you are free to change and redistribute it.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "There is NO WARRANTY, to the extent permitted by law.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: cannot allocate %lu bytes" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: cannot allocate %lu bytes" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-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 filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [dir]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "true" + +#: builtins.c:72 +msgid "false" +msgstr "false" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [name[=value] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] name[=value] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [pattern ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [name ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] or export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [name[=value] ...] or readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". filename [arguments]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Names and meanings of some shell variables" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o option] [name ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:242 +msgid "" +"readarray [-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:254 +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:276 +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:289 +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" +" \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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if ‘-L’ were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." + +#: builtins.c:411 +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" +" \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" +" \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:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the ‘type’ builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the ‘trace’ attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See ‘help declare’." + +#: builtins.c:520 +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, an error occurs,\n" +" 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, an error occurs,\n" +" or the shell is not executing a function." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two 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 on the standard output followed by a newline.\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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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" +" \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:898 +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" +" \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 "" +"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" +" \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." + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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 follow 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" +" 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:1101 +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" +" 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" +" 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:1121 +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:1140 +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 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 "" +"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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if ‘type -t NAME’ would not return ‘file’.\n" +" -t\toutput a single word which is one of ‘alias’, ‘keyword’,\n" +" \t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" +"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." + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1785 +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" +" \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.\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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1815 +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" +" \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.\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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." + +#: builtins.c:1990 +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/src/bin/bash/po/eo.gmo b/src/bin/bash/po/eo.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1761a6ec8d8115b79cd52e1f2d5f3f0d446f8188 GIT binary patch literal 25421 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 k+VPTcN*5%Lq4hD%%Jv)`mzi#?m~UWv%d}j1s, 1998, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2006-11-24 09:19+0600\n" +"Last-Translator: Sergio Pokrovskij \n" +"Language-Team: Esperanto \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "Misa tabel-indico" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: Misa nomo de ago" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: Valorizato havu nombran indicon" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: Ne prosperis krei: %s" + +# XXX: internal_error +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "Mankas ferma „%c‟ en %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: Mankas disiga dupunkto" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s‟: Misa nomo por klavartabelo" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: Ne eblas legi: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: Ne eblas malligi" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "%s: Nekonata funkcinomo" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s malhavas klavligon\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s vokeblas per " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "Sencas nur en iteracio „for‟, „while‟ aÅ­ „until‟" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Liveras la kuntekston de la kuranta procedurvoko." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME malhavas valoron" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD malhavas valoron" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: Averto: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: Averto: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "Tro multe da argumentoj" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: La opcio bezonas argumenton" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: Necesas nombra argumento" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: Ne trovita" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: Misa opcio" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: Misa opcinomo" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s‟ ne estas taÅ­ga nomo" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "Misa signalnumero" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "Misa nombro" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "Misa nombro" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: Misa signalindiko" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Nurlega variablo" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s estas ekster sia variejo" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s estas ekster sia variejo" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: Ne estas tia laboro" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: Ĉi tiu Åelo ne disponigas laborregadon" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "Laborregado ne disponeblas" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: Limigita" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "limigita" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "„%s‟ ne estas primitiva komando Åela" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "Eraro ĉe skribo: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Ambigua laborindiko" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: Misa nomo de ago" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: Kompletigo ne estas specifita" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "Uzeblas nur ene de funkcio" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "„-f‟ ne estas uzebla por fari funkciojn" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Nurlega funkcio" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: ĉi tiel ne eblas neniigi variablojn" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "Rultempa Åargo ne disponeblas" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "Ne malfermiÄis dinamika biblioteko %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "Mankas %s en la dinamika biblioteko%s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: Ne Åargita dinamike" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: Ne eblas forigi: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s estas dosierujo" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: Ne ordinara dosiero" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: Tro granda dosiero" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: Neplenumebla duuma dosiero" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: Maleblas plenumi: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "La Åelo ne estas saluta; eliru per «exit»" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Restas haltigitaj laboroj.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Restas haltigitaj laboroj.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "Komando ne trovita" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "Historia indiko" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: Ne malfermiÄis labordosiero: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "Nomkonservado (haketado, «hashing») estas malÅaltita" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: Hakettabelo estas malplena\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "La ĵusa komando: %s\n" + +# ZZZ: aĉaj citiloj +#: builtins/help.def:130 +#, fuzzy, c-format +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 Ålosilvorto `" + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: Fiaskis malfermo de %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "Ne pli ol unu el -anrw estas uzebla" + +#: builtins/history.def:186 +msgid "history position" +msgstr "pozicio en la historio" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: Historia malvolvo fiaskis" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: Historia malvolvo fiaskis" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "La uzo de „-x‟ malebligas aliajn opciojn" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Nekonata eraro" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "Mankas esprimo" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: Misa indiko de dosiernumero" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "„%d‟: Misa dosiernumero: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: Misa opcio" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: Misa opcio" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: Misa nomo de ago" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: Ne tabela variablo" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s‟: Mankas formata signo" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c‟: Misa signo formata" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: Averto: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "Mankas 16uma cifero por \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "Ne estas alia dosierujo" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Rekursistako elĉerpita" + +# dirs [-clpv] [+N] [-N] +#: builtins/pushd.def:683 +#, fuzzy +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" +" La opcio -l indikas ke „dirs‟ ne eligu mallongajn formojn de\n" +" dosierujnomoj relative al via hejma dosierujo. T.e. anstataÅ­\n" +" «~/bin» aperos nomo kun absoluta vojo, ekz-e «/homes/bfox/bin».\n" +" La opcio -v igas komandon „dirs‟ eligi po unu eron de la dosierujstako\n" +" en linio, metante antaÅ­ la dosierujnomo Äian numeron en la stako.\n" +" La opcio -p faras simile, tamen ne numeras la poziciojn.\n" +" La opcio -c malplenigas la dosierujstakon forigante el Äi ĉiujn erojn.\n" +"\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:705 +#, 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 "" +"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" +" +N\tCikle Åovu la stakon tiel ke la Na 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 Na dosierujo (nombrante de\n" +" \tdekstre en la listo eligebla per „dirs‟, numerante de 0) iÄu\n" +" la pinta.\n" +"\n" +" -n\tNe ÅanÄu la kurantan dosierujon surstakigante dosierujon sur\n" +" \tla stakon; do, nur la stakon ÅanÄu.\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:730 +#, 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 "" +"Elstakigu erojn el la stako de dosierujoj. Senargumente, forigu la\n" +" pintan dosierujon kaj iru (cd) en la novan pintan dosierujon.\n" +"\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" +" -n\tNe ÅanÄu la kurantan dosierujon demetante dosierujon el la\n" +"\tstako; do, nur la stakon ÅanÄu.\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: Misa indiko de atendotempo" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "Lega (read) eraro: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" +"„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: Malaktivigo fiaskis" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: Malaktivigo fiaskis: nurlega %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: Ne tabela variablo" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: Ne funkcio" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "Nombrilo de „shift‟" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "Maleblas samtempe Åalti kaj malÅalti Åelan opcion" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: Dosiero ne trovita" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "Ne eblas halteti" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "Ne eblas haltetigi salutan Åelon" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "„%s‟ alinomas jenon: «%s»\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "„%s‟ estas Ålosilvorto de la Åelo\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s estas funkcio\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "„%s‟ estas primitiva komando de la Åelo\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "„%s‟ estas „%s‟\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "„%s‟ estas metita en hakettabelon (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: MaltaÅ­ga argumento por limo" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "„%c‟: Misa komando" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: Fiaskis provo legi limon: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: Malprosperis ÅanÄi limon: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "Okuma nombro" + +# Misa modifilo: «umask Z-w» aÅ­ «umask aZw» +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" + +# Misa kategorio: ne [rw] ktp +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: 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 ..." + +#: error.c:405 +msgid "unknown command error" +msgstr "Nekonata komand-eraro" + +#: error.c:406 +msgid "bad command type" +msgstr "Misa komandotipo" + +#: error.c:407 +msgid "bad connector" +msgstr "Misa stir-operacio" + +#: error.c:408 +msgid "bad jump" +msgstr "Misa salto" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: Neligita variablo" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n" + +# XXX: internal error: +#: execute_cmd.c:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "Eraro ĉe skribo: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: Komando ne trovita" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: Misa interpretilo" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "Tro profunda rekursio en esprimo" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "Rekursistako elĉerpita" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "Sintaksa eraro en esprimo" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "Provo valorizi ne-variablon" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "Divido per 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "„:‟ mankas kondiĉa esprimo" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "Negativa eksponento" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "Post antaÅ­kremento aperu nomo de variablo" + +#: expr.c:854 +msgid "missing `)'" +msgstr "Mankas „)‟" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "Sintaksa eraro: Mankas operando" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "MaltaÅ­ga bazo nombrosistema" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "Tro granda valoro por bazo de nombrosistemo" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: Mankas entjera esprimo" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getwd: Ne eblas atingi patrajn dosierujojn" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "Ne eblas reÅalti senprokrastan reÄimon por dosiero n-ro %d" + +#: input.c:258 +#, 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:266 +#, 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" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Malestas informoj pri procezo %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: La laboro %d estas haltigita" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: La laboro finiÄis" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: La laboro %d jam estas fona" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: Averto: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "Ĉi tiu Åelo ne disponigas laborregadon" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: Malveras la aserto: %s\n" + +# XXX: debug? +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "%s: Nekonata retnodo" + +# XXX: debug? +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" + +# XXX: debug? +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: La argumento montras blokon jam malokupitan" + +# XXX: debug? +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: La argumento ne montras generitan memoron" + +# XXX: debug? +#: lib/malloc/malloc.c:896 +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:902 +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:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: La argumento ne montras generitan memoron" + +# XXX: debug? +#: lib/malloc/malloc.c:1016 +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:1022 +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:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "Reta funkciado ne disponeblas" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Vi havas poÅton en $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Nova poÅto en $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "La poÅto en %s estas jam legita\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "Sintaksa eraro: Necesas aritmetika esprimo" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "Sintaksa eraro: Neatendita „;‟" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Sintaksa eraro: „((%s))‟" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: Misa ordontipo %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +# XXX: programming_error +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "Neatendita dosierfino dum serĉo de „]]‟" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "Sintaksa eraro en kondiĉa esprimo" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "Mankas „)‟" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr ">\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 "" +"Ĉiu arg estas komputenda aritmetika esprimo. La komputado uzas\n" +" longajn entjerojn sen kontrolo pri trooj; tamen divido per 0\n" +" estas kaptata kaj raportata kiel eraro. En la sekvanta listo\n" +" da operacioj la samprioritataj operacisimboloj aperas kune.\n" +" La grupoj estas aranÄitaj laÅ­ malkresko de prioritato.\n" +"\n" +"\tnomo++, nomo--\tpostkrementoj de variablo\n" +"\t-, +\t\tunulokaj minus, plus\n" +"\t!, ~\t\tlogika kaj laÅ­bita negoj\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&=, ^=, |=\tvalorizo\n" +"\n" +" La Åelvariabloj uzeblas kiel operandoj. En esprimo la nomon de\n" +" variablo anstataÅ­as Äia valoro (altipigita al longa entjero).\n" +" Por tia uzo en esprimo variablo ne bezonas havi Åaltita sian\n" +" atributon integer (entjera).\n" +"\n" +" La operacioj plenumiÄas laÅ­ siaj prioritatoj. La enkrampigitaj\n" +" subesprimoj plenumiÄas unue, kaj tio ebligas ĉirkaÅ­iri la supre\n" +" priskribitajn regulojn pri la prioritatoj.\n" +"\n" +" Se la komputo de la lasta arg donas 0, la komando „let‟\n" +" liveras 1; alie Äi liveras 0." + +# read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] +# [-d delim] [name ...] +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Legu unu linion el la ĉefenigujo, aÅ­ el la dosiero indikita\n" +" per dosiernumero fd, se la opcio -u estas donita; la unuan\n" +" vorton ricevu la unua argumento name; la duan, la dua name ktp;\n" +" la lasta name ricevu ĉiujn restantajn vortojn. Nur la signoj\n" +" troveblaj en la variablo $IFS rolas kiel vortodisigiloj. Se\n" +" nenia name estas donita, konservu la legitan linion en la\n" +" variablo REPLY.\n" +"\n" +" La opcio -r indikas «krudan legadon», ke la deklivo „\\‟ estas\n" +" ordinara signo kiu ne rolas kiel eskapsigno.\n" +" La opcio -d enkondukas finilon delim, ĉe kies unua signo la\n" +" legado ĉesu (anstataÅ­ ĉe la normala linifinilo).\n" +" La opcio -p kaÅ­zas eligon de la invitĉeno prompt sen liniavanco\n" +" antaÅ­ la atendata enigo.\n" +" La opcio -a igas konservi la legatajn vortojn en sinsekvaj\n" +" elementoj de tabelo array, komencante per la nula.\n" +" Se la opcio -e estas donita kaj la Åelo estas dialoga, la\n" +" linio estas legata per la funkcio readline().\n" +" Se la opcio -n estas donita kun argumento nchars ne egala al 0,\n" +" read finiÄas leginte nchars da signoj.\n" +" La opcio -s silentigas la eÄ¥on de la terminala enigo.\n" +"\n" +" La opcio -t igas la komandon read ĉesiÄi kun fiaska elirstato se\n" +" kompleta linio da enigaĵo ne estas ricevita dum timeout da\n" +" sekundoj. Se la variablo TMOUT havas valoron, ĉi tiu estas\n" +" uzata kiel defaÅ­lta atendolimo. La elirstato estas 0, krom se\n" +" renkontiÄas dosierfino, atendolimo estas atingita, aÅ­ nevalida\n" +" dosiernumero estas indikita ĉe -u." + +#: builtins.c:1006 +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 "" + +# set [--abefhkmnptuvxBCHP] [-o option] [arg ...] +#: builtins.c:1019 +#, 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 follow 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" +" 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 "" +"-a\tMarku eksportendaj la variablojn ÅanÄitajn aÅ­ kreitajn.\n" +" -b\tTuj sciigu pri finiÄo de fonaj laboroj.\n" +" -e\tEliru tuj se iu komando finiÄis kun elirstato alia ol 0.\n" +" -f\tNe malvolvu ĵokerojn en dosiernomoj.\n" +" -h\tRegistru en hakettabelo la situon de komandoj serĉataj.\n" +" -k\tĈiujn valorizojn en ajna parto de komandolinio rigardu\n" +" kiel valorizojn de Åelvariabloj por la medio de la komando,\n" +"\tne nur la valorizojn antaÅ­antajn la komandonomon.\n" +" -m\tAktivigu la laborregadon.\n" +" -n\tLegu la komandojn sen plenumi ilin.\n" +" -o option\n" +"\tAktivigu la variablon respondan al la opcionomo option:\n" +"\t allexport\tsame kiel -a\n" +"\t braceexpand\tsame kiel -B\n" +"\t emacs\tuzu emakseskan interfacon por liniredaktado\n" +"\t errexit\tsame kiel -e\n" +"\t errtrace\tsame kiel -E\n" +"\t functrace\tsame kiel -T\n" +"\t hashall\tsame kiel -h\n" +"\t histexpand\tsame kiel -H\n" +"\t history\tebligu komandohistorion\n" +"\t ignoreeof\tla Åelo ne finiÄos leginte dosierfinilon\n" +"\t interactive-comments\n" +"\t\t\ttoleru komentojn en dialogaj komandoj\n" +"\t keyword\tsame kiel -k\n" +"\t monitor\tsame kiel -m\n" +"\t noclobber\tsame kiel -C\n" +"\t noexec\tsame kiel -n\n" +"\t noglob\tsame kiel -f\n" +"\t notify\tsame kiel -b\n" +"\t nounset\tsame kiel -u\n" +"\t onecmd\tsame kiel -t\n" +"\t physical\tsame kiel -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 1003.2 tiel\n" +"\t\t\tke Äi konformu al tiu normo\n" +"\t privileged\tsame kiel -p\n" +"\t verbose\tsame kiel -v\n" +"\t vi\t\tuzu vi-eskan interfacon por liniredaktado\n" +"\t xtrace\tsame kiel -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 protokolon !-stile. DefaÅ­lte la opcio estas\n" +"\taktiva en la dialogaj Åeloj.\n" +" -P\tNe sekvu simbolajn ligilojn plenumante tiajn komandojn, kiel\n" +"\t„cd‟ por ÅanÄi la kurantan dosierujon.\n" +" -T\tSe aktiva, la DEBUG-kaptilon (DEBUG trap) heredas la Åelaj\n" +"\tfunkcioj\n" +" -\tLa restantajn argumentojn uzu por valorizi la poziciajn\n" +"\tparametrojn. La opcioj -x kaj -v malaktiviÄas.\n" +"\n" +" Uzante la signon + anstataÅ­ - vi povas malÅalti la opcion. La opciojn\n" +" ankaÅ­ eblas uzi ĉe la voko de la Åelo. La kuranta aro da aktivaj\n" +" opcioj troveblas en $-. La restantaj n argumentoj arg estas\n" +" poziciaj, kaj per ili estas valorizataj, respektive, $1, $2 ... $n.\n" +" Se nenia arg estas donita, ĉiuj Åelvariabloj estas eligataj." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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 "" + +# source filename [arguments] +#: builtins.c:1173 builtins.c:1188 +#, 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 "" +"Legu kaj plenumu la komandojn el dosiernomo filename kaj\n" +" revenu. La vojoj el la variablo $PATH estas uzataj por trovi\n" +" la dosierujon de filename. La eventualaj argumentoj\n" +" arguments iÄas la poziciaj parametroj por plenumo de filename." + +#: builtins.c:1204 +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 "" + +# test [expr] +#: builtins.c:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +"Liveru elirstaton 0 (vera) aÅ­ 1 (malvera) laÅ­ la rezulto de\n" +" komputado de la esprimo expr. La esprimoj povas esti unulokaj\n" +" aÅ­ dulokaj. La unulokaj plejparte servas por determini la\n" +" staton de dosiero. Krome, estas operacioj super ĉenoj kaj la\n" +" nombrokomparaj operacioj.\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 la ĈENO estas vakua.\n" +"\t-n ĈENO\t\tVera se la ĈENO ne estas vakua\n" +"\tĈENO\t\tVera se la Ĉ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" +"\t! ESPR\t\tVera se la esprimo ESPR estas falsa.\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." + +# [ arg... ] +#: builtins.c:1296 +#, fuzzy +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:1305 +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 "" + +# ZZZ: trap [arg] [signal_spec ...] or +# trap -l +#: builtins.c:1317 +#, 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.\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 "" +"La komando arg estas legota kaj plenumota kiam la Åelo ricevos\n" +" (iun) signalon signal_spec. Se nenia arg estas donita, ĉiuj\n" +" sian komencan valoron. Se ARG estas vakua ĉeno, ĉiuj signaloj\n" +" signal_spec estos malatentataj de la Åelo kaj de la komandoj\n" +" kiujn Äi vokas.\n" +"\n" +" Se inter la signaloj signal_spec estas „EXIT‟ (0), tiam arg de\n" +" la komando plenumiÄos ĉe la eliro el la Åelo.\n" +" Se signal_spec estas DEBUG, arg plenumiÄos post ĉiu komando.\n" +" La opcio „-p‟ ebligas eligi la komandojn plenumotajn laÅ­ ĉiu\n" +" signalo signal_spec. Se estas donita neniu argumento aÅ­ nura\n" +" „-p‟, trap listigas la komandojn por trakti ĉiun kaptendan\n" +" signalon.\n" +"\n" +" Ĉiu signal_spec estas aÅ­ signalnomo el , aÅ­\n" +" signalnumero. „trap -l‟ listigas la signalnomojn kun la numeroj.\n" +" Signalon signalindiko eblas sendi al la Åelo per la komando\n" +" «kill -signalindiko $$»." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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 "" + +# ulimit [-SHacdflmnpstuv] [limit] +#: builtins.c:1380 +#, 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" +" -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" +" \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 "" +"La komando „ulimit‟ ebligas mastrumi la risurcojn disponeblajn al la\n" +" procezoj lanĉataj el la Åelo (se la operaciumo ebligas tian\n" +" mastrumadon). Se opcio estas donita, Äi havas jenan sencon:\n" +"\n" +"\t-S ÅanÄebla („soft‟) limo\n" +"\t-H firma („hard‟) limo\n" +"\t-a eligu ĉiujn kurantajn risurcolimaĵojn\n" +"\t-c maksimuma longo de nekropsia dosiero („core‟)\n" +"\t-d maksimuma longo de datumsegmento de procezo\n" +"\t-e maksimuma viciga prioritato („nice‟)\n" +"\t-f maksimuma longo de dosieroj skribataj de la Åelo kaj Äiaj idoj\n" +"\t-l maksimuma longo de Ålosebla procezmemoro (mlock)\n" +"\t-m maksimuma longo de rezida procezmemoro\n" +"\t-n maksimuma nombro de malfermitaj dosiernumeroj\n" +"\t-p longo de dukta bufro (pipe)\n" +"\t-q maksimuma nombro da bajtoj en atendovicoj de Poziksaj mesaÄoj\n" +"\t-s maksimuma longo de stako\n" +"\t-t maksimuma tempo ĉefprocesora (en sekundoj)\n" +"\t-u maksimuma nombro de procezoj de la uzanto\n" +"\t-v longo de la virtuala memoro\n" +"\t-x maksimuma nombro de dosierÅlosoj\n" +"\n" +" Se limo limit estas indikita, Äia valoro limigas la koncernan\n" +" risurcon; la specialaj vortoj por limit: „soft‟, „hard‟,\n" +" „unlimited‟ signifas, respektive: «la kuranta ÅanÄebla limo»,\n" +" «la kuranta firma limo», «sen limo».\n" +"\n" +" Alie estas eligata la kuranta valoro de la koncerna risurco.\n" +" Manko de opcioj implicas -f. La valoroj estas en obloj de\n" +" 1024 bajtoj, krom por la opcio -t kiu estas en sekundoj;\n" +" por -p kiu estas en obloj de 512 bajtoj; kaj por -u, kiu estas\n" +" sendimensia nombro de procezoj." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +# wait [n] +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Atendu finiÄon de la indikita procezo kaj liveru Äian elirstaton.\n" +" Se n malestas, atendu ĉiujn aktivajn procezidojn, kaj liveru\n" +" la elirstaton 0. n povas esti proceznumero aÅ­ laborindiko;\n" +" se Äi estas laborindiko, la atendo koncernas ĉiujn procezojn de la\n" +" dukto de la laboro." + +# for NAME [in WORDS ... ;] do COMMANDS; done +#: builtins.c:1478 +#, fuzzy +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 "" +"La iteracio „for‟ plenumas la komandojn COMMANDS por ĉiu ero\n" +" de sia listo. Se la parto «in WORDS ...;» malestas, «in \"$@\"»\n" +" estas uzata anstataÅ­e. Por ĉiu ero aperanta en WORDS, la nomo\n" +" NAME estas valorizata per tiu ero kaj la komandoj COMMANDS\n" +" estas plenumataj." + +# for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done +#: builtins.c:1492 +#, fuzzy +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 "" +"Ekvivalentas al\n" +"\t(( EXP1 ))\n" +"\twhile (( EXP2 )); do\n" +"\t COMMANDS\n" +"\t (( EXP3 ))\n" +"\tdone\n" +" kie EXP1, EXP2 kaj EXP3 estas aritmetikaj esprimoj. Se iu el\n" +" ili malestas, 1 estas uzata anstataÅ­e." + +# select NAME [in WORDS ... ;] do COMMANDS; done +#: builtins.c:1510 +#, fuzzy +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 "" +"WORDS ... estas malvolvataj, generante liston da vortoj. Tiuj\n" +" vortoj estas eligataj en la ĉeferarujon, ĉiu antaÅ­ate de sia\n" +" numero. Se „in WORDS‟ ne estas indikita, la enhavo de \"$@\"\n" +" estas uzata anstataÅ­e. La invito entenata en la variablo PS3\n" +" estas eligata kaj linio estas legata el la ĉefenigujo. Se linio\n" +" konsistas el numero responda al iu el la vortoj eligataj, la\n" +" nomo NAME ricevas Äin kiel sian valoron. Se la linio entenas\n" +" nenion, WORDS kaj la invito ripetiÄas. Ĉe la dosierfino la\n" +" komando finiÄas. Ajna alia enigaĵo vakuigas la variablon NAME.\n" +" La legita linio konserviÄas en la variablo REPLY. COMMANDS\n" +" estas plenumataj post ĉiu elekto, Äis renkontiÄos komando de\n" +" eliro (break)." + +# time [-p] PIPELINE +#: builtins.c:1531 +#, fuzzy +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 "" +"Plenumu la dukton PIPELINE kaj poste eligu tabelon el la reala tempo,\n" +" la ĉefprocesora tempo de la uzanto, kaj la ĉefprocesora tempo\n" +" sistema, konsumitaj por plenumo de PIPELINE.\n" +" La opcio „-p‟ iom ÅanÄas la prezenton de la tabelo.\n" +" La variablo TIMEFORMAT difinas la formaton de la eligaĵo." + +# case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac +#: builtins.c:1548 +#, fuzzy +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 COMMANDS kondiĉe ke WORD kongruas kun Åablono PATTERN.\n" +" La streko „|‟ servas por disigi Åablonojn (se pluraj)." + +# if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... +# [ else COMMANDS; ] fi +#: builtins.c:1560 +#, fuzzy +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 "" +"La komandoj el «if COMMANDS» estas plenumataj. Se la elirstato estas 0,\n" +" tiam la komandoj el «then COMMANDS» estas plenumataj. Alie, laÅ­vice,\n" +" komandoj el «elif COMMANDS» estas plenumataj, kaj se la elirstato\n" +" estas 0, la komandoj de ties «elif COMMANDS» iÄas plenumataj post kio\n" +" la komando „if‟ finiÄas. Alie, la komandoj el «else COMMANDS» iÄas\n" +" plenumataj (se tiuj enestas). La elirstato estas tiu de la lasta\n" +" komando plenumita, aÅ­ 0 se neniu el la kondiĉoj estis vera." + +# while COMMANDS; do COMMANDS; done +#: builtins.c:1577 +#, 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 "" +"Ripete malvolvu kaj plenumu la komandojn dum la lasta el la komandoj\n" +" COMMANDS de la „while‟-parto liveras elirstaton 0." + +# until COMMANDS; do COMMANDS; done +#: builtins.c:1589 +#, 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 "" +"Ripete malvolvu kaj plenumu la komandojn dum la lasta el la komandoj\n" +" COMMANDS de la „until‟-parto liveras elirstaton alian ol 0." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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 "" + +# grouping_braces: { COMMANDS ; } +#: builtins.c:1629 +#, 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 "" +"Plenumu la komandojn grupe. Tiel eblas apliki alidirektadon al\n" +" tuta grupo da komandoj." + +#: builtins.c:1641 +#, fuzzy +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 "" +"Samkiel la argumento JOB_SPEC en komando „fg‟. Reaktivigu\n" +" haltigitan aÅ­ fonan laboron. JOB_SPEC povas esti labornomo aÅ­\n" +" labornumero. Postmetita „&‟ sendas la laboron en la fonon,\n" +" samkiel se la komando „bg‟ estus aplikita al laborindiko." + +#: builtins.c:1656 +#, 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 "" +"La esprimo EXPRESSION komputiÄas laÅ­ la aritmetikaj reguloj.\n" +" Ekvivalenta al «let EXPRESSION»." + +# [[ expression ]] +#: builtins.c:1668 +#, fuzzy +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 "" +"Liveras elirstaton 0 aÅ­ 1 laÅ­ la rezulto de komputado de kondiĉa\n" +" esprimo expression. Esprimoj konsistas el bazaj esprimoj, kiajn\n" +" uzas la primitivaĵo „test‟, kaj komponiÄas per sekvaj operacioj:\n" +"\n" +"\t( ESPRIMO )\tLiveras la valoron de ESPRIMO\n" +"\t! ESPRIMO\tVera, se ESPRIMO estas malvera; alie malvera\n" +"\tESP1 && ESP2\tVera, se veras ambaÅ­ ESP1 kaj ESP2; alie malvera\n" +"\tESP1 || ESP2\tVera, 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. En la operacioj\n" +" && kaj || la duaj subesprimoj ESP2 ne estas komputataj se ESP1 jam\n" +" sufiĉas por determini la rezulton." + +# help var +#: builtins.c:1694 +#, fuzzy +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\tInformo 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" +"\t\tindikas, kiom da sinsekvaj dosierfinilojn toleri\n" +"\t\tantaÅ­ ol la Åelo finiÄu (defaÅ­lte, 10). Se la\n" +"\t\tvariablo ne ekzistas, ^D signifas finon de enigo.\n" +" MACHTYPE\tSignoĉeno priskribanta la komputosistemon 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 [dir | +N | -N] [-n] +#: builtins.c:1751 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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" +" +N\tCikle Åovu la stakon tiel ke la Na 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 Na dosierujo (nombrante de\n" +" \tdekstre en la listo eligebla per „dirs‟, numerante de 0) iÄu\n" +" la pinta.\n" +"\n" +" -n\tNe ÅanÄu la kurantan dosierujon surstakigante dosierujon sur\n" +" \tla stakon; do, nur la stakon ÅanÄu.\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.c:1785 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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\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" +" -n\tNe ÅanÄu la kurantan dosierujon demetante dosierujon el la\n" +"\tstako; do, nur la stakon ÅanÄu.\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." + +# dirs [-clpv] [+N] [-N] +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +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" +" La opcio -l indikas ke „dirs‟ ne eligu mallongajn formojn de\n" +" dosierujnomoj relative al via hejma dosierujo. T.e. anstataÅ­\n" +" «~/bin» aperos nomo kun absoluta vojo, ekz-e «/homes/bfox/bin».\n" +" La opcio -v igas komandon „dirs‟ eligi po unu eron de la dosierujstako\n" +" en linio, metante antaÅ­ la dosierujnomo Äian numeron en la stako.\n" +" La opcio -p faras simile, tamen ne numeras la poziciojn.\n" +" La opcio -c malplenigas la dosierujstakon forigante el Äi ĉiujn erojn.\n" +"\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." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 "" + +# printf [-v var] format [arguments] +#: builtins.c:1865 +#, 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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"„printf‟ aranÄas kaj eligas la argumentojn arguments laÅ­ la formato\n" +" format. Ci tiu 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" +" Aldone al la normaj specifiloj laÅ­ „printf(1)‟,\n" +" „%b‟ igas malvolvi deklivajn (\\) eskapsekvencojn en sia argumento, kaj\n" +" „%q‟ ordonas ke la argumento eliÄu en formo taÅ­ga por Åela re-enigo.\n" +" Se ĉeestas la opcio „-v‟, la eligo trafas en ties variablon var kaj\n" +" ne en la ĉefeligujon." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +# compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] +# [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] +# [-F function] [-C command] [word] +#: builtins.c:1915 +#, 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 "" +"Montru la eblajn kompletigojn depende je la opcioj. Destinita\n" +" por uzo en Åelfunkcio generanta eblajn kompletigojn.\n" +" Se eventuala argumento word estas donita, generu Äiajn kongruaĵojn." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid " " +#~ msgstr " " + +# caller [EXPR] +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Se EXPR malestas, liveriÄas «$line $filename». Se EXPR ĉeestas," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "LiveriÄas «$line $subroutine $filename»; ĉi tiu krominformo" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "Uzeblas por vidigi la vok-stakon." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "La valoro de EXPR indikas, kiom da vokkadroj retroiri disde la" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "kuranta; la pinta kadro havas la numeron 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: Misa nombro aÅ­ numero" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Åœelaj komandoj kongruaj kun la Ålosilvortoj `" + +# dirs +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Listigu la kurantan dosierujstakon. La dosierujoj trafas en" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "la stakon per la komando „pushd‟ kaj estas forigeblaj per la" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "komando „popd‟." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "La opcio -l indikas ke la komando „dirs‟ ne eligu mallongajn formojn" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "de dosierujnomoj rilate al via hejma dosierujo. T.e. anstataÅ­ ~/bin" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "aperos nomo kun absoluta vojo, ekz-e „/homes/bfox/bin‟. La opcio -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "igas „dirs‟ eligi po unu eron de la dosierujstako en linio," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "metante antaÅ­ la dosierujnomo Äian numeron en la stako. La opcio -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "faras la samon sed sen numeri la poziciojn." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "La opcio -c malplenigas la dosierujstakon forigante el Äi ĉiujn erojn." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\teligu la Nan eron nombrante de maldekstre en la listo" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "\teligebla per „dirs‟ sen opcioj, komencante per 0." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\teligu la Nan eron nombrante de dekstre en la listo" + +# pushd +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Surstakigu dosierujon sur la stakon de dosierujoj, aÅ­ cikle Åovu" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "la stakon tiel, ke la nova stakpinto iÄu la kuranta dosierujo." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Senargumente, permutu la du plej suprajn dosierujojn de la stako." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N\tCikle Åovu la stakon tiel ke la Na dosierujo (nombrante de" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "\tmaldekstre en la listo eligebla per „dirs‟, numerante ekde" + +#~ msgid " zero) is at the top." +#~ msgstr "\t0) iÄu la pinta." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N\tCikle Åovu la stakon tiel ke la Na dosierujo (nombrante de" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "\tmaldekstre en la listo eligebla per „dirs‟, numerante ekde" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n\tNe ÅanÄu la kurantan dosierujon surstakigante dosierujon sur" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr "\tla stakon; do, nur la stakon ÅanÄu." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tSurstakigu la dosierujon dir kaj faru Äin la" + +#~ msgid " new current working directory." +#~ msgstr "\tnova kuranta dosierujo labora." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Vi povas vidigi la stakon de dosierujoj per la komando „dirs‟." + +# popd +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Elstakigu erojn el la stako de dosierujoj. Senargumente," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "forigu la pintan dosierujon kaj iru (cd) en la novan pintan" + +#~ msgid "top directory." +#~ msgstr "dosierujon." + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N\tforigu la Nan eron nombrante de maldekstre de la listo" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\teligebla per „dirs‟, numerante ekde 0. Ekz-e: „popd +0‟" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr "\tforigas la plej maldekstran dosierujon; „popd +1‟, Äian najbaron." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N\tforigu la Nan eron nombrante de dekstre de la listo" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\teligebla per „dirs‟, nombrante ekde 0. Ekz-e: «popd -0»" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr "\tforigas la lastan dosierujon; «popd -1», Äian najbaron." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "-n\tNe ÅanÄu la kurantan dosierujon demetante dosierujon" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr "\tel la stako; do, nur la stakon ÅanÄu." + +# XXX: stat? debug? +#~ msgid "allocated" +#~ msgstr "okupita" + +# XXX: stat? debug? +#~ msgid "freed" +#~ msgstr "malokupita" + +# XXX: stat?? +#~ msgid "requesting resize" +#~ msgstr "bezonas retranĉon" + +# XXX: debug? Ĉu «ĵus» aÅ­ «Äuste»? Pri kio temas?? +#~ msgid "just resized" +#~ msgstr "ĵus retranĉita" + +# XXX: debug? +#~ msgid "bug: unknown operation" +#~ msgstr "cimo: Nekonata operacio" + +# XXX: debug? +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: Gvat-raporto: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "Eliru ekster iteracion FOR, WHILE aÅ­ UNTIL. Se N estas indikita,\n" +#~ " iru N nivelojn eksteren." + +#~ 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 "" +#~ "Rulu primitivan Åelkomandon. Tio utilas se oni volas uzi la nomon\n" +#~ " de Åelaĵo por nomi funkcion, sed bezonas la koncernan\n" +#~ " primitivon en la funkcio mem." + +#~ 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 "" +#~ "Eligu la nomon de kuranta dosierujo. Kun la opcio -P, la komando\n" +#~ " „pwd‟ eligas la nomon de la fizika dosierujo, sen ajna eventuala " +#~ "simbola\n" +#~ " ligilo; la opcio -L igas la komandon pwd sekvi simbolajn ligojn." + +#~ msgid "Return a successful result." +#~ msgstr "Liveru sukcesan rezulton." + +# ZZZ: command [-pVv] command [arg ...] +#~ 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 "" +#~ "Plenumu komandon kun ARGoj sen atenti la Åelajn funkciojn. Ekz-e se,\n" +#~ " havante Åelan funkcion „ls‟, oni volas voki la komandon „ls‟, oni\n" +#~ " povas fari tion per «command ls». La opcio -p neprigas uzi la\n" +#~ " norman valoron de la de la variablo $PATH, ebliganta trovi ĉiujn\n" +#~ " normajn utilaĵojn.\n" +#~ " La opcio -V aÅ­ -v provizas eligon de ĉeno priskribanta la komandon;\n" +#~ " la opcio -V provizas pli detalan priskribon." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Arkaika. Vd „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 "" +#~ "Kreu lokan variablon NOMO kaj Äin valorizu per VALORO.\n" +#~ " „local‟ uzeblas nur ene de funkcio; Äi igas la variablon NOMO\n" +#~ " videbla en la regiono konstistanta el la funkcio kaj ties idoj." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "Eligu la ARGojn. La opcio -n evitigas la postan liniavancon." + +# enable [-pnds] [-a] [-f filename] [name ...] +#~ 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 "" +#~ "Aktivigu aÅ­ malaktivigu primitivajn Åelkomandojn. Tio ebligas\n" +#~ " uzi eksteran komandon, samnoman kun primitivaĵo, sen indiki\n" +#~ " Äian plenan vojon.\n" +#~ " La opcio -n malaktivigas la nomojn name ..., sen Äi la nomoj\n" +#~ " aktiviÄas. Ekz-e, por uzi la „test‟on troveblan en $PATH anstataÅ­\n" +#~ " la samnoman primitivan Åelkomandon, diru: «enable -n test».\n" +#~ " En sistemo ebliganta dinamikan Åargadon, la opcio -f uzeblas\n" +#~ " por Åargi novajn primitivaĵojn el la dinamika biblioteko filename.\n" +#~ " La opcio -d forigos Åelkomandon dinamike Åargitan per -f.\n" +#~ " Se malestas neopciaj nomoj, aÅ­ ĉeestas la opcio -p, eligu la\n" +#~ " liston de primitivaĵoj.\n" +#~ " La opcio -a donas liston de ĉiuj primitivaĵoj kun indiko, ĉu ili\n" +#~ " estas aktivaj aÅ­ ne. La opcio -s eligas nur la «specialajn»\n" +#~ " Åelfunkciojn de Posix.2. La opcio -n montras la liston de ĉiuj\n" +#~ " malaktivaj primitivaĵoj." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Legu la ARGojn kiel enigaĵon de la Åelo kaj plenumu la\n" +#~ " legita(j)n komando(j)n." + +# exec [-cl] [-a name] file [redirection ...] +#~ 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 "" +#~ "Plenumu la dosieron file anstataÅ­igante la Åelon je la donita\n" +#~ " programo. Se file ne estas indikita, la alidirektadoj okazu en\n" +#~ " la kuranta Åelo. Se la unua argumento estas „-l‟, minuso\n" +#~ " enÅoviÄas antaÅ­ la nula argumento pasigata al file (kiel\n" +#~ " ĉe „login‟). Ĉe la opcio -c, la plenumo de file estu en\n" +#~ " vakua medio. Per la opcio -a la argumento argv[0] de la\n" +#~ " plenumota procezo ricevas la valoron name. Se la dosieron ne\n" +#~ " eblas plenumi kaj la Åelo ne estas dialoga, tiam la Åelo finiÄas,\n" +#~ " krom se la opcio „execfail‟ estas aktiva." + +#~ msgid "Logout of a login shell." +#~ msgstr "AdiaÅ­, saluta Åelo!" + +# hash [-lr] [-p pathname] [-dt] [name ...] +#~ 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 "" +#~ "Por ĉiu nomo name, trovu kaj registru en hakettabelo la kompletan\n" +#~ " vojon al tiu komando (komanda dosiero).\n" +#~ " Se ĉeestas la opcio -p, la vojo pathname servas kiel kompleta vojo\n" +#~ " por la nomoj, sen plua vojserĉo.\n" +#~ " La opcio -r forgesigas ĉiujn registritajn vojojn.\n" +#~ " La opcio -d forgesigas la registritajn vojojn por ĉiu nomo name.\n" +#~ " La opcio -t kaÅ­zas eligon de kompleta vojo responda al ĉiu name.\n" +#~ " Se pluraj nomoj aperas kun -t, la koncerna nomo aperos antaÅ­ Äia\n" +#~ " kompleta serĉvojo registrita. La opcio -l donas al la eligaĵo\n" +#~ " la formon reuzeblan por enigo. Se nenia opcio estas donita, eligu\n" +#~ " la informojn pri la memorataj komandoj." + +# help [-s] [pattern ...] +#~ 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 "" +#~ "Eligu helpan informon pri primitivaj komandoj. Se la Åablono\n" +#~ " pattern estas donita, eligu detalan helpon pri la komandoj\n" +#~ " kongruaj kun la Åablono; alie eligu nur liston de la primitivaj\n" +#~ " komandoj. La opcio -s reduktas la eligaĵon pri ĉiu trovita\n" +#~ " kongruaĵo Äis mallonga resumo." + +# disown [-h] [-ar] [jobspec ...] +#~ 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 "" +#~ "Senopcie: forigu ĉiun laboron indikitan per argumento jobspec el\n" +#~ " la tabelo de aktivaj laboroj.\n" +#~ "\n" +#~ " Ĉe la opcio -h, anstataÅ­ forigi la laboron el la tabelo, marku Äin\n" +#~ " tiel, ke la signalo SIGHUP ne estu plusendita al la laboro(j) kiam\n" +#~ " tian signalon ricevas la Åelo.\n" +#~ "\n" +#~ " Se nenia laboro jobspec estas indikita, la opcio -a preskribas\n" +#~ " forigi ĉiujn laborojn el la labortabelo; la opcio -r preskribas\n" +#~ " forigi nur la rulatajn laborojn." + +# return [n] +#~ 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 "" +#~ "Igas la funkcion finiÄi kaj liveri la donitan valoron n kiel\n" +#~ " elirstaton. Se n mankas, la elirstato estas tiu de la ĵusa\n" +#~ " komando." + +# unset [-f] [-v] [name ...] +#~ 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 "" +#~ "Por ĉiu nomo name, forigu la respondan variablon aÅ­ funkcion.\n" +#~ " Ĉe la opcio „-v‟ forigu nur la variablojn.\n" +#~ " Ĉe la opcio „-f‟ forigu nur la funkciojn.\n" +#~ " Se neniu el la du opcioj estas indikita, „unset‟ unue provos\n" +#~ " forigi variablon, kaj se tia ne troviÄos, funkcion. Iujn\n" +#~ " variablojn ne eblas forigi. Vd ankaÅ­ la helpon pri „readonly‟." + +# ZZZ: export [-nf] [name[=value] ...] or +# export -p +#~ 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 "" +#~ "Marku la nomojn name por aÅ­tomata eksporto en la medion de\n" +#~ " la plenumotaj komandoj.\n" +#~ " Se la opcio -f estas donita, la nomoj rilatas al funkcioj.\n" +#~ " Se nenia nomo name ĉeestas, aÅ­ se la opcio „-p‟ estas donita, \n" +#~ " eligu la liston de ĉiuj nomoj eksportataj de ĉi tiu Åelo.\n" +#~ " La opcio -n forviÅas la eksportomarkon de la Äin sekvantaj nomoj.\n" +#~ " La opcio „--‟ ĉesigas pluan opcitraktadon en sia linio." + +# ZZZ: readonly [-af] [name[=value] ...] or +# readonly -p +#~ 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 "" +#~ "La donitaj nomoj name iÄas nurlegaj kaj la valorojn de tiuj nomoj\n" +#~ " ne povas ÅanÄi posta valorizo. Se la opcio „-f‟ estas donita,\n" +#~ " tio aplikiÄas nur al la funkcioj respondaj al la nomoj. Se\n" +#~ " argumentoj mankas, aÅ­ se la opcio „-p‟ estas uzita, la listo de\n" +#~ " ĉiuj nurlegaj nomoj estas eligata. La opcio „-a‟ indikas, ke\n" +#~ " ĉiun nomon name oni rigardu tabela variablo.\n" +#~ " La opcio „--‟ ĉesigas pluan opcitraktadon." + +# shift [n] +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "La poziciaj parametroj ekde $n+1 renomiÄas $1 ... ktp.\n" +#~ " Se n ne estas indikita, 1 estas uzata anstataÅ­e." + +# suspend [-f] +#~ 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 "" +#~ "Haltetigu la plenumon de la Åelo Äis Äi ricevos la signalon SIGCONT.\n" +#~ " Se la Åelo estas saluta, la opcio „-f‟ silentigas la averton ke\n" +#~ " Äi estas saluta Åelo; la Åelo simple haltetas." + +# times +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Eligu la tempojn akumulitajn de la uzanto kaj de la kerno\n" +#~ " por la procezoj lanĉitaj el la Åelo." + +# type [-afptP] name [name ...] +#~ 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 "" +#~ "Por ĉiu nomo name, montru kion Äi signifus en la pozicio de\n" +#~ " komadonomo.\n" +#~ "\n" +#~ " Kun la opcio -t eligu unu vorton, iun el la sekvaj:\n" +#~ " „alias‟, „keyword‟, „function‟, „builtin‟, „file‟ aÅ­ „‟ -- se\n" +#~ " name estas, respektive, alinomo, Åela Ålosilvorto, Åelfunkcio,\n" +#~ " Åela primitivo, dosiero aÅ­ nenio konata.\n" +#~ "\n" +#~ " Kun la opcio -p eligu la nomon de dosiero kiu iÄus plenumata;\n" +#~ " aÅ­ nenion, se la «type -t name» ne eligus „file‟.\n" +#~ "\n" +#~ " Ĉe -a listigu ĉiujn lokojn entenantajn plenumeblan dosieron\n" +#~ " kun koncerna nomo name. La listo inkludas alinomojn kaj\n" +#~ " funkciojn, se kaj nur se malestas la opcio -p.\n" +#~ "\n" +#~ " La opcio -f ekskludas el la serĉo la Åelfunkciojn.\n" +#~ "\n" +#~ " La opcio -f igas serĉi ĉiun nomon name laÅ­ PATH, eĉ se ekzistas\n" +#~ " alinomo, primitiva komando aÅ­ funkcio name, kaj eligi la nomon de\n" +#~ " koncerna plenumebla dosiero." + +# umask [-p] [-S] [mode] +#~ 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 "" +#~ "La dosierkrea masko de la uzanto havu la valoron de la argumento\n" +#~ " mode. Se mode mankas aÅ­ se ĉeestas la opcio -S, eligu la\n" +#~ " kurantan valoron de la masko. Kun la opcio -S la eligo estas\n" +#~ " simbola, alie Äi estas okuma. Se estas donita „-p‟ sen\n" +#~ " argumento mode, la eligaĵo havos formon taÅ­gan por enigo.\n" +#~ " Se la argumento mode komenciÄas per cifero, Äi estas\n" +#~ " interpretata kiel okuma nombro, alie kiel simbola signoĉeno\n" +#~ " laÅ­ 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 "" +#~ "Atendu finiÄon de la indikita procezo kaj liveru Äian elirstaton.\n" +#~ " Se n malestas, atendu ĉiujn aktivajn procezidojn, kaj liveru\n" +#~ " la elirstaton 0. n estas proceznumero; se Äi malestas, atendu\n" +#~ " ĉiujn procezidojn de la Åelo." + +# ZZZ: function NAME { COMMANDS ; } or +# NAME () { COMMANDS ; } +#~ 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 "" +#~ "Kreu simplan komandon vokeblan per la nomo NAME, plenumantan la\n" +#~ " komandojn COMMANDS. La nomo kaj la komandoliniaj argumentoj\n" +#~ " estas pasigataj al tiu funkcio jene: $0 ... $n." + +# shopt [-pqsu] [-o long-option] optname [optname...] +#~ 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 "" +#~ "ÅœanÄu la valoron de variabloj regantaj la konduton de Åelaj opcioj.\n" +#~ " La opcio -s aktivigas (set) ĉiun opcinomon optname.\n" +#~ " La opcio -u malaktivigas (unset) ĉiun opcinomon optname.\n" +#~ " La opcio -q silentigas eligon de normalaj mesaÄoj; se Äin akompanas\n" +#~ " pluraj opcinomoj, la elirstato indikas, ĉu ĉiuj donitaj optname\n" +#~ " estas aktivaj.\n" +#~ " La opcio -o limigas la opcinomojn Äis tiuj uzeblaj ĉe „set -o‟.\n" +#~ " Senopcie aÅ­ kun la opcio -p la listo de ĉiuj Åalteblaj opcioj\n" +#~ " estas eligata, kun indiko ĉu ĉiu el ili estas Åaltita aÅ­ ne." + +# complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] +# [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] +# [-F function] [-C command] [name ...] +#~ 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 "" +#~ "Por ĉiu nomo name difinu, kiel la argumentoj estu kompletigotaj.\n" +#~ " Se ĉeestas la opcio -p, aÅ­ senopcie, eligu la ekzistantajn\n" +#~ " kompletigajn specifojn en formo reuzebla por enigo en la Åelon.\n" +#~ " La opcio -r forigas la kompletigajn specifojn por ĉiu nomo name,\n" +#~ " aÅ­, se nenia tia nomo estas donita, ĉiujn kompletigajn specifojn." diff --git a/src/bin/bash/po/es.gmo b/src/bin/bash/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a9c9aee33a0da5e22614eec7f717ea58d9b79ddf GIT binary patch literal 31030 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 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/es.po b/src/bin/bash/po/es.po new file mode 100644 index 0000000000..63b5f25176 --- /dev/null +++ b/src/bin/bash/po/es.po @@ -0,0 +1,7632 @@ +# Mensajes en español para GNU bash-3.2. +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Cristian Othón Martínez Vera , 2000, 2001, 2002, 2003, 2004, 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2006-10-31 23:36-0600\n" +"Last-Translator: Cristian Othón Martínez Vera \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "subíndice de matriz incorrecto" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: nombre de acción inválido" + +#: arrayfunc.c:481 +#, 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:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: no se puede crear: %s" + +#: bashline.c:3413 +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:3491 +#, 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:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "no hay un `%c' que cierre en %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: falta un `:' separador" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nombre de combinación de teclas inválido" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: no se puede leer: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: no se puede desenlazar" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nombre de función desconocido" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s no está enlazado a ninguna tecla.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s se puede invocar a través de " + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "logout" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "sólo tiene significado en un ciclo `for', `while' o `until'" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Devuelve el contexto de la llamada a subrutina actual." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME no está definido" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD no está definido" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "ranura %3d: " + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: aviso: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: aviso: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: la opción requiere un argumento" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: se requiere un argumento numérico" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: no se encontró" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opción inválida" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nombre de opción inválido" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': no es un identificador válido" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "número de señal inválido" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "número inválido" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificación de señal inválida" + +#: builtins/common.c:257 +#, 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:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variable de sólo lectura" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fuera de rango" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s fuera de rango" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: no existe ese trabajo" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: no hay control de trabajos" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "no hay control de trabajos" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: restringido" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "restringido" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: no es una orden interna del shell" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "error de escritura: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificación de trabajo ambigua" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nombre de acción inválido" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: no hay completado de especificación" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "" + +# sólo se puede usar. sv +# De acuerdo. cfuga +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "sólo se puede usar dentro de una función" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "no se puede usar `-f' para hacer funciones" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: función de sólo lectura" + +#: builtins/declare.def:461 +#, 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:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "la carga dinámica no está disponible" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "no se puede abrir el objeto compartido %s: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: no se cargó dinámicamente" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: no se puede borrar: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: es un directorio" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: no es un fichero regular" + +#: builtins/evalfile.c:147 +#, 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:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: no se puede ejecutar el fichero binario" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: no se puede ejecutar: %s" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "logout" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "no es un shell de entrada: use `exit'" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Hay trabajos detenidos.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Hay trabajos detenidos.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "no se encontró la orden" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "especificación de historia" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: no se puede abrir el fichero temporal: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "el trabajo %d inició 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:92 +msgid "hashing disabled" +msgstr "hashing desactivado" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabla de asociación vacía\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "última orden: %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Órdenes del shell que coinciden con la palabra `" +msgstr[1] "Órdenes del shell que coinciden con la palabra `" + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: no se puede abrir: %s" + +#: builtins/help.def:337 +#, 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 del 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" +"Use `info bash' para saber más sobre el shell en general.\n" +"Use `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 el comando está " +"desactivado.\n" +"\n" + +#: builtins/history.def:154 +msgid "cannot use more than one of -anrw" +msgstr "no se puede usar más de uno de -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "posición en la historia" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: falló la expansión de la historia" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: falló la expansión de la historia" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "no se permiten otras opciones con `-x'" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: los argumentos deben ser procesos o IDs de trabajos" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Error desconocido" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "se esperaba una expresión" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificación de descriptor de fichero inválida" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descriptor de fichero inválido: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: opción inválida" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: opción inválida" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: nombre de acción inválido" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: no es una variable de matriz" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': falta el carácter de formato" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': carácter de formato inválido" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: aviso: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "falta el dígito hexadecimal para \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "no hay otro directorio" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "desbordamiento de la base de la pila de recursión" + +#: builtins/pushd.def:683 +#, fuzzy +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" +" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" +" la lista con la orden `popd'.\n" +" \n" +" La opción -l especifica que `dirs' no debe mostrar versiones\n" +" abreviadas de los directorios que son relativos a su directorio\n" +" inicial. Esto significa que `~/bin' se mostrará como `/home/bfox/bin'.\n" +" La opción -v causa que `dirs' muestre la pila de directorios con\n" +" una entrada por línea, anteponiendo la posición en la pila al nombre\n" +" del directorio. La opción -p hace lo mismo, pero no antepone la\n" +" posición en la pila. La opción -c limpia la pila de directorios\n" +" borrando todos sus elementos.\n" +" \n" +" +N\tmuestra la N-ésima entrada contando desde la izquierda de la lista\n" +" mostrada por dirs cuando se invoca sin opciones, empezando de cero.\n" +" \n" +" -N\tmuestra la N-ésima entrada contando desde la derecha de la lista\n" +" mostrada por dirs cuando se invoca sin opciones, empezando de cero." + +#: builtins/pushd.def:705 +#, 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 "" +"Agrega un directorio al tope de la pila de directorios, o rota\n" +" la pila, haciendo que el nuevo tope de la pila sea el\n" +" directorio de trabajo actual. Sin argumentos, intercambia\n" +" los dos directorios del tope.\n" +" \n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tde la izquierda de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en el tope.\n" +" -N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tde la derecha de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en el tope.\n" +" \n" +" -n\tsuprime el cambio normal de directorio cuando se agregan\n" +" \tdirectorios a la pila, así sólo se manipula la pila.\n" +" \n" +" dir\tagrega DIR a la pila de directorios en el tope,\n" +" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" \n" +" Puede ver la pila de directorios con la orden `dirs'." + +#: builtins/pushd.def:730 +#, 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 "" +"Borra entradas de la pila de directorios. Sin argumentos,\n" +" borra el directorio del tope de la pila, y cambia al\n" +" nuevo directorio tope.\n" +" \n" +" +N\tBorra la N-ésima entrada contando de 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 de la derecha de\n" +" \tla lista mostrada por `dirs', comenzando desde cero.\n" +" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" +" \tel penúltimo.\n" +" \n" +" -n\tsuprime el cambio normal de directorio cuando se borran\n" +" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" \n" +" Puede ver la pila de directorios con la orden `dirs'." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificación de tiempo de expiración inválida" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "error de lectura: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" +"sólo se puede usar `return' en una función o un guión leído con `source'" + +#: builtins/set.def:768 +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:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: no se puede borrar" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: no se puede borrar: %s es de solo lectura" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: no es una variable de matriz" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: no es una función" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "cuenta de shift" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nombre de opción del shell inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "se requiere un argumento de nombre de fichero" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: no se encontró el fichero" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "no se puede suspender" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "no se puede suspender un shell de entrada" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s es un alias de `%s'\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s es una palabra clave del shell\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s: es una función\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s es una orden interna del shell\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s está asociado (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: límite de argumento inválido" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': orden errónea" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: no se puede obtener el límite: %s" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "Límite de CPU" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: no se puede modificar el límite: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operador de modo simbólico inválido" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': carácter de modo simbólico inválido" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "última orden: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abortando..." + +#: error.c:405 +msgid "unknown command error" +msgstr "error de orden desconocido" + +#: error.c:406 +msgid "bad command type" +msgstr "tipo de orden erróneo" + +#: error.c:407 +msgid "bad connector" +msgstr "conector erróneo" + +#: error.c:408 +msgid "bad jump" +msgstr "salto erróneo" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variable desenlazada" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "no se puede redirigir la salida estándard de /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': carácter de formato inválido" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "error de escritura: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: no se encontró la orden" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: intérprete erróneo" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "no se puede duplicar el df %d al df %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "se ha excedido el nivel de recursión de la expresión" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "desbordamiento de la base de la pila de recursión" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "error sintáctico en la expresión" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "se intentó asignar a algo que no es una variable" + +#: expr.c:440 expr.c:445 expr.c:756 +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:471 +msgid "bug: bad expassign token" +msgstr "bicho: unidad de asignación de símbolo erróneo" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "se esperaba `:' para la expresión condicional" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponente menor que 0" + +#: expr.c:826 +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:854 +msgid "missing `)'" +msgstr "falta `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "error sintáctico: se esperaba un operando" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "error sintáctico: operador aritmético inválido" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (símbolo de error es \"%s\")\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "valor demasiado grande para la base" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: se esperaba una expresión entera" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: no se puede acceder a los directorios padres" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "no se puede reestablecer el modo nodelay para el df %d" + +#: input.c:258 +#, 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 interrmedio. cfuga +#: input.c:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, 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:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +# Cambiaría 'hay' por 'existe' em+ +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no existe tal pid" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Señal Desconocida #%d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Hecho" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Detenido" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Detenido" + +#: jobs.c:1443 +msgid "Running" +msgstr "Ejecutando" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Hecho(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Salida %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Estado desconocido" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(`core' generado) " + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "(dir ahora: %s)\n" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "error en la ejecución de setpgid (%d a %d) en el proceso hijo %d: %s\n" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No hay un registro del proceso %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: el trabajo %d está detenido" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: el trabajo ha terminado" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: el trabajo %d ya está en segundo plano" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: aviso: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (`core' generado)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(dir ahora: %s)\n" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: falló getpgrp: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: disciplina de línea: %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: falló getpgrp: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "no hay control de trabajos en este shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: falló la aserción: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloque en la lista libre sobreescrito" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: se llamó con un argumento de bloque previamente liberado" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: se llamó con un argumento de bloque sin asignar" + +#: lib/malloc/malloc.c:896 +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:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: los tamaños de los pedazos de inicio y fin son diferentes" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: se llamó con un argumento de bloque sin asignar" + +#: lib/malloc/malloc.c:1016 +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:1022 +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:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "no hay soporte para operaciones de red" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Tiene correo en $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Tiene correo nuevo en $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "El correo en %s fue leído\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "error sintáctico: se requiere una expresión aritmética" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "error sintáctico: `;' inesperado" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "error sintáctico: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrucción erróneo %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, 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:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado mientras se buscaba `]]'" + +#: parse.y:3727 +#, 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:3731 +msgid "syntax error in conditional expression" +msgstr "error sintáctico en la expresión condicional" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "elemento inesperado `%s', se esperaba `)'" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "se esperaba `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento inesperado `%s' para el operador unario condicional" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para el operador unario condicional" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "se esperaba un operador binario condicional" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento inesperado `%s' para el operador binario condicional" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para el operador binario condicional" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "elemento inesperado `%c' en la orden condicional" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "elemento inesperado `%s' en la orden condicional" + +#: parse.y:3928 +#, 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:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "error sintáctico cerca del elemento inesperado `%s'" + +#: parse.y:5213 +#, 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:5223 +msgid "syntax error: unexpected end of file" +msgstr "error sintáctico: no se esperaba el final del fichero" + +#: parse.y:5223 +msgid "syntax error" +msgstr "error sintáctico" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para dejar el shell.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperado mientras se buscaba un `)' coincidente" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: no se encuentra la función `%s'" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: COMPSPEC nulo" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector erróneo `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': carácter de formato inválido" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "descriptor de fichero fuera de rango" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamiento ambiguo" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: no se puede sobreescribir un fichero existente" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restringido: no se puede redirigir la salida" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "no se puede crear un fichero temporal para el documento here: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/anfitrion/puerto no tiene soporte sin red" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "error de redirección: no se puede duplicar el df" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "¡no se puede encontrar /tmp, crear por favor!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp debe ser un nombre de directorio válido" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opción inválida" + +# 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:1638 +msgid "I have no name!" +msgstr "¡No tengo nombre de usuario!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, versión %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:1779 +#, 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] guión-del-shell\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "Opciones GNU largas:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opciones del shell:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD o -c orden o -O opcion_shopt\t\t(sólo invocación)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s o -o opción\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use la orden `bashbug' para reportar bichos.\n" + +#: sig.c:583 +#, 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 en el 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 +#, fuzzy +msgid "Terminated" +msgstr "y se muestra un mensaje de diagnóstico." + +#: 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 grabación" + +#: 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 "inminente caída del sistema" + +#: 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 completado" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Señal Desconocida #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Señal Desconocida #%d" + +#: subst.c:1181 subst.c:1302 +#, 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:2458 +#, 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:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "no se puede crear la tubería para la sustitución del proceso" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "no se puede crear un proceso hijo para la sustitución del proceso" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "no se puede abrir la tubería llamada %s para lectura" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "no se puede abrir la tubería llamada %s para escritura" + +#: subst.c:4569 +#, 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:4765 +msgid "cannot make pipe for command substitution" +msgstr "no se pueden crear la tubería para la sustitución de la orden" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "no se puede crear un proceso hijo para la sustitución de la orden" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: no se puede duplicar la tubería como df 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parámetro nulo o no establecido" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresión de subcadena < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sustitución errónea" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: no se puede asignar de esta forma" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sustitución errónea: no hay un `%s' que cierre en %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "no hay coincidencia: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "se esperaba un argumento" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: se esperaba una expresión entera" + +#: test.c:262 +msgid "`)' expected" +msgstr "se esperaba `)'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "se esperaba `)', se encontró %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: se esperaba un operador unario" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: se esperaba un operador binario" + +# 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:806 +msgid "missing `]'" +msgstr "falta `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "número de señal inválido" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: señal errónea %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error al importar la definición de la función para `%s'" + +#: variables.c:736 +#, 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:1898 +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:3127 +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:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter inválido %d en exportstr para %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no hay `=' en exportstr para %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no es un contexto global_variables" + +#: variables.c:3881 +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 ambiente temporal" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, versión %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: no se pueden asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: no se pueden asignar %lu bytes" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: no se pueden reasignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: no se pueden reasignar %lu bytes" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: no se pueden asignar %lu bytes" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: %s:%d: no se pueden reasignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: no se pueden reasignar %lu bytes" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nombre[=valor] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [nombre ...]" + +#: builtins.c:51 +#, fuzzy +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m mapa_teclado] [-f fichero] [-q nombre] [-r " +"secuencia_teclas] [keyseq:función-readline]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-interno [arg ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [expresión]" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "cd [-PL] [directorio]" + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] orden [arg ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] nombre[=valor] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] nombre[=valor] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local nombre[=valor] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f fichero] [nombre ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts cadena_opciones nombre [arg]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a nombre] fichero [redirección ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "logout" + +#: builtins.c:103 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e nombre_e] [-nlr] [primero] [último] o fc -s [pat=rep] [orden]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [id_trabajo]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [id_trabajo]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p ruta_de_acceso] [nombre ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [expresión_regular ...]" + +#: builtins.c:121 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "history [-c] [n] ó history -awrn [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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [idtrabajo ...] ó jobs -x orden [args]" + +# lo mismo em+ +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [idtrabajo ...]" + +#: builtins.c:132 +#, fuzzy +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 | trabajo]... ó kill -l " +"[id_señal]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o opción] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [nombre ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [nombre ...] ó export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [nombre ...] ó readonly -p" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "exit [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "source fichero" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "se requiere un argumento de nombre de fichero" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expresión]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +# Esto podría ser "veces". Mirar el contexto. sv +# No es veces. times es una orden interna del shell. cfuga +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [arg] [id_señal] ó trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] nombre [nombre ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [límite]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [modo]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALABRA in [PLANTILLA [| PLANTILLA]...) ÓRDENES ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ÓRDENES; do ÓRDENES; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ÓRDENES; do ÓRDENES; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NOMBRE { ÓRDENES ; } o NOMBRE () { ÓRDENES ; }" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ ÓRDENES }" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [id_trabajo]" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "se esperaba una expresión" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "se esperaba una expresión" + +#: builtins.c:210 +#, fuzzy +msgid "variables - Names and meanings of some shell variables" +msgstr "" +"Se permiten las variables de shell como operandos. Se reemplaza el nombre" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [dir | +N | -N] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o opción-larga] nombre_opción [nombre_opción...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] nombre [nombre ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +# 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:254 +#, 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' sin argumentos o con la opción -p muestra la lista de\n" +" aliases en la forma alias NAME=VALUE en la salida estándard.\n" +" De otra manera, se define un alias por cada NAME cuyo VALUE se\n" +" proporcione.\n" +" Un espacio final en VALUE causa que se revise la siguiente palabra\n" +" para sustitución de alias cuando se expande el alias. Alias devuelve\n" +" verdadero a menos que se de un NAME para el cual no se haya definido\n" +" ningún alias." + +#: builtins.c:276 +#, 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 NAMEs de la lista de alias definidos. Si se especifica la opción -a ,\n" +" entonces elimina todas las definiciones de alias." + +# lee 'la'... em+ +# Corregido. Además, es plural: lee las asignaciones... cfuga +#: builtins.c:289 +#, 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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"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 no " +"son\n" +" opciones es equivalente a la que se encuentra en ~/.inputrc, pero se " +"debe\n" +" pasar como un solo argumento:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" bind acepta las siguientes opciones:\n" +" -m mapateclas Usa el `mapateclas' como el mapa de teclas por la\n" +" duración de esta orden. Los nombres aceptables de\n" +" mapas de teclas son emacs, emacs-standard, emacs-" +"meta,\n" +" emacs-ctlx, vi, vi-move, vi-command y vi-insert.\n" +" -l Enlista los nombres de las funciones.\n" +" -P Enlista los nombres de las funciones y " +"asignaciones.\n" +" -p Enlista las funciones y asignaciones en una forma " +"que\n" +" se puede reusar como entrada.\n" +" -r seqtecl Borra la asignación para la SEQTECL.\n" +" -x seqtecl:orden-shell\tCausa que se ejecute la ORDEN-SHELL cuando\n" +" \t\t\t\tse introduce la SEQTECL.\n" +" -f nombrefichero Lee las asignaciones de teclas del NOMBREFICHERO.\n" +" -q nombre-funcion Pregunta qué teclas invocan la función nombrada.\n" +" -u nombre-función Borra la asignación de todas las teclas que están\n" +" ligadas a la función nombrada.\n" +" -V Enlista los nombres de variables y valores.\n" +" -v Enlista los nombres de variables y valores en una\n" +" forma que se pueden reusar como entrada.\n" +" -S Enlista las secuencias de teclas que invocan " +"macros\n" +" y sus valores.\n" +" -s Enlista las secuencias de teclas que invocan " +"macros\n" +" y sus valores en una forma que se pueden reusar " +"como\n" +" entrada." + +#: builtins.c:326 +#, fuzzy +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 "" +"Retoma la siguiente iteración del ciclo FOR, WHILE o UNTIL incluido.\n" +" Si se especifica N, retoma en el N-ésimo ciclo incluido." + +#: builtins.c:338 +#, 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 "" +"Retoma la siguiente iteración del ciclo FOR, WHILE o UNTIL incluido.\n" +" Si se especifica N, retoma en el N-ésimo ciclo incluido." + +#: builtins.c:350 +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:365 +#, 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 "" +"Devuelve el contexto de la llamada a subrutina actual.\n" +" \n" +" Sin EXPR, devuelve \"$linea $nombrefichero\". Con EXPR,\n" +" devuelve \"$linea $subrutina $nombrefichero\"; esta información\n" +" adicional se puede usar para proveer un volcado de pila.\n" +"\n" +" El valor de EXPR indica cuántos marcos de llamada se debe retroceder\n" +" antes del actual; el marco inicial es el marco 0." + +# Slash lo venimos traduciendo por barra inclinada , y backslash +# por barra invertida em++ +# Corregido en toda la traducción. cfuga +#: builtins.c:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"Cambia el directorio actual a DIR. La variable $HOME es el directorio\n" +" por defecto. La variable CDPATH define la ruta de búsqueda por el\n" +" directorio que contiene DIR. Los nombres alternativos de directorio\n" +" en CDPATH se separan con dos puntos (:). Un nombre de directorio nulo\n" +" es igual que el directorio actual, p.e. `.' Si DIR comienza con una\n" +" diagonal (/), entonces no se usa CDPATH. Si no se encuentra el\n" +" directorio, y la opción del shell `cdable_vars' está activa, entonces\n" +" trata la palabra como un nombre de variable. Si la variable tiene un\n" +" valor, entonces cd cambia al valor de esa variable. La opción -P " +"indica\n" +" usar la estructura física de directorios en lugar de seguir los enlaces\n" +" simbólicos; la opción -L fuerza que se sigan los enlaces simbólicos." + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Sin efecto; la orden no hace nada. Devuelve un código de estado cero." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Devuelve un resultado sin éxito." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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 "" + +# apaga -> desactiva em+ +# Corregido en toda la traducción. cfuga +#: builtins.c:476 +#, 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Declara variables y/o les asigna atributos. Si no se propociona\n" +" ningún NAME, entonces muestra los valores de las variables.\n" +" La opción -p mostrará los atributos y valores de cada NAME.\n" +" \n" +" Las opciones son:\n" +" \n" +" -a\thace a los NAMEs matrices (si tiene soporte)\n" +" -f\tselecciona solamente nombres de funciones\n" +" -F\tmuestra nombres de funciones (y número de línea y nombre de\n" +" \tfichero fuente si se está depurando) sin definiciones\n" +" -i\tasigna a los NAMEs el atributo `integer'\n" +" -r\thace a los NAMEs de sólo lectura\n" +" -t\tasigna a los NAMEs el atributo `trace'\n" +" -x\thace a los NAMEs exportables\n" +" \n" +" Las variables con el atributo integer se les evalúa aritméticamente\n" +" (vea `let') cuando se asigna la variable.\n" +" \n" +" Cuando se muestran los valores de las variables, -f muestra\n" +" el nombre de una función y su definición. La opción -F restringe\n" +" a mostrar solamente el nombre de la función.\n" +" \n" +" Al usar `+' en lugar de `-' desactiva el atributo dado. Cuando se\n" +" usa en una función, hace a los NAMEs locales, como sucede con la\n" +" orden `local'." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +#, fuzzy +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Muestra los ARGs. Si se especifica -n, se suprime el carácter final de\n" +" fin de línea. Si se especifica la opción -e, se activa la\n" +" interpretación de los siguientes caracteres de escape con\n" +" barra invertida:\n" +" \t\\a\talerta (timbre)\n" +" \t\\b\tespacio hacia atrás\n" +" \t\\c\tsuprime el carácter final de fin de línea\n" +" \t\\E\tcarácter de escape\n" +" \t\\f\talimentación de papel\n" +" \t\\n\tlínea nueva\n" +" \t\\r\tretorno de carro\n" +" \t\\t\ttabulador horizontal\n" +" \t\\v\ttabulador vertical\n" +" \t\\\\\tbarra invertida\n" +" \t\\0nnn\tel carácter cuyo código ASCII es NNN (octal). NNN puede ser\n" +" \t\tde 0 a 3 dígitos octales\n" +" \n" +" Puede desactivar explícitamente la interpretación de los caracteres\n" +" arriba mencionados con la opción -E." + +#: builtins.c:571 +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:586 +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:614 +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 "" + +# "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:626 +#, 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 ($0 - $9), but if\n" +" more arguments are given, 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 "" +"Getopts se usa para decodificar parámetros posicionales en guiones de " +"shell.\n" +" \n" +" OPTSTRING contiene las letras de opción para reconocer; si una letra\n" +" es seguida por dos puntos, se espera que la opción tenga un\n" +" 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 $name, inicializando name si no existe, y el\n" +" índice del siguente argumento a ser procesado en la variable de\n" +" shell OPTIND. OPTIND se inicializa a 1 cada vez que se invoca al\n" +" shell, o a un guión de shell. Cuando una opción requiere un\n" +" argumento, getopts coloca ese argumento en la variable de shell\n" +" 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 un argumento necesario, getopts coloca ':' en NAME y\n" +" define OPTARG como 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 NAME y borra OPTARG. Si no se encuentra un argumento\n" +" necesario, se coloca un '?' en NAME, 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." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "" +"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:698 +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:708 +#, fuzzy +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 "" +"fc se usa para listar o editar y reejecutar órdenes de la lista de " +"historia.\n" +" FIRST y LAST pueden ser números que especifican el rango, o FIRST puede\n" +" ser una cadena, que significa la orden más reciente que comience con\n" +" esa cadena.\n" +" \n" +" -e ENAME selecciona el editor a usar. Por defecto es FCEDIT,\n" +" después EDITOR, después vi.\n" +" \n" +" -l significa lista líneas en lugar de editar.\n" +" -n significa que no se listan números de línea.\n" +" -r significa invertir el orden de las líneas (mostrando primero\n" +" 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 ls sustitución ANT=NUEVO.\n" +" \n" +" Un alias útil para usar con esto es r='fc -s', así que al teclear\n" +" `r cc' ejecuta la última orden que comience con `cc' y al teclear\n" +" `r' re-ejecuta la última orden." + +#: builtins.c:738 +#, fuzzy +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 "" +"Ubica al JOB_SPEC en el primer plano, y lo hace el trabajo actual. Si\n" +" JOB_SPEC no está presente, se usa la noción del shell del trabajo\n" +" actual." + +#: builtins.c:753 +#, fuzzy +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 "" +"Coloca cada JOB_SPEC en segundo plano, como si se hubieran iniciado con\n" +" `&'. Si JOB_SPEC no está presente, se usa la noción del shell del\n" +" trabajo actual." + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +#, 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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 la lista de la historia con números de línea. Las líneas\n" +" mostradas con un `*' han sido modificadas. El argumento N indica\n" +" mostrar solamente las últimas N líneas. La opción `-c' borra la\n" +" lista de histora eliminando todas sus entradas. La opción `-d' borra\n" +" la entrada de historia en la posición OFFSET. La opción `-w' escribe\n" +" la historia actual en el fichero de historia; `-r' lee el fichero y\n" +" agrega los contenidos a la lista de historia. `-a' agrega las líneas\n" +" de historia de esta sesión al fichero de historia. El argumento `-n'\n" +" lee todas las líneas de historia que no se han leído del fichero de\n" +" historia y las agrega al fichero de historia.\n" +" \n" +" Si se proporciona FILENAME, entonces se usa como el fichero de\n" +" historia, si no, si $HISTFILE tien un valor, éste se usa, si no\n" +" ~/.bash_history. Si se proporciona la opción -s, los ARGs que no son\n" +" opciones se agregan a la lista de historia como una sola entrada.\n" +" La opción -p hace expansión de historia en cada ARG y muestra el\n" +" resultado, sin guardar nada en el fichero de historia.\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." + +#: builtins.c:852 +#, 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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 los trabajos activos. La opción -l muestra los id's de los " +"procesos\n" +" además de la información normal; la opción -p sólo muestra los id's de\n" +" los procesos. Si se especifica -n, sólo se muestran los procesos que\n" +" han cambiado de estado desde la última notificación. JOBSPEC restringe\n" +" la salida a ese trabajo. Las opciones -r y -s restringen la salida a\n" +" mostrar sólo trabajos en ejecución y detenidos, respectivamente. Sin\n" +" opciones, se muestra el estado de todos los trabajos activos. Si se\n" +" especifica -x, COMMAND se ejecuta después de que todas las\n" +" especificaciones de trabajo que aparecen en ARGS se han reemplazado\n" +" con el ID de proceso del líder del grupo de procesos de dicho trabajo." + +#: builtins.c:879 +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" +" \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:898 +#, 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" +" \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 "" +"Envía a los procesos nombrados por PID (o JOBSPEC) la señal SIGSPEC. Si\n" +" no está presente SIGSPEC, se asume SIGTERM. El argumento `-l'\n" +" muestra los nombres de señales; si hay argumentos a continuación de\n" +" `-l' se asume que son números de señal para las cuales se debe\n" +" mostrar el nombre. Kill es una orden interna del shell por dos\n" +" razones: permite que se puedan usar IDs de trabajo en lugar de\n" +" IDs de proceso, y, si ha alcanzado el límite de procesos que puede\n" +" crear, no tiene que iniciar un proceso para matar a otro." + +# "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:921 +#, 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 "" +"Cada ARG es una expresión aritmética para evaluarse. La evaluación\n" +" se hace con enteros de longitud fija, sin revisar desbordamientos,\n" +" aunque la división por 0 se captura y se marca como un error.\n" +" La siguiente lista de operadores está agrupada en niveles de\n" +" operadores de la misma prioridad. Se muestran los niveles\n" +" 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 bits izquierdo y derecho\n" +" \t<=, >=, <, >\tcomparación\n" +" \t==, !=\t\tequivalencia, inequivalencia\n" +" \t&\t\tAND de bits\n" +" \t^\t\tXOR de bits\n" +" \t|\t\tOR de bits\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. Se\n" +" reemplaza el nombre de la variable por su valor (coercionado\n" +" a un entero de longitud fija) dentro de una expresión. La\n" +" La variable no necesita tener activado su atributo integer\n" +" para ser usada en una expresión.\n" +" \n" +" Los operadores se evalúan en orden de prioridad. Primero\n" +" se evalúan las sub-expresiones en paréntesis y pueden\n" +" sobrepasar las reglas de prioridad anteriores.\n" +" \n" +" Si el último ARG se evalúa como 0, let devuelve 1; si no se\n" +" devuelve 0." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Se lee una línea de la entrada estándard, o del descriptor de fichero FD si " +"se\n" +" proporciona la opción -u, y la primera palabra se asigna al primer " +"NAME,\n" +" la segunda palabra al segundo NAME, y así sucesivamente, con las " +"palabras\n" +" restantes asignadas al último NAME. Sólo los caracteres que se " +"encuentran en\n" +" $IFS se reconocen como delimitadores de palabras. Si no se proporciona\n" +" ningún NAME, la línea leída se guarda en la variable REPLY. Si se\n" +" proporciona la opción -r, esto significa entrada `textual', y se\n" +" desactiva el escape de la barra invertida. La opción -d causa que read\n" +" continúe hasta que se lea el primer carácter de DELIM, en lugar de\n" +" línea nueva. Si se proporciona la opción -p, se muestra la cadena\n" +" PROMPT sin un caractér de línea nuevo al final, antes de intentar leer.\n" +" Si se propociona -a, las palabras leídas se asignan a índices\n" +" consecutivos de ARRAY, empezando en cero. Si se proporciona -e y\n" +" el shell es interactivo, se usa readline para leer la línea. Si se\n" +" propociona -n con un argumento NCHARS diferente de cero, read termina\n" +" después de leer NCHARS caracteres. La opción -s causa que no se " +"muestre\n" +" la entrada que provenga de una terminal.\n" +" \n" +" La opción -t causa que read expire y devuelva falla si no se lee una " +"línea\n" +" completa de entrada en TIMEOUT segundos. Si la variable TMOUT está " +"activa,\n" +" su valor es el tiempo de expiración por defecto. El código de " +"devolución es\n" +" cero, a menos que se encuentre un final de línea, read expire, o se\n" +" proporcione un descriptor de fichero inválido como el argumento de -u." + +#: builtins.c:1006 +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:1019 +#, 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 follow 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" +" 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 "" +" -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 fueron localizadas.\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-opcion\n" +" Establece la variable correspondiente a nombre-opcion:\n" +" allexport igual que -a\n" +" braceexpand igual que -B\n" +" emacs usa una interfaz de edición de línea 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 ignora\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 devolución de una tubería es el " +"estado\n" +" del último comando en salir con un estado " +"diferente\n" +" de cero, o cero si ninguna orden termina con " +"un\n" +" estado diferente de cero\n" +" posix cambia el comportamiento de bash donde la " +"operación\n" +" por omisión difiere del estándard 1003.2 para " +"que\n" +" coincida con el estándard\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 Encendido 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 ser " +"sustituidas.\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, el cual cambia 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" +" 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." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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 "" +"Lee y ejecuta órdenes de FILENAME y regresa. Se utilizan los nombres\n" +" de rutas en $PATH para encontrar el directorio que contiene a FILENAME.\n" +" Si se proporciona cualquier ARGUMENTS, se convierten en los parámetros\n" +" posicionales cuando se ejecuta FILENAME." + +#: builtins.c:1204 +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:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +"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" +" Operadores de fichero:\n" +" \n" +" -a FILE Verdadero si el fichero existe.\n" +" -b FILE Verdadero si el fichero es especial de bloques.\n" +" -c FILE Verdadero si el fichero es especial de caracteres.\n" +" -d FILE Verdadero si el fichero es un directorio.\n" +" -e FILE Verdadero si el fichero existe.\n" +" -f FILE Verdadero si el fichero existe y es un fichero " +"regular.\n" +" -g FILE Verdadero si el fichero tiene activado el set-group-" +"id.\n" +" -h FILE Verdadero si el fichero es un enlace simbólico.\n" +" -L FILE Verdadero si el fichero es un enlace simbólico.\n" +" -k FILE Verdadero si el fichero tiene el bit \"sticky\" " +"activado.\n" +" -p FILE Verdadero si el fichero es una tubería nombrada.\n" +" -r FILE Verdadero si el fichero es legible para usted.\n" +" -s FILE Verdadero si el fichero existe y no está vacío.\n" +" -S FILE Verdadero si el fichero es un \"socket\".\n" +" -t FD Verdadero si el FD está abierto en una terminal.\n" +" -u FILE Verdadero si el fichero tiene activado el set-user-" +"id.\n" +" -w FILE Verdadero si usted puede modificar el fichero.\n" +" -x FILE Verdadero si usted puede ejecutar el fichero.\n" +" -O FILE Verdadero si usted efectivamente posee el fichero.\n" +" -G FILE Verdadero si su grupo efectivamente posee el " +"fichero.\n" +" -N FILE Verdadero si el fichero se modificó desde la última " +"lectura.\n" +" \n" +" FILE1 -nt FILE2 Verdadero si file1 es más reciente que file2\n" +" (de acuerdo a la fecha de modificación).\n" +" \n" +" FILE1 -ot FILE2 Verdadero si file1 es más antiguo que file2.\n" +" \n" +" FILE1 -ef FILE2 Verdadero si file1 es un enlace duro a file2.\n" +" \n" +" Operadores de cadenas:\n" +" \n" +" -z STRING Verdadero si la cadena está vacía.\n" +" \n" +" -n STRING\n" +" STRING Verdadero si la cadena no está vacía.\n" +" \n" +" STRING1 = STRING2\n" +" Verdadero si las cadenas son iguales.\n" +" STRING1 != STRING2\n" +" Verdadero si las cadenas no son iguales.\n" +" STRING1 < STRING2\n" +" Verdadero si STRING1 se ordena antes que STRING2\n" +" lexicográficamente.\n" +" STRING1 > STRING2\n" +" Verdadero si STRING1 se ordena después que STRING2\n" +" lexicográficamente.\n" +" \n" +" Otros operadores:\n" +" \n" +" -o OPTION Verdadero si la opción del shell OPTION está " +"activada.\n" +" ! EXPR Verdadero si expr es falso.\n" +" EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 are son 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." + +#: builtins.c:1296 +#, fuzzy +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 "" +"Este es un sinónimo para la orden interna \"test\", pero el último\n" +" argumento debe ser un `]' literal, que coincida con el `[' inicial." + +#: builtins.c:1305 +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:1317 +#, 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.\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 "" +"La orden ARG se lee y ejecuta cuando el shell recibe la(s) señal(es)\n" +" SIGNAL_SPEC. Si ARG no está presente (y sólo se proporciona una sola\n" +" SIGNAL_SPEC) o se proporciona `-', cada señal especificada se\n" +" reestablece a su valor original. Si ARG es la cadena nula, cada\n" +" SIGNAL_SPEC es ignorada por el shell y por las órdenes que invoque.\n" +" Si una SIGNAL_SPEC es EXIT (0) se ejecuta la orden ARG al salir del\n" +" shell. Si una SIGNAL_SPEC es DEBUG, se ejecuta ARG después de cada\n" +" orden simple. Si se especifica la opción `-p' entonces se muestran\n" +" las órdenes de trampa asociadas con cada SIGNAL_SPEC. Si no se\n" +" proporcionan argumentos o si sólo se especifica `-p', trap muestra\n" +" la lista de órdenes asociadas a cada señal. Cada SIGNAL_SPEC es un\n" +" nombre de señal en o un número de señal. Los nombres de\n" +" señal no son sensibles a mayúsculas y minúsculas y el prefijo SIG\n" +" es opcional. `trap -l' muestra una lista de nombres de señal y sus\n" +" números correspondientes. Note que se puede enviar una señal al shell " +"con\n" +" \"kill -signal $$\"." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +#, 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" +" -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" +" \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 "" +"Ulimit provee control sobre los recursos disponibles para los\n" +" procesos iniciados por el shell, en sistemas que permiten dicho\n" +" control. Si se proporciona una opción, se interpreta así:\n" +" \n" +" -S\tusa el límite de recurso `soft'\n" +" -H\tusa el límite de recurso `hard'\n" +" -a\tse muestran todos los límites actuales\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\n" +" \tsus hijos\n" +" -i\tel número máximo de señales pendientes\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 de 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" +" \n" +" Si se establece LIMIT, éste es el nuevo valor del recurso especificado;\n" +" los valores especiales de de LIMIT `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. Los valores son en incrementos de 1024 bytes, excepto para\n" +" -t, el cual es en segundos, -p, el cual es en incrementos de 512 bytes,\n" +" y -u, el cual es un número de procesos sin escala." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Espera al proceso especificado y reporta su estado final. Si no se\n" +" proporciona N, espera a todos los procesos hijo activos actualmente,\n" +" y el código de devolución es cero. N puede ser un ID de proceso o\n" +" una especificación de trabajo; si se proporciona una especificación\n" +" de trabajo, se espera a todos los procesos en la línea de ejecución\n" +" del trabajo." + +#: builtins.c:1478 +#, fuzzy +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 "" +"El ciclo `for' ejecuta una secuencia de órdenes para cada miembro\n" +" lista de elementos. Si `in WORDS ...;' no está presente, entonces\n" +" se asume `in \"$@\"'. Para cada elemento en WORDS, se define NAME\n" +" como ese elemento, y se ejecutan COMMANDS." + +#: builtins.c:1492 +#, fuzzy +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 "" +"Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, y EXP3 son expresiones aritméticas. Si se omite\n" +" cualquier expresión, se comporta como si se evaluara a 1." + +#: builtins.c:1510 +#, fuzzy +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 "" +"Se expanden WORDS, generando una lista de palabras. El\n" +" conjunto de palabras expandidas se muestra en la salida\n" +" de error estándard, cada una precedida por un número. Si\n" +" `in WORDS' no está presente, se asume `in \"$@\"'. Entonces\n" +" se muestra el prompt PS3 y se lee una línea de la entrada\n" +" estándard. Si la línea consiste en el número correspondiente\n" +" a una de las palabras mostradas, entonces se define NAME como\n" +" esa palabra. Si la linea está vacía, WORDS y el prompt se\n" +" muestran de nuevo. Si se lee EOF, se completa la orden.\n" +" Cualquier otro valor leído causa que NAME se defina como null.\n" +" La línea leída se guarda en la variable REPLY. Se ejecutan\n" +" COMMANDS después de cada selección hasta que se ejecuta\n" +" una orden break." + +#: builtins.c:1531 +#, fuzzy +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 "" +"Ejecuta PIPELINE 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 PIPELINE cuando termina. El estado de devolución\n" +" es el estado de devolución de PIPELINE. La opción `-p' muestra\n" +" el resumen de tiempos en un formato ligeramente diferente, usando\n" +" el valor de la variable TIMEFORMAT como el formato de salida." + +#: builtins.c:1548 +#, fuzzy +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 selectivamente basado en coincidencias de la PALABRA con\n" +" el PATRÓN. Se utiliza `|' para separar patrones múltiples." + +#: builtins.c:1560 +#, fuzzy +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 "" +"Se ejecuta la lista `if COMMANDS'. Si su estado de salida es cero,\n" +" entonces se ejecuta la lista `then COMMANDS`. De otra forma, cada " +"lista\n" +" `elif COMMANDS' se ejecuta en su lugar, y si su estado de salida es " +"cero,\n" +" se ejecuta la lista correspondiente `then COMMANDS' y se completa la\n" +" orden if. De otra forma, se ejecuta la lista `else COMMANDS', si está\n" +" presente. El estado de salida de toda la construcción es el estado de\n" +" salida de la última orden ejecutada, o cero si ninguna condición " +"resultó\n" +" verdadera." + +#: builtins.c:1577 +#, 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 "" +"Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" `while' tenga un estado de salida de cero." + +#: builtins.c:1589 +#, 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 "" +"Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" `until' tengan un estado de salida que no sea cero." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "" +"Corre un conjunto de órdenes en un grupo. Esta es una forma de redirigir\n" +" un conjunto completo de órdenes." + +#: builtins.c:1641 +#, fuzzy +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 "" +"Equivalente al argumento JOB_SPEC de la orden `fg'. Reinicia un\n" +" trabajo detenido o en segundo plano. JOB_SPEC puede especificar\n" +" un nombre de trabajo o un número de trabajo. Un `&' a continuación\n" +" de JOB_SPEC colocal al trabajo en segundo plano, como si la\n" +" especificación del trabajo se hubiera proporcionado como\n" +" un argumento de `bg'." + +#: builtins.c:1656 +#, 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 "" +"Se evalua EXPRESSION de acuerdo a las reglas de evaluación\n" +" aritmética. Equivalente a \"let EXPRESSION\"." + +#: builtins.c:1668 +#, fuzzy +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 "" +"Devuelve un estado de 0 ó 1 dependiendo de la evaluación de la expresión\n" +" condicional EXPRESSION. 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" +" \t( EXPRESSION )\tDevuelve el valor de EXPRESSION\n" +" \t! EXPRESSION\tVerdadero si EXPRESSION es falso; de otra forma es " +"falso\n" +" \tEXPR1 && 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" +" patrón. Los operadores && y || no evalúan EXPR2 si EXPR1 es\n" +" suficiente para determinar el valor de una expresión." + +#: builtins.c:1694 +#, fuzzy +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\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\tEl número máximo de líneas que puede contener\n" +" \t\teste fichero.\n" +" HISTSIZE\tEl número máximo de líneas de líneas de historia que\n" +" \t\tun shell en 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 de\n" +" \t\tBash.\n" +" IGNOREEOF\tControla la acción del shell al recibir un carácter\n" +" \t\tEOF como la única entrada. Si está definida, entonces su\n" +" \t\tvalor es el número de caracteres EOF 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 que\n" +" \t\taparece en una línea por sí sola se busca primero en la lista\n" +" \t\tactual de trabajos detenidos. Si se encuentra ahí, ese\n" +" \t\ttrabajo se coloca en primer plano. Un valor `exact' significa\n" +" \t\tque la palabra de orden debe coincidir exactamente con una\n" +" \t\torden en la lista de trabajos detenidos. Un valor `substring'\n" +" \t\tsignifica que la palabra de orden debe coincidir con una\n" +" \t\tsubcadena del trabajo. Cualquier otro valor significa que\n" +" \t\tla 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\n" +" \t\tcarácter de sustitución de historia, generalmente `!'. El\n" +" \t\tsegundo es el carácter de `sustitución rápida', generalmente\n" +" \t\t`^'. El tercero es el carácter `comentario de historia',\n" +" \t\tgeneralmente `#'.\n" +" HISTIGNORE\tUna lista separada por dos puntos de patrones usados\n" +" \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n" +" \t\thistoria.\n" + +#: builtins.c:1751 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Agrega un directorio al tope de la pila de directorios, o rota\n" +" la pila, haciendo que el nuevo tope de la pila sea el\n" +" directorio de trabajo actual. Sin argumentos, intercambia\n" +" los dos directorios del tope.\n" +" \n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tde la izquierda de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en el tope.\n" +" -N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tde la derecha de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en el tope.\n" +" \n" +" -n\tsuprime el cambio normal de directorio cuando se agregan\n" +" \tdirectorios a la pila, así sólo se manipula la pila.\n" +" \n" +" dir\tagrega DIR a la pila de directorios en el tope,\n" +" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" \n" +" Puede ver la pila de directorios con la orden `dirs'." + +#: builtins.c:1785 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Borra entradas de la pila de directorios. Sin argumentos,\n" +" borra el directorio del tope de la pila, y cambia al\n" +" nuevo directorio tope.\n" +" \n" +" +N\tBorra la N-ésima entrada contando de 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 de la derecha de\n" +" \tla lista mostrada por `dirs', comenzando desde cero.\n" +" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" +" \tel penúltimo.\n" +" \n" +" -n\tsuprime el cambio normal de directorio cuando se borran\n" +" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" \n" +" Puede ver la pila de directorios con la orden `dirs'." + +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"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" +" La opción -l especifica que `dirs' no debe mostrar versiones\n" +" abreviadas de los directorios que son relativos a su directorio\n" +" inicial. Esto significa que `~/bin' se mostrará como `/home/bfox/bin'.\n" +" La opción -v causa que `dirs' muestre la pila de directorios con\n" +" una entrada por línea, anteponiendo la posición en la pila al nombre\n" +" del directorio. La opción -p hace lo mismo, pero no antepone la\n" +" posición en la pila. La opción -c limpia la pila de directorios\n" +" borrando todos sus elementos.\n" +" \n" +" +N\tmuestra la N-ésima entrada contando desde la izquierda de la lista\n" +" mostrada por dirs cuando se invoca sin opciones, empezando de cero.\n" +" \n" +" -N\tmuestra la N-ésima entrada contando desde la derecha de la lista\n" +" mostrada por dirs cuando se invoca sin opciones, empezando de cero." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +#, 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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"printf da formato y muestra ARGUMENTS bajo el control de FORMAT. FORMAT\n" +" es una cadena de caracteres la cual contiene tres tipos de objetos:\n" +" caracteres normales, los cuales simplemente se copian a la salida\n" +" estándard, secuencias de escape de caracteres que se convierten y\n" +" se copian a la salida estándard, y especificaciones de formato,\n" +" cada una de las cuales causa la muestra del siguiente argumento\n" +" consecutivo. Además de los formatos printf(1) estándard, %b significa\n" +" expandir las secuencias de escape de barra invertida en su argumento\n" +" correspondiente, y %q significa citar el argumento de tal forma que\n" +" se pueda reusar como entrada del shell. Si se proporciona la opción\n" +" -v, la salida se coloca en el valor de la variable de shell VAR\n" +" en lugar de enviarla a la salida estándard." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +"Muestra los posibles complementos dependiendo de las opciones. Sirve\n" +" para usarse desde una función de shell que genere complementos " +"posibles.\n" +" Si se proporciona el argumento opcional WORD, se generan las " +"coincidencias\n" +" contra WORD." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Sin EXPR, returns devuelve \"$linea $nombrefichero\". Con EXPR," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "devuelve \"$linea $subrutina $nombrefichero\"; esta información" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "adicional se puede usar para proveer un volcado de pila." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "" +#~ "El valor de EXPR indica cuántos marcos de llamada se debe retroceder" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "antes del actual; el marco inicial es el marco 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: número inválido" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Órdenes del shell que coinciden con las palabras `" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "" +#~ "Muestra la lista de directorios actualmente grabados. Los directorios" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "se guardan en la lista con la orden `pushd'; pueden ir saliendo de" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "la lista con la orden `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "La opción -l especifica que `dirs' no debe mostrar versiones abreviadas" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "de los directorios que son relativos a su directorio inicial. Esto " +#~ "significa" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "que `~/bin' se mostrará como `/homes/bfox/bin'. La opción -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "causa que `dirs' imprima la pila de directorios con una entrada por línea," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "anteponiendo la posición en la pila al nombre del directorio. La opción" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "-p hace lo mismo, pero no antepone la posición en la pila." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "La opción -c limpia la pila de directorios borrando todos sus elementos." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N muestra la N-ésima entrada contando desde la izquierda de la lista" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "" +#~ " mostrada por dirs cuando se invoca sin opciones, empezando de cero." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N muestra la N-ésima entrada contando desde la derecha de la lista" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Agrega un directorio al tope de la pila de directorios, o rota" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "la pila, haciendo que el nuevo tope de la pila sea el directorio de" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "" +#~ "trabajo actual. Sin argumentos, intercambia los dos directorios del tope." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Rota la pila para que el N-ésimo directorio (contando" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "" +#~ " de la izquierda de la lista mostrada por `dirs', comenzando desde" + +#~ msgid " zero) is at the top." +#~ msgstr " cero) esté en el tope." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Rota la pila para que el N-ésimo directory (contando" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "" +#~ " de la derecha de la lista mostrada por `dirs', comenzando desde" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n suprime el cambio normal de directorio cuando se agregan directorios" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " a la pila, así sólo se manipula la pila." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir agrega DIR a la pila de directorios en el tope, haciéndolo el" + +#~ msgid " new current working directory." +#~ msgstr " nuevo directorio de trabajo actual." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Puede ver la pila de directorios con la orden `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Borra entradas de la pila de directorios. Sin argumentos," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "borra el directorio del tope de la pila, y cambia al nuevo" + +#~ msgid "top directory." +#~ msgstr "directorio tope." + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "" +#~ "+N borra la N-ésima entrada contando desde la izquierda de la lista" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "" +#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd +0'" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " borra el primer directorio, `popd +1' el segundo." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N borra la N-ésima entrada contando desde la derecha de la lista" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "" +#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd -0'" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " borra el último directorio, `popd -1' el penúltimo." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n suprime el cambio normal de directorio cuando se borran directorios" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " de la pila, así sólo se manipula la pila." + +#~ msgid "allocated" +#~ msgstr "asignado" + +#~ msgid "freed" +#~ msgstr "liberado" + +#~ msgid "requesting resize" +#~ msgstr "solicitando cambio de tamaño" + +#~ msgid "just resized" +#~ msgstr "terminó cambio de tamaño" + +#~ msgid "bug: unknown operation" +#~ msgstr "bicho: operación desconocida" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: alerta de observación: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "Sale de un ciclo FOR, WHILE o UNTIL. Si se especifica N,\n" +#~ " sale N niveles." + +#~ 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 "" +#~ "Ejecuta una orden interna del shell. Esto es útil cuando desea " +#~ "renombrar\n" +#~ " una orden interna del shell para que sea una función, pero necesita\n" +#~ " la funcionalidad de la orden interna dentro de la misma función." + +#~ 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 "" +#~ "Muestra el directorio de trabajo actual. Con la opción -P, pwd muestra\n" +#~ " el directorio físico, sin enlaces simbólicos; la opción -L hace que\n" +#~ " pwd siga los enlaces simbólicos." + +#~ msgid "Return a successful result." +#~ msgstr "Devuelve un resultado exitoso." + +# es usado -> se usa. sv +# es impresa -> se muestra una cadena em+ +# "Si se da la opción -V o -v,..." sv +# De acuerdo. cfuga +#~ 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 "" +#~ "Ejecuta COMMAND con ARGS ignorando las funciones del shell. Si tiene " +#~ "una\n" +#~ " función de shell llamada `ls', y desea llamar a la orden `ls', puede\n" +#~ " decir \"command ls\". Si se da la opción -p, se usa un valor por\n" +#~ " defecto para PATH que garantiza encontrar todas las herramientas\n" +#~ " estándard. Si se da la opción -V o -v, se muestra una cadena que\n" +#~ " describe COMMAND. La opción -V produce una descripción más detallada." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsoleto. Ver `declare'." + +# y le da -> y le asigna em+ +# sólo se puede usar. sv +# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ +# De acuerdo. cfuga +#~ 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 "" +#~ "Crea una variable local llamada NAME, y le asigna un VALUE. LOCAL\n" +#~ " sólo se puede usar dentro de una función; hace que la variable NAME\n" +#~ " solamente sea visible a esa función y sus hijos." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Muestra los ARGs. Si se especifica -n, se elimina el carácter\n" +#~ " de fin de línea." + +# se puede usar. sv +# Se muestra una lista de órdenes internas. sv +# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en +# forma "reflexiva". No comento más y te dejo que los mires despacio. +# Gracias por la observación. cfuga +#~ 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 "" +#~ "Activa y desactiva las órdenes internas del shell. Esto le permite\n" +#~ " usar una orden del sistema que tenga el mismo nombre que una orden\n" +#~ " interna del shell sin especificar una ruta completa. Si se usa -n, " +#~ "los\n" +#~ " NAMEs se desactivan; de otra forma los NAMEs se activan. Por " +#~ "ejemplo,\n" +#~ " para usar `test' que se encuentra en $PATH en lugar de la versión " +#~ "interna\n" +#~ " del shell, teclee `enable -n test'. En sistemas que soportan\n" +#~ " carga dinámica, se puede usar la opción -f para cargar nuevas " +#~ "órdenes\n" +#~ " internas desde el objeto compartido FILENAME. La opción -d borrará " +#~ "una\n" +#~ " orden interna cargada previamente con -f. Si no se propocionan " +#~ "nombres\n" +#~ " que no sean opciones, o se especifica la opción -p, se muestra una " +#~ "lista\n" +#~ " de órdenes internas. La opción -a es para mostrar cada orden " +#~ "interna\n" +#~ " con una indicación si está o no activada. La opción -s restringe la\n" +#~ " salida a las órdenes internas `especiales' de POSIX.2. La opción -n\n" +#~ " muestra una lista de todas las órdenes internas desactivadas." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Lee ARGs como entrada del shell y ejecuta el(los) comando(s) resultantes." + +#~ 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 "" +#~ "Ejecuta FILE, reemplazando este shell con el programa especificado.\n" +#~ " Si no se especifica FILE, las redirecciones toman efecto en este\n" +#~ " shell. Si el primer argumento es `-l' entonces coloca un guión\n" +#~ " en el argumento cero que pasa a FILE, como lo hace login. Si se\n" +#~ " proporciona la opción `-c', se ejecuta FILE con un ambiente nulo.\n" +#~ " La opción `-a' establece el argv[0] del proceso ejecutado a NOMBRE.\n" +#~ " Si no se puede ejecutar el fichero, y el shell no es intercativo,\n" +#~ " entonces el shell termina, a menos que esté activa la opción\n" +#~ " `execfail'." + +#~ msgid "Logout of a login shell." +#~ msgstr "Se desconecta de un shell de entrada." + +#~ 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 "" +#~ "Por cada NOMBRE, se determina la ruta completa de la orden y se graba.\n" +#~ " Si se especifica la opción -p, se usa PATHNAME como la ruta completa\n" +#~ " de NAME, y no se realiza la búsqueda de ruta. La opción -r hace que\n" +#~ " el shell olvide todas las ubicaciones grabadas. La opción -d hace " +#~ "que\n" +#~ " el shell olvide las ubicaciones grabadas de cada NAME. Si se\n" +#~ " proporciona la opción -t se muestra la ruta completa para cada NAME\n" +#~ " correspondiente. Si se proporcionan múltiples argumentos NAME con\n" +#~ " -t, NAME se muestra antes de la ruta completa. La opción -l hace\n" +#~ " que la salida se muestre en un formato que se puede reusar como\n" +#~ " entrada. Si no se proporcionan argumentos, se muestra la " +#~ "información\n" +#~ " de las órdenes grabadas." + +#~ 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 "" +#~ "Muestra información útil sobre las órdenes internas del shell. Si se\n" +#~ " especifica un PATRÓN, proporciona ayuda detallada sobre todas las\n" +#~ " órdenes que coinciden con el PATRÓN, de otra forma se muestra una\n" +#~ " lista de las órdenes internas. La opción -s restringe la salida\n" +#~ " de cada orden interna que concida con el PATRÓN a una breve\n" +#~ " sinopsis de uso." + +#~ 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 "" +#~ "Por defecto, elimina cada argumento JOBSPEC de la tabla de trabajos " +#~ "activos.\n" +#~ " Si se especifica la opción -h, el trabajo no se elimina de la tabla,\n" +#~ " pero se marca de forma que no se envía SIGHUP al trabajo si el shell\n" +#~ " recibe un SIGHUP. La opción -a, cuando no se proporciona JOBSPEC, " +#~ "borra\n" +#~ " todos los trabajos de la tabla de trabajos; la opción -r borra sólo\n" +#~ " los trabajos activos." + +#~ 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 "" +#~ "Causa la salida de una función con el valor de devolución especificado " +#~ "por N.\n" +#~ " Si se omite N, el estado de devolución será el de la última orden." + +#~ 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 "" +#~ "Para cada NAME, se borra la variable o función correspondiente. Al usar\n" +#~ " `-v', unset sólo actuará sobre variables. Al usar la opción `-f',\n" +#~ " unset sólo actuará sobre funciones. Sin ninguna opción, unset " +#~ "primero\n" +#~ " intenta borrar una variable, y si esto falla, entonces intenta " +#~ "borrar\n" +#~ " una función. Algunas variables no se pueden borrar; vea también " +#~ "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 "" +#~ "Se marcan NAMEs para exportación automática al ambiente de las\n" +#~ " órdenes ejecutadas subsecuentemente. Si se establece la opción -f,\n" +#~ " NAMEs se refieren a funciones. Si no se proporciona ningún NAME,\n" +#~ " o si se proporciona `-p', se muestra una lista de todos los nombres\n" +#~ " que se exportan en este shell. Un argumento `-n' indica eliminar\n" +#~ " la propiedad de exportación para los NAMEs subsecuentes. Un " +#~ "argumento\n" +#~ " `--' desactiva el procesamiento posterior de opciones." + +#~ 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 "" +#~ "Los NAMEs dados se marcan como sólo lectura y los valores de esos NAMEs\n" +#~ " no se pueden cambiar por asignaciones posteriores. Si se propociona\n" +#~ " la opción -f, entonces también se marcan las funciones que " +#~ "correspondan\n" +#~ " a los NAMEs. Si no se proporcionan argumentos, o si se especifica\n" +#~ " `-p', se muestra una lista de todos los nombres de sólo lectura.\n" +#~ " La opción `-a' trata cada NAME como una variable de matriz.\n" +#~ " Un argumento `--' desactiva opciones posteriores." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Los parámetros posicionales de $N+1 ... se renombran a $1 ... Si no se\n" +#~ " proporciona N, se asume que es 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 "" +#~ "Suspende la ejecución de este shell hasta que recibe una señal\n" +#~ " SIGCONT. Si se especifica `-f' indica que no se queje si es\n" +#~ " un shell de login; y se suspende de cualquier forma." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Muestra los tiempos de usuario y de sistema acumulados para los procesos\n" +#~ " ejecutados desde el 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 "" +#~ "Para cada NAME, se indica cómo se interpretaría se se usara como\n" +#~ " el nombre de una orden.\n" +#~ " \n" +#~ " Si se usa la opción -t, `type' muestra una sola palabra que es una\n" +#~ " de `alias', `keyword', `function', `builtin', `file' ó `', si NAME\n" +#~ " es un alias, palabra reservada del shell, función del shell, orden\n" +#~ " interna del shell, fichero del disco, o no encontrado, " +#~ "respectivamente.\n" +#~ " \n" +#~ " Si se usa la opción -p, `type' devuelve el nombre del fichero del\n" +#~ " sistema que sería ejecutado, o nada, si `type -t NAME' no devuelve\n" +#~ " `file'.\n" +#~ " \n" +#~ " Si se usa la opción -a, `type' muestra todos los lugares que " +#~ "contienen\n" +#~ " un ejecutable llamado `file'. Esto incluye a aliases, órdenes\n" +#~ " internas, y funciones, si y solo si no se usa la opción -p.\n" +#~ " \n" +#~ " La opción -f suprime la búsqueda de funciones de shell.\n" +#~ " \n" +#~ " La opción -P fuerza una búsqueda en PATH por cada NAME, aún si es un\n" +#~ " alias, orden interna, o función, y devuelve el nombre del fichero " +#~ "del\n" +#~ " disco que se puede ejecutar." + +#~ 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 "" +#~ "La máscara de creación de ficheros se establece a MODE. Si se omite " +#~ "MODE,\n" +#~ " o si se proporciona `-S', se muestra el valor actual de la máscara. " +#~ "La\n" +#~ " opción `-S' hace la salida simbólica; de otra forma la salida es un\n" +#~ " número octal. Si se proporciona `-p', y se omite MODE, la salida es\n" +#~ " en una forma que se puede usar como entrada. Si MODE empieza con un\n" +#~ " dígito, se interpreta como un número octal, de otra forma es una " +#~ "cadena\n" +#~ " de modo simbólico como la que acepta 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 "" +#~ "Espera al proceso especificado y reporta su estado final. Si no se\n" +#~ " proporciona N, espera a todos los procesos hijo activos actualmente,\n" +#~ " y el código de devolución es cero. N es un ID de proceso; si no se\n" +#~ " proporciona, se espera a todos los procesos hijo del shell." + +#~ 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 "" +#~ "Crea una orden simple invocada por NAME que ejecuta COMMMANDS.\n" +#~ " Se pasan a la función los argumentos en la línea de órdenes\n" +#~ " junto con NAME como $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 "" +#~ "Cambia los valores de las variables que controlan conductas opcionales.\n" +#~ " La opción -s activa (define) cada OPTNAME; la opción -u desactiva\n" +#~ " cada OPTNAME. La opción -q suprime la salida; el estado de salida\n" +#~ " indica si cada OPTNAME se definió o no. La opción -o restringe\n" +#~ " que OPTNAMEs sean aquéllos definidos para usarse con `set -o'.\n" +#~ " Sin opciones, o con la opción -p, se muestra una lista de todas\n" +#~ " las opciones definibles, con una indicación si están o no activas." + +#~ 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 "" +#~ "Por cada NAME, especifica cómo se deben completar los argumentos.\n" +#~ " Si se proporciona la opción -p, o si no se proporcionan opciones, se\n" +#~ " muestran las especificaciones existentes de completado en una forma\n" +#~ " que permite que se reusen como entrada. La opción -r borra una\n" +#~ " especificación de completado para cada NAME, o, si no se proporciona\n" +#~ " ningún NAMEs, todas las especificaciones de completado." + +#~ msgid "Missing `}'" +#~ msgstr "Faltan `}'" + +#~ msgid "brace_expand> " +#~ msgstr "expansión_llave> " + +# ¿ a qué se refiere ? em+ +# También podría ser la orden de tipo desconocido. sv +# Tiene razón Santiago. Las órdenes se guardan en matrices de caracteres +# en bash. Si bash intenta borrar uno de estos comandos y el tipo del dato +# NO es matriz de caracter, emitiría este mensaje. cfuga +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Intentando liberar la orden de tipo desconocido `%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Comunique esto a %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Deteniéndome..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Decir a %s que arregle esto algún día.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: tipo de orden erróneo `%d'" + +#~ msgid "real\t" +#~ msgstr "real\t" + +#~ msgid "user\t" +#~ msgstr "usuario\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" +#~ "usuario\t0m0.00s\n" +#~ "sistema\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "no se puede duplicar el df %d al df 1: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: la redirección de salida está restringida" + +#~ msgid "Out of memory!" +#~ msgstr "¡Memoria agotada!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Ya se había añadido el elemento `%s'\n" + +# Han sido introducidos o quizá , Vd, introdujo em+ +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Introdujo %d (%d) elementos. La distribución es:\n" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: ¿bg trabajo en background?" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "La instrucción de redirección de yyparse () '%d' está fuera de rango en \n" +#~ "make_redirection ()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () tiene una orden del tipo %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "se obtuvo errno %d mientras esperaba a %d" + +# algo por el estilo em+ +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "error sintáctico cerca del elemento inesperado `%c'" + +# Por consistencia con mensajes anteriores, sería erróneo (el tipo). sv +# De acuerdo. Corregido. cfuga +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: tipo de dato de orden `%d' erróneo" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: argumento `%%' erróneo (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "la opción `%s' requiere un argumento" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: la opción no es reconocida" + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' requiere un argumento" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: no se pueden ejecutar directorios" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Código erróneo en sig.c: sigprocmask" + +#~ msgid "bad substitution: no ending `}' in %s" +#~ msgstr "sustitución errónea: no hay `}' final en %s" + +#~ msgid "%s: bad array subscript" +#~ msgstr "%s: subíndice de matriz erróneo" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "" +#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %" +#~ "s" + +#~ msgid "reading" +#~ msgstr "leyendo" + +#~ msgid "writing" +#~ msgstr "escribiendo" + +# del proceso em+ +#~ msgid "process substitution" +#~ msgstr "sustitución de proceso" + +#~ msgid "command substitution" +#~ msgstr "sustitución de la orden" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "No se puede reabrir la tubería para la sustitución de la orden (df %d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: variable desligada" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: sustitución aritmética errónea" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: se esperaba un operador binario" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: subíndice erróneo" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: subíndice erróneo" + +# Yo pondría "hay dígitos en dos elementos diferentes de argv". sv +# De acuerdo. cfuga +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "hay dígitos en dos elementos diferentes de argv.\n" + +#~ msgid "option %c\n" +#~ msgstr "opción %c\n" + +#~ msgid "option a\n" +#~ msgstr "opción a\n" + +#~ msgid "option b\n" +#~ msgstr "opción b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opción c con el valor `%s'\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt devolvió el código de carácter 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elementos de ARGV que no son opciones: " + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Indicador desconocido %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "Directiva desconocida `%s'" + +#~ msgid "%s requires an argument" +#~ msgstr "%s requiere un argumento" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s debe estar dentro de un bloque $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "%s encontrado antes de $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s ya tiene una función (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "%s ya tiene un nombre de documento (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "% ya tiene documentación corta (%s)" + +# Si traducimos con la gramática española, probablemente sería: +# ...una definición %s". sv +# De acuerdo. cfuga +#~ msgid "%s already has a %s definition" +#~ msgstr "%s ya tiene una definición %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: ¡Memoria agotada!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p prompt] [-a matriz] [-e] [nombre ...]" + +#~ msgid ". filename" +#~ msgstr ". fichero" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[DÍGITOS | PALABRAS] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variables - Algunos nombres de variables y sus significados" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' sin argumentos o con la opción -p muestra la lista" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "de aliases en la forma alias NOMBRE=VALOR por la entrada estándar." + +# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv +# De acuerdo. cfuga +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "De otra manera, se define un alias por cada NOMBRE cuyo VALOR se da." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "Un espacio final en VALOR causa que la siguiente palabra sea revisada para" + +# Lo mismo de antes: el alias es expandido -> el alias se expande. sv +# De acuerdo. cfuga +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "la sustitución del alias cuando el alias se expande. Alias devuelve" + +# no alias -> ningún alias. sv +# De acuerdo. cfuga +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "verdadero a menos que para un NOMBRE dado no se haya definido ningún " +#~ "alias." + +#~ msgid "then remove all alias definitions." +#~ msgstr "entonces borra todas las definiciones de alias." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "Asigna una secuencia de teclas a una función Readline, o a una macro. La" + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "" +#~ "sintaxis es equivalente a la encontrada en ~/.inputrc, pero debe ser" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "pasada como un solo argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Argumentos que se aceptan:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m mapa_teclas Usa `mapa_teclas' como el mapa de teclas durante esta" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr "" +#~ " orden. Los nombres de mapas de teclas aceptables son" + +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs, emacs-standard, emacs-meta, emacs-ctlx, vi," + +#~ msgid " vi-command, and vi-insert." +#~ msgstr " vi-move, vi-command y vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l Muestra los nombres de las funciones." + +#~ msgid " -P List function names and bindings." +#~ msgstr "" +#~ " -P Muestra los nombres de funciones y asignaciones." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Muestra las funciones y asignaciones en un formato " +#~ "que" + +#~ msgid " reused as input." +#~ msgstr " puede reusarse como entrada." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r sec_teclas Borra la asignación para SEC_TECLAS" + +# lee 'la'... em+ +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f fichero Lee la asignación de teclas de FICHERO." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q nombre-función Pregunta sobre qué teclas invocan la función " +#~ "nombrada." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V Muestra los nombres de variables y valores" + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Muestra los nombres de variables y valores de una " +#~ "forma que" + +#~ msgid " be reused as input." +#~ msgstr " puede reusarse como entrada." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S Muestra las secuencias de teclas que invocan macros " +#~ "y sus\n" +#~ " valores" + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s Muestra las secuencias de teclas que invocan macros " +#~ "y sus" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " valores en una forma que puede reusarse como entrada." + +#~ msgid "break N levels." +#~ msgstr "sale N niveles." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "Si se especifica N, retoma en el N-ésimo ciclo." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "Ejecuta un shell interno. Esto es útil cuando desea renombrar un" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "" +#~ "shell interno para que sea una función, pero necesita la funcionalidad" + +#~ msgid "builtin within the function itself." +#~ msgstr "interna dentro de la misma función." + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Cambia el directorio actual a DIR. La variable $HOME es el DIR" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "por omisión. La variable $CDPATH define la ruta de búsqueda para" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "el directorio que contiene DIR. Los nombres alternativos de directorio en" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "CDPATH son separados por dos puntos (:). Un nombre de directorio nulo es" + +# Slash lo venimos traduciendo por barra inclinada , y backslash +# por barra invertida em++ +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "" +#~ "igual al directorio actual, p.e. `.'. Si DIR comienza con una barra " +#~ "inclinada" + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "" +#~ "(/), entonces $CDPATH no se usa. Si el directorio no se encuentra, y" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "la opción de shell `cdable_vars' está activa, entonces intenta la palabra" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "como nombre de variable. Si esa variable tiene un valor, entonces se " +#~ "cambia al" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "valor de esa variable. La opción -P indica el uso de la estructura física" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "del directorio en lugar de seguir enlaces simbólicos; la opción -L" + +# forza -> fuerza? cfuga +#~ msgid "to be followed." +#~ msgstr "fuerza que los vínculos simbólicos sean seguidos." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "" +#~ "Imprime el directorio actual de trabajo. Con la opción -P, pwd imprime" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "el directorio físico, sin ningún enlace simbólico; la opción -L" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "hace que pwd siga los enlaces simbólicos." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "Ejecuta ORDEN con ARGUMENTOS ignorando las funciones del shell. Si" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "tiene una función de shell llamada `ls', y desea llamar a la orden `ls'," + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "se puede decir \"command ls\". Si se especifica la opción -p, se usa un " +#~ "valor" + +# es usado -> se usa. sv +# De acuerdo. La corrección incluye también la línea anterior. cfuga +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "" +#~ "por omisión para PATH que garantiza encontrar todas las herramientas " +#~ "estándar." + +# es impresa -> se muestra una cadena em+ +# "Si se da la opcón -V o -v,..." sv +# De acuerdo. cfuga +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "" +#~ "Si se da la opción -V o -v, se muestra una cadena describiendo la ORDEN." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "La opción -V produce una descripción más completa." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "Declara variables y/o les da atributos. Si no se proporcionan NOMBREs," + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "entonces muestra los valores de las variables. La opción -p" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "mostrará los atributos y valores de cada NOMBRE." + +#~ msgid "The flags are:" +#~ msgstr "Los indicadores son:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\thacer los NOMBREs matrices (si está soportado)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tseleccionar sólo entre los nombres de funciones" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tmostrar los nombres de funciones sin definiciones" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\thacer los NOMBREs de sólo lectura" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\thacer los NOMBREs exportables" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\thacer que los NOMBREs tengan el atributo `entero' activado" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "Las variables con el atributo entero tienen evaluación aritmética" + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "(ver `let') cuando la variable es asignada." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "Cuando se muestran valores de variables, -f muestra el nombre y" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "la definición de la función. La opción -F evita que se muestre" + +#~ msgid "name only." +#~ msgstr "solamente el nombre de la función." + +# apaga -> desactiva em+ +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "" +#~ "Usar `+' en lugar de `-' desactiva el atributo dado. Cuando es usado" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "en una función, hace los NOMBREs locales, como con la orden `local'." + +# y le da -> y le asigna em+ +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "Crea una variable local llamada NOMBRE, y le asigna un VALOR. LOCAL" + +# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "tenga visible sólo para la función y sus hijos." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "Muestra los ARGumentos. Si -n es especificado, el carácter final de" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "fin de línea es eliminado. Si se especifica la opción -e, se activa la" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "interpretación de estos caracteres de escape con barras invertidas:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\talerta (campana)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tespacio hacia atrás" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tsuprime el carácter de fin de línea restante" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tcarácter de escape" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\talimentación de papel" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tnueva línea" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tretorno de carro" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\ttabulador horizontal" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\ttabulador vertical" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tbarra invertida" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\tel carácter cuyo código ASCII es NÚM (octal)." + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "Puede desactivar explícitamente la interpretación de los siguientes" + +#~ msgid "with the -E option." +#~ msgstr "caracteres con la opción -E ." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "Activa y desactiva las órdenes internas del shell. Esto permite" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "" +#~ "que use una orden del sistema que tenga el mismo nombre de una orden" + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "interna. Si se usa -n , los NOMBREs se desactivan; de otra forma" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "se activan los NOMBREs. Por ejemplo, para usar `test' de la" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "" +#~ "ruta de acceso en lugar de la versión interna del shell, teclee\n" +#~ "`enable -n test'." + +# se puede usar. sv +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "En sistemas que soportan carga dinámica, la opción -f se puede usar" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "para cargar nuevas órdenes internas del objeto FICHERO compartido." + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "La opción -d borrará una orden interna cargada con -f. Si no" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "" +#~ "se especifica ninguna opción, o se especifica la opción -p, se muestra " +#~ "una lista" + +# Se muestra una lista de órdenes internas. sv +# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en +# forma "reflexiva". No comento más y te dejo que los mires despacio. +# Gracias por la observación. cfuga +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "de órdenes internas. La opción -a implica mostrar cada orden interno" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "con una indicación de si está activa o no. La opción -s impide" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "la salida a las órdenes internas `especiales' Posix.2. La opción -n" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "muestra una lista de todos las órdenes internas desactivadas." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Los procedimientos de shell usan getopts para decodificar parámetros\n" +#~ "de posición." + +# "a ser reconocidas" no está en español. +# Yo pondría "las letras de opción que se reconocen". sv +# De acuerdo. cfuga +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "" +#~ "La CADENA_OPCIONES contiene las letras de opción que se reconocen; si una" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "" +#~ "letra es seguida de dos puntos, se espera que la opción tenga un " +#~ "argumento," + +#~ msgid "which should be separated from it by white space." +#~ msgstr "que debe estar separado por espacios." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "Cada vez que se llama, getopts colocará la siguiente opción en" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "" +#~ "la variable de shell $nombre, creando nombre si no existe, y el índice" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "" +#~ "del siguiente argumento para procesarse dentro de la variable del shell" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "OPTIND. OPTIND inicia con 1 cada vez que el shell o un guión de" + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "shell es llamado. Cuando una opción requiere un argumento," + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "getopts coloca ese argumento en la variable de shell OPTARG." + +# en una de dos formas -> en una de las dos formas siguientes em+ +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "getopts comunica errores en una de las dos formas siguientes. Si el " +#~ "primer carácter" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "de OPTSTRING es dos puntos, getopts usa el aviso de error silencioso." + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "" +#~ "En este modo, no se muestran mensajes de error. Si se encuentra una " +#~ "opción" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "ilegal, getopts coloca el carácter de opción encontrado en OPTARG." + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "" +#~ "Si un argumento necesario no se encuentra, getopts coloca ':' en NOMBRE" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "y establece a OPTARG con el carácter de opción encontrado. Si" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "" +#~ "getopts no está en modo silencioso, y se encuentra una opción ilegal," + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "getopts coloca '?' en NOMBRE y borra OPTARG. Si no se encuentra" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "una opción necesaria, se coloca un '?' en NOMBRE, se borra OPTARG," + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "" +#~ "Si la variable de shell OPTERR tiene el valor 0, getopts deshabilita" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "la notificación de mensajes de error, aún si el primer carácter de" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "OPTSTRING no es ':'. OPTERR tiene el valor de 1 por omisión." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "" +#~ "Getopts normalmente compara los parámetros de posición ($0 - $9), pero" + +# dar argumentos -> especificar em+ +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "" +#~ "si se especifican más argumentos, se comparan en lugar de los primeros." + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "" +#~ "Ejecuta el FICHERO, reemplazando este shell con el programa especificado." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "" +#~ "Si no se especifica un FICHERO, las redirecciones toman efecto en este" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "shell. Si el primer argumento es `-l', entonces coloca un guión en" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "" +#~ "el argumento 0 pasado al FICHERO, como lo hace login. Si se especifica la " +#~ "opción" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "`-c', el FICHERO se ejecuta en un entorno nulo. La opción `-a'" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "hace que cambie el argv[0] del proceso ejecutado a NOMBRE." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "Si el fichero no se puede ejecutar y el shell no es interactivo," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "entonces el shell termina, a menos que la variable" + +#~ msgid "is set." +#~ msgstr "\"no_exit_on_failed_exec\" esté activada." + +#~ msgid "is that of the last command executed." +#~ msgstr "es el del último comando ejecutado." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "PRIMERO y ÚLTIMO pueden ser números especificando el rango, o PRIMERO" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "puede ser una cadena, que representa el comando más reciente que" + +#~ msgid "string." +#~ msgstr "comience con dicha cadena." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e NOMBRE_E escoge qué editor emplear. Por omisión es FCEDIT, después" + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr " EDITOR, después el editor que corresponde a la edición actual" + +#~ msgid " mode, then vi." +#~ msgstr " del modo de línea de comando, y finalmente vi." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l significa mostrar líneas en lugar de editarlas." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n significa que no sean mostrados los números de línea." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r significa invertir el orden de las líneas (líneas nuevas primero)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "Con el formato `fc -s [pat=rep ...] [orden]', la orden es" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "" +#~ "re-ejecutado después de que se realiza la sustitución ANTIGUA=NUEVA." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "" +#~ "Un alias útil para usar con esto es r='fc -s', así que al teclear `r cc'" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "" +#~ "ejecuta la última orden que comenzó con `cc' y tecleando `r' re-ejecuta" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "" +#~ "Si el ID_TRABAJO no se encuentra, se usa la noción del shell de trabajo" + +#~ msgid "used." +#~ msgstr "actual." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "Ubica al ID_TRABAJO en el background, como si hubiera sido iniciado con" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "`&'. Si el ID_TRABAJO no se encuentra, se usa la noción del shell" + +#~ msgid "job is used." +#~ msgstr "de trabajo actual." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Para cada NOMBRE, se determina la ruta completa de la orden y se" + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "recuerda. Si se especifica la opción -p, se usa la RUTA_DE_ACCESO" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "" +#~ "como la ruta completa de NOMBRE y no se realiza la búsqueda de ruta." + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "" +#~ " La opción -r hace que el shell olvide todas las ubicaciones recordadas." + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "" +#~ " Si no se especifican argumentos, se muestra la información sobre las " +#~ "órdenes recordadas." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "Muestra información de ayuda acerca de las órdenes internas. Si se" + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "especifica la PLANTILLA, da ayuda detallada de todas las órdenes que" + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "" +#~ "coinciden con la PLANTILLA, de otra forma se muestra una lista de las " +#~ "órdenes internas." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "" +#~ "Muestra la lista de la historia con números de línea. Las líneas " +#~ "mostradas" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "con un `*' han sido modificadas. Un argumento de N indica que solo se" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "" +#~ "muestren las últimas N líneas. La opción -c hace que la lista de la " +#~ "historia" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "sea borrada eliminando todas las entradas. La opción `-w' escribe la " +#~ "historia" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "actual al fichero de historia; `-r' al contrario, lee el fichero y agrega" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "el contenido a la lista de la historia. `-a' agrega las" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "líneas de la historia de esta sesión al fichero de historia." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "El argumento `-n' lee todas las líneas de historia que no han sido" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "" +#~ "leídas aún del fichero de historia y las agrega a la lista de historia." + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "" +#~ " Si se especifica un FICHERO, entonces se usa como el fichero de historia" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "de otra manera si $HISTFILE tiene un valor, se utiliza, de otra forma se " +#~ "usa ~/.bash_history." + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "" +#~ "Si se especifica la opción -s, los ARGumentos que no son opciones se" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "" +#~ "agregan a la lista de historia como una sola entrada. La opción -p " +#~ "realiza" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "una expansión de historia en cada ARGumento y muestra el resultado, sin " +#~ "guardar" + +#~ msgid "anything in the history list." +#~ msgstr "nada en la lista de historia." + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "" +#~ "Muestra los trabajos activos. La opción -l muestra los id's de los " +#~ "procesos además" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "de la información normal; la opción -p solamente muestra los id's de los " +#~ "procesos." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Si se especifica -n, solamente se muestran los procesos que han cambiado" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "de estado desde la última notificación. IDJOB limita la salida a ese " +#~ "trabajo. Las" + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "opciones -r y -s limitan la salida a mostrar sólo trabajos corriendo y " +#~ "detenidos," + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "respectivamente. Sin opciones, se muestra el estado de todos los" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "trabajos activos. Si se especifica -x, la ORDEN se ejecuta después de " +#~ "que todas las especificaciones de trabajos" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "que aparecen en ARGS han sido reemplazadas por el ID de proceso del" + +#~ msgid "process group leader." +#~ msgstr "líder del grupo de procesos de dicho trabajo." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "Elimina cada argumento IDJOBS de la tabla de trabajos activos." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "Manda a los procesos nombrados por PID (o TRABAJO) la señal SIGSPEC. Si" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "" +#~ "no se especifica SIGSPEC, entonces se asume SIGTERM. El argumento `-l'" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "muestra los nombres de señales; si hay argumentos después de `-l', se" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "asume que son números de señales cuyos nombres deben mostrarse. Kill es " +#~ "una orden" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "" +#~ "interna de shell por dos razones: permite que los IDs de trabajos sean " +#~ "usados en lugar de " + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "IDs de procesos, y, si ha alcanzado el límite de procesos que" + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "puede crear, no tiene que iniciar un proceso para eliminar a otro." + +# "a ser evaluada" no está en español. sv +# Cierto. ¿Así está mejor? cfuga +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "" +#~ "Cada ARGumento es una expresión aritmética para evaluarse. La evaluación" + +# overflow -> desbordamiento o sobrepasamiento. nunca lo he visto +# traducido como sobreflujo. sv +# Corregido. cfuga +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "se hace en enteros long sin revisar desbordamientos, aunque la división" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "por 0 es capturada y marcada como un error. La siguiente lista de" + +# 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 +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "" +#~ "operadores está agrupada en niveles de operadores de la misma prioridad." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Se muestran los niveles en orden de prioridad decreciente." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tmenos unario, más" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tnegación lógica y basada en bits" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tmultiplicación, división, residuo" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tadición, sustracción" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tdesplazamientos de bits izquierdo y derecho" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tcomparación" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tequivalencia, inequivalencia" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tAND de bits" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tXOR de bits" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tOR de bits" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tAND lógico" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tOR lógico" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpr ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\texpresión condicional" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "asignaciones\t&=, ^=, |=" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "de la variable por su valor (asignado a un entero long) dentro de" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "una expresión. La variable no necesita tener activado su atributo" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "entero para que se use en una expresión." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "" +#~ "Los operadores se evalúan en orden de prioridad. Se evalúan en primer" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "lugar las sub-expresiones en paréntesis y pueden sobrepasar las" + +#~ msgid "rules above." +#~ msgstr "reglas de prioridad anteriores." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "Si el último ARGumento evalua a 0, let regresa 1; de otra manera" + +#~ msgid "otherwise." +#~ msgstr "se regresa 0." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "Una línea se lee de la entrada estándar, y la primera palabra se" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "asigna al primer NOMBRE, la segunda palabra al segundo NOMBRE, y así" + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "con las palabras restantes asignadas al último NOMBRE. Solo los " +#~ "caracteres" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "" +#~ "que se encuentran en $IFS se reconocen como delimitadores de palabras. El" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "código de retorno es cero, a menos que se encuentre un fin-de-fichero. " +#~ "Si no" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "se establece ningún NOMBRE, la línea leída se guarda en la variable " +#~ "REPLY. Si" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "se proporciona la opción -r, esto significa entrada `textual', y se " +#~ "desactiva" + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "el escape de la barra invertida. Si se proporciona la opción `-p'," + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "se muestra la cadena proporcionada como argumento sin un fín de línea " +#~ "terminal antes de intentar leerla." + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "" +#~ "Si se da -a, se asignan las palabras leídas a índices secuenciales de " +#~ "MATRIZ" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "iniciando en cero. Si se da -e y el shell es interactivo," + +#~ msgid "readline is used to obtain the line." +#~ msgstr "se usa readline para obtener la línea." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "se omite N, se utiliza el código de estado de la última orden." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Marca las variables que se modifican o crean para exportación." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Notifica el término de trabajos inmediatamente." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr "" +#~ " -e Termina inmediatamente si una orden termina con un estado " +#~ "diferente a cero." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr "" +#~ " -f Desactiva la generación de nombres de ficheros (englobamiento)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr "" +#~ " -h Recuerda la ubicación de las órdenes como fueron localizadas." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr "" +#~ " -i Fuerza que el shell sea \"interactive\". Los shells interactivos" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " siempre leen `~/.bashrc' al inicio." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr "" +#~ " -k Todos los argumentos de asignación se ubican en el ambiente para " +#~ "una" + +#~ msgid " command, not just those that precede the command name." +#~ msgstr "" +#~ " orden, no solamente aquéllos que preceden al nombre de la orden." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Se activa el control de trabajos." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Lee órdenes pero no las ejecuta." + +#~ msgid " -o option-name" +#~ msgstr " -o nombre-opción" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " Establece la variable correspondiente a nombre-opción:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport igual que -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand igual que -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs usa una interfaz de edición de línea estilo emacs" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit igual que -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall igual que -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand igual que -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr " ignoreeof el shell no terminará después de leer EOF" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " permite que los comentarios se muestren en " +#~ "órdenes interactivas" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword igual que -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor igual que -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber igual que -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec igual que -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob igual que -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify igual que -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset igual que -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd same as -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical same as -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix cambia la conducta de bash donde por omisión" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr "" +#~ " la operación difiere del estándard 1003.2 para" + +#~ msgid " match the standard" +#~ msgstr " cumplir el estándard" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged igual que -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose igual que -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr "" +#~ " vi usa una interfaz de edición de línea estilo vi" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace igual que -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Se activa cada vez que los ids real y efectivo no coinciden." + +# FIXME: $ENV es variable, no fichero. cfuga +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr "" +#~ " Desactiva el procesamiento del fichero $ENV y la importación de " +#~ "funciones" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr " de shell. Desactivar esta opción causa que el uid y el gid" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " efectivos sean iguales al uid y al gid reales." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Terminar después de leer y ejecutar una orden." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u Tratar las variables no establecidas como un error cuando se hace " +#~ "sustitución." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Muestra las líneas de entrada del shell mientras se leen." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr " -x Muestra las órdenes y sus argumentos mientras se ejecutan." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B el shell hará expansión de llaves" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr "" +#~ " -H Activa el estilo ! de sustitución de la historia. Este indicador" + +#~ msgid " by default." +#~ msgstr " está activado por omisión." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr "" +#~ " -C Si está establecido, evita que los ficheros regulares existentes " +#~ "sean sobreescritos" + +#~ msgid " by redirection of output." +#~ msgstr " por una redirección de salida." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Si está establecido, no se siguen los enlaces simbólicos cuando " +#~ "se ejecutan órdenes" + +#~ msgid " such as cd which change the current directory." +#~ msgstr " como cuando cd cambia al directorio actual." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "" +#~ "Usar + en lugar de - causa que estos indicadores sean desactivados. Los" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ "indicadores también se pueden usar durante la invocación del shell. El " +#~ "conjunto" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "actual de indicadores se encuentra en $-. Los ARGumentos n restantes son " +#~ "parámetros" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "posicionales y se asignan, en orden, a $1, $2, .. $n. Si no" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "" +#~ "se establecen ARGumentos, se muestran todas las variables del shell." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "" +#~ "Para cada NOMBRE, se borra la variable o función correspondiente. Al usar" + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "`-v', unset sólo actuará en variables. Al usar el indicador `-f'," + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "" +#~ "unset sólo actuará en funciones. Sin ningún indicador, unset primero" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "" +#~ "intenta borrar una variable, y si eso falla, entonces intenta borrar una" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "función. Algunas variables (como PATH e IFS) no se pueden borrar; vea" + +#~ msgid "see readonly." +#~ msgstr "también readonly." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "los NOMBREs se marcan para exportación automática al ambiente de" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "" +#~ "las órdenes ejecutadas subsecuentemente. Si se establece el indicador -f," + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "los NOMBREs se refieren a funciones. Si no se establecen NOMBREs, o si `-" +#~ "p'" + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "se establece, se muestra una lista de todos los nombres que se exportan" + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "" +#~ "en este shell. Un argumento `-n' indica que se borre la propiedad de " +#~ "exportación" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "" +#~ "de NOMBREs subsecuentes. Un argumento `--' desactiva el procesamiento" + +#~ msgid "processing." +#~ msgstr "posterior de opciones." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Los NOMBREs dados se marcan como sólo-lectura y los valores de esos " +#~ "NOMBREs" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "no se pueden cambiar por asignaciones posteriores. Si se establece el " +#~ "indicador -f," + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "" +#~ "entonces también se marcan las funciones correspondientes a los NOMBREs. " +#~ "Si no" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "se establecen argumentos, o si se establece `-p', se muestra una lista de " +#~ "todos los nombres" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "de sólo-lectura. Un argumento `-n' indica que se borre la propiedad de " +#~ "sólo-lectura" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "de los NOMBREs subsecuentes. La opción `-a' trata cada NOMBRE como" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "" +#~ "una variable de matriz. Un argumento de `--' desactiva opciones " +#~ "posteriores" + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "establece N, se asume que es 1." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "Lee y ejecuta órdenes del FICHERO y regresa. Los nombres de ruta" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "" +#~ "en $PATH se utilizan para encontrar al directorio que contiene el FICHERO." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "Suspende la ejecución de este shell hasta que recive una señal" + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "SIGCONT. Si se especifica `-f' indica que no se queje si" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "es un shell de login; y solo suspender de cualquier forma." + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "Termina con un estado de 0 (verdad) ó 1 (falsedad) dependiendo de" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "" +#~ "la evaluación de EXPR. Las expresiones pueden ser unarias o binarias. " +#~ "Las expresiones" + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "unarias se utilizan con frecuencia para examinar el estado de un fichero." + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "" +#~ "Hay operadores de cadenas también, y operadores de comparación numérica." + +#~ msgid "File operators:" +#~ msgstr "Operadores de fichero:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b FICHERO Verdadero si el fichero es especial de bloques." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr "" +#~ " -c FICHERO Verdadero si el fichero es especial de caracteres." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d FICHERO Verdadero si el fichero es un directorio." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e FICHERO Verdadero si el fichero existe." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -f FICHERO Verdadero si el fichero existe y es un fichero regular." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr "" +#~ " -g FICHERO Verdadero si el fichero tiene activado el set-group-id." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h FICHERO Verdadero si el fichero es un enlace simbólico. Use " +#~ "\"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L FICHERO Verdadero si el fichero es un enlace simbólico." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k FICHERO Verdadero si el fichero tiene el bit \"sticky\" " +#~ "activado." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p FICHERO Verdadero si el fichero es una tubería nombrada." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r FICHERO Verdadero si usted puede leer el fichero." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s FICHERO Verdadero si el fichero existe y no está vacío." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S FICHERO Verdadero si el fichero es un `socket'." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr " -t DF Verdadero si DF está abierto en una terminal." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr "" +#~ " -u FICHERO Verdadero si el fichero tiene activado el set-user-id." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w FICHERO Verdadero si usted puede modificar el fichero." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr " -x FICHERO Verdadero si usted puede ejecutar el fichero." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr "" +#~ " -O FICHERO Verdadero si usted efectivamente posee el fichero." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G FICHERO Verdadero si su grupo efectivamente posee el fichero." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " FICH1 -nt FICH2 Verdadero si fich1 es más nuevo que (de acuerdo a" + +#~ msgid " modification date) file2." +#~ msgstr " la fecha de modificación) el fich2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " FICH1 -ot FICH2 Verdadero si fich1 es más viejo que fich2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr " FICH1 -ef FICH2 Verdadero si fich1 es un enlace duro a fich2." + +#~ msgid "String operators:" +#~ msgstr "Operadores de cadenas:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z CADENA Verdadero si la cadena está vacía." + +#~ msgid " -n STRING" +#~ msgstr " -n CADENA" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " CADENA Verdadero si la cadena no está vacía." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " CADENA1 = CADENA2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Verdadero si las cadenas son iguales." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " CADENA1 != CADENA2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " Verdadero si las cadenas no son iguales." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " CADENA1 < CADENA2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Verdadero si la CADENA1 se ordena antes que la CADENA2 " +#~ "lexicográficamente" + +#~ msgid " STRING1 > STRING2" +#~ msgstr " CADENA1 > CADENA2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Verdadero si la CADENA1 se ordena después que la " +#~ "CADENA2 lexicográficamente" + +#~ msgid "Other operators:" +#~ msgstr "Otros operadores:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! EXPR Verdadero si la expr es falsa" + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " EXPR1 -a EXPR2 Verdadero si ambas expr1 Y expr2 son verdaderas." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr "" +#~ " EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " arg1 OP arg2 Pruebas aritméticas. OP es uno de -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 "" +#~ "Los operadores binarios aritméticos devuelven verdadero si ARG1 es igual, " +#~ "no igual," + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "menor, menor o igual, mayor, ó mayor o igual" + +#~ msgid "than ARG2." +#~ msgstr "que ARG2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "Es un sinónimo para la orden interna \"test\", pero el último" + +#~ msgid "the shell." +#~ msgstr "ejecutados desde el shell." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "La orden ARG se lee y ejecuta cuando el shell recibe la(s)" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "señal(es) ID_SEÑAL. Si ARG no está, todas las señales especificadas son" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "establecidas a sus valores originales. Si ARG es la cadena nula cada" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "ID_SEÑAL es ignorada por el shell y por las órdenes que invoque." + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "Si ID_SEÑAL es EXIT (0) la orden ARG se ejecuta al terminar el" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "shell. Si ID_SEÑAL es DEBUG, ARG se ejecuta después de cada" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "orden. Si ARG es `-p' entonces se muestran las órdenes de captura" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "asociadas con cada ID_SEÑAL. Si no se proporcionan argumentos o si" + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "sólo se proporciona `-p', trap muestra la lista de órdenes asociadas" + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "con cada número de señal. ID_SEÑAL es un nombre de señal en " + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "o un número de señal. `trap -l' muestra una lista de nombres de señal y " +#~ "sus" + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "" +#~ "números correspondientes. Note que una señal se puede enviar al shell" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "con \"kill -signal $$\"." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "Para cada NOMBRE, indica cómo sería interpretada si se usara como" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "Si se usa la opción -t, regresa una sola palabra que es una de" + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`alias', `keyword', `function', `builtin', `file' ó `', si el NOMBRE es un" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "alias, palabra reservada del shell, función del shell, orden interna del " +#~ "shell, fichero del disco," + +#~ msgid "or unfound, respectively." +#~ msgstr "o no encontrada, respectivamente." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "Si se usa el indicador -p, regresa el nombre del fichero del sistema" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "que sería ejecutado, o nada si -t no regresa algún `fichero'." + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "Si se usa el indicador -a, muestra todos los lugares que contienen un" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "ejecutable llamado `fichero' Esto incluye a aliases y funciones, si y" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "sólo si el indicador -p no se especifica también." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "Type acepta -all, -path, y -type en lugar de -a, -p, y -t," + +#~ msgid "respectively." +#~ msgstr "respectivamente." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "" +#~ "ulimit provee control sobre los recursos disponibles para los procesos" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "" +#~ "iniciados por el shell, en sistemas que permiten dicho control. Si se" + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "establece una opción, se interpreta como sigue:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tusa el límite de recurso `suave'" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tusa el límite de recurso `duro'" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tse muestran todos los límites actuales" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\tel tamaño máximo de los ficheros `core' creados" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\tel tamaño máximo del segmento de datos de un proceso" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\tel tamaño máximo para las variables residentes" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tel tamaño máximo de la pila" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tla cantidad máxima de tiempo de cpu en segundos" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\tel número máximo de ficheros creados por el shell" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tel tamaño del almacenamiento intermedio para tuberías" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tel número máximo de descriptores de fichero abiertos" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tel número máximo de procesos de usuario" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tel tamaño de la memoria virtual" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "" +#~ "Si se establece el LÍMITE, este es el nuevo valor del recurso " +#~ "especificado." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "" +#~ "De otra forma, se muestra la lista actual de los recursos especificados." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "" +#~ "Si no se establece una opción, entonces se asume -f. Los valores son en " +#~ "incrementos" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "de 1k, excepto para -t, que es en segundos, -p, que es en" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "incrementos de 512 bytes, y -u, que es un número no escalado de" + +#~ msgid "processes." +#~ msgstr "procesos." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "La máscara de creación de ficheros del usuario se establece a MODO. Si " +#~ "se omite el MODO, o si" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "se proporciona `-S', se muestra el valor actual de la máscara. La opción" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "" +#~ "`-S' logra una salida simbólica; de otra forma la salida es un número " +#~ "octal." + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "Si el MODO comienza con un dígito, se interpreta como un número octal," + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "de otra forma es una cadena de modo simbólico como la aceptada por chmod" +#~ "(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "Espera al proceso especificado y reporta su estado final. Si no se" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "proporciona N, espera a todos los procesos hijo activos actualmente," + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "" +#~ "y el código de regreso es cero. N puede ser un ID de proceso o una " +#~ "especificación" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "de trabajo; si se proporciona una especificación de trabajo, se espera a " +#~ "todos los procesos en la" + +#~ msgid "pipeline are waited for." +#~ msgstr "línea de ejecución del trabajo." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "y el código de regreso es cero. N es un ID de proceso; si no se " +#~ "proporcioan," + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "espera a todos los procesos hijos del shell." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "" +#~ "El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en una" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "lista de elementos. Si `in PALABRAS ...;' no se encuentra, entonces se " +#~ "asume" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "" +#~ "`in \"$@\"'. Para cada elemento en PALABRAS, se establece NOMBRE a ese " +#~ "elemento y" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "se ejecutan las ÓRDENES." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "Las PALABRAS se expanden, generando una lista de palabras. El" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "" +#~ "conjunto de palabras expandidas se muestra en la salida de error estándard" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "" +#~ "cada una precedida por un número. Si `in PALABRAS' no se encuentra, se " +#~ "asume" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "`in \"$@\"'. El prompt PS3 se muestra y se lee una línea de" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "la entrada estándard. Si la línea consiste del número" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "" +#~ "correspondiente a una de las palabras mostradas, entonces se establece " +#~ "NOMBRE" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "a esa palabra. Si la línea está vacía, se muestran de nuevo" + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "las PALABRAS y el prompt. Si se lee EOF, la orden se completa. Cualquier " +#~ "otro" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "valor leído causa que NOMBRE sea nulo. La línea leída se salva en" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "" +#~ "la variable REPLY. Las ÓRDENES se ejecutan después de cada selección" + +#~ msgid "until a break or return command is executed." +#~ msgstr "hasta que se ejecute una orden break ó return." + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "`|' se usa para separar plantillas múltiples." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Las ÓRDENES if se ejecutan. Si el código de regreso es cero, entonces " +#~ "las ÓRDENES" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "then se ejecutan. De otra forma, cada uno de las ÓRDENES elif se ejecutan" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "en turno, y si el código de regreso es cero, las ÓRDENES then " +#~ "correspondientes" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "se ejecutan y la orden if se completa. De otra forma, las ÓRDENES else" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "" +#~ "se ejecutan, si se encuentran. El código de salida es el código de " +#~ "salida de la última" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "orden ejecutada, o cero si ninguna condición probada fue verdadera." + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "`while' tenga un código de salida de cero." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "`until' tenga un código de salida que no sea cero." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "" +#~ "Crea un comando simple invocado por el NOMBRE que ejecuta las ÓRDENES." + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "" +#~ "Los argumentos en la línea de comando junto con el NOMBRE se pasan a la" + +#~ msgid "function as $0 .. $n." +#~ msgstr "función como $0 .. $n." + +#~ msgid "entire set of commands." +#~ msgstr "conjunto completo de órdenes" + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Esto es similar a la orden `fg'. Reinicia un trabajo detenido o en el" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "background. Si especifica DÍGITOS, entonces se usa ese trabajo. Si " +#~ "proporciona" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "una PALABRA, entonces se usa el trabajo cuyo nombre comience con PALABRA." + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "" +#~ "Al colocar una especificación de trabajo seguido de un `&', se coloca al " +#~ "trabajo en el background. " + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Los números de versión de este Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "CDPATH Una lista separada por `:' de directorios a buscar" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\tcuando el argumento para `cd' no se encuentra en el directorio" + +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tactual." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE El nombre del fichero donde se guarda la historia de " +#~ "órdenes." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "" +#~ "HISTFILESIZE El número máximo de líneas que este fichero puede " +#~ "contener." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE El número máximo de líneas de historia que un shell" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\ten ejecución puede acceder." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "" +#~ "HOME La ruta completa a su directorio de entrada (login)." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE El tipo de CPU bajo el cual esta versión de Bash corre." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF Controla la acción del shell al recibir un carácter EOF" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "\t\tcomo la única entrada. Si se establece, entonces el valor" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "" +#~ "\t\tde esta variable es el número de caracteres EOF que se pueden recibir" + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "" +#~ "\t\ten forma seguida en una línea vacía antes de que el shell termine" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ "\t\t(10 por omisión). Cuando se desactiva, EOF significa el fin de la " +#~ "entrada." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tQue tan seguido, en segundos, Bash revisa si hay correo nuevo." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "" +#~ "MAILPATH\tUna lista de nombres de fichero separados por dos puntos que " +#~ "Bash revisa" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tpor correo nuevo." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "" +#~ "OSTYPE\t\tLa versión de Unix bajo la cual esta versión de Bash se ejecuta." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "" +#~ "PATH Una lista de directorios separada por dos puntos para " +#~ "buscar" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tcuando se requieren órdenes." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "PROMPT_COMMAND Una orden a ejecutar antes de mostrar cada" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tprompt primario." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 La cadena primaria de prompt." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 La cadena secundaria de prompt." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM El nombre del tipo de terminal actual." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Si no es nulo significa que una palabra de orden que " +#~ "aparece en una línea" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\tpor sí mismo se busca primero en la lista de trabajos detenidos" + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "" +#~ "\t\tactualmente. Si se encuentra ahí, ese trabajo se trae a primer plano." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\tEl valor `exact' significa que la palabra de la orden debe" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "" +#~ "\t\tcoincidir exactamente con una orden en la lista de trabajos " +#~ "detenidos. El" + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\tvalor `substring' significa que la palabra de la orden debe" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "" +#~ "\t\tcoincidir con una subcadena del trabajo. Cualquier otro valor " +#~ "significa que" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "\t\tla orden debe ser un prefijo de un trabajo detenido." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Si no es nulo significa que debe guardar órdenes de " +#~ "varias líneas juntas en" + +#~ msgid " a single history line." +#~ msgstr " una sola línea de historia." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "" +#~ "histchars Caracteres que controlan la expansión de la historia y la" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tsustitución rápida. El primer carácter es el carácter de" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\tsustutución de historia, generalmente `!'. El segundo es" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\tel carácter de `sustitución rápida', generalmente `^'. El" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "" +#~ "\t\ttercero es el carácter de `comentario de historia', generalmente `#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "" +#~ "HISTCONTROL\tEstablecido con el valor `ignorespace', significa que no " +#~ "agrega" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "\t\tlíneas que inicien con un espacio o tabulador a la lista de" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\thistoria. Con el valor `ignoredups', significa que no agrega" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\tlíneas que coincidan con la última línea introducida. Con" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "" +#~ "\t\t`ignoreboth' significa que combina las dos opciones. Sin establecer," + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "" +#~ "\t\to con cualquier otro valor diferente a los arriba mencionados " +#~ "significa" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\tguardar todas las líneas en la lista de la historia." + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "" +#~ "Cambia los valores de las variables que controlan conductas opcionales." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "" +#~ "El indicador -s significa establecer cada NOMBRE_OPCIÓN; el indicador -u" + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "" +#~ "borra cada NOMBRE_OPCIÓN. El indicador -q suprime la salida; el estado" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "de salida indica cuál NOMBRE_OPCIÓN está activado o no. La opción" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "" +#~ "-o restringe a los NOMBRE_OPCIONes a aquéllos definidos para su uso con" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "" +#~ "`set -o'. Sin opciones, o con la opción -p, se muestra una lista de" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "todas las opciones activables, con una indicación de si se puede" + +#~ msgid "not each is set." +#~ msgstr "o no activar cada una." diff --git a/src/bin/bash/po/et.gmo b/src/bin/bash/po/et.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0f19bee6661b5bcba8cfff6c10f6abf754e82a2c GIT binary patch literal 12257 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, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2006-11-11 16:38+0200\n" +"Last-Translator: Toomas Soome \n" +"Language-Team: Estonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "vigane massiivi indeks" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: vigane tegevuse nimi" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ei saa luua: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sulgev `%c' puudub %s sees" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: puudub eraldav koolon" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ei saa lugeda: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ei saa lahti siduda" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': tundmatu funktsiooni nimi" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ei ole seotud ühegi klahviga.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s saab kasutada läbi " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +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:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Tagastab jooksva alamprotseduuri konteksti." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME pole seatud" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD pole seatud" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: hoiatus: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: hoiatus: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "liiga palju argumente" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: võti nõuab argumenti" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: nõutakse numbrilist argumenti" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: ei leitud" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: vigane võti" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: vigane võtme nimi" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': ei ole lubatud identifikaator" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "vigane signaali number" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "vigane number" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "vigane number" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: vigane signaali spetsifikatsioon" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: mittemuudetav muutuja" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s on piiridest väljas" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s on piiridest väljas" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: sellist tööd pole" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: töökontroll puudub" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "töökontroll puudub" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: piiratud" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "piiratud" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ei ole sisekäsk" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "kirjutamise viga: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: segane töö" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "saab kasutada ainult funktsioonis" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funktsioon ei ole muudetav" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: masiivi muutujaid ei saa nii kustutada" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dünaamilist laadimist et saa kasutada" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "jagatud objekti %s ei saa avada: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "%s puudub jagatud objektis %s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: pole dünaamiliselt laetud" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ei saa kustutada: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: on kataloog" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ei ole tavaline fail" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: fail on liiga suur" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kahendfaili ei õnnestu käivitada" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ei saa käivitada: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "pole login shell: kasutage `exit'" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Teil on peatatud töid.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Teil on peatatud töid.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "käsku ei ole" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: ajutist faili ei saa avada: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "viimane käsklus: %s\n" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ei saa avada: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Tundmatu viga" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "oodati avaldist" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: vigane võti" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: vigane võti" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: pole massiiv" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: hoiatus: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "teist kataloogi pole" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "viga lugemisel: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ei saa eemaldada" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: pole massiiv" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: ei ole funktsioon" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift arv" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: faili ei ole" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "peatamine ei õnnestu" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "login shelli ei saa peatada" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s on shelli võtmesõna\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s: on funktsioon\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s on shelli sisekäsk\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s on %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': halb käsklus" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ei õnnestu lugeda piirangut: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ei õnnestu muuta piirangut: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "kaheksandnumber" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "tundmatu viga käsus" + +#: error.c:406 +msgid "bad command type" +msgstr "" + +#: error.c:407 +msgid "bad connector" +msgstr "" + +#: error.c:408 +msgid "bad jump" +msgstr "" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: sidumata muutuja" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "kirjutamise viga: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: käsku ei ole" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: halb interpretaator" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "avaldise rekursioon on liiga sügav" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "süntaksi viga avaldises" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "üritati omistada mitte-muutujale" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "nulliga jagamine" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "eksponent on väiksem kui 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "puudub `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "süntaksi viga: oodati operandi" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "süntaksi viga: vigane aritmeetiline operaator" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "vigane aritmeetiline baas" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "väärtus on baasiks liiga suur" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: oodati täisarvude avaldist" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid puudub" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: töö %d on peatatud" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: töö on lõpetatud" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: töö %d on juba taustal" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: hoiatus: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "%s: tundmatu masin" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Teil on kiri kaustas $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Teil on uus kiri kaustas $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Kiri kaustas %s on loetud\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "süntaksi viga: ootamatu `;'" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "süntaksi viga: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "süntaksi viga tingimuslikus avaldises" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "ootamatu märk `%s', oodati `)'" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "oodati `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "süntaksi viga kohal `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "süntaksi viga: ootamatu faililõpp" + +#: parse.y:5223 +msgid "syntax error" +msgstr "süntaksi viga" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "faili deskriptor on piiridest väljas" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: segane ümbersuunamine" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: fail on olemas, ei kirjuta üle" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: piiratud: väljundit ei saa ümber suunata" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "/tmp puudub, palun looge see!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp peab olema kataloogi nimi" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: vigane võti" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Mul ei ole nime!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU pikad võtmed:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Käsuinterpretaatori võtmed:\n" + +#: shell.c:1786 +msgid "\t-irsD 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:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s või -o võti\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" + +#: sig.c:583 +#, 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 +#, fuzzy +msgid "Terminated" +msgstr "piiratud" + +#: 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: halb asendus" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: sedasi ei saa omistada" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sulgev `%c' puudub %s sees" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "ei leitud: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "oodati argumenti" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oodati täisarvude avaldist" + +#: test.c:262 +msgid "`)' expected" +msgstr "oodati `)'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "oodati `)', saadi %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: eeldati unaarset operaatorit" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: eeldati binaarset operaatorit" + +#: test.c:806 +msgid "missing `]'" +msgstr "puudub `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "vigane signaali number" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: vigane signaal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:736 +#, 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:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: pole global_variables kontekst" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "shift arv" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "liiga palju argumente" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "oodati avaldist" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "oodati avaldist" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "%s: invalid number" +#~ msgstr "%s: vigane number" + +#~ msgid "freed" +#~ msgstr "vabastatud" diff --git a/src/bin/bash/po/fr.gmo b/src/bin/bash/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8f347576c01214d5c972dc0f4f869974f6040861 GIT binary patch literal 27590 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 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/fr.po b/src/bin/bash/po/fr.po new file mode 100644 index 0000000000..9205af67d7 --- /dev/null +++ b/src/bin/bash/po/fr.po @@ -0,0 +1,5461 @@ +# Messages français pour GNU concernant bash. +# Copyright © 2008 Free Software Foundation, Inc. +# Michel Robitaille , 2004 +# Christophe Combelles , 2008 +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-03-13 13:10+0100\n" +"Last-Translator: Christophe Combelles \n" +"Language-Team: French \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:50 +msgid "bad array subscript" +msgstr "mauvais indice de tableau" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s : nom d'action non valable" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s : impossible d'assigner à un index non numérique" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s : impossible de créer : %s" + +#: bashline.c:3413 +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:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s : le premier caractère non vide n'est pas « \" »" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "pas de « %c » de fermeture dans %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s : virgule de séparation manquante" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "« %s » : nom du mappage clavier invalide" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s : impossible de lire : %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s : impossible à délier" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "%s : nom de fonction inconnu" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s n'est lié à aucune touche.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s peut être appelé via " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +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:133 +#, fuzzy +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" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "« HOME » non défini" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "« OLDPWD » non défini" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s : avertissement :" + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s : avertissement :" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "trop d'arguments" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s : l'option nécessite un argument" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s : argument numérique nécessaire" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s : non trouvé" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s : option non valable" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s : nom d'option non valable" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "« %s » : identifiant non valable" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "Numéro de signal non valable" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "nombre non valable" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "nombre non valable" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s : indication de signal non valable" + +#: builtins/common.c:257 +#, 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:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s : variable en lecture seule" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s : %s hors plage" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s hors plage" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s : tâche inexistante" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s : pas de contrôle de tâche" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "pas de contrôle de tâche" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s : restreint" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "restreint" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s : ceci n'est pas une primitive du shell" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "erreur d'écriture : %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s : spécification de tâche ambiguë" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s : nom d'action non valable" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s : pas d'indication de complètement" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "utilisable seulement dans une fonction" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s : fonction en lecture seule" + +#: builtins/declare.def:461 +#, 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:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "chargement dynamique non disponible" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossible d'ouvrir l'objet partagé %s : %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s : non chargé dynamiquement" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s : impossible d'effacer : %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s : ceci est un répertoire" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s : ceci n'est pas un fichier régulier" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s : le fichier est trop grand" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s : fichier binaire impossible à lancer" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s : impossible d'exécuter : %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "ce n'est pas un shell de connexion : utilisez « exit »" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Il y a des tâches stoppées.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Il y a des tâches stoppées.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "aucune commande trouvée" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "indication d'historique" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s : impossible d'ouvrir le fichier temporaire : %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "hachage désactivé" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s : table de hachage vide\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "dernière commande : %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +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 au mot-clé « " + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s : impossible d'ouvrir : %s" + +#: builtins/help.def:337 +#, 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.Tapez « 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:154 +msgid "cannot use more than one of -anrw" +msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" + +#: builtins/history.def:186 +msgid "history position" +msgstr "position dans l'historique" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s : l'expansion de l'historique a échoué" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s : l'expansion de l'historique a échoué" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "pas d'autre option permise avec « -x »" + +#: builtins/kill.def:197 +#, 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:260 +msgid "Unknown error" +msgstr "Erreur inconnue" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "une expression est attendue" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s : spécification de descripteur de fichier non valable" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d : descripteur de fichier non valable : %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s : option non valable" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s : option non valable" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s : nom d'action non valable" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s : n'est pas une variable tableau" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "« %s » : caractère de format manquant" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "« %c » : caractère de format non permis" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s : avertissement :" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "chiffre hexadécimal manquant pour \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "pas d'autre répertoire" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Débordement négatif de la pile de récursivité" + +#: builtins/pushd.def:683 +#, fuzzy +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" +" L'option « -l » spécifie que « dirs » ne doit pas afficher des versions\n" +" raccourcies des répertoires relativement à votre répertoire personnel.\n" +" Cela signifie que « ~/bin » devrait être affiché comme « /homes/bfox/bin " +"».\n" +" L'option « -v » permet à « dirs » d'afficher la pile des répertoires avec\n" +" un élément par ligne, en commençant la ligne par la position dans la " +"pile.\n" +" L'option « -p » fait la même chose mais le numéro de position n'est pas\n" +" affiché. L'option « -c » efface la pile des répertoires en enlevant tous\n" +" les éléments.\n" +" \n" +" +N\t affiche 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\t affiche 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:705 +#, 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 "" +"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" +" +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" +" -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" +" 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:730 +#, 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 "" +"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" +" +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" +" \n" +"enlève le premier répertoire, « popd +1 » le deuxième. \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" +" \n" +"enlève le dernier répertoire, « popd -1 » l'avant-dernier. \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" +" Vous pouvez voir la pile des répertoires avec la commande « dirs »." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s : spécification de délai d'expiration non valable" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "Erreur de lecture : %d : %s" + +#: builtins/return.def:73 +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:768 +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:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s : « unset » impossible" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s : « unset » impossible : %s est en lecture seule" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s : n'est pas une variable tableau" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s : n'est pas une fonction" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "nombre de « shift »" + +#: builtins/shopt.def:254 +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:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s : fichier introuvable" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "suspension impossible" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "un shell de connexion ne peut pas être suspendu" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s est un alias vers « %s »\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s est un mot-clé du shell\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s est une fonction\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s est une primitive du shell\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s est %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s est haché (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s : argument de limite non valable" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "« %c » : mauvaise commande" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s : impossible d'obtenir la limite : %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s : impossible de modifier la limite : %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "Nombre octal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "« %c » : opérateur de mode symbolique non valable" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "« %c » : caractère de mode symbolique non valable" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: 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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "erreur de commande inconnue" + +#: error.c:406 +msgid "bad command type" +msgstr "mauvais type de commande" + +#: error.c:407 +msgid "bad connector" +msgstr "mauvais connecteur" + +#: error.c:408 +msgid "bad jump" +msgstr "mauvais saut" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s : variable sans liaison" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aattente de données expirée : déconnexion automatique\n" + +#: execute_cmd.c:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT : « %c » : caractère de format non valable" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "erreur d'écriture : %s" + +#: execute_cmd.c:4363 +#, 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:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s : commande introuvable" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s : %s : mauvais interpréteur" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "Impossible de dupliquer le fd %d vers le fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "Dépassement du niveau de récursivité dans l'expression" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "Débordement négatif de la pile de récursivité" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "erreur de syntaxe dans l'expression" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "tentative d'affectation à une non-variable" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "division par 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "bogue : mauvais symbole pour expassign" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "« : » attendu pour une expression conditionnelle." + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exposant négatif" + +#: expr.c:826 +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:854 +msgid "missing `)'" +msgstr "« ) » manquante" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "erreur de syntaxe : opérande attendue" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "erreur de syntaxe : opérateur arithmétique non valable" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "base arithmétique non valable" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "valeur trop grande pour la base" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s : nombre entier attendu comme expression" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd : ne peut accéder aux répertoires parents" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "Impossible de réinitialiser le mode « nodelay » pour le fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, 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:1005 +#, 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:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid : %ld : n° de processus inexistant" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for : aucun enregistrement du processus n°%ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job : la tâche %d est stoppée" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s : la tâche s'est terminée" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s : la tâche %d est déjà en arrière plan" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s : avertissement :" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "pas de contrôle de tâche dans ce shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc : échec de l'assertion : %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "%s : hôte inconnu" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc : bloc écrasé sur liste libre" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free : appelé avec un bloc déjà libéré comme argument" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free : appelé avec un bloc non alloué comme argument" + +#: lib/malloc/malloc.c:896 +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:902 +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:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc : appelé avec un bloc non alloué comme argument" + +#: lib/malloc/malloc.c:1016 +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:1022 +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:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "opérations sur le réseau non prises en charge" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Vous avez du courrier dans $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Vous avez du nouveau courrier dans $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Le courrier dans %s a été lu.\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "Erreur de syntaxe : expression arithmétique nécessaire" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "Erreur de syntaxe : « ; » non attendu" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Erreur de syntaxe : « ((%s)) »" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document : le type d'instruction %d est incorrect" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" +"Caractère de fin de fichier (EOF) prématuré lors de la recherche du « %c » " +"correspondant" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" +"Caractère de fin de fichier (EOF) prématuré lors de la recherche de « ]] »" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" +"Erreur de syntaxe dans une expression conditionnelle : symbole « %s » " +"inattendu" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "Erreur de syntaxe dans une expression conditionnelle" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "Symbole inattendu « %s » au lieu de « ) »" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "« ) » attendu" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "argument inattendu pour l'opérateur conditionnel à un argument" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "Symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "opérateur binaire conditionnel attendu" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "argument inattendu pour l'opérateur binaire conditionnel" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "Symbole « %c » inattendu dans la commande conditionnelle" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "Symbole « %s » inattendu dans la commande conditionnelle" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "Symbole « %d » inattendu dans la commande conditionnelle" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Erreur de syntaxe près du symbole inattendu « %s »" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "Erreur de syntaxe près de « %s »" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "Erreur de syntaxe : fin de fichier prématurée" + +#: parse.y:5223 +msgid "syntax error" +msgstr "Erreur de syntaxe" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Utilisez « %s » pour quitter le shell.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" +"Caractère de fin de fichier (EOF) prématuré lors de la recherche d'un « ) » " +"correspondant" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "complètement : fonction « %s » non trouvée" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert : %s : NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command : mauvais connecteur « %d »" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf : « %c » : caractère de format invalide" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "descripteur de fichier hors plage" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s : redirection ambiguë" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s : impossible d'écraser le fichier existant" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s : restreint : impossible de rediriger la sortie" + +#: redir.c:162 +#, fuzzy, 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:517 +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:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "" +"Erreur de redirection : impossible de dupliquer le descripteur de fichier" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "« /tmp » introuvable, veuillez le créer !" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "« /tmp » doit être un nom de répertoire correct" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c : option non valable" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Je n'ai pas de nom !" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "Options longues GNU :\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Options du shell :\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ou -o option\n" + +#: shell.c:1807 +#, 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, tapez « %s -c \"help set\" ».\n" + +#: shell.c:1808 +#, 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, tapez « %s -c help ».\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask : %d : operation non valable" + +#: 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 "Erreur de syntaxe" + +#: 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 +#, fuzzy +msgid "Terminated" +msgstr "restreint" + +#: 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s : impossible d'affecter une liste à un élément de tableau" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "Impossible de fabriquer un tube pour une substitution de processus" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "Impossible de fabriquer un fils pour une substitution de processus" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Impossible d'ouvrir le tube nommé « %s » en lecture" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Impossible d'ouvrir le tube nommé « %s » en écriture" + +#: subst.c:4569 +#, 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:4765 +msgid "cannot make pipe for command substitution" +msgstr "Impossible de fabriquer un tube pour une substitution de commande" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" +"Impossible de fabriquer un processus fils pour une substitution de commande" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s : paramètre vide ou non défini" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s : expression de sous-chaîne négative" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s : mauvaise substitution" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s : affectation impossible de cette façon" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "Pas de correspondance : %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argument attendu" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s : nombre entier attendu comme expression" + +#: test.c:262 +msgid "`)' expected" +msgstr "« ) » attendue" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "« ) » attendu au lieu de %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s : opérateur unaire attendu" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s : opérateur binaire attendu" + +#: test.c:806 +msgid "missing `]'" +msgstr "« ] » manquant" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "Numéro de signal non valable" + +#: trap.c:324 +#, 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:328 +#, 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, %d (%s) renvoyé à " +"moi-même" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler : mauvais signal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erreur lors de l'import de la définition de fonction pour « %s »" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "niveau de shell trop élevé (%d), initialisation à 1" + +#: variables.c:1898 +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:3127 +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:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "caractère %d non valable dans « exportstr » pour %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "Pas de « = » dans « exportstr » pour %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context : aucun contexte à « global_variables »" + +#: variables.c:3881 +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" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc : impossible d'allouer %lu octets (%lu octets alloués)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc : impossible d'allouer %lu octets" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc : impossible de réallouer %lu octets (%lu octets alloués)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc : impossible d'allouer %lu octets" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc : %s:%d : impossible d'allouer %lu octets" + +#: xmalloc.c:174 +#, c-format +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)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc : %s:%d : impossible d'allouer %lu octets" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "nombre de « shift »" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "nom de fichier nécessaire en argument" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "nom de fichier nécessaire en argument" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "une expression est attendue" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "une expression est attendue" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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 » sans argument ou avec l'option « -p » affiche sur la sortie " +"standard\n" +" la liste des alias sous la forme NAME=VALUE. Sinon, un alias est défini\n" +" pour chaque NAME dont la VALUE est fournie. Une espace après la VALUE\n" +" entraîne la vérification de la substitution d'alias pour le mot suivant\n" +" lorsque l'alias est étendu. « alias » renvoie « true » à moins qu'un NAME\n" +" ne soit fourni pour lequel aucun alias n'a été défini." + +#: builtins.c:276 +#, 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 "" +"Enlève les NAME de la liste des alias définis. Si l'option « -a » est " +"fournie,\n" +"alors toutes les définitions d'alias sont enlevées." + +#: builtins.c:289 +#, 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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Associe une suite de touches à une fonction « Readline » ou définit une\n" +"variable « Readline ». Les arguments non-options suivent une syntaxe " +"équivalente à celle\n" +"du fichier ~/.inputrc, mais doivent être transmis comme arguments uniques :\n" +" bind '\"\\C-x\\C-r\" : re-read-init-file'.\n" +" bind accepte les options suivantes :\n" +" -m keymap Utilise « keymap » comme mappage clavier pendant la\n" +" durée de cette commande. Des noms de mappage " +"valables 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" +" -r seqtouche Enlève l'association pour « seqtouche ».\n" +" -x seqtouche:commande-shell\tEntraîne l'exécution de la « commande-" +"shell »\n" +" \t\t\t\tlorsque « seqtouche » est entrée.\n" +" -f nomfichier Lit l'association de touches depuis le fichier.\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" +" -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" +" -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." + +#: builtins.c:326 +#, fuzzy +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 "" +"Reprend l'exécution à la prochaine boucle FOR, WHILE ou UNTIL de niveau " +"supérieur.\n" +" Si N est précisé, reprend à N-ième boucle supérieure." + +#: builtins.c:338 +#, 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 "" +"Reprend l'exécution à la prochaine boucle FOR, WHILE ou UNTIL de niveau " +"supérieur.\n" +" Si N est précisé, reprend à N-ième boucle supérieure." + +#: builtins.c:350 +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:365 +#, 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 "" +"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." + +#: builtins.c:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"Change le répertoire actuel vers DIR. La variable « $HOME » est le " +"répertoire\n" +" DIR par défaut. La variable CDPATH définit le chemin de recherche\n" +" du répertoire contenant DIR. Les noms de répertoires alternatifs dans " +"CDPATH\n" +" sont séparés par un deux-point « : ». Un nom de répertoire vide est " +"identique\n" +" au répertoire actuel, càd « . ». Si DIR commence avec une barre oblique " +"« / »,\n" +" alors CDPATH n'est pas utilisé. Si le répertoire n'est pas trouvé et " +"que\n" +" l'option « cdable_vars » du shell est définie, alors le mot est essayé " +"comme nom\n" +" de variable. Si la variable possède une valeur, alors on fait « cd » vers " +"cette valeur.\n" +" L'option « -P » indique d'utiliser la structure physique des répertoires " +"plutôt que\n" +" les liens symboliques ; l'option « -L » force le suivi des liens " +"symboliques." + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Sans effet : la commande ne fait rien. Le code de sortie zéro est renvoyé." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Renvoie un résultat d'échec" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +#, 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +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 »." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +#, fuzzy +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Affiche les ARGs. Si « -n » est spécifié, le retour à la ligne final et " +"supprimé.\n" +" L'option « -e » permet d'activer l'interprétation des caractères à contre-" +"oblique\n" +" parmi la liste ci-dessous :\n" +" \t\\a\talerte (cloche)\n" +" \t\\b\tretour arrière\n" +" \t\\c\tsuppr. dernier retour à la ligne\n" +" \t\\E\tcaractère Échap.\n" +" \t\\f\tsaut de page\n" +" \t\\n\tsaut de ligne\n" +" \t\\r\tretour chariot\n" +" \t\\t\ttabulation horizontale\n" +" \t\\v\ttabulation verticale\n" +" \t\\\\\tbarre contre-oblique\n" +" \t\\0nnn\tle caractère dont le code ASCII est NNN (en octal). NNN peut " +"être\n" +" \t\tlong de 0 à 3 chiffres octaux\n" +" \n" +" Vous pouvez désactiver de manière explicite l'interprétation des " +"caractères ci-dessus\n" +" avec l'option « -E »." + +#: builtins.c:571 +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:586 +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:614 +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:626 +#, 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 ($0 - $9), but if\n" +" more arguments are given, 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 "" +"« 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 initialisant « nom » 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 d'une façon parmi deux. 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 NAME 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 " +"diagnostic\n" +" 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." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "" +"Terminer 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:698 +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:708 +#, fuzzy +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 "" +"« fc » est utilisé pour afficher ou modifier puis ré-exécuter les commandes\n" +" de l'historique des commandes. FIRST et LAST peuvent être des nombres\n" +" indiquant la plage ou FIRST peut être une chaîne donnant le début de la\n" +" commande la plus récente recherchée.\n" +" \n" +" -e ENAME définit quel éditeur utiliser. Par défaut il s'agit de « " +"FCEDIT »\n" +" puis « EDITOR », puis « vi ».\n" +" \n" +" -l affiche les les lignes au lieu de les éditer.\n" +" -n n'affiche pas les numéros de ligne.\n" +" -r inverse l'ordre des lignes (les plus récentes en premier).\n" +" \n" +" En tapant « fc -s [ancien=nouveau ...] [commande] », la commande est ré-" +"exécutée\n" +" après avoir effectué la substitution OLD=NEW.\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." + +#: builtins.c:738 +#, fuzzy +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 "" +"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." + +#: builtins.c:753 +#, fuzzy +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 "" +"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." + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +#, 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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 l'historique avec des numéros de lignes. Les lignes possédant\n" +" un « * » ont été modifiées. L'argument N permet de n'afficher que\n" +" les N dernières lignes. L'option « -c » efface complètement " +"l'historique.\n" +" L'option « -d » efface l'élément d'historique placé à la position " +"OFFSET.\n" +" L'option « -w » écrit l'historique actuel dans le fichier d'historique.\n" +" « -r » permet de lire le fichier et d'ajouter son contenu à la fin de\n" +" l'historique. « -a » permet d'ajouter les lignes d'historiques de cette\n" +" session à la fin du fichier d'historique. L'argument « -n » permet de " +"lire\n" +" toutes les lignes d'historique non déjà lues depuis le fichier " +"d'historique\n" +" puis de les ajouter à l'historique.\n" +" \n" +" Si FILENAME est fourni, il est utilisé comme fichier d'historique, " +"sinon\n" +" la valeur de « $HISTFILE » est utilisée, sinon le fichier « ~/." +"bash_history ».\n" +" Si l'option « -s » est fournie, les arguments qui ne sont pas des options " +"sont\n" +" ajoutés à la fin de l'historique comme un seul élément. L'option « -p » " +"permet\n" +" d'effectuer une expansion d'historique sur chaque ARG et d'afficher le " +"résultat,\n" +" sans rien enregistrer dans le fichier d'historique.\n" +" \n" +" Si la variable « $HISTTIMEFORMAT » est définie et non vide, sa valeur " +"est\n" +" utilisée comme chaîne de format pour « strftime(3) » afin d'afficher les\n" +" valeurs de temps associées à chaque élément de l'historique. Sinon,\n" +" aucun valeur de temps n'est affichée." + +#: builtins.c:852 +#, 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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 les tâches actives. L'option « -l » ajoute les numéros de processus\n" +" en plus des informations habituelles. L'option « -p » n'affiche que les\n" +" numéros de processus. Si « -n » est fourni, seuls les processus dont\n" +" l'état a changé depuis la dernière notification sont affichés. JOBSPEC\n" +" restreint l'affichage à ce numéro de tâche. Les options « -r » et « -s »\n" +" restreignent l'affichage respectivement aux tâches en cours d'exécution\n" +" et aux tâches stoppées. Sans option, l'état de toutes les tâches " +"actives\n" +" est affiché. Si « -x » est fourni, la commande COMMAND est lancée après " +"que toutes\n" +" les spécifications de tâches qui apparaissent dans les ARGS ont été " +"remplacées\n" +" par le numéro de processus du leader du groupe de processus pour cette " +"tâche." + +#: builtins.c:879 +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" +" \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:898 +#, 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" +" \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 "" +"Envoie le signal SIGSPEC aux processus désignés par PID (ou JOBSPEC). Si\n" +" SIGSPEC n'est pas fourni, alors SIGTERM est utilisé. L'argument « -l »\n" +" permet de lister les noms de signaux. Si des arguments sont donnés à « -l " +"»,\n" +" ils sont supposés être des numéros de signaux pour lesquels les noms \n" +" doivent être affichés. « kill » est une commande intégrée au shell pour\n" +" deux raisons : il permet d'utiliser des numéros de tâche plutôt que des\n" +" numéros de processus et, si vous avez atteint la limite du nombre de\n" +" processus que vous pouvez créer, vous n'avez pas besoin de générer un\n" +" nouveau processus pour en tuer un autre." + +#: builtins.c:921 +#, 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 "" +"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, plus \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 " +"fixe)\n" +" à l'intérieur d'une expression. La variable n'a pas besoin d'avoir son " +"attribut\n" +" 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 entre\n" +" parenthèses sont évaluées en premier et peuvent être prioritaires sur " +"les règles\n" +" ci-dessus.\n" +" \n" +" Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as 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 »." + +#: builtins.c:1006 +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:1019 +#, 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 follow 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" +" 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 "" +" -a Marquer pour l'export toutes les variables qui sont modifiées ou " +"créées.\n" +" -b Avertir immédiatement à la fin d'une tâche.\n" +" -e Terminer immédiatement si une commande s'arrête avec un code de " +"retour non nul.\n" +" -f Désactiver la génération de nom de fichier (globbing).\n" +" -h Mémoriser l'emplacement des commandes après leur recherche.\n" +" -k Placer 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 Activer le contrôle de tâche.\n" +" -n Lire les commandes, mais ne pas les exécuter.\n" +" -o nom-option\n" +" Définir la variable correspondant à nom-option :\n" +" allexport identique à -a\n" +" braceexpand identique à -B\n" +" emacs utiliser 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 activer l'historique des commandes\n" +" ignoreeof ne pas terminer 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 » pour qu'il " +"se comporte comme\n" +" le standard 1003.2 aux endroits où il diffère " +"par défaut.\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'import des\n" +" fonctions du shell. Désactiver cette option permet de définir " +"les uid et gid\n" +" effectifs à la valeur des uid et gid réels. -t Terminer " +"après la lecture et l'exécution d'une commande.\n" +" -u Traiter les variables non définies comme des erreurs lors de la " +"substitution.\n" +" -v Afficher les lignes d'entrée du shell à leur lecture.\n" +" -x Afficher les commandes et leurs arguments au moment de leur " +"exécution.\n" +" -B Effectuer l'expansion des accolades -C Si définit, " +"empêche les fichiers réguliers existants d'être écrasés par une\n" +" redirection de la sortie.\n" +" -E Si définit, l'interception ERR est héritée par les fonctions du " +"shell.\n" +" -H Activer la substitution d'historique façon « ! ». Ceci est actif " +"par défaut\n" +" lorsque le shell est interactif.\n" +" -P Si définit, 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éfinit, l'interception DEBUG est héritée par les fonctions " +"du shell.\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." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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 "" +"Lit et exécute les commandes depuis le fichier FILENAME puis se termine. Les " +"chemins\n" +" dans $PATH sont utilisés pour trouver le répertoire contenant FILENAME.\n" +" Si des ARGUMENTS sont fournis, ils deviennent les paramètres de " +"position\n" +" lorsque FILENAME est exécuté." + +#: builtins.c:1204 +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:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +"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" +" 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" +" FICHIER1 -nt FICHIER2 Vrai si le fichier1 est plus récent que le fichier2 " +"(selon la date de modification)\n" +" FICHIER1 -ot FICHIER2 Vrai si le fichier1 est plus vieux que le fichier2\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 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" +" ! 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." + +#: builtins.c:1296 +#, fuzzy +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 "" +"Ceci est un synonyme de la primitive « test », mais le dernier argument\n" +" doit être le caractère « ] », pour fermer le « [ » correspondant." + +#: builtins.c:1305 +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:1317 +#, 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.\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 "" +"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é 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'il appelle. Si " +"SIGNAL_SPEC\n" +" 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. \n" +" Si l'option « -p » est fournie, les commandes d'interception associées à\n" +" chaque SIGNAL_SPEC sont affichées. Si aucun argument n'est fourni ou " +"si \n" +" « -p » est fourni seul, « trap » affiche la liste des commandes associées\n" +" à chaque signal. 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. « trap -l » affiche la liste des " +"signaux\n" +" et leur numéros correspondants. Remarquez qu'un signal peut être envoyé " +"au\n" +" shell avec « kill -signal $$ »." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +#, 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" +" -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" +" \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 "" +"« ulimit » fournit un contrôle sur les ressources disponibles aux\n" +" processus lancés depuis le shell, sur les systèmes qui permettent\n" +" ce genre de contrôles. Si une option est donnée, elle est interprétée\n" +" de la sorte :\n" +" \n" +" -S\tutiliser la limite de ressources « soft »\n" +" -H\tutiliser la limite de ressources « hard »\n" +" -a\ttoutes les limites actuelles sont présentées\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" +" -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" +" \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. Les valeurs sont\n" +" des multiples de 1024 octets, sauf pour « -t » qui prend des secondes,\n" +" « -p » qui prend un multiple de 512 octets et « -u » qui prend un nombre\n" +" sans unité." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +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 peut être un n° de processus ou un\n" +" spécificateur de tâche. Si c'est un spécificateur de tâche, tous les\n" +" processus présents dans le tube de la tâche sont attendus." + +#: builtins.c:1478 +#, fuzzy +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 "" +"La boucle « for » exécute une suite de commandes pour chaque membre d'une\n" +" liste d'éléments. Si « in WORDS ...; » n'est pas fourni, « in \"$@\" » est\n" +" utilisé. Pour chaque élément dans WORDS, NAME est défini à cet élément,\n" +" et les COMMANDS sont exécutées." + +#: builtins.c:1492 +#, fuzzy +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 "" +"É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" +" omise, elle se comporte comme si elle s'évaluait à 1." + +#: builtins.c:1510 +#, fuzzy +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 "" +"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." + +#: builtins.c:1531 +#, fuzzy +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 "" +"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. Le code de retour est celui de PIPELINE.\n" +" L'option « -p » affiche le résumé dans un format légèrement différent.\n" +" Elle utilise la valeur de la variable TIMEFORMAT comme format de sortie." + +#: builtins.c:1548 +#, fuzzy +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 de manière sélective les commandes COMMANDS basées sur le\n" +" motif PATTERN de correspondance des mots WORDS. Le caractère\n" +" « | » est utilisé pour séparer les différents motifs." + +#: builtins.c:1560 +#, fuzzy +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 "" +"La liste « if COMMANDS » est exécutée. Si elle se termine avec un code de " +"zéro,\n" +" alors la liste « then COMMANDS » est exécutée. Sinon, chaque liste\n" +" « elif COMMANDS » est exécutée à son tour et si son code de retour est " +"zéro,\n" +" la liste « then COMMANDS » correspondante est exécutée et la commande « if " +"»\n" +" se termine. Sinon, la list « else COMMANDS » 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. " + +#: builtins.c:1577 +#, 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 "" +"Effectue une expansion et exécute les commandes « COMMANDS » aussi longtemps\n" +" que la commande finale parmi celles de « while » se termine avec un\n" +" code de retour de zéro." + +#: builtins.c:1589 +#, 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 "" +"Effectue une expansion et exécute les commandes « COMMANDS » aussi longtemps\n" +" que les commandes de « until » se terminent avec un code de retour\n" +" différent de zéro." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "" +"Lance un ensemble de commandes d'un groupe. Ceci est une façon de\n" +" rediriger tout un ensemble de commandes." + +#: builtins.c:1641 +#, fuzzy +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 "" +"É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 »." + +#: builtins.c:1656 +#, 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 "" +"L'EXPRESSION est évaluée selon les règles de l'évaluation arithmétique.\n" +" C'est équivalent à « let EXPRESSION »." + +#: builtins.c:1668 +#, fuzzy +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 "" +"Renvoie un code de retour de 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 à\n" +" droite de l'opérateur est utilisée comme motif, et une mise en " +"correspondance\n" +" est effectuée. Les opérateurs « && » et « || » n'évaluent pas EXPR2 si\n" +" EXPR1 est suffisant pour déterminer la valeur de l'expression." + +#: builtins.c:1694 +#, fuzzy +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\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 fichier à 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 laquelle 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 principale.\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\tUne valeur de « exact » signifie que le mot de commande doit " +"correspondre\n" +" \t\texactement à la commande dans la liste des tâches stoppées. Une " +"valeur\n" +" \t\tde « substring » signifie que le mot de commande\n" +" \t\tcorrespondre à une sous-chaîne de la tâche. Une autre valeur " +"signifie\n" +" \t\tque la commande doit ê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:1751 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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" +" +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" +" -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" +" 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.c:1785 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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" +" +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" +" \n" +"enlève le premier répertoire, « popd +1 » le deuxième. \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" +" \n" +"enlève le dernier répertoire, « popd -1 » l'avant-dernier. \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" +" Vous pouvez voir la pile des répertoires avec la commande « dirs »." + +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +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" +" L'option « -l » spécifie que « dirs » ne doit pas afficher des versions\n" +" raccourcies des répertoires relativement à votre répertoire personnel.\n" +" Cela signifie que « ~/bin » devrait être affiché comme « /homes/bfox/bin " +"».\n" +" L'option « -v » permet à « dirs » d'afficher la pile des répertoires avec\n" +" un élément par ligne, en commençant la ligne par la position dans la " +"pile.\n" +" L'option « -p » fait la même chose mais le numéro de position n'est pas\n" +" affiché. L'option « -c » efface la pile des répertoires en enlevant tous\n" +" les éléments.\n" +" \n" +" +N\t affiche 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\t affiche 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.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +#, 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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"« printf » formate et affiche les ARGUMENTS en contrôlant le FORMAT. Le " +"FORMAT\n" +" 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. En plus des " +"formats\n" +" standards de « printf(1) » , « %b » permet d'effectuer l'expansion des " +"séquences\n" +" d'échappement à contre-oblique dans l'argument correspondant et « %q » " +"permet de\n" +" protéger les arguments par guillemets de façon qu'ils puissent être " +"réutilisés\n" +" comme entrée du shell. Si l'option « -v » est fournie, la sortie est " +"placée dans\n" +" la variable VAR plutôt que d'être envoyée vers la sortie standard." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +"Affiche les possibilités de complètement dépendant des options. Ceci est " +"destiné\n" +" à être utilisé depuis une fonction de shell générant des complètements " +"possibles.\n" +" Si le mot « WORD » optionnel est fourni, des correspondances avec « WORD " +"»\n" +" sont générées." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "top directory." +#~ msgstr "de répertoire se fait vers le nouveau répertoire supérieur." + +#~ 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 "" +#~ "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 "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 "" +#~ "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/src/bin/bash/po/hu.gmo b/src/bin/bash/po/hu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9ca0535a4f8f2581c69f7af03fe21cc41b453ca5 GIT binary patch literal 9591 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 Sy>B{{wcUESzs3(T{eJ, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2002-06-14 09:49GMT\n" +"Last-Translator: Gábor István \n" +"Language-Team: Hungarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "hibás tömb a tömbindexben" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%c%c: rossz opció" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nem lehet hozzárendelni nem szám indexet" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: parancs nem található" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s Csak olvasható funkció" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "logout" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "foglalat %3d: " + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "írás" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "túl sok argumentum" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "az opció paramétert igényel:-" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: parancs nem található" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: rossz opció" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: rossz opció" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s' nem érvényes azonosító" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "rossz jel(signal) szám" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "rossz jel(signal) szám" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "rossz jel(signal) szám" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s Csak olvasható változó" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "paraméter szükséges" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "nincs munkafolyamat ellenõrzés ezen a parancsértelmezõn" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "nincs munkafolyamat ellenõrzés ezen a parancsértelmezõn" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: munkafolyamat megszakadt" + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "Félbeszakítva" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "Csõ (pipe)hiba %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Nem egyértelmû átirányítás" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +#, fuzzy +msgid "can only be used in a function" +msgstr "A local-t csak funkción belül lehet használni, létrehozott változó NÉV" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s Csak olvasható funkció" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s így nem lehet hozzárendelni" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "nem lehet létrehozni a %s \"named pipe\"-ot a %s-nek: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: egy könyvtár" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: nem futtatható bináris fájl" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nem futtatható bináris fájl" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "logout" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: parancs nem található" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "érvénytelen opció: -" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "az opció paramétert igényel:-" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "újra futtathatja az utolsó parancsot." + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s egész szám szükséges" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s egész szám szükséges" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "Ismeretlen hiba %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "várható kifejezés" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%c%c: rossz opció" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%c%c: rossz opció" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "rossz jel(signal) szám" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s felszabadított változó" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "könyvtárba." + +#: builtins/pushd.def:462 +#, fuzzy +msgid "" +msgstr "\tlesz az aktuális munkakönyvtár." + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Rekurziós verem túlcsordult" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "Csõ (pipe)hiba %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +#, fuzzy +msgid "cannot simultaneously unset a function and a variable" +msgstr "A local-t csak funkción belül lehet használni, létrehozott változó NÉV" + +#: builtins/set.def:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s felszabadított változó" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s Csak olvasható funkció" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: parancs nem található" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Kilépés a parancsértelmezõbõl." + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s Csak olvasható funkció" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: rossz opció" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "CPU határ" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nem lehet létrehozni: %s" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "rossz jel(signal) szám" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, fuzzy, c-format +msgid "last command: %s\n" +msgstr "újra futtathatja az utolsó parancsot." + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "Ismeretlen hiba %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "parancsként használja." + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "rossz csatlakozás `%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Rossz ugrás %d" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s felszabadított változó" + +#: eval.c:181 +#, fuzzy, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "%c túl sokáig nem csinált semmit:automatikus kilépés\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "Csõ (pipe)hiba %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: fenntartva: parancs nem tartalmazhat '/' karaktert" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: parancs nem található" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: egy könyvtár" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nem másolható a fd %d fd 0: %s-re" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "kifejezés túllépte a megengedett rekurzív szintet" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Rekurziós verem túlcsordult" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "szintaktikai hiba a kifelyezésben" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "nem változóhoz próbált hozzárendelni" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "nullával való osztás" + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "Hiba:rossz vezérjel %d" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' túllépte a kifelyezés feltételeit" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "rossz ')'" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "szintaktikai hiba: váratlan fájl vég" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (a hiba jele \"%s\")\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "az érték túl nagy" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s egész szám szükséges" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: nem elérhetõ a szülõ könyvtár" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nem másolható a fd %d fd 0: %s-re" + +#: input.c:258 +#, fuzzy, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"nem lehet lefoglalni az új fájlleírót a bash bemenetére a fd %d: %s-r?l" + +#: input.c:266 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "check_bash_input: puffer már létezik az új fd %d" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: Nem létezõ pid (%d)!\n" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Ismeretlen #%d Szignál" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Kész" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Megállítva" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Megállítva" + +#: jobs.c:1443 +msgid "Running" +msgstr "Futó" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Kész (%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Kilépés %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Ismeretlen állapot" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(memória kiírás)" + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "(wd most: %s)\n" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "gyermek-folyamat setpgid (%d -ról %d-ra) hiba %d: %s\n" + +#: jobs.c:2099 nojobs.c:585 +#, fuzzy, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "várjon:a %d nem utóda ennek a parancsértelmezõnek" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: munkafolyamat megszakadt" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "foglalat %3d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "(memória kiírás)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd most: %s)\n" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp sikertelen: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: sor fegyelem %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp sikertelen: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "nincs munkafolyamat ellenõrzés ezen a parancsértelmezõn" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, c-format +msgid "%s: host unknown" +msgstr "ismeretlen" + +#: 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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Önnek levele van $_ -ben" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Önnek új levele érkezett a $_ -ra" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "A %s levelet már elolvasta\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "szintaktikai hiba a kifelyezésben" + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "szintaktikai hiba: váratlan fájl vég" + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "szintaktikai hiba" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: rossz utasítás típus %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "váratlan EOF amíg vizsgáltam a `%c'-t" + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "váratlan EOF amíg vizsgáltam a `%c'-t" + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "szintaktikai hiba a váratlan %s vezérjel körül" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "szintaktikai hiba a kifelyezésben" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "')' szükséges" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s:bináris mûvelet szükséges" + +#: parse.y:3889 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s:bináris mûvelet szükséges" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "`:' túllépte a kifelyezés feltételeit" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "`:' túllépte a kifelyezés feltételeit" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "`:' túllépte a kifelyezés feltételeit" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "szintaktikai hiba a váratlan %s vezérjel körül" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "szintaktikai hiba a váratlan %s vezérjel körül" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "szintaktikai hiba: váratlan fájl vég" + +#: parse.y:5223 +msgid "syntax error" +msgstr "szintaktikai hiba" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Használja \"%s\" a parancsértelmezõ elhagyásához.\n" + +#: parse.y:5447 +#, fuzzy +msgid "unexpected EOF while looking for matching `)'" +msgstr "váratlan EOF amíg vizsgáltam a `%c'-t" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: rossz csatlakozás `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Nem egyértelmû átirányítás" + +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: Nem lehet megsemmisíteni létezõ fájlt‘" + +#: redir.c:157 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: fenntartva: parancs nem tartalmazhat '/' karaktert" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nem lehet létrehozni a pipe-ot feladat behelyettesítéshez: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "átirányítási hiba" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: rossz opció" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Nincs nevem!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, verzió %s\n" + +#: shell.c:1779 +#, 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ú opció] [opció] ...\n" +"\t%s [GNU hosszú opció] [opció] parancs fájl ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "GNU hosszú opciók:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Parancsértelmezõ opciók:\n" + +#: shell.c:1786 +#, fuzzy +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD vagy -c parancs\t\t(csak végrehajtható)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s vagy -o opciók\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Írja be a `%s -c \"help set\"' ha több információra van szüksége a " +"parancsértelmezõ opcióival kapcsolatban.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Írja be a `%s -c \"help set\"' ha több információra van szüksége a " +"parancsértelmezõ beépített utasításaival kapcsolatban.\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Hamis jel" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Bontás" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Megszakítás" + +#: siglist.c:58 +msgid "Quit" +msgstr "Kilépés" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Érvénytelen utasítás" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT nyomkövetés/csapda" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Utasítás MEGSZAKÍTÁSA" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT utasítás" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Lebegõ pontos esemény" + +#: siglist.c:86 +msgid "Killed" +msgstr "Kilõve" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Busz hiba" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Szegmens hiba" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Rossz rendszerhívás" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Törött csõ (pipe)" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Emlékeztetés" + +#: siglist.c:110 +#, fuzzy +msgid "Terminated" +msgstr "ki." + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Sürgõs IO feltétel" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Megállítva (jellel)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Folytatás" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Gyermek objektum meghalt vagy megállt" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Megállítva (tty bemenet)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Megállítva (tty kimenet)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O kész" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU határ" + +#: siglist.c:154 +msgid "File limit" +msgstr "Fájl határ" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Emlékeztetés (virtuális)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Emlékeztetés (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Ablak megváltozott" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Felvétel zárolva" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Felhasználói jel 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Felhasználói jel 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT bemeneti adat függõben" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "áram kimaradás várható" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "rendszer sérülés várható" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "feladat átadása másik CPU-nak" + +#: siglist.c:198 +msgid "programming error" +msgstr "programozási hiba" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT felügyelõ mód engedélyezve" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT felügyelõ mód visszavonva" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT hangsorozat behelyezve" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Ismeretlen # Szignál" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Ismeretlen #%d Szignál" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "rossz behelyettesítés: ne a %s be a %s-t" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nem lehet a listához rendelni az elemet" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "nem lehet létrehozni a pipe-ot feladat behelyettesítéshez: %s" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "" +"nem lehet létrehozni a gyermekfolyamatott feladat behelyettesítéshez: %s" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nem lehet létrehozni a %s \"named pipe\"-ot a %s-nek: %s" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nem lehet létrehozni a %s \"named pipe\"-ot a %s-nek: %s" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nem lehet másolni a %s \"named pipe\"-ot mint fd %d :%s" + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "nem lehet létrehozni a \"pipe\"-ot parancs behelyettesítéséhez: %s" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "" +"nem lehet létrehozni a gyermekfolyamatot a parancs behelyettesítéséhez: %s" + +#: subst.c:4816 +#, fuzzy +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nem lehet másolni a \"pipe\"-ot mint fd 1: %s" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s paraméter semmis vagy nincs beállítva" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s szövegrész kifejezés < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s rossz behelyettesítés" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s így nem lehet hozzárendelni" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "rossz behelyettesítés: ne a %s be a %s-t" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "paraméter szükséges" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s egész szám szükséges" + +#: test.c:262 +msgid "`)' expected" +msgstr "')' szükséges" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "')' szükséges, %s-t találtam" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s unáris mûvelet szükséges" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s:bináris mûvelet szükséges" + +#: test.c:806 +msgid "missing `]'" +msgstr "hiányzó ']'" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "rossz jel(signal) szám" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Rossz jel(signal) %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "hiba a %s funkció definíció importálásakor" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, verzió %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nem lehet újra lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:94 +#, fuzzy, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nem lehet újra lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nem lehet lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:116 +#, fuzzy, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xmalloc: nem lehet lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:150 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nem lehet újra lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:152 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: nem lehet újra lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:174 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nem lehet lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: xmalloc.c:176 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: nem lehet lefoglalni %lu bájtot (%lu bájt lefoglalva)" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [név[=érték] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [név ...]" + +#: builtins.c:51 +#, fuzzy +msgid "" +"bind [-lpvsPVS] [-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 fájlnév] [-q név] [-r bill.kód] [bill.kód:" +"readline-funkció]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [kifelyezés]" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "cd [-PL] [könyvtár]" + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] parancs [arg ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] név[=érték] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] név[=érték] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local name[=érték] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f fájlnév] [név ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring név [arg]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a név] fájl [átirányítás ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "logout" + +#: builtins.c:103 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-nlr] [elsõ] [utolsó] vagy fc -s [pat=rep] [cmd]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [munka_folyamat]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [munka_folyamat]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p útvonal] [név ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [minta ...]" + +#: builtins.c:121 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [n] vagy history -awrn [fájlnév] vagy history -ps arg [arg...]" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [munkafolyamat ...] vagy jobs -x parancs [args]" + +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [munka folyamat ...]" + +#: builtins.c:132 +#, fuzzy +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s jeltípus(sigspec) | -n jel(signum) | -jeltípus(sigspec)] [pid | " +"job]... vagy kill -l [jeltípus(sigspec)]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o opció] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [név ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [név ...] vagy export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [név ...] vagy readonly -p" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "exit [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "forrás fájlneve" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "fájlnév" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [kifelyezés]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [arg] [signal_spec] vagy trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] név [név ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [határ]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "mask [-S] [mód]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NÉV [in SZAVAK ... ;] do PARANCSOK; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NÉV [in SZAVAK ... ;] do PARANCSOK; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÉV [in SZAVAK ... ;] do PARANCSOK; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SZÓ in [MINTA [| MINTA]...) PARANCSOK ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PARANCSOK; do PARANCSOK; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PARANCSOK; do PARANCSOK; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NÉV { PARANCSOK ; } vagy NÉV () { PARANCSOK ; }" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ PARANCSOK }" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [munka_folyamat]" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "várható kifejezés" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "várható kifejezés" + +#: builtins.c:210 +#, fuzzy +msgid "variables - Names and meanings of some shell variables" +msgstr "" +"A parancsértelmezõ változói felhasználhatók operandusként. A változó neve" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [könyvtár | +N | -N] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o hosszú opciók] optnév [optnév...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] név [név ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +#, 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ÉV eltávolítása a meghatározott aliasok listájából. A -a opció" + +#: builtins.c:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +#, fuzzy +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 "" +"Folytatja a következõ egy szinttel magasabban elhelyezkedõ FOR, WHILE vagy " +"UNTIL hurokkal." + +#: builtins.c:338 +#, 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 "" +"Folytatja a következõ egy szinttel magasabban elhelyezkedõ FOR, WHILE vagy " +"UNTIL hurokkal." + +#: builtins.c:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Nem csinál semmit ez a parancs. A visszatérési értéke 0." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "Kilép a parancsértelmezõbõl N státusszal. Ha az N-t kihagyja akkor a " + +#: builtins.c:698 +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:708 +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:738 +#, fuzzy +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 "" +"A munka_folyamat-ot az elõtérbe helyezi és jelenlegi folyamatot csinál " +"belõle." + +#: builtins.c:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +#, fuzzy +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 "" +"egy ']' szövegkonstansnak kell lennie, hogy párban legyen a nyitó '['-val." + +#: builtins.c:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +#, fuzzy +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 "Feltételesen futtatja a PARANCSOT ha a SZÓ megegyezik a MINTÁVAL. A" + +#: builtins.c:1560 +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:1577 +#, 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 "Kibontja és végrehajtja a PARANCSOT amíg az utolsó parancs a " + +#: builtins.c:1589 +#, 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 "Kibontja és végrehajtja a PARANCSOT amíg az utolsó parancs a " + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "Parancsok halmazát futtatja egy csoportban. Ez az egyik módja az" + +#: builtins.c:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Megjeleníti a jelenleg feljegyzett könyvtárakat. Könyvtárak" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "listába való behelyezés a 'pushd' parancs végzi és az eltávolítást" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "pedig a 'popd' utasítással lehet végrehajtani." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "A '-l' opció hatására a 'dirs' nem használja a gyorsírás módot" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "a saját könyvtárból nyíló mappákra. Ez azt jelenti, hogy" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "a '~/bin' helyet '/home/bfox/bin' fog megjelenni. A '-v' azt hatására" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "a 'dirs' a verem elemeit külön sorba írja ki" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "és a könyvtár neve elé írja a veremben elfoglalt helyét is. A '-p'" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "ugyanezt csinálja csak nem írja ki az elfoglalt helyet." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "A '-c'-vel az egész könyvtár vermet kitörli." + +#, fuzzy +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\tMegmutatja a verem N-edik bejegyzését a számolást balról kezdi" + +#, fuzzy +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "\taz elsõ eleme a nulladik." + +#, fuzzy +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\tMegmutatja a verem N-edik bejegyzését a számolást jobbról kezdi" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Egy új könyvtárat ad a könyvtár veremhez, vagy eltolja" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "a vermet, létrehozza a verem elejét az aktuális munka " + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "könyvtárban. Opciók nélkül felcseréli az elsõ két könyvtárat." + +#, fuzzy +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N\t\tEltolja a verem N-edik könyvtárát (a számolást" + +#, fuzzy +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "\t\tbalról kezdi a 'dirs' listájában) legelõre." + +#, fuzzy +#~ msgid " zero) is at the top." +#~ msgstr "\tjobbról kezdi) legelõre." + +#, fuzzy +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N\t\tEltolja a verem N-edik könyvtárát (a számolást" + +#, fuzzy +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "\t\tbalról kezdi a 'dirs' listájában) legelõre." + +#, fuzzy +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n\tletiltja a normális könyvtár váltást. Amikor a könyvtárakat váltunk" + +#, fuzzy +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr "\takkor a veremhez adjuk az aktuális könyvtárat." + +#, fuzzy +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tA DIR-t behelyezi a verem elejére és az" + +#, fuzzy +#~ msgid " new current working directory." +#~ msgstr "\tlesz az aktuális munkakönyvtár." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "A könyvtár vermet a 'dirs' paranccsal tekintheti meg." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Bejegyzést távolít el a könyvtár verembõl. Opciók nélkül" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "eltávolítja a verem elsõ bejegyzését, és átlép a soron következõ" + +#~ msgid "top directory." +#~ msgstr "könyvtárba." + +#, fuzzy +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N\tEltávolítja a verem N-edik bejegyzését (a számolást" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tbalról kezdi és nullával indítja) .Például a 'popd +0'" + +#, fuzzy +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr "\taz elsõ könyvtárat távolítja el, a 'pop +1' a másodikat." + +#, fuzzy +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "+N\tEltávolítja a verem N-edik bejegyzését (a számolást" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\tbalról kezdi és nullával indítja) .Például a 'popd -0'" + +#, fuzzy +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr "\taz utolsó könyvtárat távolítja el, a 'pop +1' a .utolsóelõttit" + +#, fuzzy +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n\tletiltja a normális könyvtár váltást. Amikor a könyvtárakat váltunk" + +#, fuzzy +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr "\takkor a verembõl eltávolítja az aktuális könyvtárat." + +#, fuzzy +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "Kilép egy FOR, WHILE vagy UNTIL hurokból. Ha N meg van határozva," + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Elavult. Lásd 'declare'" + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Kimenet az ARG. Ha -n használja, akkor a sorvégi újsor jelet nem veszi " +#~ "figyelembe." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Beolvassa az ARG tartalmát a bemenetrõl a parancsértelmezõhõz és " +#~ "elindítja." + +#~ msgid "Logout of a login shell." +#~ msgstr "Kilépés a parancsértelmezõbõl." + +#, fuzzy +#~ 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 "" +#~ "A funkció hatására kilép és a visszatérési értéke az N-ben meghatározott " +#~ "érték lesz." + +#, fuzzy +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "A pozicionáló paramétereket átnevezi $N+1-rõl $1-re.Ha az N" + +#, fuzzy +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "Kiírja felhasználó és a rendszer mennyi idõ használt fel arra, hogy" + +#~ msgid "Missing `}'" +#~ msgstr "Hiányzó '}'" + +#~ msgid "brace_expand> " +#~ msgstr "brace_expand> " + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Megpróbálom felszabadítani az ismeretlen `%d' parancs típust.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Kérem jelentse ezt a %s -re \n" + +#~ msgid "Stopping myself..." +#~ msgstr "Leállítom magam..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Mondja el %s -nek, hogy kijavíthassa\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: rossz parancs típus `%d'" + +#~ msgid "real\t" +#~ msgstr "valós\t" + +#~ msgid "user\t" +#~ msgstr "felhasználói\t" + +#~ msgid "sys\t" +#~ msgstr "rendszer\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "valós\t0m0.00s\n" +#~ "felhasználói\t0m0.00s\n" +#~ "rendszer\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "nem másolható a fd %d fd 1: %s-re" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s kimenet átirányítás fenntartva" + +#~ msgid "Out of memory!" +#~ msgstr "Elfogyott a memória!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "A `%s' elem egyszer már hozzá lett adva\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Ön %d (%d) elemet írt be. A terjesztés:\n" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: bg háttér munkafolyamat?" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "Az átirányítási utasítás a yyparse-ból () '%d' \n" +#~ "túl van a határon a make_redirection ().-ben" + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () kaptam egy %d típusú parancsot." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "kaptam egy %d hibát amíg vártam a %d-re" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "szintaktikai hiba a váratlan %c vezérjel körül" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: rossz parancs típus `%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: rossz `%%' paraméter (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "opciók a `%s' paramétert igényel" + +#~ msgid "%s: unrecognized option" +#~ msgstr "a %s ismeretlen opció" + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' paramétert igényel" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: könyvtárakat nem lehet futtatni" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Hibás kód a sig.c-ben: sigprocmask" + +#~ msgid "bad substitution: no ending `}' in %s" +#~ msgstr "rossz behelyettesítés: nincs lezáró } a %s-ben" + +#~ msgid "%s: bad array subscript" +#~ msgstr "%s rossz tömb a tömbindexben" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "nem lehet létrehozni a pipe-ot feladat behelyettesítéshez: %s" + +#~ msgid "reading" +#~ msgstr "olvasás" + +#~ msgid "process substitution" +#~ msgstr "feladat behelyettesítése" + +#~ msgid "command substitution" +#~ msgstr "parancs behelyettesítése" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "Nem lehet újra megnyitni a \"pipe\"-ot a parancs behelyettesítéshez(fd %" +#~ "d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c felszabadított változó" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: rossz számtani helyettesítés" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s:bináris mûvelet szükséges" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: rossz tömbindex" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: rossz tömbindex" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "számjegyek fordultak elõ két különbözõ \"argv\"elemben.\n" + +#~ msgid "option %c\n" +#~ msgstr "opció: %c\n" + +#~ msgid "option a\n" +#~ msgstr "opció a\n" + +#~ msgid "option b\n" +#~ msgstr "opció b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opció c %s értékkel\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt visszakapott karakter kód 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "nem opció az \"argv\"elemek" + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Ismeretlen jel %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "Ismeretlen direktíva %s" + +#~ msgid "%s requires an argument" +#~ msgstr "a %s paramétert igényel" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s-nek a $BUILTIN blokkon belül kell hogy legyen" + +#~ msgid "%s found before $END" +#~ msgstr "%s találtam az $END elõtt" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s már létezõ függvény (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "a %s már kész dokumentum (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "a %s már létezõ rövid dokumentáció (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "a %s már létezõ %s meghatározás(definition)" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: A virtuális memória elfogyott!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p kérdés] [-a tömb] [-e] [név ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[SZÁMOK | SZÓ] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "változók - Néhány változó neve és jelentése" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "" +#~ "`alias' paraméterek nélkül vagy -p opcióval kiírja az aliasok listáját" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "az NÉV=ÉRTÉK formában a standard kimeneten." + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "Egyébként, az alias-ban meghatározott mindegyik NÉV-nek az ÉRTÉK lesz " +#~ "átadva." + +#~ 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 "Az alias visszatérési értéke " + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "igaz hacsak a NÉV alatt nincs alias meghatározva." + +#~ msgid "then remove all alias definitions." +#~ msgstr "eltávolítja az összes alias meghatározást." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "a bind egy kulcs szekvencia a readline funkcióhoz vagy egy makróhoz." + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "A szintaktika megegyezik az ~/.inputrc-vel, de át kell" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "adni egy egyszerû paraméterrel: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "A paraméterek amiket elfogadunk:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr " -m keymap A `keymap'-ot használja keymap-ként az amíg" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr "" +#~ " a parancs fut. Elfogadható keymap névnek emacs-ok," + +#~ 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-parancs, és vi-beszúrás." + +#~ msgid " -l List names of functions." +#~ msgstr " -l A funkciók neveinek a listája." + +#~ msgid " -P List function names and bindings." +#~ msgstr " -P A nevek és a hozzájuk tartozó bind-ok listája." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p A funkciók és bind-ok listája bemenetként újra " +#~ "felszanálható" + +#~ msgid " reused as input." +#~ msgstr " formában." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r keyseq Bind eltávolítása a KEYSEQ-rõl." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f FÁJLNÉN Bind-ok olvasása a FÁJLNÉV fájlból." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q function-name Lekérdezi, hogy milyen billentyût hív meg a funkció." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V A változók neveinek és értékeinek a listája." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v A változók és értékeik neveinek a listája " +#~ "bemenetként " + +#~ msgid " be reused as input." +#~ msgstr " újra felhasználható formában." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S A kulcs szekvenciák listája a meghívott makrókkal és " +#~ "azok értékével" + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -S A kulcs szekvenciák listája a meghívott makrókkal és " +#~ "azok értékével" + +#~ msgid " a form that can be reused as input." +#~ msgstr " melyeket fel lehet használni bemenetként." + +#~ msgid "break N levels." +#~ msgstr "akkor N szintet lép ki." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "" +#~ "Ha N meg van határozva akkor N szinttel magasabb hurokba lép vissza." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "" +#~ "Egy beépített utasítást futtat , Ez akkor hasznos ha átakar nevezni egy" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "" +#~ "egy beépített parancsot funkcióvá, de szüksége van a beépített parancs" + +#~ msgid "builtin within the function itself." +#~ msgstr "eredeti funkciójára." + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Belép a dir könyvtárba.A $HOME változó az alapértelmezett" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "DIR. A $CDPATH változó meghatározza a keresési útvonalát a DIR-t" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "tartalmazó könyvtárnak. Az alternatív könyvtár neveket a CDPATH-ban" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "kettõsponttal(:) kell elválasztani. Az üres könyvtár név azonos" + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "a jelenlegi könyvtárral `.'. Ha a DIR per jellel kezdõdik (/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "akkor a $CDPATH nem használható. Ha a könyvtár nem található és a" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "a parancsértelmezõ 'cdable_vars' nincs beállítva, akkor a szót " +#~ "megpróbálja mint " + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "változó névként. Ha ennek a változónak van értéke, akkor behelyettesíti a " +#~ "változó " + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "értékét. A -P opció azt jelenti, hogy a fizikai könyvtár felépítést " +#~ "használja" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "a szimbolikus linkek helyet, a -L opció pedig a szimbolikus linkek " +#~ "követését" + +#~ msgid "to be followed." +#~ msgstr "erõlteti ki" + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "Kiírja a könyvtárat ahol áll. A -P opcióban a pwd a " + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "" +#~ "fizikai könyvtár felépítést mutatja, a szimbolikus linkek nélkül, a -L " +#~ "opció" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "pedig követi a szimbolikus linkeket." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Egy PARANCS-ot futtat ARG-okkal figyelmen kívül hagyja a parancsértelmezõ" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "funkcióit.Ha van egy funkció aminek a neve 'ls', és megakarja hívni, csak " +#~ "azt" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "kell mondani, hogy \"command ls\".Ha a -p opciót használja, akkor " +#~ "felhasználja" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "a PATH változót így biztos, hogy meg találja az alap programokat." + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "Ha a -V vagy a -v opciót használja akkor kiírja a COMMAND leírását." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "A -V opció több információt ad vissza." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "Változókat hoz létre és/vagy attribútumokat ad nekik. Ha nincs NÉV" + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "átadva, akkor a megjeleníti a változók értékeit. A -p opció" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "megjeleníti az attribútumokat és az mindegyik NÉV értékét." + +#~ msgid "The flags are:" +#~ msgstr "A lehetséges opciók:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tlétrehozza a NÉV tömböt (ha támogatott)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr "7 -f\tcsak a funkciókat válassza ki" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tmegjeleníti a funkció neveket a meghatározásuk nélkül" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\ta NEVEKET csak olvashatóvá teszi" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\ta NEVEKET exportálható módon írja ki" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tkiírja a NEVEKET amiknek 'szám' az attribútumuk" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "A változók melyeknek szám az attribútumuk egy számot (lásd a " + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "let) kell, hozzárendelni." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "Amikor megjeleníti a változók értékét a -f a funkciók nevét" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "és meghatározásukat mutatja. A -F opció szigorúan csak " + +#~ msgid "name only." +#~ msgstr "a funkciók nevét jeleníti meg." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "A '+' használata a '-' helyet az attribútumot törli.Amikor " + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "egy funkcióban használja a létrehozott NÉV helyi lesz, mint a local " +#~ "parancsnál." + +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "" +#~ "Létrehoz egy helyi változott melyet NÉV-nek hív és átadja neki az ÉRTÉKET." + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "csak a funkción és gyermekein belül érvényes." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "" +#~ "Kimenet az ARG. Ha -n használja, akkor a sorvégi újsort jelet nem veszi" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "figyelembe. Ha a -e opciót használja akkor a következõ 'backslash-escaped'" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "karaktereket használja:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\tébresztõ (csengõ)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\ttörlés" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tsorvégi újsor kihagyása" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tescape karakter" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\tlap dobás" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\túj sor" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tkocsi vissza" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\tvízszintes tab" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\tfüggõleges tab" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tbackslash" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\ta NUM a karakter ASCII kódja (nyolcas számrendszerben)" + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "A -E opcióval ki lehet kapcsolni a karakterek fenti" + +#~ msgid "with the -E option." +#~ msgstr "értelmezését." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "" +#~ "Engedélyezés és Letiltja parancsértelmezõ beépített utasításait. Ez azt " +#~ "jelenti," + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "" +#~ "hogy lehet használni a lemezen található parancsokat melyeknek a neve meg-" + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "egyezik a beépítettével. Ha a -n használja, akkor a NÉV le lesz tiltva " +#~ "egyébként" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "a NEVET engedélyezi. Például ha használni akarja a 'test' -et ami lemezen " +#~ "létezik" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "a parancsértelelmezõ helyet, gépelje be 'enable -n test'." + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "" +#~ "Azokon a rendszereken ami támogatja a dinamikus betöltést, a -f opcióval" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "be lehet tölteni a FÁJLNÉV fájlt és beépítettként használni. A -d" + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "opció pedig letörli az elõzõleg a -f el betöltött programot. Ha nem" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "" +#~ "ír be semmit vagy a -p opciót használja akkor megjeleníti az engedélyéket " + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "beépített parancsokat. A -a opció megjeleníti az összes beépített" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "parancsot akár engedélyezve akár nem. A -s opció kierõlteti" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "a Posix.2 speciális beépített parancsait.A -n kiírja az összes" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "letiltott beépített parancsot." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "A getopts -ot a parancsértelmezõ használja a parancsok paraméterinek az " +#~ "elemzésére." + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "Az OPTSTRING tartalmazza a felismerendõ opciókat, ha az opciókat" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "kettõspont követi akkor valószínûleg paramétere is van," + +#~ msgid "which should be separated from it by white space." +#~ msgstr "amit javasolt elválasztani szóközzel." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "Minden hívásnál a getopts elhelyezi a $name" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "változóba, ha nem létezik a név akkor" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "a következõ paraméter az OPTIND változóba kerül." + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "" +#~ "Az OPTIND változót csak egyszer kell létrehozni a parancsértelmezõben " +#~ "vagy " + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "" +#~ "egy parancsállomány meghívásakor. Amikor az opció paramétert igényel" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "akkor a getopts belehelyezi a paramétert az OPTARG változóba." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "A getopts két módon képes képes a hibákat jelenteni.Ha az OPSTRING" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "elsõ karakterre egy kettõspont, akkor a getopts csendes hibamódban van." + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "" +#~ "Ebben az üzemmódjában nem ír hiba üzenetet. Ha érvénytelen opció talál" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "abban az esetben a getopts az OPTARG változóba helyezi az opciót." + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "" +#~ "Ha egy szükséges paramétert nincs meg a getopts egy ':' helyez a NÉV-be és" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "beállítja az OPTARG-ot a hibás opciókhoz. Ha a getopts nem csöndes" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "üzemmódban van és érvénytelen opciót talál, akkor a getopts egy '?'" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "" +#~ "a NÉV változóba és leállítja az OPTARG változót. Ha a szükséges opció " +#~ "nincs meg" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "" +#~ "akkor egy '?' -et rak a NÉV-be és az OPTARG-ot leállítja és egy üzenetet " +#~ "küld" + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "Ha az OPTERR változó értéke 0, akkor a getopts letiltja" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "az üzenetek küldését, még akkor is ha az OPTSTRING elsõ karakterre" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "egy kettõspont. Az OPTERR alapértéke 1." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "" +#~ "A getopts normál esetben a pozicionáló paramétereket ($0-$9) elemzi, de" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "ha több paramétert kap akkor azokat használja helyettük." + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "" +#~ "FÁJL futtatása, kicseréli a parancsértelmezõt egy meghatározott programra." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "" +#~ "Ha a FÁJL nincs meghatározva akkor az átírányítás effektus lép életbe" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "" +#~ "a parancsértelmezõn. Ha az elsõ paraméter '-l' akkor egy gondolatjelet" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "" +#~ "rak a FÁJL nulladik paraméterébe mint ahogy a login teszi. Ha a '-c' " +#~ "opciót" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "alkalmazza akkor a FÁJL üres környezeti változókkal indul. A '-a'" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "" +#~ "opció azt jeleni, hogy a futtatott mûvelet NEVét az argv[0]-ra állítja." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "Ha nem lehet a fájlt futtatni és a parancsértelmezõ nem interaktív," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "akkor a parancsértelmezõ kilép, hacsak nem a \"no_exit_on_failed_exec\"" + +#~ msgid "is set." +#~ msgstr "változó nincs beállítva." + +#~ msgid "is that of the last command executed." +#~ msgstr "" +#~ "visszatérési érték az utoljára futtatott parancs vissza térési értéke " +#~ "lesz." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "Az elsõ és az utolsó lehet egy tömb kezdõ és befejezõ értéke, vagy az elsõ" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "lehet egy sztring ami a legutolsó parancs elsõ sztringjét" + +#~ msgid "string." +#~ msgstr "jelenti." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ENÉV kiválasztja a felhasznált szerkesztõt . Alapból a vi-t " +#~ "használja" + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr " " + +#~ msgid " mode, then vi." +#~ msgstr " " + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l a szerkesztés helyet csak megjeleníti az elemeket." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n nem írja ki a sorok számát." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr " -r visszafele rendezi a sorokat (a legújabb elem lesz az elsõ)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "A fc -s [pat=rep ...] [command]' formával, az újra lefuttatott parancs" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "behelyettesíti a saját helyére az utasítást." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "Egy hasznos alias az r='fc -s', így amikor begépeli a 'r cc'" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "" +#~ "lefuttatja az utolsó 'cc'-vel kezdõdõ parancsot és amikor beírja az 'r'-t " + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "" +#~ "Ha munka_folyamat nincs meghatározva akkor a jelenlegi munka folyamatot" + +#~ msgid "used." +#~ msgstr "használja." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "nka_folyamat-ot az háttérbe helyezi mintha '&' jellel indította volna" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "Ha a munkafolyamat nincs meghatározva akkor" + +#~ msgid "job is used." +#~ msgstr "a jelenlegi munkafolyamatot használja." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Meghatározza az összes név teljes elérési útvonalát és megjegyzi." + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "Ha a '-p' opciót használja akkor az ÚTVONAL-at veszi a NÉV teljes" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "útvonalának és nem keresi az útvonalat. A '-r' opció" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "felszólítja a parancsértelmezõt, hogy felejtse el az összes helyet." + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "" +#~ "Ha nincs megadva paraméter akkor megjeleníti a megjegyzett parancsokat." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "Hasznos információkat jelenít meg a beépített parancsokról. Ha a " + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "MINTA meg van határozva, akkor részletes segítséget ír ki az utasításról" + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "egyébként egy listát jelenít meg a beépített parancsokról." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "Sorszámozva megjeleníti az elõzményeket. A megváltoztatott sorokat" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "egy csillaggal(*) jelöli. Az N opció azt jelenti, hogy csak az utolsó" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "N sort mutatja meg. A '-c' opció eredménye, hogy az elõzmény" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "lista összes eleme törlõdik. A '-w' opció azonnal kiírja az elõzményeket" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "az aktuális listába, '-r' pedig beolvassa a fájlt" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "és az új fájlt elemeit használja helyette. A '-a' hozzáfûzi" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "az aktuális terminál sorait a teljes elõzmény fájlhoz." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "A '-n' opció beolvassa az egész elõzmény nem beolvasott sorait" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "ez elõzmények fájlból és hozzáfûzi az elõzmény listához." + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "Ha fájlnevet is megadunk akkor azt a fájlt fogja használni" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "Ha nincs a $HISFILE-nak érték adva akkor a ~/.bash_history-t használja." + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "A '-s' opció hatására az ARG-ot hozzáfûzi" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "az elõzményekhez. A '-p' opció " + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "végre hajtja ez összes ARG-ot és az eredményt megjeleníti" + +#~ msgid "anything in the history list." +#~ msgstr "anélkül, hogy bármit is beírna az elõzmény listába." + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "" +#~ "Kilistázza az aktív munka folyamatokat. A '-l' opció kiírja feladat " +#~ "azonosított" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "a normál információk mellé, a '-p' opció pedig csak a feladat azonosított " +#~ "írja ki." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Ha a '-n' opciót használja akkor csak a változásokat írja ki ami az " +#~ "utolsó hívás " + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "után történt. A MUNKAFOLYAMAT meghatározzam, hogy melyiket írja ki." + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "A '-r' és a '-s' opciók csak a futó és a megállított folyamatokat írja ki" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "Minden opció nélkül megjeleníti az összes aktív munkafolyamatot" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "A '-x' opció hatására a PARANCS lefutása után az összes munkafolyamat " + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "" +#~ "meghatározás ami az ARGS-ban feltûnik az kicserélõdik a munkafolyamat " +#~ "vezetõ" + +#~ msgid "process group leader." +#~ msgstr "feladat azonosítójára." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "Eltávolítja az összes MUNKAFOLYAMAT-ot az aktív folyamatok közül." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "A jeltípust(sigspec) küld a meghatározott PID-re vagy JOB-ra." + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "" +#~ "Ha a jeltípus(sigpsec) nincs meghatározva akkor egy SIGTERM-et küld." + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "A '-l' opció kilistázza a jelek neveit.Ha a '-l' opció paramétere egy" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "jel száma akkor a számhoz tartozó nevet írja ki. A kill két okból " +#~ "beépített" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "utasítása a parancsértelmezõnek: a job azonosító helyet" + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "és ha (esetleg) a feladatok elérik a maximális határt akkor nem" + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "nem lehet új feladatot indítani(fõleg a kill) és így nem lehetséges " +#~ "kilõni semmit." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "Minden ARG egy matematikai kifelyezés. Az érték" + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "lehet hosszú egész túlcsordulás ellenõrzés nélkül. A nullával való" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "" +#~ "osztás megszakítja és hibát jelez.A következõ lista egy összefoglaló" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "az operátorokról végrehajtás szerinti csoportosításban." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "" +#~ "A listában végrehajtás szerint csökkenõ sorrendben vannak felsorolva." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tunáris mínusz, plusz" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tlogikai és bitszintû negálás" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tszorzás, osztás, maradékképzés" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tösszeadása, kivonás" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tbitszintû balra és jobbra emelés" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tösszehasonlítás" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tegyenlõség ,egyenlõtlenség" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tbitszintû ÉS" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tbitszintû kizáró-vagy" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tbitszintû VAGY" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tlogikai ÉS" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tlogikai VAGY" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\tkifelyezés ? kifelyezés : kifelyezés" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\tfeltételes kifelyezés" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\thozzárendelés" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "behelyettesíthetõ a kifelyezésekben értékek helyére " + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "" +#~ "(hosszú egészre kiegészítve). A változónak nem lehet egész attribútuma" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "beállítva, ha kifelyezésként kívánja használni." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "Az operátorok kiértékelési sorrendben. Az al-kifelyezések" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "" +#~ "elsõnek hívódnak meg és ezzel felülbírálhatják a teljes végre hajtási" + +#~ msgid "rules above." +#~ msgstr "szabályokat." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "Ha az utolsó ARG értéke 0 akkor a visszatérési értéke 1, egyébként" + +#~ msgid "otherwise." +#~ msgstr "0 -val tér vissza." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "Egy sort beolvas a standard bemenetrõl és az elsõ szót" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "hozzárendeli az elsõ NÉV-hez, a második szót hozzárendeli a második NÉV-" +#~ "hez" + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "és így tovább egészen addig míg el nem éri az utolsó NEVet. Abban az " +#~ "esetben" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "" +#~ "ha a $IFS egy karaktert talál akkor azt szóhatárolóként fogja fel. A " +#~ "visszatérési" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "érték 0, hacsak nem kap fájl vége jelet.Ha a NÉV nincs meghatározva, akkor" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "a beolvasott sorok a REPLY változóban tárolódnak. A '-r' opció hatására" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "a bemenetet, mint nyers bemenet használja és a backslash karaktereket " +#~ "letiltja." + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "Ha a '-p' opció sztring paraméterét kiírja (újsor karakter nélkül) a " +#~ "kimenetre" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "mielõtt még az olvasásba belekezdene. A '-a' opció hatására" + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "a beolvasott szavak egy indexelt tömb elemeiket veszi fel, nullával" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "kezdõdõen. A '-e' opció alkalmazása és a parancsértelmezõ párbeszéd módja" + +#~ msgid "readline is used to obtain the line." +#~ msgstr "hatására a 'readline'-ból veszi a feldolgozási sort." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "Ha az N értéke nincs megadva akkor a visszatérési értéket az utolsó " +#~ "parancsból veszi." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Megjelöli a változót úgy mintha az export módosította vagy " +#~ "létrehozta volna." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Azonnal megszakítja a munkafolyamatot." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr " -e Kilép azonnal ha a parancs nem nulla állapotban van." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Letiltja a fájlnév generálást (globbing)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Megjegyzi a parancs helyét amit megtalált." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr "" +#~ " -i Kierõlteti a parancsértelmezõtõl a párbeszédes üzemmódot. Ez a " + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " mód mindig a '~/.bashrc' használja indulásnál." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr "" +#~ " -k Az összes hozzárendelt paraméter elhelyezi a környezeti változok " +#~ "között" + +#~ msgid " command, not just those that precede the command name." +#~ msgstr " nem csak azt ami a parancs nevét megelõzi." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m A munkafolyamat ellenõrzés engedélyezése." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Beolvassa a parancsok, de nem hajtja õket végre." + +#~ msgid " -o option-name" +#~ msgstr " -o opció neve" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr "" +#~ " A változok beállításához használhatók a következõ opció nevek:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport ugyanaz mint a -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand ugyanaz mint a -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr " emacs emacs stílusú sor szerkesztés használata" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit ugyanaz mint a -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall ugyanaz mint a -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand ugyanaz mint a -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr "" +#~ " ignoreeof a parancsértelmezõ nem lép ki amíg nem kap EOF " +#~ "jelet" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " engedélyezi a megjegyzéseket a párbeszédes parancsoknál" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword ugyanaz mint a -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor ugyanaz mint a -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber ugyanaz mint a -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec ugyanaz mint a -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob ugyanaz mint a -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify ugyanaz mint a -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset ugyanaz mint a -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd ugyanaz mint a -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical ugyanaz mint a -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix megváltoztatja a bash viselkedését ott ahol az " +#~ "alap" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr " mód különbözik a 1003.2 szabványtól" + +#~ msgid " match the standard" +#~ msgstr " az aktuális szabvány" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged ugyanaz mint a -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose ugyanaz mint a -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr " vi vi stílusú sor szerkesztést használ" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace ugyanaz mint a -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Bekapcsolja még akkor is ha a valós és az effektív felhasználó " +#~ "azonosító" + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr "" +#~ " különbözik. Letiltja $ENV fájl feldolgozását és a parancsértelmezõbe " +#~ "építését" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr " Beállítja az effektív felhasználó és csoport azonosítót a " + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " valós felhasználó és csoport azonosítóra." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Kilép az olvasás és egy parancs végrehajtása után." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u Úgy kezeli a leállított változókat mintha hibás lenne a " +#~ "behelyettesítés." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Kiírja a parancsértelmezõ bemenetét úgy ahogy beolvasta." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr "" +#~ " -x Kiírja a parancsokat és a paramétereiket úgy ahogy lefuttatta " +#~ "õket." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B a parancsértelmezõ elõkészíti a közös bõvítményeket" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr " -H Engedélyezés a ! stílusú elõzmény behelyettesítés. Ez a jel" + +#~ msgid " by default." +#~ msgstr " alapból be van kapcsolva." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr " -C Ha be van állítva akkor a hagyományos fájl felülírása" + +#~ msgid " by redirection of output." +#~ msgstr " a kimenet átirányításával." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Ha be van állítva akkor nem fogja követni a szimbolikus linkeket " +#~ "amikor" + +#~ msgid " such as cd which change the current directory." +#~ msgstr "" +#~ "elindított program mint a 'cd' megpróbálja meg változtatni az aktuális " +#~ "könyvtárat." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "Ha a '-' helyet '+' használ akkor a jelzõt kikapcsolja." + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "A jelzõket még lehet használni a parancsértelmezõ meghívására.A " + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "jelenlegi jelzõ beállításokat a $- tárolja. A maradék n ARG a pozicionáló" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "paraméterekhez rendeli hozzá ($1, $2, $3 ...$n) Ha nem" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "nem adunk semmilyen opciót meg akkor az összes változó kiírja." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "Az összes NÉV változót vagy függvényt letörli" + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "A '-v' használatakor csak a változókat állítja le.A '-f' pedig" + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "csak a funkciókat.Opciók nélkül az unset elõször megpróbálja a " + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "" +#~ "a változók leállítását és ha nem sikerül akkor megpróbálja a funkciókat " +#~ "is." + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "Néhány kiemelt változót (pl PATH vagy IFS) nem lehet letörölni" + +#~ msgid "see readonly." +#~ msgstr "ezek csak olvashatók." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "" +#~ "A NEVET megjelöli automatikus exportálásra a késõbb elindított parancs" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "környezeti változóiként." + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "A '-f' besorolja a NEVET a funkciók közé. Ha nem adja meg a nevet vagy" + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "'-p' -t használja akkor kiírja az összes nevet amit exportáltak ebben a " +#~ "parancs-" + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "értelmezõben. A '-n' hatására eltávolítja a NEVET exportálandók" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "közül. A '--' paramétere letiltja a következõ opció" + +#~ msgid "processing." +#~ msgstr "feldolgozását." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Az átadott NEVET csak olvashatóvá teszi és ettõl kezdve nem lehet meg" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "változtatni a hozzárendeléseket. " + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "A '-f' hatására a funkciónak megfelelõ NEVET megjelöli. Ha" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "opciók nélkül vagy a '-p'-vel indítjuk el akkor egy listát kapunk a csak" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "olvasható funkciókról.A '-n' hatására eltávolítja a NEVET csak olvashatók" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "közül.A '-a' opció az összes NEVET tömb változóként kezel." + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "A '--' paramétere letiltja a következõ opció feldolgozását." + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "értékét nem adjuk meg, akkor egyel csökkenti." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "" +#~ "Beolvas és végrehajtja a parancsokat a FÁJLNÉV-bõl és visszatér.A $PATH" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "változóban található útvonalon próbálja meg keresi a FÁJLNEVET." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "" +#~ "Felfüggeszti ennek a parancsértelmezõnek a futtatását amíg egy SIGCONT" + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "" +#~ "jelet nem kap.A '-f' azt jelenti, hogy nem fog szólni, ha egy " +#~ "bejelentkezett" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "parancsértelmezõt próbál felfüggeszteni, mindenképp felfüggeszt." + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "" +#~ "Kilép 0 státusszal (igaz) vagy 1-el (hiba) a KIFELYEZÉS eredményétõl" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "függõen. A KIFELYEZÉS lehet unáris vagy bináris. Az unáris " + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "kifelyezéseket gyakran használják fájlok helyzetének a vizsgálatára." + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "Vagy ott ahol a sztingeket kell összehasonlítani számokkal." + +#~ msgid "File operators:" +#~ msgstr "Fájl operátorok:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b FÁJL Igaz ha a FÁJL egy speciális blokk fájl." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr " -c FÁJL Igaz ha a FÁJL egy speciális karakter fájl" + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d FÁJL Igaz ha a FÁJL egy könyvtár" + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e FÁJL Igaz ha a FÁJL létezik." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr " -f FÁJL Igaz ha a FÁJL létezik és általános fájl." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr "" +#~ " -g FÁJL Igaz ha a FÁJL csoport azonosítója be van állítva." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h FÁJL Igaz ha a FÁJL egy szimbolikus link. A \"-L\" " +#~ "használatával." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L FÁJL Igaz ha a FÁJL egy szimbolikus link." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k FÁJL Igaz ha a FÁJL-on be van állítva a rögzített bit." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p FÁJL Igaz ha a FÁJL egy csõ(pipe)." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r FÁJL Igaz ha a FÁJL ön által olvasható." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s FÁJL Igaz ha a FÁJL létezik és nem üres." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S FÁJL Igaz ha a FÁJL egy socket." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr " -t FD Igaz ha az FD megnyitották egy terminálon." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr "" +#~ " -u FÁJL Igaz ha a FÁJL-on a felhasználó azonosító be van " +#~ "állítva." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w FÁJL Igaz ha a FÁJL-t ön tudja írni." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr " -x FÁJL Igaz ha a FÁJL-t tudja futtatni." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr " -O FÁJL Igaz ha a FÁJL-t effektíve ön birtokolja." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G FÁJL Igaz ha a FÁJL az ön csoportja effektíve birtokolja." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr " FÁJL1 -nt FÁJL2 Igaz ha a FÁJL1 újabb mint (módosítási dátum " + +#~ msgid " modification date) file2." +#~ msgstr " szerint) FÁJL2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " FÁJL1 -bot FÁJL2 Igaz ha a FÁJL1 régebbi, mint a FÁJL2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr " FÁJL1 -ef FÁJL2 Igaz ha a FÁJL1 egy hard link a FÁJL2-re." + +#~ msgid "String operators:" +#~ msgstr "Sztring operátorok:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z SZTRING Igaz .ha a SZTRING üres." + +#~ msgid " -n STRING" +#~ msgstr " -n SZTRING" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " SZTRING Igaz .ha a SZTRING nem üres" + +#~ msgid " STRING1 = STRING2" +#~ msgstr " SZTRING1 = SZTRING2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Igaz ha a két sztring azonos." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " SZTRING1 != SZTRING2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " Igaz ha a két sztring nem azonos." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " SZTRING1 < SZTRING2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Igaz ha a SZTRING1 elõrébb van mint a SZTRING2 " +#~ "lexikálisan" + +#~ msgid " STRING1 > STRING2" +#~ msgstr " SZTRING1 > SZTRING2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Igaz ha a SZTRING1 hátrébb van mint a SZTRING2 " +#~ "lexikálisan" + +#~ msgid "Other operators:" +#~ msgstr "Egyéb operátorok:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! KIFELYEZÉS Igaz ha a KIFELYEZÉS." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " KIF1 -a KIF2 Igaz ha mindkét(ÉS) KIFelyezés igaz." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr " KIF1 -a KIF2 Igaz ha valamelyik(VAGY) KIFelyezés igaz." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " arg1 OP arg2 Számtani összehasonlítások. OP lehet -eq, -ne," + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " -lt, -le, -gt, vagy -ge közül bármelyik." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "" +#~ "A bináris számtani operátorok igaz értékel térnek vissza ha az ARG1 " +#~ "egyenlõ" + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "" +#~ "nem egyenlõ, kevesebb mint, kevesebb vagy egyenlõ, nagyobb mint vagy" + +#~ msgid "than ARG2." +#~ msgstr "nagyobb vagy egyenlõ mint az ARG2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "" +#~ "Ez egy szinonimája a \"test\" beépített utasításnak, de az utolsó " +#~ "paraméter" + +#~ msgid "the shell." +#~ msgstr "a feladatot futtassa ezen a parancsértelmezõn." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "Az ARG-ban meghatározott parancsot futtatja le ha a parancsértelmezõ egy" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "SIGNAL_SCEP jelet kap.Ha az ARG-ot elhagyjuk akkor az összes jel" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "vissza áll az eredeti értékére. Ha az ARG egy üres sztring akkor a " +#~ "parancsértelmezõ" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "és a parancsok SIGNAL_SPEC hívásait figyelmen kívül hagyja." + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "" +#~ "Ha egy SIGNAL_SPEC EXIT(0) ARG-ot kap akkor kilép az aktuális parancs-" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "értelmezõbõl.Ha a SIGNAL_SPEC értéke DEBUG akkor az ARG minden" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "parancs után le fut. Ha az ARG egy '-p' akkor megjeleníti az összes" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "SIGNAL_SPEC hozzárendelést. Ha opciók nélkül használja vagy" + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "csak a '-p'-t akkor a trap kiírja a hozzárendelt parancsok listáját az " + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "összes jel számával. A SIGNAL_SPEC elfogadja a -ban " +#~ "meghatározott" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "neveket vagy számukat. A 'trap -l' kiírja a jelek neveit és a " +#~ "hozzátartozó " + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "" +#~ "értékeket.Megjegyzés: a parancsértelemzõnek a \"kill -signal $$\" -al " + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "lehet küldeni." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "Az összes NÉVrõl hogyan értelmezi ha parancsértelmezõ amikor" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "" +#~ "Ha a '-t' opciót használja akkor az eredmény a következõ szavak egyike" + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`alias', `keyword', `function', `builtin', `file' vagy `', ha a NÉV egy" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "alias, parancsértelmezõ által fenntartott szó, parancsértelmezõ funkció, " + +#~ msgid "or unfound, respectively." +#~ msgstr "" +#~ "beépített utasítás, egy fájl a lemezen vagy ha nincs meg,sorrendben." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "Ha a '-p'-t használja vissza tér a lemezen található fájl pontos helyével" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "vagy ha nem ad vissza semmit akkor az nem egy fájl." + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "A '-a' opció hatására megjeleníti az összes helyet ahol a megtalálható" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "mint futtatható fájl. Ez magában foglalja a aliasokat és a funkciókat " + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "csak akkor ha '-p'-t nem használja." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "A type elfogadja -all, -path, és a -type szavakat -a, -p, és -t," + +#~ msgid "respectively." +#~ msgstr "helyet." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "" +#~ "Az ulimit teljes ellenõrzést biztosít a parancsértelmezõ által elindított " +#~ "programok" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "elõforrásai felet, ami által az egész rendszer lehet szabályozni." + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "A következõ lista bemutatja az elérhetõ opciókat:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\t \"lágy\" erõforrás korlátozást használ" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\t \"kemény\" erõforrás korlátozást használ" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tmegjeleníti az összes korlátozás" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\ta maximálisan létrehozható core fájl mérete" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d maximális mérete feladatok adat szegmensének" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\ta maximális bennmaradó(rezidest) rész mérete" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\ta verem maximális mérete" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\ta maximálisan felhasználható cpu idõ másodpercben" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr "" +#~ " -f\t a parancsértelmezõ által létrehozható fájlok maximális mérete" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\ta csõ(pipe) puffer mérete" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\ta maximálisan megnyitható fájl leírók száma" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\ta felhasználó által maximálisan elindítható feladatok száma" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\ta virtuális memória mérete" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "Ha a HATÁR meghatározza akkor azaz értéket használja az erõforrás." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "Egyébként megjeleníti a jelenlegi értékét az elõforrásnak." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "" +#~ "Ha opció nélkül indításhoz a '-f' van hozzárendelve.Az értékek Kilobájtban" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "értendõ, kivétel a '-a' értéke mert az másodpercet jelent és a '-p' " +#~ "amelyik" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "512 bájtot. A '-u' pedig a folyamatok száma darabban " + +#~ msgid "processes." +#~ msgstr "kihelyezve." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "A felhasználó fájl létrehozási MÓDJÁT állíthatjuk be. Ha a MÓDot elhagyjuk" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "vagy a '-S' opciót használjuk akkor a jelenlegi maskot írja ki. A '-S' " +#~ "opció " + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "" +#~ "kimenete a szimbolikus jelentést írja ki egyébként nyolcas " +#~ "számrendszerben kódolva" + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "írja ki.Ha a MÓD számmal kezdõdik akkor nyolcas számrendszerben kódolva" + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "értelmezi egyébként a szimbolikus módokat használja mint a chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "Várakozik egy meghatározott feladatra és jelentést készít róla." + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "Ha az N nincs meghatározva akkor a jelenleg aktív gyermek folyamatra vár" + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "" +#~ "és a visszatérési értéke 0. Az N lehet egy folyamat azonosító és egy " +#~ "munka-" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "folyamat meghatározás, ha egy munkafolyamatot ad át akkor az összes" + +#~ msgid "pipeline are waited for." +#~ msgstr "folyamatára várakozik." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "és a visszatérési értéke 0. Az N lehet egy folyamat azonosító ha ez nincs " + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "megadva a parancsértelmezõ összes gyermek feladatára várakozik." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "A 'for' egy hurokban elindítja a parancsokat amíg az összes eleme" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "végig nem futott. Ha az 'in SZAVAK..;'nincs jelen akkor a \"$@\" értékeit" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "használja fel.A SZAVAK összes elemét a NÉVhez rendeli és lefuttatja" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "a PARANCSOKAT." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "SZAVAK kiválasztása, lista generálása a szavakból" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "Az összegyûjtõt szavakat a standard hibakimenetre küldi, mindegyik" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "besorszámozva. Ha a 'in SZAVAK' nincs jelen akkor a \"$@\"" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "használja. A PS3 prompt jelenik meg és szabvány bemenetrõl" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "olvas. Ha a sorban található valamelyik szám megfelel" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "a megjelenített szavak egyikével akkor azt behelyettesíti a NÉV-be" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "Ha a sor üres akkor a SZAVAKAT és a promptot újra megjeleníti" + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "Ha EOF jelet olvas be akkor a parancsot befejezi. Minden egyéb helyzetben" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "a NÉV értékét nullára állítja be. A beolvasott sort eltárolja a " + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "" +#~ "REPLY változóba. A parancsot az mindig lefuttatja egészen addig amíg" + +#~ msgid "until a break or return command is executed." +#~ msgstr "meg nem szakítjuk vagy vissza nem tér a parancs." + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "'|' használhatjuk több minta elválasztásához." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Az if PARANCS lefuttatása. Ha a kimeneti status nulla akkor a 'then'" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr " PARANCS-ot lefuttatja. Egyébként az 'elif' PARANCSAIt futtatja le" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "és ha ennek a visszatérési értéke nulla akkor a megfelelõ PARANCSok " +#~ "lesznek" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "lefuttatva és ezzel behelyezõdik az 'if' parancs. Egyébként az 'else' ág " +#~ "PARANCSAI" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "futnak le (persze ha jelen van). A visszatérési státusz az utolsó" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "lefutott parancsé vagy nulla ha az 'if' feltétel nem igaz." + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "'while'-ban nem tér vissza nulla kilépési státusszal." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "'until'-ban nem tér vissza nulla kilépési státusszal." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "" +#~ "Létrehoz egy egyszerû parancsot amit a NÉVvel lehet meghívni és ami " +#~ "lefuttatja" + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "a PARANCSOKAT. A parancssorban a NÉV opciói a $0..$N" + +#~ msgid "function as $0 .. $n." +#~ msgstr "változókban jelenik meg." + +#~ msgid "entire set of commands." +#~ msgstr "átirányítás a parancsok halmazának." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Ez hasonlít az 'fg' parancsra. Folyattatja a megállított vagy háttérbe " +#~ "rakott" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "munkafolyamatokat. Ha meghatározza a SZÁMOKAT akkor azt munkafolyamatot" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "használja. Ha a SZÓT adja meg akkor azokat a folyamatokat használja ami a " + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "" +#~ "a SZÓval kezdõdik.A munkafolyamat meghatározása egy '&'-re végzõdik akkor " +#~ "a háttérbe helyezi." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION A Bash verzió száma." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "" +#~ "CDPATH Kettõsponttal elválasztott lista azoknak a könyvtáraknak" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\thelyérõl amiket a 'cd' parancs nem talál meg az aktuális " + +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tkönyvtárban." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE A fájl neve ahol a saját parancs elõzményeket tárolja." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "HISTFILESIZE Maximális sorok száma amit ez a fájl tartalmazhat." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE A maximális sorok száma amit a futó" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tparancsértelmezõ még elérhet." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "HOME A teljes útvonala a saját belépési könyvtárnak." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "HOSTTYPE A CPU típusa annak a gépeknek ahol a Bash fut." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF Ellenõrzi a parancsértelemezõ viselkedését amikor egy EOF" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "" +#~ "\t\tkaraktert kap mint önálló bemenet. Ha be van állítva akkor ez az " + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\t érték akkor azt jelenti, hogy hány üres" + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tsor keljen az EOF jel elõtt, hogy kilépjen(alapból 10). Amikor" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "\t\t nincs beállítva akkor az EOF jelre befejezi a bevitelt" + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "MAILCHECK\tHány másodpercenként ellenõrizze a Bash az új leveleket." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "MAILPATH\tEgy kettõsponttal elválasztott lista a fájl nevekrõl ahol" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\ta Bash ellenõrzi az új leveleket." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "OSTYPE\t\tA Unix verziója annak a gépnek ahol a Bash fut." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "" +#~ "PATH Kettõsponttal elválasztott lista azokról a könyvtárakról" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tahol a Bash keresi a parancsokat." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "PROMPT_COMMAND A parancs amit mindig lefuttat mielõtt kiírja " + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tmielõtt megjelenítené az elsõdleges promptot." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 Az elsõdleges prompt sztringje." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 másodlagos prompt sztringje." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM A jelenlegi terminál típusának a neve." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume A kitöltött változó azt jelenti a kiadott parancsokat" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\telõbb megnézi a jelenleg megállított munka" + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "\t\tfolyamatok között.Ha megtalálja akkor azt folytatja." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\tAz `exact' értéke azt jelenti, hogy a parancsnak teljesen meg" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "\t\tkell egyezni a leállított munkafolyamat nevével." + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\tA 'substring' érték pedig azt jelenti, hogy a parancsnak csak " + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "" +#~ "\t\tegy része is elegendõ az egyezéshez.Minden egyéb érték azt jelenti," + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "" +#~ "\t\t hogy a parancs elõtéte kell hogy legyen a legállított munkafolyamat." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " A változó kitöltése azt jelenti, hogy több soros " +#~ "parancsokat" + +#~ msgid " a single history line." +#~ msgstr " egy sorba rakja az elõzmények közé." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "" +#~ "histchars Ezekkel a karakterekkel befolyásolható az elõzmények gyors" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tbehelyettesítése. Az elõzmények elsõ karakterre" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\ta behelyettesítõ karakter általában '!'. A második" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\ta gyors behelyettesítést jelenti általában `^' jelenti. A" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\tharmadik a elõzmények megjegyzés karakterre általában '#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "HISTCONTROL\tA változó `ignorespace' értéke azt jelenti, hogy" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "" +#~ "\t\tazokat a sorokat amelyek helyjellel vagy tabulátorral kezdõdnek " +#~ "kihagyja az" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\telõzmények közül.Az `ignoredups' jelentése" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\tha a beírt sor azonos az elõzõvel akkor nem rögzíti.Ha " + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "" +#~ "\t\t`ignoreboth'-ra állítjuk be akkor a két tulajdonságot ötvözi." +#~ "Leállítása" + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "\t\tvagy már ha értékre állítjuk be akkor a mentés során" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\tminden sor bele kerül az elõzmények közé." + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "A változok értékeivel szabályozhatjuk az opciók viselkedését." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "A '-s'-el engedélyezhetjük az összes OPTNEVEt, a '-u'-val pedig" + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "letilthatjuk õket. A '-q' opcióval a kimenetet letilthatjuk el így" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "csak a visszatérési értékek jelzik az OPTNEVEk állapotát. A '-o'" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "opcióval rögzítheti a OPTNEVEK-et ezeket a meghatározásokat" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "" +#~ "a 'set -o' használhatjuk. Opciók nélkül vagy a 'p' opció kilistázza az " +#~ "összes" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "beállítható opciót jelezve azokat amik már be vannak állítva és" + +#~ msgid "not each is set." +#~ msgstr "azokat amik nincsenek beállítva." diff --git a/src/bin/bash/po/id.gmo b/src/bin/bash/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1b7447fe408d33fe471412e5d47fe16401ede1b5 GIT binary patch literal 152559 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

Ho$Nz%+qe^HS2{=nY71iNU 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, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-09-06 17:41+0700\n" +"Last-Translator: Arif E. Nugroho \n" +"Language-Team: Indonesian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "array subscript buruk" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: kunci array assosiasi tidak valid" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: tidak dapat mengassign ke index tidak-numeric" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: tidak dapat membuat: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "tidak menutup '%c' dalam %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: hilang pemisah colon" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': nama keymap tidak valid" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: tidak dapat membaca: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': tidak dapat melepaskan" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "'%s': nama fungsi tidak dikenal" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s tidak terikat ke kunci apapun.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s dapat dipanggil melalui " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "jumlah loop" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Mengembalikan context dari panggilan subroutine saat ini." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME tidak diset" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD tidak diset" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "baris %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "peringatan: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: penggunaan: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "terlalu banyak argumen" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: opsi membutuhkan sebuah argumen" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: argumen numeric dibutuhkan" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: tidak ditemukan" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opsi tidak valid" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nama opsi tidak valid" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': bukan sebuah identifier yang valid" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "nomor oktal tidak valid" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "nomor hexa tidak valid" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "nomor tidak valid" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: spesifikasi sinyal tidak valid" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variabel baca-saja" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s diluar jangkauan" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argumen" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s diluar jangkauan" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: tidak ada pekerjaan seperti itu" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: tidak ada pengontrol kerja" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "tidak ada pengontrol kerja" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: terbatas" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "terbatas" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: bukan sebuah builtin shell" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "gagal menulis: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error mengambil direktori saat ini: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: spesifikasi pekerjaan ambigu" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nama aksi tidak valid" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: tidak ada spesifikasi completion" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "peringatan: opsi -F mungkin tidak bekerja seperti yang anda harapkan" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "peringatan: opsi -C mungkin tidak bekerja seperti yang anda harapkan" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "saat ini sedang tidak menjalankan fungsi completion" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "hanya dapat digunakan dalam sebuah fungsi" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: fungsi baca-saja" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: tidak dapat menghapus variabel array secara ini" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: tidak dapat mengubah assosiasi ke array index" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dynamic loading tidak tersedia" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "tidak dapat membuka object shared %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "tidak dapat menemukan %s dalam shared object %s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: bukan dinamically loaded" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: tidak dapat menghapus: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: bukan sebuah direktori" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: bukan sebuah file umum" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: file terlalu besar" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: tidak dapat menjalankan berkas binary" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: tidak dapat menjalankan: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "bukan sebuah login shell: gunakan `exit'" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Ada pekerjaan yang terhenti.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Ada pekerjaan yang sedang berjalan.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "perintah tidak ditemukan" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "spesifikasi sejarah" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: tidak dapat membuka file sementara: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "sekarang" + +#: builtins/fg_bg.def:158 +#, 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: opsi tidak legal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "hashing dinonaktifkan" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabel hash kosong\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "tekan\tperintah\n" + +#: builtins/help.def:130 +#, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: tidak dapat membuka: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "tidak dapat menggunakan lebih dari satu opsi dari -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "posisi sejarah" + +#: builtins/history.def:365 +#, 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 opsi lain yang diperbolehkan dengan `-x'" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumen harus diproses atau ID pekerjaan" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Kesalahan tidak diketahui" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "diduga sebuah ekspresi" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: spesifikasi file deskripsi tidak valid" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: file deskriptor %s tidak valid" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: jumlah baris tidak valid" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: asal array tidak valid" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: nama aksi tidak valid" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "nama variabel array kosong" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "bantuan array variabel dibutuhkan" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': hilang karakter format" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': karakter format tidak valid" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "peringatan: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "hilang digit hexa untuk \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "tidak ada direktori lain" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "direktori stack kosong" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "index direktori stack" + +#: builtins/pushd.def:683 +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" +" Opsi:\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 opsi, dimulai dari nol.\n" +" \n" +" -N\tMenampilkan masukan ke N dihitung dari kanan dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dipanggil tanpa opsi, dimulai dari nol." + +#: builtins/pushd.def:705 +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" +" Opsi:\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:730 +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" +" Opsi:\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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: spesifikasi timeout tidak valid" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "error baca: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: tidak dapat unset" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: tidak dapat unset: baca-saja %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: bukan sebuah variabel array" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: bukan sebuah fungsi" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift terhitung" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "tidak dapat menset dan menunset opsi shell secara bersamaan" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nama opsi shell tidak valid" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "argumen nama file dibutuhkan" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: berkas tidak ditemukan" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "tidak dapat suspend" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "tidak dapat suspend sebuah login shell" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s sudah dialiasi ke `%s'\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s adalah sebuah shell dengan kata kunci\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s adalah sebuah fungsi\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s adalah sebuah shell builtin\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s adalah %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s memiliki hash (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumen limit tidak valid" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': perintah buruk" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: tidak dapat get limit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "batas" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: tidak dapat memodifikasi batas: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "nomor oktal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operator mode symbolic tidak valid" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': mode karakter symbolic tidak valid" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "perintah error tidak diketahui" + +#: error.c:406 +msgid "bad command type" +msgstr "tipe perintah buruk" + +#: error.c:407 +msgid "bad connector" +msgstr "konektor buruk" + +#: error.c:408 +msgid "bad jump" +msgstr "lompat buruk" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variabel tidak terikat" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': karakter format tidak valid" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: perintah tidak ditemukan" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpreter buruk" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "tidak dapat menduplikasikan fd %d ke fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "expresi level rekursi terlewati" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "rekursi stack underflow" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntax error dalam expresi" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "mencoba menempatkan ke bukan sebuah variabel" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "dibagi oleh 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "bug: tanda expassign buruk" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "eksponen kurang dari 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" + +#: expr.c:854 +msgid "missing `)'" +msgstr "hilang `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntax error: operand diharapkan" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: operator arithmetic tidak valid" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token adalah \"%s\")" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "basis arithmetic tidak valid" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "nilai terlalu besar untuk basis" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expresi error\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: tidak dapat mengakses direktori orang tua" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: process %5ld (%s) dalam the_pipeline" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: tidak ada pid seperti itu" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "sinyal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Selesai" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Terhenti" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Terhenti(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Berjalan" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Selesai(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Keluar %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Status tidak diketahui" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(core didump) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "anak setpgid (%ld ke %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Tidak ada catatan untuk proses %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: pekerjaan %d terhenti" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: pekerjaan telah selesai" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: baris %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (core didump)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd sekarang: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp gagal" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: baris disiplin" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "tidak dapat menset terminal proses grup (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "tidak ada pengontrol pekerjaan dalam shell ini" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: gagal assertion: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "tidak diketahui" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok dalam daftar bebas clobbered" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: awal dan akhir dari ukuran potongan berbeda" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "operasi jaringan tidak dilayani" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Anda memiliki surat dalam $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Anda memiliki surat baru dalam $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Surat dalam %s telah dibaca\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: membutuhkan ekspresi arithmetic" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: `;' tidak terduga" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipe instruksi buruk %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF tidak terduga ketika mencari untuk `]]'" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "syntax error dalam ekspresi kondisional" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "tanda `%s' tidak terduga, diduga `)'" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "diduga `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumen tidak terduga `%s' ke operator kondisional unary" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "argumen tidak terduga untuk operasi unary kondisional" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "operator binary kondisional diduga" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumen `%s' tidak terduga ke operator binary kondisional" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "argumen tidak terduga ke operasi binary kondisional" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "tanda `%c' tidak terduga dalam perintah kondisional" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "tanda `%s' tidak terduga dalam perintah kondisional" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "tanda %d tidak terduga dalam perintah kondisional" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error didekat tanda `%s' yang tidak terduga" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error didekat `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: tidak terduga diakhir dari berkas" + +#: parse.y:5223 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: fungsi `%s' tidak ditemukan" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: konektor buruk `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: '%c': format karakter tidak valid" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "berkas deskripsi diluar dari jangkauan" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redirect ambigu" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: tidak dapat menulis berkas yang sudah ada" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: tidak dapat meredirect keluaran" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: tidak dapat menduplikasi fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "tidak dapat menemukan /tmp, tolong buat!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp harus berupa sebuah nama direktori yang valid" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opsi tidak valid" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Aku tidak memiliki nama!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versi %s-(%s)\n" + +#: shell.c:1779 +#, 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 opsi panjang] [opsi] ...\n" +"\t%s [GNU opsi panjang] [opsi] berkas-script ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "GNU opsi panjang:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opsi shell:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s atau opsi -o\n" + +#: shell.c:1807 +#, 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 opsi " +"shell.\n" + +#: shell.c:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "Sinyal tidak diketahui #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinyal tidak diketahui #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "tidak dapat membuat pipe untuk proses substitusi" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "tidak dapat membuat anak untuk proses substitusi" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "tidak dapat membuka named pipe %s untuk membaca" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "tidak dapat membukan named pipe %s untuk menulis" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "tidak dapat membuat pipe untuk perintah substitusi" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "tidak dapat membuat anak untuk perintah substitusi" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expresi < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitusi buruk" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: tidak dapat meng-assign dengan cara ini" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "tidak cocok: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argumen diharapkan" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: expresi integer diduga" + +#: test.c:262 +msgid "`)' expected" +msgstr "')' diduga" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' diduga, ditemukan %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: operator unary diduga" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: operator binary diduga" + +#: test.c:806 +msgid "missing `]'" +msgstr "hilang `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "nomor sinyal tidak valid" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinyal buruk %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error mengimpor definisi fungsi untuk `%s'" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "level shell (%d) terlalu tinggi, mereset ke 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: tidak ada context fungsi di scope ini" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "karakter %d tidak valid dalam exporstr untuk %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "bukan `=' dalam exportstr untuk %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: bukan global_variable context" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan " +"sementara" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Hak Cipta (C) 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versi %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" +"Ini adalah perangkat lunak bebas; anda bebas untuk mengubah dan " +"mendistribusikannya.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: tidak dapat mengalokasikan %lu bytes" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: tidak dapat menrealokasikan %lu bytes (%lu bytes teralokasikan)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: tidak dapat mengalokasikan %lu bytes" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xmalloc: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s: %d: tidak dapat teralokasi %lu bytes" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: %s: %d: tidak dapat melakukan reallokasi %lu bytes (%lu bytes " +"teralokasi)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: tidak dapat mengalokasikan %lu bytes" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=nilai] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [nama ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-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 nama berkas] [-q nama] [-u nama] [-r keyseq] " +"[-x keyseq:perintah-shell] [keyseq:readline-function atau readline-command]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "pemanggil [expr]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [direktori]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "benar" + +#: builtins.c:72 +msgid "false" +msgstr "salah" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "perintah [-pVv] perintah [argumen ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [name[=nilai] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] name[=nilai] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [opsi] name[=nilai] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f nama berkas] [name ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [argumen ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts nama optstring [arg]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [spesifikasi pekerjaan]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [spesifikasi pekerjaan ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p nama jalur] [-dt] [nama ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "bantuan [-ds] [pola ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [spesifikasi pekerjaan ...] atau jobs -x perintah [args]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "biarkan arg [argumen ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d pembatas] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nama-opsi] [argumen ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [name ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=nilai] ...] atau export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [name[=nilai] ...] atau readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source nama berkas [argumen]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". nama berkas [argumen]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "kali" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] spesifikasi sinyal ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nama [name ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [batas]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAMA [in WORDS ...] ; do PERINTAH; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do PERINTAH; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAMA [ in WORDS ... ;] do PERINTAH; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [POLA [| POLA]...) PERINTAH ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PERINTAH; do PERINTAH; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PERINTAH; do PERINTAH; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { PERINTAH; } atau name () { PERINTAH ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ PERINTAH ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( expressi ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ expressi ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabel - Nama dan arti dari beberapa shell variabel" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumen]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o opsi] [-A action] [-G globpat] [-W daftar " +"kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opsi] [-A aksi] [-G globpat] [-W wordlist] [-F " +"fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o opsi] [nama ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-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:242 +#, fuzzy +msgid "" +"readarray [-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:254 +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 opsi -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" +" Opsi:\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:276 +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" +" Opsi:\n" +" -a\thapus semua definisi alias.\n" +" \n" +" Mengembalikan sukses kecuali sebuah NAMA bukan alias yang sudah ada." + +#: builtins.c:289 +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" +" \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-opsi 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" +" Opsi:\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 opsi tidak dikenal " +"diberikan atau sebuah error terjadi." + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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" +" opsi 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" +" Opsi:\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:411 +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" +" \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" +" Opsi:\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 opsi `-L' dispesifikasikan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan 0 kecuali jika sebuah opsi tidak valid diberikan atau " +"direktori sekarang\n" +" tidak bisa dibaca." + +#: builtins.c:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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" +" Opsi:\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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an 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" +" Opsi:\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" +" Opsi 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 opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Menset nilai variabel dan atribut.\n" +" \n" +" Kadaluarsa. Lihat `help declare'." + +#: builtins.c:520 +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, an error occurs,\n" +" 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 opsi 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 opsi tidak valid diberikan, sebuah " +"error terjadi.\n" +" atau shell tidak menjalankan sebuah fungsi." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two 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" +" Opsi:\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:571 +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" +" Opsi:\n" +" -n\tjangan menambahkan sebuah baris baru\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah penulisan error terjadi." + +#: builtins.c:586 +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" +" Opsi:\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" +" Opsi mengontrol dynamic loading:\n" +" -f\tLoad builtin NAMA dari shared object NAMA BERKAS\n" +" -d\tHapus sebuah builtin diload dengan -f\n" +" \n" +" Tanpa opsi, 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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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 opsi.\n" +" \n" +" Getops digunakan oleh shell procedures untuk memparse parameter posisi.\n" +" \n" +" OPTSTRING berisi huruf opsi yang dikenali; jika sebuah huruf\n" +" diikuti oleh sebuah colon, opsi diduga akan berupa argumen,\n" +" yang seharusnya dipisahkan dari itu oleh spasi.\n" +" \n" +" Setiap waktu ini dipanggil, getopts akan menempatkan opsi 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 opsi 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 opsi tidak " +"valid terlihat\n" +" getops menempatkan karakter opsi yang ditemukan ke OPTARG. Jika sebuah\n" +" argumen yang dibutuhkan tidak ditemukan, getopts menempatkan sebuah ':' " +"kedalam NAME dan\n" +" menset OPTARG ke opsi karakter yang ditemukan. Jika getopts tidak dalam\n" +" mode silent, dan sebuah opsi 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 opsi ditemukan; gagal jika akhir dari " +"opsi\n" +" ditemui atau sebuah error terjadi." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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" +" Opsi:\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" +" opsi shell `execfail' diset.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah " +"redireksi error terjadi." + +#: builtins.c:689 +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:698 +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:708 +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" +" Opsi:\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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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" +" Opsi:\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 opsi tidak " +"valid telah diberikan." + +#: builtins.c:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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" +" Opsi:\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 opsi tidak valid " +"diberikan." + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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" +" Opsi:\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 opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 opsi, status dari seluruh aktif job ditampilkan.\n" +" \n" +" Opsi:\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 opsi -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 opsi tidak valid diberikan atau " +"sebuah error terjadi.\n" +" Jika -x digunakan, mengembalikan status keluar dari PERINTAH." + +#: builtins.c:879 +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" +" \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" +" Opsi:\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 opsi tidak valid atau JOBSPEC " +"diberikan." + +#: builtins.c:898 +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" +" \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 "" +"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" +" Opsi:\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 opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:921 +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:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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" +" opsi -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" +" Opsi:\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" +" -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 opsi -u." + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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 opsi 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" +" Opsi:\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-opsi\n" +" Set variabel menurut nama-opsi:\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 opsi 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" +" Opsi -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 opsi tidak valid diberikan." + +#: builtins.c:1101 +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" +" 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" +" Opsi:\n" +" -f\tperlakukan setiap NAMA sebagai sebuah fungsi shell\n" +" -v\tperlakukan setiap NAMA sebagai sebuah variabel shell\n" +" \n" +" Tanpa opsi, 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 opsi tidak valid diberikan atau " +"sebuah NAMA adalah baca-saja." + +#: builtins.c:1121 +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" +" Opsi:\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 opsi selanjutnya.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah opsi tidak valid diberikan atau NAMA " +"tidak valid." + +#: builtins.c:1140 +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 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 "" +"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" +" Opsi:\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 opsi selanjutnya.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecual sebuah opsi tidak valid diberikan atau NAMA " +"tidak valid." + +#: builtins.c:1161 +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:1173 builtins.c:1188 +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:1204 +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" +" Opsi:\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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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 Opsi Benar jika opsi 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:1296 +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:1305 +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:1317 +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.\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" +" Opsi:\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 opsi tidak valid diberikan." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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" +" Opsi:\n" +" -a\tmenampilkan seluruh lokasi yang berisi sebuah nama NAMA yang dapat " +"dijalankan;\n" +" \tmeliputi aliases, builtins, dan fungsi, jika dan hanya jika\n" +" \topsi `-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:1380 +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" +" -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" +" \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" +" Opsi:\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 opsi 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 opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:1425 +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" +" Opsi:\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 opsi tidak " +"valid diberikan." + +#: builtins.c:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +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 opsi " +"tidak\n" +" valid diberikan." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" 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 opsi " +"tidak valid\n" +" diberikan." + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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" +" Opsi:\n" +" -p\tmenampilkan ringkasan waktu dalam format portable Posix\n" +" \n" +" Status Keluar:\n" +" Status kembali adalah status kembali dari PIPELINE." + +#: builtins.c:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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 opsi 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:1751 +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" +" \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.\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" +" Opsi:\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:1785 +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" +" \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.\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" +" Opsi:\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:1815 +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" +" \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.\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" +" Opsi:\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 opsi, dimulai dari nol.\n" +" \n" +" -N\tmenampilkan masukan ke N dihitung dari kanan dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dijalankan tanpa opsi, dimulai dari nol. \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali ada sebuah opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 opsi shell.\n" +" \n" +" Ubah setting untuk setiap opsi shell OPTNAME. Tanpa opsi\n" +" argumen apapun, tampilkan daftar shell opsi dengan sebuah indikasi\n" +" ya atau tidak setiap opsi di set.\n" +" \n" +" Opsi:\n" +" -o\tbatasi OPTNAME ke definisi untuk digunakan dengan `set -o'\n" +" -p\ttampilkan setiap opsi 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 opsi " +"tidak valid diberikan\n" +" atau OPTNAME dinonaktifkan." + +#: builtins.c:1865 +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" +" and printf(3), 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" +" \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" +" Opsi:\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 opsi tidak valid diberikan atau " +"sebuah penulisan atau penempatan\n" +" error terjadi." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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 opsi\n" +" yang diberikan, spesifikasi penyelesaian yang sudah ada akan ditampilkan " +"dalam cara\n" +" yang diperbolehkan untuk digunakan sebagai masukan.\n" +" \n" +" Opsi:\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" +" \n" +" Ketika penyelesaian dicoba, aksi yang dilakukan dalam urutan\n" +" huruf besar opsi yang ditampilkan diatas.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:1915 +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 opsi.\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 opsi tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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 opsi penyelesaian.\n" +" \n" +" Modifikasi opsi penyelesaian untuk setiap NAMA, atau, jika tidaka ada " +"NAMA yang diberikan,\n" +" penyelesaian mulai dijalankan. Jika tidak ada OPSI yang diberikan, " +"tampilkan\n" +" opsi penyelesaian untuk setiap NAMA atau spesifikasi penyelesaian " +"sekarang.\n" +" \n" +" Opsi:\n" +" \t-o option\tSet opsi penyelesaian OPSI untuk setiap NAMA\n" +" \n" +" Gunakan `+o' daripada `-o' matikan opsi 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 opsi untuk menjalankan penyelesaian sekarang\n" +" telah dimodifikasi.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah opsi tidak valid diberikan atau NAMA " +"tidak memiliki\n" +" spesifikasi penyelesaian yang terdefinisi." + +#: builtins.c:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Baca baris dari sebuah berkas kedalam sebuah variabel array.\n" +" \n" +" Baca baris dari standar masukan kedalam variabel array ARRAY, atau dari\n" +" deskripsi berkas FD jika opsi -u diberikan. Variabel MAPFILE adalah\n" +" default ARRAY.\n" +" \n" +" Opsi:\n" +" -n count\tSalin di baris COUNT. Jika COUNT adalah 0, semua baris " +"disalin.\n" +" -O origin\tAwal penempatan ke ARRAY di index ORIGIN. Default index " +"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.\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 opsi tidak valid diberikan atau " +"ARRAY adalah baca-saja." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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'. Opsi -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. Opsi -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 "" +#~ "Opsi -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 opsi, 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 "top directory." +#~ msgstr "top direktori yang baru." + +#~ 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 opsi -P, pwd " +#~ "menampilkan\n" +#~ " direktori physical, tanpa symbolic link yang lain; dengan opsi -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 opsi -p diberikan, sebuah nilai " +#~ "default digunakan\n" +#~ " untuk PATH yang menjamin untuk mencari semua utilitis standar. Jika\n" +#~ " opsi -V atau -v diberikan, sebuah string ditampilkan mendeskripsikan " +#~ "PERINTAH.\n" +#~ " Opsi -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. Opsi -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. Opsi -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 opsi -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 opsi " +#~ "-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, opsi -f mungkin bisa digunakan untuk menload builtin baru " +#~ "dari\n" +#~ " shared object NAMAFILE. Opsi -d akan menghapus sebuah builting\n" +#~ " yang sebelumnya diload dengan opsi -f. Jika tidak ada nama opsi yang " +#~ "diberikan, atau\n" +#~ " opsi -p diberikan, daftar dari builtin ditampilkan.\n" +#~ " Opsi -a berarti menampilkan setiap builtin dengan sebuah indikasi " +#~ "apakah\n" +#~ " atau tidak ini enabled. Opsi -s membatasi keluaran ke POSIX.2\n" +#~ " `special' builtins. Opsi -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 opsi `-c'\n" +#~ " diberikan, FILE dijalankan dengan environmen kosong. Jika opsi `-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 opsi 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 opsi -p diberikan, PATHNAME digunakan sebagai\n" +#~ " full pathname dari NAME, dan tidak ada jalur pencarian yang " +#~ "dilakukan. Opsi -r\n" +#~ " menyebabkan shell untuk melupakan semua lokasi yang diingat. Opsi -d\n" +#~ " menyebabkan shell untuk melupakan lokasi dari setiap NAMA.\n" +#~ " Jika opsi -t diberikan ful pathname ke setiap NAMA\n" +#~ " yang bersesuaian ditampilkan. Jika beberapa argumen NAMA diberikan " +#~ "dengan\n" +#~ " opsi -t, NAME ditampilkan sebelum hashed full pathname. Opsi -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. Opsi -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 opsi -n diberikan, pekerjaan tidak dihapus dari tabel, tetap " +#~ "ditandai\n" +#~ " sehingga ketika SIGHUP tidak terkirim ke job ketika shell menerima " +#~ "sebuah\n" +#~ " SIGHUP. Opsi -a, ketika JOBSPEC tidak diberikan, berarti menghapus " +#~ "seluruh\n" +#~ " pekerjaan dari job tabel; Opsi -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" +#~ " opsi `-v', unset hanya berlaku di variabel. Dengan opsi `-f',\n" +#~ " unset hanya berlaku untuk fungsi. Dengan tidak menggunakan dua opsi " +#~ "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 opsi -f diberikan,\n" +#~ " NAMA akan menunjuk ke fungsi. Jika tidak ada NAMA diberikan, atau " +#~ "jika opsi `-p'\n" +#~ " diberikan, daftar dari seluruh nama yang diexport dalam shell ini\n" +#~ " ditampilkan. Sebuah argumen dari opsi `-n' mengatakan untuk menghapus " +#~ "expor properti\n" +#~ " dari NAMA selanjutnya. Sebuah argumen dari `--' menonaktifkan " +#~ "pemrosesan\n" +#~ " opsi 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 opsi -f diberikan,\n" +#~ " maka fungsi yang berhubungan dengan NAMA akan ditandai. Jika tidak\n" +#~ " ada argumen yang diberikan, atau jika opsi `-p' diberikan, sebuah " +#~ "daftar dari seluruh nama baca-saja\n" +#~ " ditampilkan. Opsi `-a' berarti memperlakukan setiap NAMA sebagai\n" +#~ " sebuah variabel array. Sebuah argumen dari `--' menonaktifkan " +#~ "pemrosesan\n" +#~ " opsi 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 opsi `-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 opsi -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. Opsi `-S'\n" +#~ " membuah keluaran symbolic; jika tidak sebuah bilangan octal " +#~ "dikeluarkan.\n" +#~ " Jika opsi `-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" +#~ " Opsi -s berarti untuk mengaktifkan (set) setiap OPTNAME; opsi -u\n" +#~ " mengunset setiap OPTNAME. tanda -q menekan keluaran; status keluaran\n" +#~ " mengindikasikan apakah setiap OPTNAME diset atau diunset. Opsi -o\n" +#~ " membatasi OPTNAME ke nilai yang didefinisikan untuk digunakan dengan\n" +#~ " `set -o'. Tanpa opsi, atau dengan opsi -p, sebuah daftar dari " +#~ "seluruh\n" +#~ " opsi 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 opsi -p diberikan, atau tidak ada opsi yang diberikan, " +#~ "completion\n" +#~ " spesifikasi yang telah ada ditampilkan dalam sebuah cara yang " +#~ "membolehkan mereka untuk\n" +#~ " digunakan sebagai masukan. Opsi -r menghapus sebuah spesifikasi " +#~ "completion untuk\n" +#~ " setiap NAMA, atau jika tidak ada NAMA yang diberikan, untuk semua " +#~ "spesifikasi completion." diff --git a/src/bin/bash/po/insert-header.sin b/src/bin/bash/po/insert-header.sin new file mode 100644 index 0000000000..b26de01f6c --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/ja.gmo b/src/bin/bash/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6b29febe507d522710d8a525fa9ab5dcf442fff6 GIT binary patch literal 8183 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 TxbIzV&*I#1Qa^gc)f4<5A-S_Q literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/ja.po b/src/bin/bash/po/ja.po new file mode 100644 index 0000000000..15543c0420 --- /dev/null +++ b/src/bin/bash/po/ja.po @@ -0,0 +1,4100 @@ +# Japanese message for GNU bash 2.0 +# Copyright (C) 1999 Free Software Foundation, Inc. +# Kyoichi Ozaki , 2000. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2000-03-21 19:30+0900\n" +"Last-Translator: Kyoichi Ozaki \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: Æɤ߹þ¤ß¤Î¤ß¤Î´Ø¿ô" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "¥í¥°¥¢¥¦¥È" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "¥¹¥í¥Ã¥È %3d: " + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "½ñ¤­¹þ¤ßÃæ" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬Í×: -" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s' ¤ÏÍ­¸ú¤Ê³Îǧ¤Ç¤Ï¤Ê¤¤" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Æɤ߹þ¤ß¤Î¤ß¤ÎÊÑ¿ô" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "°ú¿ô¤ò´üÂÔ" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "¤³¤Î¥·¥§¥ë¤Ë¤Ï¥¸¥ç¥ÖÀ©¸æ¤¬¤¢¤ê¤Þ¤»¤ó" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "¤³¤Î¥·¥§¥ë¤Ë¤Ï¥¸¥ç¥ÖÀ©¸æ¤¬¤¢¤ê¤Þ¤»¤ó" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: ¥¸¥ç¥Ö¤Ï½ªÎ»¤·¤Þ¤·¤¿" + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "½ªÎ»¤·¤Þ¤·¤¿" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "¥Ñ¥¤¥×¥¨¥é¡¼: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: ¤¢¤¤¤Þ¤¤¤Ê¥ê¥À¥¤¥ì¥¯¥È" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Æɤ߹þ¤ß¤Î¤ß¤Î´Ø¿ô" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: ¤³¤Î¤è¤¦¤Ë»ØÄê¤Ç¤­¤Þ¤»¤ó" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "named pipe %s ¤ò %s ¤Ø³«¤±¤Þ¤»¤ó: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: ¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "¥í¥°¥¢¥¦¥È" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó: -" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬Í×: -" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s: »Ø¿ô¤Îɽ¸½¤ò´üÂÔ" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: »Ø¿ô¤Îɽ¸½¤ò´üÂÔ" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "̤ÃΤΥ¨¥é¡¼ %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "ɽ¸½¤ò´üÂÔ¤·¤Æ¤Þ¤¹" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: Ÿ³«¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "%s: ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Recursion stack underflow" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "¥Ñ¥¤¥×¥¨¥é¡¼: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s: Ÿ³«¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: Æɤ߹þ¤ß¤Î¤ß¤Î´Ø¿ô" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: Æɤ߹þ¤ß¤Î¤ß¤Î´Ø¿ô" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "CPU ¸ÂÅÙ" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "̤ÃΤΥ¨¥é¡¼ %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "print_command: °­¤¤¥³¥Þ¥ó¥É¥¿¥¤¥× `%d'" + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "°­¤¤¼õÅϤ· `%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "°­¤¤ jump %d" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: Ÿ³«¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô" + +#: eval.c:181 +#, fuzzy, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "%c¤ÏÆþÎÏÂÔ¤Á¤«¤é¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿: ¼«Æ°¥í¥°¥¢¥¦¥È\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "¥Ñ¥¤¥×¥¨¥é¡¼: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: À©¸Â: `/' ¤ò¥³¥Þ¥ó¥É̾¤Ëµ­½Ò¤Ç¤­¤Þ¤»¤ó" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "fd %d ¤ò fd 0 ¤ËÊ£À½¤Ç¤­¤Þ¤»¤ó: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "ɽ¸½¤ÎºÆµ¢²Äǽ¥ì¥Ù¥ë¤ò±Û¤¨¤Þ¤·¤¿" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Recursion stack underflow" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "ɽ¸½¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "ÈóÊÑ¿ô¤Ë³ä¤êÅö¤Æ¤ò¹Ô¤ª¤¦¤È¤·¤Æ¤Þ¤¹" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "0 ¤Î³ä»»" + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token' %d" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' ¤ò¾ò·ï¤Îɽ¸½¤Î¤¿¤á´üÂÔ¤·¤Æ¤Þ¤¹" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "`)' ¤¬¤¢¤ê¤Þ¤»¤ó" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "¥·¥ó¥¿¥Ã¥¯¥¹ ¥¨¥é¡¼: ´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "¥Ù¡¼¥¹¤ÎÃͤˤÏÂ礭¤¹¤®¤Þ¤¹" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: »Ø¿ô¤Îɽ¸½¤ò´üÂÔ" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: ¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "fd %d ¤ò fd 0 ¤ËÊ£À½¤Ç¤­¤Þ¤»¤ó: %s" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "check_bash_input: fd %d ¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤Ï´û¤Ë¸ºß¤·¤Þ¤¹" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: ¥×¥í¥»¥¹ID(%d)¤Ï¸ºß¤·¤Þ¤»¤ó!\n" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "̤ÃΤΥ·¥°¥Ê¥ë #%d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "½ªÎ»" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Ää»ß" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Ää»ß" + +#: jobs.c:1443 +msgid "Running" +msgstr "¼Â¹ÔÃæ" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "½ªÎ»(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "½ªÎ» %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "̤ÃΤΥ¹¥Æ¡¼¥¿¥¹" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(¥³¥¢¥À¥ó¥×) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, fuzzy, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "ÂÔµ¡: pid %d ¤³¤Î¥·¥§¥ë¤Î»Ò¥×¥í¥»¥¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: ¥¸¥ç¥Ö¤Ï½ªÎ»¤·¤Þ¤·¤¿" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "¥¹¥í¥Ã¥È %3d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (¥³¥¢¥À¥ó¥×)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp ¼ºÇÔ: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: ¥é¥¤¥ó discipline: %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp ¼ºÇÔ: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "¤³¤Î¥·¥§¥ë¤Ë¤Ï¥¸¥ç¥ÖÀ©¸æ¤¬¤¢¤ê¤Þ¤»¤ó" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "<̤ÃÎ>" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, 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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "¥á¡¼¥ë¤¬ $_ ¤Ë¤¢¤ê¤Þ¤¹" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "¿·¤·¤¤¥á¡¼¥ë¤¬ $_ ¤Ë¤¢¤ê¤Þ¤¹" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%s ¤Î¥á¡¼¥ë¤Ï´û¤ËÆɤޤì¤Æ¤Þ¤¹\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "ɽ¸½¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "¥·¥ó¥¿¥Ã¥¯¥¹ ¥¨¥é¡¼: ´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»" + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: °­¤¤»Ø¼¨¥¿¥¤¥× %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»(EOF)¤¬`%c'¤ò¸«ÉÕ¤±¤ë¤Þ¤¨¤ËȯÀ¸" + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»(EOF)¤¬`%c'¤ò¸«ÉÕ¤±¤ë¤Þ¤¨¤ËȯÀ¸" + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤ token `%s' ¤Î¤¢¤¿¤ê¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "ɽ¸½¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "`)' ¤ò´üÂÔ" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "`:' ¤ò¾ò·ï¤Îɽ¸½¤Î¤¿¤á´üÂÔ¤·¤Æ¤Þ¤¹" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "`:' ¤ò¾ò·ï¤Îɽ¸½¤Î¤¿¤á´üÂÔ¤·¤Æ¤Þ¤¹" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "`:' ¤ò¾ò·ï¤Îɽ¸½¤Î¤¿¤á´üÂÔ¤·¤Æ¤Þ¤¹" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤ token `%s' ¤Î¤¢¤¿¤ê¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤ token `%s' ¤Î¤¢¤¿¤ê¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "¥·¥ó¥¿¥Ã¥¯¥¹ ¥¨¥é¡¼: ´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»" + +#: parse.y:5223 +msgid "syntax error" +msgstr "¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "¥·¥§¥ë¤«¤éæ½Ð¤¹¤ë¤Î¤Ë \"%s\" ¤ò»È¤¤¤Ê¤µ¤¤.\n" + +#: parse.y:5447 +#, fuzzy +msgid "unexpected EOF while looking for matching `)'" +msgstr "´üÂÔ¤·¤Æ¤Ê¤¤¥Õ¥¡¥¤¥ë¤Î½ªÎ»(EOF)¤¬`%c'¤ò¸«ÉÕ¤±¤ë¤Þ¤¨¤ËȯÀ¸" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: °­¤¤Àܳ `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ¤¢¤¤¤Þ¤¤¤Ê¥ê¥À¥¤¥ì¥¯¥È" + +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: ¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤Ç¤­¤Þ¤»¤ó" + +#: redir.c:157 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: À©¸Â: `/' ¤ò¥³¥Þ¥ó¥É̾¤Ëµ­½Ò¤Ç¤­¤Þ¤»¤ó" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "¥×¥í¥»¥¹¤ÎÂåÆþ¤Ë¥Ñ¥¤¥×¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¥¨¥é¡¼" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: °­¤¤¥ª¥×¥·¥ç¥ó" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "»ä¤Ï̾Á°¤¬¤¢¤ê¤Þ¤»¤ó!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, ¥Ð¡¼¥¸¥ç¥ó %s\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU Ť¤¥ª¥×¥·¥ç¥ó:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "¥·¥§¥ë ¥ª¥×¥·¥ç¥ó:\n" + +#: shell.c:1786 +#, fuzzy +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD Ëô¤Ï ¥³¥Þ¥ó¥É\t\t(Áʤ¨¤Î¤ß)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s Ëô¤Ï -o ¥ª¥×¥·¥ç¥ó\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "¥·¥§¥ë¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï `%s -c \"help set\"'¤ÈÆþÎÏ.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "ÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤Ï `%s -c help'¤ÈÆþÎÏ .\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, 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 "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 +#, fuzzy +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 "»Ò¤Î½ªÎ»Ëô¤ÏÄä»ß " + +#: 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 "HTF monitor¥â¡¼¥É¤¬Í¿¤¨¤é¤ì¤Þ¤·¤¿" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT monitor¥â¡¼¥É¤¬Ã¥¤ï¤ì¤Þ¤·¤¿" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "̤ÃΤΥ·¥°¥Ê¥ë #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "̤ÃΤΥ·¥°¥Ê¥ë #%d" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "°­¤¤ÂåÆþ: `%s' ¤¬ %s ¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: ¥ê¥¹¥È¤òÇÛÎó¥á¥ó¥Ð¡¼¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ¤»¤ó" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "¥×¥í¥»¥¹¤ÎÂåÆþ¤Ë¥Ñ¥¤¥×¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "¥×¥í¥»¥¹¤ÎÂåÆþ¤Ë»Ò¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "named pipe %s ¤ò %s ¤Ø³«¤±¤Þ¤»¤ó: %s" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "named pipe %s ¤ò %s ¤Ø³«¤±¤Þ¤»¤ó: %s" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "named pipe %s ¤ò fd %d ¤Î¤¿¤á¤ËÊ£À½¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "ÂåÍý¥³¥Þ¥ó¥É¤Ë¥Ñ¥¤¥×¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "ÂåÍý¥³¥Þ¥ó¥É¤Ë»Ò¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:4816 +#, fuzzy +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: ¥Ñ¥¤¥×¤ò fd 1 ¤È¤·¤ÆÊ£À½¤Ç¤­¤Þ¤»¤ó: %s" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: ¥Ñ¥é¥á¡¼¥¿¤¬¥Ì¥ëËô¤Ï¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: °­¤¤ÂåÍý" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ¤³¤Î¤è¤¦¤Ë»ØÄê¤Ç¤­¤Þ¤»¤ó" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "°­¤¤ÂåÆþ: `%s' ¤¬ %s ¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "°ú¿ô¤ò´üÂÔ" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: »Ø¿ô¤Îɽ¸½¤ò´üÂÔ" + +#: test.c:262 +msgid "`)' expected" +msgstr "`)' ¤ò´üÂÔ" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)', ¤ò´üÂÔ, ÆÀ¤¿¤Î¤Ï %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:806 +msgid "missing `]'" +msgstr "`]'¤¬È´¤±¤Æ¤Þ¤¹" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "°­¤¤¥·¥°¥Ê¥ëÈÖ¹æ" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: °­¤¤¥·¥°¥Ê¥ë %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, ¥Ð¡¼¥¸¥ç¥ó %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [̾Á°[=ÃÍ] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [̾Á° ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "ÃæÃÇ [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "³¹Ô [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [°ú¿ô ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [ɽ¸½]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] ¥³¥Þ¥ó¥É [°ú¿ô ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] ̾Á°[=ÃÍ] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] ̾Á°[=ÃÍ] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local ̾Á°[=ÃÍ] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [°ú¿ô ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [°ú¿ô ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f ¥Õ¥¡¥¤¥ë̾] [̾Á° ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [°ú¿ô ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring ̾Á° [°ú¿ô]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a ̾Á°] ¥Õ¥¡¥¤¥ë [¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "½ªÎ» [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "¥í¥°¥¢¥¦¥È" + +#: builtins.c:103 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-nlr] [ºÇ½é] [ºÇ¸å] of fc -s [¥Ñ¥¿¡¼¥ó=rep] [¥³¥Þ¥ó¥É]" + +#: builtins.c:107 +#, fuzzy +msgid "fg [job_spec]" +msgstr "disown [jobspec ...]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "disown [jobspec ...]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p ¥Ñ¥¹Ì¾] [̾Á° ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [¥Ñ¥¿¡¼¥ó ...]" + +#: builtins.c:121 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [n] Ëô¤Ï history -awrn [¥Õ¥¡¥¤¥ë̾] of history -ps arg [°ú¿ô...]" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] Ëô¤Ï jobs -x commando [°ú¿ô]" + +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [jobspec ...]" + +#: builtins.c:132 +#, fuzzy +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] [pid | job]... Ëô¤Ï kill -l " +"[sigspec]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let °ú¿ô [°ú¿ô ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o ¥ª¥×¥·¥ç¥ó] [°ú¿ô ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [̾Á° ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [̾Á° ...] Ëô¤Ï export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [̾Á° ...] Ëô¤Ï readonly -p" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "½ªÎ» [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "source ¥Õ¥¡¥¤¥ë̾" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". ¥Õ¥¡¥¤¥ë̾" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [ɽ¸½]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ °ú¿ô... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [°ú¿ô] [signal_spec] Ëô¤Ï trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] ̾Á° [̾Á° ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [¾å¸Â]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [¥â¡¼¥É]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ̾Á° [in ¸ÀÍÕ ... ;] do ¥³¥Þ¥ó¥É·²; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for ̾Á° [in ¸ÀÍÕ ... ;] do ¥³¥Þ¥ó¥É·²; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ̾Á° [in ¸ÀÍÕ ... ;] do ¥³¥Þ¥ó¥É·²; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ¸ÀÍÕ in [¥Ñ¥¿¡¼¥ó [| ¥Ñ¥¿¡¼¥ó]...) ¥³¥Þ¥ó¥É·² ;;]... esac" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if ¥³¥Þ¥ó¥É·²; then ¥³¥Þ¥ó¥É·²; [ elif ¥³¥Þ¥ó¥É·²; then ¥³¥Þ¥ó¥É·²; ]... " +"[ else ¥³¥Þ¥ó¥É·²; ] fi" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ¥³¥Þ¥ó¥É·²; do ¥³¥Þ¥ó¥É·²; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ¥³¥Þ¥ó¥É·²; do ¥³¥Þ¥ó¥É·²; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function ̾Á° { ¥³¥Þ¥ó¥É·² ; } or ̾Á° () { ¥³¥Þ¥ó¥É·² ; } " + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ ¥³¥Þ¥ó¥É·² }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "ɽ¸½¤ò´üÂÔ¤·¤Æ¤Þ¤¹" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "ɽ¸½¤ò´üÂÔ¤·¤Æ¤Þ¤¹" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [¥Ç¥£¥ì¥¯¥È¥ê | +N | -N ] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o Ť¤¥ª¥×¥·¥ç¥ó] optname [optname...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] ̾Á° [̾Á° ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +#, 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 "" +"[̾Á°]¤òÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¨¥¤¥ê¥¢¥¹¤«¤éºï½ü¤·¤Ê¤µ¤¤¡£¤â¤·¡¢-a ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ" +"¤¿¤Ê¤é¡¢" + +#: builtins.c:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "Missing `}'" +#~ msgstr "`}'¤¬¤¢¤ê¤Þ¤»¤ó" + +#~ msgid "brace_expand> " +#~ msgstr "¥Ö¥ì¡¼¥¹Å¸³«> " + +#~ 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 "¥³¥Þ¥ó¥É¼Â¹Ô: ´Ö°ã¤Ã¤¿¥³¥Þ¥ó¥É¥¿¥¤¥× `%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 "fd %d ¤ò fd 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 "%s: bg background job?" +#~ msgstr "%s: bg ¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤Î»Å»ö?" + +#~ 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 "´üÂÔ¤·¤Æ¤Ê¤¤ token `%c' ¤Î¤¢¤¿¤ê¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: °­¤¤ `%%' °ú¿ô (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "optie `%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 "bad substitution: no ending `}' in %s" +#~ msgstr "°­¤¤ÂåÆþ: ½ªÎ»¤¹¤ë `}' ¤¬ %s ¤Ë¤¢¤ê¤Þ¤»¤ó" + +#~ msgid "%s: bad array subscript" +#~ msgstr "%s: °­¤¤ÇÛÎó subscript" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "¥×¥í¥»¥¹¤ÎÂåÆþ¤Ë¥Ñ¥¤¥×¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#~ msgid "reading" +#~ msgstr "Æɤ߹þ¤ßÃæ" + +#~ msgid "process substitution" +#~ msgstr "¥×¥í¥»¥¹¤ÎÂåÍý" + +#~ msgid "command substitution" +#~ msgstr "¥³¥Þ¥ó¥É¤ÎÂåÍý" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "¥³¥Þ¥ó¥É¤ÎÂåÍý¤Ë¥Ñ¥¤¥×¤òºÆ¤Ó³«¤±¤Þ¤»¤ó (fd %d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: Ÿ³«¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: ´Ö°ã¤Ã¤¿»»½ÑÂåÆþ" + +#~ 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 "ÃÍ `%s' ¤Î¥ª¥×¥·¥ç¥ó c\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt ¤Ï¥­¥ã¥é¥¯¥¿¡¼¥³¡¼¥É 0%o ¤òÊÖ¤·¤Þ¤·¤¿ ??\n" + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: ̤ÃΤΥե饰 %s.\n" + +#~ msgid "%s requires an argument" +#~ 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 ¤Ï´û¤Ëdocname¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹ (%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 prompt] [-a ÇÛÎó] [-e] [̾Á° ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[·å¿ô | ¸ÀÍÕ] [%]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "ÊÑ¿ô - ÊÑ¿ô̾¤È°ÕÌ£" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "°ú¿ô̵¤·Ëô¤Ï¥ª¥×¥·¥ç¥ó -p ÉÕ¤­¤Î`alias'¤Ï¥ê¥¹¥È¤ò½ÐÎÏ" + +#~ 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 "true unless a NAME is given for which no alias has been defined." +#~ msgstr "¥¨¥¤¥ê¥¢¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤ª¤é¤º¡¢[̾Á°]¤¬ÅϤµ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¿¿" + +#~ msgid "then remove all alias definitions." +#~ msgstr "Á´¤Æ¤Î¥¨¥¤¥ê¥¢¥¹¤ÎÄêµÁ¤òºï½ü." + +#~ msgid "Arguments we accept:" +#~ msgstr "¼õ¤±¼è¤ë°ú¿ô¤Ï:" diff --git a/src/bin/bash/po/lt.gmo b/src/bin/bash/po/lt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3b3360c2fc3a0bd4c2727f81e4f2bc2fc1a5b610 GIT binary patch literal 25365 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, 2008. +msgid "" +msgstr "" +"Project-Id-Version: bash-4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2009-02-13 16:28+0200\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\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:50 +msgid "bad array subscript" +msgstr "blogas masyvo indeksas" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nepavyko priskirti prie neskaitinio indekso" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nepavyko sukurti: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: pirmas ne tarpo simbolis nÄ—ra „\"“" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "nÄ—ra uždaranÄiojo „%c“ %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: trÅ«ksta dvitaÅ¡kio skirtuko" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: netaisyklingas keymap'o pavadinimas" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nepavyko perskaityti: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nepavyko atjungti (unbind)" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: nežinomas funkcijos pavadinimas" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nÄ—ra priskirtas jokiam klaviÅ¡ui.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s gali bÅ«ti iÅ¡kviestas su " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "prasminga tik „for“, „while“ arba „until“ cikle" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Grąžina esamos procedÅ«ros kontekstÄ…." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME nenustatytas" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD nenustatytas" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "įspÄ—jimas: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: naudojimas: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "per daug argumentų" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: parametrui reikia argumento" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: reikia skaitinio argumento" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: nerasta" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: negalimas parametras" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: netaisyklingas parametro vardas" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': netaisyklingas identifikatorius" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "netaisyklingas aÅ¡tuonetainis skaiÄius" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaiÄius" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "netaisyklingas skaiÄius" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: netaisyklinga signalo specifikacija" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: kintamasis tik skaitymui" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s iÅ¡Ä—jo už ribų" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argumentas" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s už ribų" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: nÄ—ra tokio darbo" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: nÄ—ra darbų valdymo" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "nÄ—ra darbų valdymo" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: apribota" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "apribota" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ne vidinÄ— aplinkos komanda" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "raÅ¡ymo klaida: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: klaida skaitant esamÄ… aplankÄ…: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: dviprasmis darbo apraÅ¡ymas" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: nÄ—ra baigimo specifikacijos" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "įspÄ—jimas: parametras -F gali neveikti taip, kaip tikitÄ—s" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "įspÄ—jimas: parametras -C gali neveikti taip, kaip tikitÄ—s" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "galima naudoti tik funkcijoje" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "negalima naudoti „-f“ funkcijoms kurti" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija tik skaitymui" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: negalima tokiu bÅ«du sunaikinti masyvų kintamųjų" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dinaminis įkrovimas negalimas" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nepavyko atverti bendrojo objekto %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "nepavyko rasti %s bendrajame objekte %s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nedinamiÅ¡kai įkrauta" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nepavyko iÅ¡trinti: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: aplankas" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ne paprastas failas" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: failas per didelis" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: negalima vykdyti dvejetainių failų" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nepavyko paleisti: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "ne prisijungimo aplinka: naudokite „exit“" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Yra sustabdytų darbų.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Yra veikianÄių darbų.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "komandų nerasta" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "istorijos specifikacija" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nepavyko atverti laikinojo failo: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "maiÅ¡a iÅ¡jungta" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: maiÅ¡os lentelÄ— tuÅ¡Äia\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nepavyko atverti: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "negalima naudoti daugiau negu vieno parametro iÅ¡ -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "istorijos pozicija" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumentai turi bÅ«ti procesų arba darbų ID" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Nežinoma klaida" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "tikÄ—tasi iÅ¡raiÅ¡kos" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: nesamas parametras" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: nesamas parametras" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: ne masyvo kintamasis" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: trÅ«ksta formato simbolio" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: netaisyklingas formato simbolis" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "įspÄ—jimas: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "nÄ—ra kito aplanko" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "skaitymo klaida: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "galima grįžti (return) tik iÅ¡ funkcijos ar scenarijaus" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "negalima kartu iÅ¡trinti funkcijos ir kintamojo" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nepavyko iÅ¡trinti" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nepavyko iÅ¡trinti: %s tik skaitymui" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ne masyvo kintamasis" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: ne funkcija" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "postÅ«mių skaiÄius" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "negalima aplinkos nuostatos vienu metu įjungti ir iÅ¡jungti" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: failas nerastas" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "nepavyko sustabdyti" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "nepavyko sustabdyti prisijungimo aplinkos" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s yra „%s“ sinonimas\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s yra aplinkos raktinis žodis\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s yra funkcija\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s yra aplinkos vidinÄ— komanda\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s yra %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s yra heÅ¡uotas (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: netaisyklingas limito argumentas" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': bloga komanda" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nepavyko gauti limito: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nepavyko pakeisti limito: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "aÅ¡tuntainis skaiÄius" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos operatorius" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos simbolis" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Nutraukiama..." + +#: error.c:405 +msgid "unknown command error" +msgstr "nežinoma komandos klaida" + +#: error.c:406 +msgid "bad command type" +msgstr "blogas komandos tipas" + +#: error.c:407 +msgid "bad connector" +msgstr "blogas jungtukas" + +#: error.c:408 +msgid "bad jump" +msgstr "blogas Å¡uolis" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nepriskirtas kintamasis" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\alaukiant įvedimo baigÄ—si laikas: automatiÅ¡kai atsijungta\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "nepavyko peradresuoti standartinio įvedimo iÅ¡ /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "raÅ¡ymo klaida: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: komanda nerasta" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: blogas interpretatorius" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "virÅ¡ytas iÅ¡raiÅ¡kos rekursijos lygis" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "sintaksÄ—s klaida iÅ¡raiÅ¡koje" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "bandymas priskirti ne kintamajam" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "dalyba iÅ¡ 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "klaida: bloga expassign leksema" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "sÄ…lygos iÅ¡raiÅ¡koje tikÄ—tasi „:“" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "eksponentÄ— mažesnis už 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"po prieÅ¡-didinimo ar prieÅ¡-mažinimo operatoriaus tikÄ—tasi identifikatoriaus" + +#: expr.c:854 +msgid "missing `)'" +msgstr "TrÅ«ksta „)“" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "sintaksÄ—s klaida: tikÄ—tasi operando" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "sintaksÄ—s klaida: netaisyklingas aritmetinis operatorius" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "netaisyklingas aritmetinis pagrindas" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "per didelÄ— pagrindo reikÅ¡mÄ—" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: tikÄ—tasi skaitinÄ—s iÅ¡raiÅ¡kos" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: nepavyko pasiekti aukÅ¡tesnių aplankų" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "trinamas sustabdytas darbas %d procesų grupÄ—je %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: tokio pid nÄ—ra" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: nÄ—ra proceso %ld įraÅ¡o" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: darbas %d yra sustabdytas" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: darbas užsibaigÄ—" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: darbas %d jau fone" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: %d eilutÄ—: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "Å¡ioje aplinkoje nÄ—ra darbų valdymo" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: pažeista prielaida: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "nežinoma" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blokas iÅ¡ laisvų blokų sÄ…raÅ¡o sugadintas" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: iÅ¡kviestas su jau atlaisvintu bloku" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: iÅ¡kviestas su nerezervuotu bloku" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: iÅ¡kviestas su nerezervuotu bloku" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "tinklo operacijos nepalaikomos" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Turite laiÅ¡kų $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Turite naujų laiÅ¡kų $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PaÅ¡tas %s perskaitytas\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "sintaksÄ—s klaida: reikia aritmetinÄ—s iÅ¡raiÅ¡kos" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "sintaksÄ—s klaida: netikÄ—tas „;“" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "sintaksÄ—s klaida: „((%s))“" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: blogas instrukcijos tipas %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „%c“" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant „]]“" + +#: parse.y:3727 +#, 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:3731 +msgid "syntax error in conditional expression" +msgstr "sintaksÄ—s klaida sÄ…lygos iÅ¡raiÅ¡koje" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi „)“" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "tikÄ—tasi „)“" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos unariniam operatoriui" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "netikÄ—tas argumentas sÄ…lygos unariniam operatoriui" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi sÄ…lyginio binarinio operatoriaus" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "tikÄ—tasi sÄ…lygos binarinio operatoriaus" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos binariniam operatoriui" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "netikÄ—tas argumentas sÄ…lygos binariniam operatoriui" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "netikÄ—ta leksema „%c“ sÄ…lygos komandoje" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "netikÄ—ta leksema „%s“ sÄ…lygos komandoje" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "netikÄ—ta leksema %d sÄ…lygos komandoje" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "sintaksÄ—s klaida prie netikÄ—tos leksemos: „%s“" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "sintaksÄ—s klaida prie „%s“" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "sintaksÄ—s klaida: netikÄ—ta failo pabaiga" + +#: parse.y:5223 +msgid "syntax error" +msgstr "sintaksÄ—s klaida" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Naudokite „%s“, jei norite iÅ¡eiti iÅ¡ ap.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „)“" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: funkcija „%s“ nerasta" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: blogas jungtukas  „%d“" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: netaisyklingas formato simbolis" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "failo deskriptorius už ribų" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: negalima perraÅ¡yti egzistuojanÄio failo" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: apribota: negalima peradresuoti iÅ¡vedimo" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "nukreipimo klaida: nepavyko dublikuoti fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "nepavyko rasti /tmp, sukurkite šį aplankÄ…!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp turi bÅ«ti taisyklingas aplanko pavadinimas" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: netaisyklingas parametras" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Neturiu vardo!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU ilgi parametrai:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Aplinkos parametrai:\n" + +#: shell.c:1786 +msgid "\t-irsD 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:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s arba -o nustatymas\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Naudokite komandÄ… „bashbug“ klaidoms praneÅ¡ti.\n" + +#: sig.c:583 +#, 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 "" + +#: 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 "" + +#: 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: blogas keitinys" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: negalima tokiu bÅ«du priskirti" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "nÄ—ra atitikmenų: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "tikÄ—tasi argumento" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: tikÄ—tasi skaitinÄ—s iÅ¡raiÅ¡kos" + +#: test.c:262 +msgid "`)' expected" +msgstr "tikÄ—tasi „)“" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "tikÄ—tasi „)“, rasta %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: tikÄ—tasi unarinio operatoriaus" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: tikÄ—tasi binarinio operatoriaus" + +#: test.c:806 +msgid "missing `]'" +msgstr "trÅ«ksta „]“" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "netaisyklingas signalo numeris" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: blogas signalas %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "klaida importuojant funkcijos apibrėžimÄ… „%s“" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "aplinkos lygmuo (%d) per aukÅ¡tas, nustatoma į 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "netaisyklingas simbolis %d %s exportstr'e" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s exportstr'e trÅ«ksta „=“" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: nÄ—ra global_variables konteksto" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "AutorinÄ—s teisÄ—s (C) 2008 Free Software Foundation, Inc." + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų (%lu baitų iÅ¡skirta)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "postÅ«mių skaiÄius" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "reikia failo pavadinimo argumento" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "reikia failo pavadinimo argumento" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( iÅ¡raiÅ¡ka ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ iÅ¡raiÅ¡ka ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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:276 +#, 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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +#, 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:350 +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:365 +#, 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:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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:411 +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" +" \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:428 +#, 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:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Grąžinti nesÄ—kmingÄ… rezultatÄ…." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +#, 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:1589 +#, 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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +#, 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" +" and printf(3), 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" +" \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:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "top directory." +#~ msgstr "steko virÅ¡Å«nÄ—je esanÄiu." + +#~ 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/src/bin/bash/po/nl.gmo b/src/bin/bash/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c56b4761b2a998376de843fba04c8e8a338b6312 GIT binary patch literal 154123 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%0Ac3@Ew$YEb3+Bq)CQUU+^gN|xwT1|=7+10MiB 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 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/nl.po b/src/bin/bash/po/nl.po new file mode 100644 index 0000000000..6c396064e2 --- /dev/null +++ b/src/bin/bash/po/nl.po @@ -0,0 +1,5328 @@ +# Dutch translations for bash-4.0-pre1. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# 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 de gedetailleerdere omschrijving +# stapt over op de derde persoon, om daarna een passieve vorm te +# gebruiken voor de rest van de preciseringen en uitzonderingen. +# Deze opzet is nog niet helemaal consequent doorgevoerd; voor de +# volgende vertaler is er dus nog ruimschoots werk. -- Benno, 2008 +# +# 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 "Stilstand" kunnen zijn. +# +# Erick Branderhorst , 1996. +# Julie Vermeersch , 2004. +# Benno Schulenberg , 2006, 2008. +msgid "" +msgstr "" +"Project-Id-Version: bash-4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-09-21 19:58+0200\n" +"Last-Translator: Benno Schulenberg \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "ongeldige array-index" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ongeldige sleutel voor associatief array" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: niet-numerieke index is niet mogelijk" + +#: arrayfunc.c:517 +#, 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:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "Kan %s niet aanmaken: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "geen sluit-'%c' in %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': ongeldige naam voor toetsenkaart" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "Kan %s niet lezen: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "Kan %s niet losmaken" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "'%s': onbekende functienaam" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s is aan geen enkele toets gebonden\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan worden aangeroepen via " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "herhalingsaantal" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Geeft de context van de huidige functie-aanroep." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME is niet gedefinieerd" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD is niet gedefinieerd" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "regel %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "waarschuwing: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: Gebruik: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "te veel argumenten" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: optie vereist een argument" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vereist een numeriek argument" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: niet gevonden" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ongeldige optie" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ongeldige optienaam" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "'%s': is geen geldige naam" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "ongeldig octaal getal" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "ongeldig hexadecimaal getal" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "ongeldig getal" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ongeldige signaalaanduiding" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "'%s': is geen PID en geen geldige taakaanduiding" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: is een alleen-lezen variabele" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s valt buiten bereik" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s valt buiten bereik" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: taak bestaat niet" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: geen taakbesturing" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "geen taakbesturing" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: beperkte modus" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "beperkte modus" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: is geen ingebouwde opdracht van de shell" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "schrijffout: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: taakaanduiding is niet eenduidig" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ongeldige actienaam" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: is geen completerings-aanduiding" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "kan alleen worden gebruikt binnen een functie" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: is een alleen-lezen functie" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: kan array-variabelen niet op deze manier verwijderen" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dynamisch-laden is niet beschikbaar" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "kan gedeeld object %s niet openen: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "kan %s niet vinden in gedeeld object %s: %s" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: is niet dynamisch geladen" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "Kan %s niet verwijderen: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is een map" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: is geen normaal bestand" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: bestand is te groot" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kan een binair bestand niet uitvoeren" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "Kan %s niet uitvoeren: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "uitgelogd\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "geen login-shell; gebruik 'exit'" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Er zijn nog gepauzeerde taken.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Er zijn nog draaiende taken.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "geen opdracht gevonden" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "geschiedenisaanduiding" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "Kan tijdelijk bestand '%s' niet openen: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "huidige" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "hashen is uitgeschakeld" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: de hash-tabel is leeg\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "treffers commando\n" + +#: builtins/help.def:130 +#, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "Kan %s niet openen: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" + +#: builtins/history.def:186 +msgid "history position" +msgstr "geschiedenispositie" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Onbekende fout" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "uitdrukking werd verwacht" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ongeldige aanduiding van bestandsdescriptor" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ongeldige bestandsdescriptor: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ongeldig regelaantal" + +#: builtins/mapfile.def:269 +#, 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:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ongeldige hoeveelheid" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "lege naam van array-variabele" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "ondersteuning van arrayvariabelen is vereist" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "'%s': ontbrekend opmaakteken" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "'%c': ongeldig opmaakteken" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "waarschuwing: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "ontbrekend hexadecimaal cijfer bij \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "geen andere map" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "mappenstapel is leeg" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "mappenstapelindex" + +#: builtins/pushd.def:683 +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:705 +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, het de nieuwe\n" +" werkmap makend.\n" +"\n" +" De opdracht 'dirs' toont de huidige mappenstapel." + +#: builtins/pushd.def:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ongeldige aanduiding van tijdslimiet" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "leesfout: %d: %s" + +#: builtins/return.def:73 +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:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "kan niet tegelijk een functie en een variabele verwijderen" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "Kan '%s' niet verwijderen" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: is geen array-variabele" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: is geen functie" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift-aantal" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: bestand niet gevonden" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "kan niet pauzeren" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "kan een inlog-shell niet pauzeren" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is een alias voor '%s'\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is een shell-sleutelwoord\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s is een functie\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is een ingebouwde shell-functie\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is gehasht (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ongeldige limietwaarde" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "'%c': ongeldige opdracht" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan de limiet niet bepalen: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "limiet" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan de limiet niet wijzigen: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "octaal getal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "'%c': ongeldige operator in symbolische modus" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "'%c': ongeldig teken in symbolische modus" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "onbekende opdrachtfout" + +#: error.c:406 +msgid "bad command type" +msgstr "ongeldig opdrachttype" + +#: error.c:407 +msgid "bad connector" +msgstr "ongeldige verbinder" + +#: error.c:408 +msgid "bad jump" +msgstr "ongeldige sprong" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: ongebonden variabele" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "pijpfout" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: opdracht niet gevonden" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ongeldige interpreter" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "recursieniveau van expressies is overschreden" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "recursiestapel-onderloop" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntaxfout in expressie" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "poging tot toewijzing aan een niet-variabele" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "deling door nul" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "':' werd verwacht voor een voorwaardelijke expressie" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponent is kleiner dan 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "naam verwacht na pre-increment of pre-decrement" + +#: expr.c:854 +msgid "missing `)'" +msgstr "ontbrekend ')'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntaxfout: operator verwacht" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaxfout: ongeldige rekenkundige operator" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "ongeldige rekenkundige basis" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "waarde is te groot voor basis" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expressiefout\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline(): procesgroep van pijp" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "afgesplitst PID %d hoort bij draaiende taak %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process(): proces %5ld (%s) in de pijplijn" + +#: jobs.c:1113 +#, 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:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid(): PID %ld bestaat niet" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signaal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Klaar" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Gepauzeerd" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Gepauzeerd(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Wordt uitgevoerd" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Klaar(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Onbekende afsluitwaarde" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(geheugendump gemaakt) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (werkmap: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "instellen van procesgroep %2$ld van dochter %1$ld" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for(): proces %ld is nergens geregistreerd" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job(): taak %d is gepauzeerd" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: taak is afgesloten" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: taak %d draait al op de achtergrond" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: regel %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (geheugendump gemaakt)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(werkmap is nu: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp() is mislukt" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: lijnprotocol" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "kan procesgroep (%d) van terminal niet instellen" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "er is geen taakbesturing in deze shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc(): controletest is mislukt: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "onbekend" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free(): aangeroepen met als argument een ongebruikt blok" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free(): blokgroottes van begin en eind zijn verschillend" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc(): reserveringstabel is vol??\n" + +#: lib/malloc/table.c:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "netwerkoperaties worden niet ondersteund" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "U hebt post in $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "U hebt nieuwe post in $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "De post in %s is gelezen.\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "syntaxfout: onverwachte ';'" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaxfout: '((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document(): ongeldig instructietype %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "syntaxfout in conditionele expressie" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "onverwacht symbool '%s'; ')' werd verwacht" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "')' werd verwacht" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "onverwacht argument bij eenzijdige conditionele operator" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" +"onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "tweezijdige conditionele operator werd verwacht" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "onverwacht argument bij tweezijdige conditionele operator" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "onverwacht symbool '%c' in conditionele opdracht" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "onverwacht symbool '%s' in conditionele opdracht" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "onverwacht symbool %d in conditionele opdracht" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaxfout nabij onverwacht symbool '%s'" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaxfout nabij '%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "syntaxfout: onverwacht bestandseinde" + +#: parse.y:5223 +msgid "syntax error" +msgstr "syntaxfout" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gebruik \"%s\" om de shell te verlaten.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion(): functie '%s' niet gevonden" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert(): %s: lege COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command(): ongeldige verbinder '%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf(): '%c': ongeldig opmaakteken" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "bestandsdescriptor valt buiten bereik" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: omleiding is niet eenduidig" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: kan bestaand bestand niet overschrijven" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "Kan /tmp niet vinden; maak deze aan!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp dient een geldige mapnaam te zijn" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ongeldige optie" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Ik heb geen naam!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versie %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "Lange opties:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Korte opties:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD, of -c opdracht, of -O shopt-optie (enkel bij aanroep)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" + +#: sig.c:583 +#, 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" + +#: siglist.c:58 +msgid "Quit" +msgstr "Afsluiten" + +#: 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 "Drijvende-komma-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 "Alarmklok" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Afgesloten" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Spoedeisende I/O-toestand" + +#: 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 (tty-invoer)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Gepauzeerd (tty-uitvoer)" + +#: 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 +msgid "Unknown Signal #" +msgstr "Onbekend signaalnummer" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Onbekend signaal #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "ongeldige vervanging: geen sluit-'%s' in %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: kan geen lijst toewijzen aan een array-element" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "kan geen pijp maken voor procesvervanging" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "kan geen dochterproces maken voor procesvervanging" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "kan pijp genaamd %s niet openen om te lezen" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "kan pijp genaamd %s niet openen om te schrijven" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "kan geen pijp maken voor opdrachtvervanging" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "kan geen dochterproces maken voor opdrachtvervanging" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: lege parameter, of niet ingesteld" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ongeldige vervanging" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: kan niet op deze manier toewijzen" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ongeldige vervanging: geen afsluitende '`' in %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "geen overeenkomst: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argument werd verwacht" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: een geheel-getaluitdrukking werd verwacht" + +#: test.c:262 +msgid "`)' expected" +msgstr "')' werd verwacht" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "')' werd verwacht; %s gevonden" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "eenzijdige operator werd verwacht, %s gevonden" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "tweezijdige operator werd verwacht, %s gevonden" + +#: test.c:806 +msgid "missing `]'" +msgstr "ontbrekende ']'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "ongeldig signaalnummer" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler(): ongeldig signaal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "fout tijdens importeren van functiedefinitie voor '%s'" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell-niveau is te hoog (%d); teruggezet op 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" +"make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" +"all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "ongeldig teken '%d' in export-tekenreeks voor %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "geen '=' in export-tekenreeks voor %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context(): er is geen 'global_variables'-context" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versie %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" +"Dit is vrije software; u mag het vrijelijk wijzigen en verder verspreiden.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc(): kan geen %lu bytes reserveren (%lu bytes gereserveerd)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc(): kan geen %lu bytes reserveren" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc(): kan %lu bytes niet opnieuw reserveren (%lu bytes gereserveerd)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc(): kan %lu bytes niet opnieuw reserveren" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xmalloc(): %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc(): %s:%d: kan geen %lu bytes reserveren" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc(): %s:%d: kan %lu bytes niet opnieuw reserveren (%lu bytes " +"gereserveerd)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc(): %s:%d: kan %lu bytes niet opnieuw reserveren" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [NAAM[=WAARDE] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] NAAM [NAAM...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m TOETSENKAART] [-f BESTANDSNAAM] [-q NAAM] [-u NAAM]\n" +" [-r TOETSENREEKS] [-x TOETSENREEKS:SHELL-OPDRACHT]\n" +" [TOETSENREEKS:READLINE-FUNCTIE | TOETSENREEKS:READLINE-OPDRACHT]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [N]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [N]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [INGEBOUWDE_SHELLFUNCTIE [ARGUMENT...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [EXPRESSIE]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [MAP]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "waar" + +#: builtins.c:72 +msgid "false" +msgstr "onwaar" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] OPDRACHT [ARGUMENT...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [NAAM[=WAARDE]...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] NAAM[=WAARDE]..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [OPTIE] NAAM[=WAARDE]..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARGUMENT...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARGUMENT...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f BESTANDSNAAM] [NAAM...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [ARGUMENT...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts OPTIETEKENREEKS NAAM [ARGUMENT]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a NAAM] [OPDRACHT [ARGUMENT...]] [OMLEIDING...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [N]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [N]" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE]\n" +"of: fc -s [PATROON=VERVANGING] [OPDRACHT]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [TAAKAANDUIDING]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [TAAKAANDUIDING...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p PADNAAM] [-dt] [NAAM...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [PATROON...]" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POSITIE] [N]\n" +" of: history -anrw [BESTANDSNAAM]\n" +" of: history -ps ARGUMENT..." + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" +"jobs [-lnprs] [TAAKAANDUIDING...] of jobs -x OPDRACHT [ARGUMENT...]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [TAAKAANDUIDING...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let ARGUMENT..." + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a ARRAY] [-d SCHEIDINGSTEKEN] [-i TEKST] [-n AANTAL_TEKENS]\n" +" [-p PROMPT] [-t TIJDSLIMIET] [-u BESTANDSDESCRIPTOR] [NAAM...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [N]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [ARGUMENT...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [NAAM...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [NAAM[=WAARDE] ...] of export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [NAAM[=WAARDE] ...] of readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [N]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source BESTANDSNAAM [ARGUMENTEN]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". BESTANDSNAAM [ARGUMENTEN]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [EXPRESSIE]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ ARGUMENT... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARGUMENT] SIGNAALAANDUIDING...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] NAAM..." + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [GRENSWAARDE]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [MODUS]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [ID]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [PID]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAAM [in WOORDEN...] ; do OPDRACHTEN; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( EXPR1; EXPR2; EXPR3 )); do OPDRACHTEN; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAAM [in WOORDEN... ;] do OPDRACHTEN; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] PIJPLIJN" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WOORD in [PATROON [| PATROON]...) OPDRACHTEN ;;]... esac" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if OPDRACHTEN; then OPDRACHTEN;\n" +" [ elif OPDRACHTEN; then OPDRACHTEN; ]...\n" +" [ else OPDRACHTEN; ] fi" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while OPDRACHTEN; do OPDRACHTEN; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until OPDRACHTEN; do OPDRACHTEN; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NAAM { OPDRACHTEN ; } of NAAM () { OPDRACHTEN ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ OPDRACHTEN ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "TAAKAANDUIDING [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( EXPRESSIE ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ EXPRESSIE ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - enkele shell-variabelen" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | MAP]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [OPTIENAAM...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o OPTIE] [-A ACTIE] [-G PATROON]\n" +" [-W WOORDENLIJST] [-F FUNCTIE] [-C OPDRACHT]\n" +" [-X FILTERPATROON] [-P PREFIX] [-S SUFFIX] [NAAM...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-pr] [-o OPTIE] [-A ACTIE] [-G PATROON]\n" +" [-W WOORDENLIJST] [-F FUNCTIE] [-C OPDRACHT]\n" +" [-X FILTERPATROON] [-P PREFIX] [-S SUFFIX] [WOORD]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o OPTIE] [NAAM...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" +" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" +" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" + +#: builtins.c:254 +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 zonder VERVANGING gegeven is." + +#: builtins.c:276 +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" +" Optie '-a' verwijdert alle aliassen.\n" +"\n" +" De afsluitwaarde is 0, tenzij NAAM geen bestaande alias is." + +#: builtins.c:289 +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" +" \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" +" Een toetsenreeks verbinden aan een 'readline'-functie of aan een macro,\n" +" of een 'readline'-variabele instellen. 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" +" kan worden hergebruikt 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 kan worden hergebruikt 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" +" kan worden hergebruikt als invoer\n" +" -x TOETSENREEKS:SHELL_OPDRACHT deze shell-opdracht uitvoeren als " +"deze\n" +" toetsenreeks ingevoerd wordt \n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een " +"fout\n" +" optrad." + +#: builtins.c:326 +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" +" Als N gegeven is, dan worden N niveaus van lussen beëindigd.\n" +" De afsluitwaarde is 0, tenzij N kleiner dan 1 is." + +#: builtins.c:338 +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. De " +"afsluitwaarde is 0, tenzij N kleiner dan 1 is." + +#: builtins.c:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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 (standaard)\n" +" -P de fysieke mappenstructuur gebruiken;\n" +" symbolische koppelingen worden eerst \"vertaald\"\n" +"\n" +" De afsluitwaarde is 0 als de gewenste map ingesteld kon worden, anders 1." + +#: builtins.c:411 +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" +" \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" +" -P het werkelijke, fysieke pad tonen, zonder symbolische " +"koppelingen\n" +" -L het pad tonen zoals dat gevolgd is, inclusief eventuele " +"symbolische\n" +" koppelingen (standaard)\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd\n" +" of de huidige map niet bepaald kon worden." + +#: builtins.c:428 +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:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Geeft afsluitwaarde 0, horend bij \"gelukt\"." + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Geeft afsluitwaarde 1, horend bij \"mislukt\"." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Waarden en attributen van variabelen instellen.\n" +"\n" +" Declareert de gegeven variabelen en/of kent hen attributen 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" +" -p van elke gegeven variabele de attributen en waarde tonen\n" +"\n" +" Attributen:\n" +" -a van gegeven variabelen arrays maken (indien mogelijk)\n" +" -A van gegeven variabelen associatieve arrays maken (indien " +"mogelijk)\n" +" -i aan gegeven variabelen het 'geheel getal'-attribuut toekennen\n" +" -l gegeven variabelen bij toekenning omzetten naar kleine letters\n" +" -r de gegeven variabelen alleen-lezen maken\n" +" -t aan gegeven variabelen het 'trace'-attribuut toekennen\n" +" -u gegeven variabelen bij toekenning omzetten naar hoofdletters\n" +" -x de gegeven variabelen exporteren\n" +"\n" +" Een '+' in plaats van een '-' voor de letter schakelt het betreffende\n" +" attribuut uit.\n" +"\n" +" Bij variabelen met het 'geheel getal'-attribuut 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'.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optreedt." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Waarden en attributen van variabelen instellen.\n" +" Verouderd. Zie 'help declare'." + +#: builtins.c:520 +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, an error occurs,\n" +" 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" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd, er een\n" +" fout optrad, of de shell geen functie aan het uitvoeren is." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"De gegeven argumenten naar standaarduitvoer schrijven.\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: \\a geluidssignaal\n" +" \\b backspace\n" +" \\c geen verdere uitvoer produceren\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" +"\n" +" De afsluitwaarde is 0, tenzij een schrijffout optreedt." + +#: builtins.c:571 +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.\n" +" een nieuwe regel. Optie -n onderdrukt de afsluitende nieuwe regel.\n" +"\n" +" De afsluitwaarde is 0, tenzij een schrijffout optreedt." + +#: builtins.c:586 +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" +"  een fout optreedt." + +#: builtins.c:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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\n" +"\n" +" -a huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n" +" -n alle nog niet gelezen regels uit het geschiedenisbestand lezen\n" +" -r het geschiedenisbestand lezen en toevoegen aan einde van\n" +" huidige geschienis\n" +" -w huidige geschiedenis aan einde van geschiedenisbestand toevoegen\n" +"\n" +" -p geschiedenisopzoeking uitvoeren voor elk ARGUMENT en het " +"resultaat\n" +" tonen zonder dit in de geschiedenis op te slaan -s de " +"ARGUMENTen als één enkel item aan de geschiedenis toevoegen\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" +" 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" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optreedt." + +#: builtins.c:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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" +" 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 een\n" +" fout optreedt. Als '-x' gebruikt is, dan is de afsluitwaarde die van\n" +" OPDRACHT." + +#: builtins.c:879 +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" +" \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:898 +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" +" \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 "" +"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" +"\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 optreedt." + +#: builtins.c:921 +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'-attribuut 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:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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, 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 in een interactieve shell 'readline' gebruiken om de regel\n" +" in te lezen\n" +" -i TEKST door 'readline' te gebruiken begintekst\n" +" -n AANTAL stoppen na dit aantal tekens gelezen te hebben (i.p.v. tot\n" +" eeb LF-teken)\n" +" -p PROMT 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" +" -u BSDS 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, of een ongeldige bestandsdescriptor\n" +" als argument van '-u' gegeven werd." + +#: builtins.c:1006 +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 tejstvolgorde veranderd. +#: builtins.c:1019 +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 follow 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" +" 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-attributen in of 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 het betreffende attribuut _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 fysieke paden volgen in plaats van symbolische koppelingen\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 door laten werken in functies en " +"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 attributen 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:1101 +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" +" 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" +" 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:1121 +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 "" +"Het export-attribuut 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 deze WAARDE\n" +" toekennen 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:1140 +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 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-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 van alle onveranderbare variabelen en functies 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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" +" 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 de shell-optie ingeschakeld is\n" +" ! EXPR waar als EXPR 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:1296 +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:1305 +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:1317 +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.\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" +" een enkelvoudige opdracht eindigt met een afsluitwaarde die niet nul " +"is.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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" +" De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." + +#: builtins.c:1380 +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" +" -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" +" \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" +" -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" +"\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 een\n" +" fout optreedt." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Op taakafsluiting wachten en de afsluitwaarde rapporteren.\n" +"\n" +" Wacht op het proces aangeduid door ID -- dat een taakaanduiding of een\n" +" 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" +" De afsluitwaarde is die van ID, 1 als ID ongeldig si, of 2 als een\n" +" ongeldige optie gegeven werd." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Op procesafsluiting wachten en de afsluitwaarde rapporteren.\n" +"\n" +" Wacht op het proces aangeduid door ID en rapporteert diens " +"afsluitwaarde.\n" +" Als geen PID gegeven is, dan wordt er gewacht op alle momenteel actieve\n" +" dochterprocessen, en is de afsluitwaarde van 'wait' automatisch 0. PID\n" +" moet een proces-ID zijn.\n" +"\n" +" De afsluitwaarde is die van ID, 1 als ID ongeldig si, of 2 als een\n" +" ongeldige optie gegeven werd." + +#: builtins.c:1478 +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" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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 uitveoren.\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. 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:1694 +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:1751 +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" +" \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.\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 ingebouwde opdracht 'dirs' toont de huidige mappenstapel.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" +" mapwijziging mislukte. De opdracht 'dirs' geeft de huidige " +"mappenstapel weer." + +#: builtins.c:1785 +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" +" \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.\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 ingebouwde 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:1815 +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" +" \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.\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 optreedt." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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 elke gegeven OPTIENAAM -- van een shell-optie die\n" +" bepaald shell-gedrag beïnvloedt. Zonder opties wordt een lijst van " +"alle\n" +" instelbare opties getoond, met bij elke optie de vermelding of deze al\n" +" 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 is de afsluitwaarde 0 indien OPTIENAAM ingeschakeld is,\n" +" 1 indien uitgeschakeld. De afsluitwaarde is ook 1 als een ongeldige\n" +" optienaam gegeven werd, en de afsluitwaarde is 2 als een ongeldige " +"optie\n" +" gegeven werd." + +#: builtins.c:1865 +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" +" and printf(3), 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" +" \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.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optreedt." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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" +"\n" +" Als completering geprobeerd wordt, dan worden de acties toegepast in de\n" +" volgorde van de bovenstaande hoofdletteropties.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optreedt." + +#: builtins.c:1915 +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 optreedt." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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" +" Optie:\n" +" -o OPTIE deze completeringsoptie inschakelen voor elke gegeven NAAM\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 is geen completeringsvoorschrift gedefinieerd." + +#: builtins.c:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Regels inlezen in een array-variabele.\n" +" \n" +" Leest regels van standaardinvoer in in the array-variabele ARRAY.\n" +" De variabele MAPFILE wordt gebruikt als geen ARRAY gegeven is. \n" +" Opties:\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 standaardHOEVEELHEID 5000.\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 een ongeldige\n" +" optie gegeven werd." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "%s: invalid number" +#~ msgstr "%s: ongeldig getal" + +#~ msgid "allocated" +#~ msgstr "gereserveerd" + +#~ msgid "freed" +#~ msgstr "vrijgegeven" + +#~ msgid "requesting resize" +#~ msgstr "verzoek tot grootteverandering" + +#~ msgid "just resized" +#~ msgstr "juist van grootte veranderd" + +#~ msgid "bug: unknown operation" +#~ msgstr "**interne fout**: onbekende operatie" + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Schrijft de gegeven argumenten naar standaarduitvoer.\n" +#~ " Optie -n onderdrukt de afsluitende nieuwe regel." + +#~ msgid "Logout of a login shell." +#~ msgstr "Beëindigt een login-shell." diff --git a/src/bin/bash/po/pl.gmo b/src/bin/bash/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..64edb447bb5936b8818183684c6de0f33f95fa5d GIT binary patch literal 26025 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 cb~TE8I(WDT>vHh^4>kHiq;H| literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/pl.po b/src/bin/bash/po/pl.po new file mode 100644 index 0000000000..8a88ff3112 --- /dev/null +++ b/src/bin/bash/po/pl.po @@ -0,0 +1,5101 @@ +# Polish translation of bash +# Copyright (C) 2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Andrzej M. Krzysztofowicz 2006,2007. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2007-11-30 08:49+0100\n" +"Last-Translator: Andrzej M. Krzysztofowicz \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "nieprawid³owy indeks tablicy" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: nieprawid³owa nazwa akcji" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nie mo¿na przypisaæ do nienumerycznego indeksu" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nie mo¿na utworzyæ: %s" + +# ??? +#: bashline.c:3413 +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:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "brak zamykaj±cego `%c' w %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: brak separuj±cego dwukropka" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +# ??? +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nieprawid³owa nazwa mapy klawiszy" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nie mo¿na odczytaæ: %s" + +# ??? +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': nie mo¿na usun±æ dowi±zania" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nie znana nazwa funkcji" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nie jest przypisany do ¿adnego klawisza.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s mo¿e byæ wywo³any przez " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "ma sens tylko w pêtli `for', `while' lub `until'" + +# ??? +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Wraca do kontekstu wywo³ania bie¿±cego podprogramu" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "Nie ustawiono HOME" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "Nie ustawiono OLDPWD" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: uwaga: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: uwaga: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "za du¿o argumentów" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: opcja wymaga argumentu" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: wymagany argument numeryczny" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: nie znaleziono" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: nieprawid³owa opcja" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nieprawid³owa nazwa opcji" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': nieprawid³owy identyfikator" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "nieprawid³owy numer sygna³u" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "nieprawid³owa liczba" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "nieprawid³owa liczba" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: nieprawid³owo okre¶lony sygna³" + +#: builtins/common.c:257 +#, 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:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: zmienna tylko do odczytu" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s poza zakresem" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s poza zakresem" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: brak takiego zadania" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: brak kontroli zadañ" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "brak kontroli zadañ" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: ograniczony" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "ograniczony" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nie jest to polecenie pow³oki" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "b³±d zapisu: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: niejednoznaczne okre¶lenie zadania" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nieprawid³owa nazwa akcji" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: brak definicji dla uzupe³nienia" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "uwaga: opcja -F mo¿e dzia³aæ inaczej ni¿ oczekiwano" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "uwaga: opcja -C mo¿e dzia³aæ inaczej ni¿ oczekiwano" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "mo¿na u¿ywaæ tylko w funkcji" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "nie mo¿na u¿ywaæ `-f' do tworzenia funkcji" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcja tylko do odczytu" + +#: builtins/declare.def:461 +#, 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:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "³adowanie dynamiczne nie jest dostêpne" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nie mo¿na otworzyæ obiektu wspó³dzielonego %s: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nie jest ³adowany dynamicznie" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nie mo¿na usun±æ: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: jest katalogiem" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nie jest zwyk³ym plikiem" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: plik jest za du¿y" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nie mo¿na uruchomiæ pliku binarnego" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nie mo¿na uruchomiæ: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "to nie jest pow³oka logowania: u¿yj `exit'" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Istniej± zatrzymane zadania.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Istniej± zatrzymane zadania.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "nie znaleziono polecenia" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "specyfikacja historii" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nie uda³o siê otworzyæ pliku tymczasowego: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "zapamiêtywanie ¶cie¿ek poleceñ w tablicy asocjacyjnej wy³±czone" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tablica asocjacyjna pusta\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "ostatnie polecenie: %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +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³owa kluczowego `" + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nie mo¿na otworzyæ: %s" + +#: builtins/help.def:337 +#, 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:154 +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:186 +msgid "history position" +msgstr "pozycja historii" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: rozwiniêcie wg historii nie powiod³o siê" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: rozwiniêcie wg historii 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumentami musz± byæ numery procesów lub zadañ" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Nieznany b³±d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "spodziewano siê wyra¿enia" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: nieprawid³owo okre¶lony deskryptor pliku" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: nieprawid³owy deskryptor pliku: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: nieprawid³owa opcja" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: nieprawid³owa opcja" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: nieprawid³owa nazwa akcji" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: nie jest zmienn± tablicow±" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': brak znaku formatuj±cego" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': nieprawid³owy znak formatuj±cy" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: uwaga: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "brak cyfry szesnastkowej dla \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "brak innego katalogu" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "niedomiar stosu rekursji" + +#: builtins/pushd.def:683 +#, fuzzy +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" +" Znacznik -l oznacza, ¿e `dirs' nie powinno wypisywaæ katalogów w " +"skróconej\n" +" wersji, tzn. wzglêdem katalogu domowego wywo³uj±cego. Oznacza to, ¿e\n" +" `~/bin' mo¿e zostaæ wypisany jako `/homes/bfox/bin'. Znacznik -v " +"powoduje,\n" +" ¿e `dirs' wypisuje katalogi w osobnych wierszach, poprzedzaj±c ka¿dy\n" +" z nich jego pozycj± na stosie. Znacznik -p powoduje to samo, lecz bez\n" +" podawania pozycji na stosie. Znacznik -c powoduje wyczyszczenie stosu\n" +" katalogów poprzez usuniêcie wszystkich jego elementów.\n" +" \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:705 +#, 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 "" +"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" +" +N\tRotacja stosu czyni±ca jego wierzcho³kiem N-ty katalog (licz±c od\n" +" \tlewej strony listy wypisywanej przez `dirs', pocz±wszy od zera).\n" +" \n" +" -N\tRotacja stosu czyni±ca jego wierzcho³kiem N-ty katalog (licz±c od\n" +" \tprawej strony listy wypisywanej przez `dirs', pocz±wszy od zera).\n" +" \n" +" -n\tPominiêcie zmiany katalogu podczas umieszczania katalogów na\n" +" \tstosie tak, ¿e zmieniany jest tylko stos.\n" +" \n" +" dir\tUmieszczenie DIR na wierzcho³ku stosu i uczynienie go nowym\n" +" \tbie¿±cym katalogiem roboczym.\n" +" \n" +" Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." + +#: builtins/pushd.def:730 +#, 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 "" +"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" +" +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 pierwszy katalog, `popd -1' usuwa drugi.\n" +" \n" +" -n\tPominiêcie zmiany katalogu podczas usuwania katalogów ze stosu tak,\n" +" \t¿e zmieniany jest tylko stos.\n" +" \n" +" Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: nieprawid³owo okre¶lony timeout" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "b³±d odczytu: %d: %s" + +#: builtins/return.def:73 +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:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nie mo¿na jednocze¶nie anulowaæ definicji funkcji i zmiennej" + +# ??? +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nie mo¿na anulowaæ definicji" + +# ??? +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nie mo¿na anulowaæ definicji: %s jest tylko do odczytu" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nie jest zmienn± tablicow±" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: nie jest funkcj±" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "licznik przesuniêcia" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "nie mo¿na opcji pow³oki jednocze¶nie ustawiæ i uniewa¿niæ" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: nie znaleziono pliku" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "nie mo¿na wstrzymaæ" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "nie mo¿na wstrzymaæ pow³oki logowania" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s jest aliasem do %s'\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s jest s³owem kluczowym pow³oki\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s jest funkcj±\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s jest wewnêtrznym poleceniem pow³oki\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s jest %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "¶cie¿ka do %s jest zapamiêtana (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: nieprawid³owy argument stanowi±cy ograniczenie" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': z³e polecenie" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nie mo¿na odczytaæ ograniczenia: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nie mo¿na zmieniæ ograniczenia: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "liczba ósemkowa" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': nieprawid³owy operator trybu symbolicznego" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': nieprawid³owy znak trybu symbolicznego" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "ostatnie polecenie: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Przerywanie..." + +#: error.c:405 +msgid "unknown command error" +msgstr "nieznany b³±d polecenia" + +#: error.c:406 +msgid "bad command type" +msgstr "z³y rodzaj polecenia" + +#: error.c:407 +msgid "bad connector" +msgstr "z³y ³±cznik" + +#: error.c:408 +msgid "bad jump" +msgstr "z³y skok" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nieustawiona zmienna" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aprzekroczony czas oczekiwania na dane wej¶ciowe: auto-wylogowanie\n" + +#: execute_cmd.c:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': nieprawid³owy znak formatuj±cy" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "b³±d zapisu: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ograniczony: nie mo¿na podawaæ `/' w nazwach poleceñ" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: nie znaleziono polecenia" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: z³y interpreter" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nie mo¿na skopiowaæ deskryptora pliku %d do %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "przekroczone ograniczenie poziomu rekursji dla wyra¿enia" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "niedomiar stosu rekursji" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "b³±d sk³adniowy w wyra¿eniu" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "próba przypisania do nie-zmiennej" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "dzielenie przez 0" + +# ??? +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "b³±d: z³y prefiks operatora przypisuj±cego" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "spodziewano siê `:' w wyra¿eniu warunkowym" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "wyk³adnik mniejszy ni¿ 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" + +#: expr.c:854 +msgid "missing `)'" +msgstr "brakuj±cy `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "b³±d sk³adni: spodziewany argument" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "b³±d sk³adni: nieprawid³owy operator arytmetyczny" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "nieprawid³owa podstawa arytmetyczna" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "warto¶æ za du¿a na podstawê" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: oczekiwano wyra¿enia ca³kowitego" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: niemo¿liwy dostêp do katalogów nadrzêdnych" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nie mo¿na wy³±czyæ trybu nieblokuj±cego dla deskryptora %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +# ??? +#: jobs.c:887 +#, 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:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "usuwanie zatrzymanego zadania %d z grup± procesów %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: brak takiego PID-u" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Brak rekordu dla procesu %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: zadanie %d jest zatrzymane" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: zadanie zosta³o przerwane" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: zadanie %d ju¿ pracuje w tle" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: uwaga: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "w tej pow³oce nie ma kontroli zadañ" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: za³o¿enie, ¿e %s nie jest spe³nione\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "%s: nieznany host" + +# ??? +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: nieprawid³owy blok na li¶cie wolnych bloków" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: wywo³ane dla bloku, który ju¿ zosta³ zwolniony" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: wywo³ane dla bloku, który nie zosta³ przydzielony" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: rozmiar pocz±tkowy i koñcowy fragmentu s± ró¿ne" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: wywo³ane dla bloku, który nie zosta³ przydzielony" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: rozmiar pocz±tkowy i koñcowy fragmentu s± ró¿ne" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "operacje sieciowe nie s± wspierane" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Masz pocztê w $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Masz now± pocztê w $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Poczta w %s jest przeczytana\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "b³±d sk³adni: oczekiwano wyra¿enia arytmetycznego" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "b³±d sk³adni: oczekiwany `;'" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "b³±d sk³adni: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: z³y rodzaj instrukcji %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "nieoczekiwany EOF podczas poszukiwania pasuj±cego `%c'" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" + +#: parse.y:3727 +#, 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:3731 +msgid "syntax error in conditional expression" +msgstr "b³±d sk³adni w wyra¿eniu warunkowym" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "oczekiwano `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "oczekiwano dwuargumentowego operatora warunkowego" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "b³±d sk³adni przy nieoczekiwanym znaczniku `%s'" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "b³±d sk³adni przy `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "b³±d sk³adni: nieoczekiwany koniec pliku" + +#: parse.y:5223 +msgid "syntax error" +msgstr "b³±d sk³adni" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "U¿yj \"%s\", aby opu¶ciæ tê pow³okê.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "nieoczekiwany EOF podczas poszukiwania pasuj±cego `)'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "uzupe³nienie: nie znaleziono funkcji `%s'" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: z³y ³±cznik `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': nieprawid³owy znak formatuj±cy" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "deskryptor pliku poza zakresem" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: nieojednoznaczne przekierowanie" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nie mo¿na nadpisaæ istniej±cego pliku" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ograniczony: nie mo¿na przekierowaæ wyj¶cia" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nie mo¿na utworzyæ pliku tymczasowego dla dokumentu miejscowego: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nie s± wspierane bez sieci" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "b³±d przekierowania: nie mo¿na powieliæ deskryptora pliku" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "nie mo¿na znale¼æ /tmp, proszê o utworzenie!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musi byæ prawid³ow± nazw± katalogu" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: nieprawid³owa opcja" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Nie mam nazwy!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "D³ugie opcje GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opcje pow³oki:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD lub -c polecenie lub -O shopt_option\t\t(tylko wywo³anie)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s lub -o opcja\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, 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" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: nieprawid³owa operacja" + +#: 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 "b³±d sk³adni" + +#: 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 +#, fuzzy +msgid "Terminated" +msgstr "ograniczony" + +#: 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "z³e podstawienie: brak zamykaj±cego `%s' w %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nie mo¿na przypisaæ listy do elementu tablicy" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "nie mo¿na utworzyæ potoku dla podstawienia procesu" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "nie mo¿na utworzyæ procesu potomnego dla podstawienia procesu" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nie mo¿na otworzyæ nazwanego potoku %s do odczytu" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nie mo¿na otworzyæ nazwanego potoku %s do zapisu" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nie mo¿na powieliæ nazwanego potoku %s jako deskryptor %d" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "nie mo¿na utworzyæ potoku dla podstawienia polecenia" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "nie mo¿na utworzyæ procesu potomnego dla podstawienia polecenia" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nie mo¿na powieliæ potoku jako deskryptora 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr pusty lub nieustawiony" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: wyra¿enie dla pod³añcucha < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: z³e podstawienie" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nie mo¿na przypisywaæ w ten sposób" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "z³e podstawienie: brak zamykaj±cego `%s' w %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "brak pasuj±cego: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "oczekiwano argumentu" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oczekiwano wyra¿enia ca³kowitego" + +#: test.c:262 +msgid "`)' expected" +msgstr "oczekiwano `)'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "oczekiwano `)', znaleziono %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oczekiwano operatora jednoargumentowego" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oczekiwano operatora dwuargumentowego" + +#: test.c:806 +msgid "missing `]'" +msgstr "brakuj±cy `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "nieprawid³owy numer sygna³u" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: z³y sygna³ %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "b³±d importu definicji funkcji dla `%s'" + +#: variables.c:736 +#, 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:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: brak kontekstu funkcji w bie¿±cym zakresie" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: brak kontekstu funkcji w bie¿±cym zakresie" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "nieprawid³owy znak %d w exportstr dla %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "brak `=' w exportstr dla %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: brak kontekstu global_variables" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: nag³ówek shell_variables poza zakresem tymczasowego ¶rodowiska" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nie mo¿na przydzieliæ %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nie mo¿na przydzieliæ %lu bajtów" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nie mo¿na ponownie przydzieliæ %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: nie mo¿na przydzieliæ %lu bajtów" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: nie mo¿na przydzieliæ %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: nie mo¿na przydzieliæ %lu bajtów" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: %s:%d: nie mo¿na ponownie przydzieliæ %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: nie mo¿na przydzieliæ %lu bajtów" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "licznik przesuniêcia" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "wymagany argument w postaci nazwy pliku" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "wymagany argument w postaci nazwy pliku" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "spodziewano siê wyra¿enia" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "spodziewano siê wyra¿enia" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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' bez argumentów lub z opcj± -p wypisuje na standardowym wyj¶ciu\n" +" listê aliasów w postaci alias NAME=VALUE. W przeciwnym przypadku\n" +" definiowany jest alias dla ka¿dego NAME, dla którego podano VALUE.\n" +" Spacja na koñcu VALUE powoduje, ¿e podczas rozwijania tego aliasu\n" +" podstawienie aliasów bêdzie przeprowadzone tak¿e dla nastêpnego\n" +" s³owa. Polecenie alias zwraca prawdê, chyba ¿e poda siê NAME, dla\n" +" którego nie zdefiniowano aliasu." + +#: builtins.c:276 +#, 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 "" +"Usuwa wszystkie NAME z listy zdefiniowanych aliasów. Je¶li podano opcjê -a,\n" +" usuwane s± wszystkie definicje aliasów." + +#: builtins.c:289 +#, 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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Przypisanie sekwencji klawiszy do funkcji Readline lub makra albo " +"ustawienie\n" +" zmiennej Readline. Sk³adnia pozbawiona opcji jest równowa¿na stosowanej\n" +" w ~/.inputrc, ale musi byæ przekazana jako jeden argument:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" bind akceptuje nastêpuj±ce opcje:\n" +" -m keymap U¿ycie `keymap' 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" +" -r keyseq Usuniêcie dowi±zania dla KEYSEQ.\n" +" -x keyseq:shell-command\tPowoduje uruchomienie SHELL-COMMAND, gdy\n" +" \t\t\t\twprowadzone zostanie KEYSEQ.\n" +" -f filename Odczyt dowi±zañ dla klawiszy z pliku FILENAME.\n" +" -q function-name Okre¶lenie, które klawisze wywo³uj± zadan± " +"funkcjê.\n" +" -u function-name Anulowanie wszystkich dowi±zañ dla klawiszy\n" +" przypisanych do funkcji function-name.\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" +" -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." + +#: builtins.c:326 +#, fuzzy +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 "" +"Rozpoczêcie nastêpnej iteracji pêtli FOR, WHILE lub UNTIL zawier±jacej\n" +" polecenie. Je¶li podano N, iteracja dotyczy pêtli N-tego poziomu." + +#: builtins.c:338 +#, 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 "" +"Rozpoczêcie nastêpnej iteracji pêtli FOR, WHILE lub UNTIL zawier±jacej\n" +" polecenie. Je¶li podano N, iteracja dotyczy pêtli N-tego poziomu." + +#: builtins.c:350 +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:365 +#, 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 "" +"Zwrócenie kontekstu wywo³ania bie¿±cej procedury.\n" +" \n" +" Bez EXPR, zwracane jest \"$line $filename\". Z EXPR, zwracane jest\n" +" \"$line $subroutine $filename\"; dodatkowe informacje s³u¿± do\n" +" udostêpnienia ¶ladu stosu.\n" +" \n" +" Warto¶æ EXPR okre¶la o ile ramek wywo³añ wzglêdem bie¿±cej ramki\n" +" nale¿y siê cofn±æ; numer najwy¿szej ramki to 0." + +#: builtins.c:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"Zmiana bie¿±cego katalogu na DIR. Domy¶lnym DIR jest zmienna $HOME.\n" +" Zmienna CDPATH okre¶la ¶cie¿kê przeszukiwania w poszukiwaniu katalogu\n" +" zawieraj±cego DIR. Alternatywne nazwy katalogów s± w CDPATH rozdzielone\n" +" dwukropkami (:). Pusta nazwa katalogu oznacza to samo, co katalog\n" +" bie¿±cy, tzn. `.'. Je¶li DIR zaczyna siê od uko¶nika (/), to CDPATH nie\n" +" nie jest u¿ywane. Gdy katalog nie zostanie znaleziony, a ustawiona\n" +" zmienna pow³oki `cdable_vars', to nastêpuje próba u¿ycia podanej nazwy\n" +" jako nazwy zmiennej. Je¶li zmienna ta ma warto¶æ, to wykonywane jest cd\n" +" do warto¶ci tej zmiennej. Opcja -P poleca korzystaæ z fizycznej " +"struktury\n" +" katalogów zamiast ¶ledzenia dowi±zañ symbolicznych; opcja -L wymusza\n" +" ¶ledzenie dowi±zañ symbolicznych." + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"¯adnego efektu; polecenie nic nie robi. Jako kod zakoñczenia\n" +" zwracane jest zero." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Zwracany jest niepomy¶lny wynik zakoñczenia." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +#, 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Deklarowanie zmiennych i/lub nadawanie im atrybutów. Je¶li nie podano NAME,\n" +" wypisywane s± warto¶ci zmiennych. Opcja -p powoduje wypisanie atrybutów\n" +" i warto¶ci dla ka¿dego NAME.\n" +" \n" +" Pozosta³e opcje:\n" +" \n" +" -a\tuczynienie wszystkich NAME tablicami (je¶li wspierane)\n" +" -f\twybranie tylko spo¶ród nazw funkcji\n" +" -F\twypisanie nazw funkcji (oraz, w przypadku ¶ledzenia, numerów\n" +" \twierszy i nazw plików) bez definicji\n" +" -i\tnadanie wszystkim NAME atrybutu `integer'\n" +" -r\tuczynienie wszystkich NAME tylko do odczytu\n" +" -t\tnadanie wszystkim NAME atrybutu `trace'\n" +" -x\tuczynienie wszystkich NAME eksportowanymi\n" +" \n" +" Dla zmiennych posiadaj±cych atrybut integer wykonywana jest podczas\n" +" nadawania im warto¶ci ewaluacja arytmetyczna (patrz `let').\n" +" \n" +" Przy wypisywaniu warto¶ci zmiennych, -f powoduje wypisanie zarówno " +"nazw,\n" +" jak i definicji funkcji. Przy opcji -F wypisywane s± tylko nazwy " +"funkcji.\n" +" \n" +" U¿ycie `+' zamiast `-' powoduje wy³±czenie danego atrybutu. U¿yte\n" +" w funkcji czyni wszystkie NAME lokalnymi, podobnie jak polecenie `local'." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +#, fuzzy +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Wypisanie argumentów. Je¶li podano -n, pomijany jest koñcowy znak nowego\n" +" wiersza. Je¶li podano opcjê -e, w³±czana jest interpretacja " +"nastêpuj±cych\n" +" znaków poprzedzonych odwrotnym uko¶nikiem:\n" +" \t\\a\talarm (dzwonek)\n" +" \t\\b\tcofanie\n" +" \t\\c\tlikwidacja koñcowego znaku nowego wiersza\n" +" \t\\E\tznak ESCAPE\n" +" \t\\f\twysuw strony\n" +" \t\\n\tnowy wiersz\n" +" \t\\r\tpowrót karetki\n" +" \t\\t\ttabulacja pozioma\n" +" \t\\v\ttabulacja pionowa\n" +" \t\\\\\todwrotny uko¶nik\n" +" \t\\0nnn\tznak o kodzie ASCII NNN (ósemkowo). NNN mo¿e stanowiæ od\n" +" \t\t0 do 3 cyfr ósemkowych\n" +" \n" +" Za pomoc± opcji -E mo¿na jawnie wy³±czyæ interpretacjê powy¿szych znaków." + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "" +"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:698 +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:708 +#, fuzzy +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 "" +"fc s³u¿y do wypisywania, edycji i pomownego uruchamiania poleceñ z listy\n" +" historii. FIRST i LAST jako liczby okre¶laj± zakres lub FIRST jako " +"napis\n" +" oznacza najpó¼niej wykonywane polecenie zaczynaj±ce siê od tego napisu.\n" +" \n" +" -e ENAME okre¶la edytor, który ma byæ u¿ywany. Domy¶lnymi " +"warto¶ciami\n" +" s±: najpierw FCEDIT, potem EDITOR, a na koñcu vi.\n" +" \n" +" -l oznacza wypisysanie wierszy zamiast ich edycji.\n" +" -n oznacza niewypisysanie numerów wierszy.\n" +" -r oznacza odwrócenie kolejno¶ci wierszy (czyni±c najnowsze wypisane\n" +" polecenie pierwszym).\n" +" \n" +" Przy wywo³aniu polecenia w postaci `fc -s [pat=rep ...] [command]',\n" +" jest ono wywo³ywane ponownie po wykonaniu podstawienia OLD=NEW.\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." + +#: builtins.c:738 +#, fuzzy +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 "" +"Umieszczenie JOB_SPEC na pierwszym planie oraz uczynienie go bie¿±cym\n" +" zadaniem. Je¶li nie podano JOB_SPEC, u¿yte zostanie zadanie bie¿±ce\n" +" w rozumieniu pow³oki" + +#: builtins.c:753 +#, fuzzy +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 "" +"Umieszczenie wszystkich JOB_SPEC w tle tak, jakby zosta³y uruchomione\n" +" z `&'. Je¶li nie podano JOB_SPEC, u¿yte zostanie zadanie bie¿±ce\n" +" w rozumieniu pow³oki" + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +#, 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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 "" +"Wypisanie aktywnych zadañ. Opcja -l powoduje wypisanie oprócz zwyk³ej\n" +" informacji tak¿e numerów PID procesów; Opcja -p powoduje wypisanie " +"tylko\n" +" numerów PID procesów. Przy podaniu opcji -n, wypisywane s± tylko te\n" +" procesy, których stan uleg³ zmianie od ostatniego powiadomienia.\n" +" JOBSPEC ogranicza wypisywanie do danego zadania. Opcje -r i -s\n" +" ograniczaj± wypisywanie do zadañ, odpowiednio, dzia³aj±cych i\n" +" zatrzymanych. Bez opcji wypisywany jest stan wszystkich aktywnych " +"zadañ.\n" +" Przy podaniu -x, uruchamiane jet polecenie COMMAND po zast±pieniu\n" +" ka¿dej z wystêpuj±cych w ARGS specyfikacji zadañ numerem PID procesu\n" +" wiod±cego danego zadania." + +#: builtins.c:879 +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" +" \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:898 +#, 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" +" \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 "" +"Wys³anie do procesów okre¶lonych przez PID (lub JOBSPEC) sygna³u SIGSPEC.\n" +" Gdy SIGSPEC nie jest podany, zak³ada siê, ¿e chodzi o SIGTERM. Argument\n" +" `-l' powoduje wypisanie nazw sygna³ów; je¶li po `-l' wystêpuj± jakie¶\n" +" argumenty, zak³ada siê, ¿e s± to numery sygna³ów, dla których nale¿y\n" +" wypisaæ nazwy. Kill jest poleceniem wewnêtrznym z dwóch powodów:\n" +" umo¿liwia korzystanie z identyfikatorów zadañ zamiast numerów PID\n" +" oraz, w przypadku osi±gniêcia ograniczenia na liczbê procesów, nie\n" +" powoduje potrzeby uruchamiania dodatkowego procesu, aby jaki¶ ubiæ." + +#: builtins.c:921 +#, 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 "" +"Ka¿dy z argumentów jest wyra¿eniem arytmetycznym do obliczenia. 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. Nastêpuj±ca lista operatorów jest pogrupowana na poziomy\n" +" operatorów o jednakowym priorytecie.\n" +" Poziomy s± wypisane w kolejno¶ci 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, dzieleni, reszta z dzielenia\n" +" \t+, -\t\tdodawanie, odejmowanie\n" +" \t<<, >>\t\tlewe i prawe przesuniêcie bitowe\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" +" Je¶li warto¶ci± ostatniego argumentu jest 0, let zwraca 1;\n" +" w pozosta³ych przypadkach zwracane jest 0." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Odczytanie pojedynczego wiersza ze standardowego wej¶cia lub z deskryptora\n" +" pliku FD, je¶li podano opcjê -u. Przypisanie pierwszego odczytanego\n" +" s³owa do pierwszego NAME, drugiego - do drugiego NAME itd., pozosta³e\n" +" nadmiarowe s³owa przypisuj±c do ostatniego NAME. Jako separatory s³ów\n" +" rozpoznawane s± jedynie znaki wystêpuj±ce w $IFS. W razie nie podania\n" +" ¿adnego NAME, przeczytany wiersz jest przechowywany w zmiennej REPLY.\n" +" Podanie opcji -r, oznacza wej¶cie `surowe' i wy³±czenie cytowania przez\n" +" odwrotny uko¶nik. Opcja -d powoduje czytanie do napotkania pierwszego\n" +" znaku DELIM, a nie do znaku nowego wiersza. Gdy podana zostanie opcja\n" +" -p, przed odczytem wyprowadzany jest napis PROMPT bez nastêpuj±cego po\n" +" nim znaku koñca wiersza. Gdy podana zostanie opcja -a, odczytane s³owa\n" +" s± przypisywane do kolejnych indeksów tablicy ARRAY, pocz±wszy od zera.\n" +" Gdy podana zostanie opcja -e a pow³oka jest interakcyjna, wiersz jest\n" +" pobierany za pomoc± readline. Podanie -n z niezerowym argumentem NCHARS\n" +" powoduje, ¿e odczyt koñczy siê po odczytaniu NCHARS znaków. Opcja -s\n" +" powoduje, ¿e odczyt z terminala odbywa siê bez echa.\n" +" \n" +" Opcja -t powoduje przeterminowanie odczytu i zwrócenie b³êdy, je¿eli\n" +" w ci±gu TIMEOUT sekund nie zostanie odczytany pe³en wiersz. Je¶li\n" +" ustawiona jest zmienna TMOUT, jej warto¶æ stanowi domy¶lny timeout.\n" +" Kodem powrotu jest zero, chyba ¿e napotkano koniec pliku, wyst±pi³\n" +" timeout odczytu lub jako argument dla -u podano nieprawid³owy " +"deskryptor\n" +" pliku." + +#: builtins.c:1006 +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:1019 +#, 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 follow 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" +" 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 "" +" -a Oznaczenie zmiennych, które zosta³y zmodyfikowane lub utworzone " +"jako\n" +" eksportowane.\n" +" -b Natychmiastowe powiadomienie o zakoñczeniu zadania.\n" +" -e Natychmiastowe zakoñczenie, gdy polecenie zakoñczy siê z\n" +" niezerowym 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 o\n" +" postaci przypisania, nie tylko tych, które poprzedzaja nazwê\n" +" polecenia.\n" +" -m W³±czenie kontroli zadañ.\n" +" -n Czytanie poleceñ, lecz niewykonywanie 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 nie koñczenie pow³oki po odczytaniu EOF\n" +" interactive-comments\n" +" pozwolenie na wyst±pienie komentarzy\n" +" w poleceniach interakcyjnych\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" +" 1003.2 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\n" +" 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, nie pozwalanie 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 interakcyjnej.\n" +" -P Gdy ustawione, nie ¶ledzenie dowi±zañ symbolicznych podczas\n" +" uruchamiania poleceñ takich, jak cd, które zmieniaj± katalog\n" +" bie¿±cy.\n" +" -T Gdy ustawione, dziedziczenie pu³apki DEBUG przez funkcje " +"pow³oki.\n" +" - Przypisywanie pozostaj±cych 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\n" +" nich tak¿e korzystaæ przy uruchomieniu pow³oki. Aktualny zestaw opcji\n" +" mo¿na znale¼æ w $-. Pozosta³e n argumentów staje siê parametrami\n" +" pozycyjnymi i s± one przypisane, kolejno, do $1, $2, .. $n. Gdy nie\n" +" zostan± podane ¿adne argumenty, wypisywane s± wszystkie zmienne pow³oki." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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 "" +"Odczytanie i uruchomienie poleceñ z pliku FILENAME oraz powrót. Do\n" +" znalezienia katalogu zawieraj±cego FILENAME u¿ywane s± ¶cie¿ki zawarte\n" +" w $PATH. Je¶li podane zostan± jakiekolwiek ARGUMENTS, staj± siê\n" +" parametrami pozycyjnymi podczas uruchomienia FILENAME." + +#: builtins.c:1204 +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:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +"Polecenie zwracaj±ce kod 0 (prawda) lub 1 (fa³sz) w zalezno¶ci od wyniku\n" +" obliczenia wyra¿enia EXPR. Wyra¿enia mog± mieæ postaæ jedno- lub\n" +" dwuargumentow±. jednoargumentowe wyra¿enia s³u¿± zwykle do badania " +"stanu\n" +" pliku. Istniej± równiez operatory dzia³aj±ce na ³añcuchach tekstowych,\n" +" jak te¿ operatory numerycznego porównania.\n" +" \n" +" Operatory plikowe:\n" +" \n" +" -a FILE Prawda, gdy FILE istnieje.\n" +" -b FILE Prawda, gdy FILE jest plikiem specjalnym urz±dzenia\n" +" blokowego.\n" +" -c FILE Prawda, gdy FILE jest plikiem specjalnym urz±dzenia\n" +" znakowego.\n" +" -d FILE Prawda, gdy FILE jest katalogiem.\n" +" -e FILE Prawda, gdy FILE istnieje.\n" +" -f FILE Prawda, gdy FILE istnieje i jest zwyk³ym plikiem.\n" +" -g FILE Prawda, gdy FILE ma ustawiony bit SGID.\n" +" -h FILE Prawda, gdy FILE jest dowi±zaniem symbolicznym.\n" +" -L FILE Prawda, gdy FILE jest dowi±zaniem symbolicznym.\n" +" -k FILE Prawda, gdy FILE ma ustawiony bit `sticky'.\n" +" -p FILE Prawda, gdy FILE jest nazwanym potokiem.\n" +" -r FILE Prawda, gdy FILE jest odczytywalny przez " +"u¿ytkownika.\n" +" -s FILE Prawda, gdy FILE istnieje i jest niepusty.\n" +" -S FILE Prawda, gdy FILE jest gniazdem.\n" +" -t FD Prawda, gdy FD jest otwarty na terminalu.\n" +" -u FILE Prawda, gdy FILE ma ustawiony bit SUID.\n" +" -w FILE Prawda, gdy FILE jest zapisywalny przez u¿ytkownika.\n" +" -x FILE Prawda, gdy FILE jest uruchamialny przez " +"u¿ytkownika.\n" +" -O FILE Prawda, gdy u¿ytkownik jest efentywnym w³a¶cicielem\n" +" FILE.\n" +" -G FILE Prawda, grupa u¿ytkownika jest efentywnym " +"w³a¶cicielem\n" +" FILE.\n" +" -N FILE Prawda, gdy FILE zosta³ zmodyfikowany po ostatnim\n" +" odczycie.\n" +" \n" +" FILE1 -nt FILE2 Prawda, gdy FILE1 jest nowszy ni¿ FILE2 (porównuj±c\n" +" czas ostatniej modyfikacji).\n" +" \n" +" FILE1 -ot FILE2 Prawda, gdy FILE1 jest starszy ni¿ FILE2.\n" +" \n" +" FILE1 -ef FILE2 Prawda, gdy FILE1 jest twardym dowi±zaniem do FILE2.\n" +" \n" +" Operatory ³añcuchowe:\n" +" \n" +" -z STRING Prawda, gdy STRING jest pusty.\n" +" \n" +" -n STRING\n" +" STRING Prawda, gdy STRING nie jest pusty.\n" +" \n" +" STRING1 = STRING2\n" +" Prawda, gdy STRING1 i STRING2 s± równe.\n" +" STRING1 != STRING2\n" +" Prawda, gdy STRING1 i STRING2 nie s± równe.\n" +" STRING1 < STRING2\n" +" Prawda, gdy STRING1 znajduje siê w porz±dku\n" +" leksykograficznym przed STRING2.\n" +" STRING1 > STRING2\n" +" Prawda, gdy STRING1 znajduje siê w porz±dku\n" +" leksykograficznym po STRING2.\n" +" \n" +" Inne operatory:\n" +" \n" +" -o OPTION Prawda, gdy opcja pow³oki OPTION jest w³±czona.\n" +" ! EXPR Prawda, gdy EXPR jest fa³szywe.\n" +" EXPR1 -a EXPR2 Prawda, gdy zarówno EXPR1, jak i EXPR2 s± prawdziwe.\n" +" EXPR1 -o EXPR2 Prawda, gdy EXPR1 lub EXPR2 jest prawdziwe.\n" +" \n" +" arg1 OP arg2 Testy arytmetyczne. OP jest jednym z -eq, -ne, -lt,\n" +" -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." + +#: builtins.c:1296 +#, fuzzy +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 "" +"Jest to synonim dla wbudowanego polecenia \"test\", ale wymagaj±cy, by\n" +" ostatnim argumentem by³ `]' pasuj±cy do pocz±tkowego `['." + +#: builtins.c:1305 +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:1317 +#, 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.\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 "" +"Gdy pow³oka otrzyma sygna³(y) SIGNAL_SPEC, odczytywane i uruchamiane jest\n" +" polecenie podane jako argument ARG. W azie braku argumentów (i podaniu\n" +" pojedynczego SIGNAL_SPEC) lub gdy argumentem jest `-', ka¿demu z " +"podanych\n" +" sygna³ów jest przywracana pierwotna warto¶æ. Je¶li ARG jest pustym\n" +" ³añcuchem, ka¿dy SIGNAL_SPEC jest ignorowany przez pow³okê i wywo³ane\n" +" przez ni± polecenia. Je¿eli jako SIGNAL_SPEC podano EXIT (0), polecenie\n" +" ARG jest uruchamiane przy opuszczaniu pow³oki. Je¶li jako SIGNAL_SPEC\n" +" podano DEBUG, ARG jest uruchamiane po ka¿dym poleceniu prostym.\n" +" W przypadku podania opcji -p, wypisywane s± polecenia trap skojarzone\n" +" z poszczególnymi SIGNAL_SPEC. W przypadku braku argumentów lub gdy\n" +" podano jedynie opcjê -p, trap wypisuje listê poleceñ skojarzonych ze\n" +" wszystkimi mo¿liwymi sygna³ami. Ka¿de z SIGNAL_SPEC mo¿e byæ albo nazw±\n" +" sygna³u wg. lub numerem sygna³u. Nazwy sygna³ów s± " +"niewra¿liwe\n" +" na wielko¶æ liter a prefiks SIG jest opcjonalny. `trap -l' wypisuje " +"listê\n" +" nazw sygna³ów wraz z odpowiadaj±cymi im numerami. Nale¿y zauwa¿yæ, ¿e\n" +" sygna³ mo¿na wys³aæ do pow³oki poleceniem \"kill -signal $$\"." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +#, 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" +" -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" +" \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 "" +"Ulimit zapewnia z poziomu pow³oki kontrolê ilo¶ci zasobów udostêpnionych\n" +" procesom w systemach, które tak± kontrolê umo¿liwiaj±. Gdy podana jest\n" +" opcja, ma ona nastêpujêce znaczenie:\n" +" \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" +" -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\n" +" \tprocesy potomne\n" +" -i\tmaksymalna liczba oczekuj±cych sygna³ów\n" +" -l\tmaksymalny rozmiar pamiêci, któr± proces mo¿e zablokowaæ\n" +" -m\tmaksymalna ilo¶æ rezydentnych stron 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\n" +" \trzeczywistego\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" +" \n" +" Gdy podano warto¶æ LIMIT, stanowi ona now± warto¶æ ograniczenia dla\n" +" danego zasobu; specjalne warto¶ci LIMIT: `soft', `hard' i `unlimited'\n" +" oznaczaj±, odpowiednio, aktualne ograniczenie miêkkie, sztywne i brak\n" +" ograniczenia.\n" +" W przeciwnym przypadku wypisywana jest aktualna warto¶æ podanego\n" +" ograniczenia.\n" +" Gdy nie podano opcji, przyjmuje siê, ¿e podano -f. Warto¶ci s± podawane\n" +" w jednostkach 1024-bajtowych, za wyj±tkiem -t, które jest w sekundach,\n" +" -p, które jest w jednostkach 512-bajtowych oraz -u, które jest\n" +" bezwymiarow± liczb± procesów." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Oczekiwanie na podany proces i zg³oszenie jego statusu zakoñczenia. Gdy nie\n" +" zostanie podane N, oczekiwanie dotyczy wszystkich aktualnie aktywnych\n" +" procesów potomnych, a kodem powrotu jest zero. N mo¿e byæ numerem PID\n" +" procesu lub specyfikacj± zadania; gdy jest specyfikacj± zadania,\n" +" oczekiwanie dotyczy wszystkich procesów w potoku zadania." + +#: builtins.c:1478 +#, fuzzy +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 "" +"Pêtla `for' uruchamia ci±g poleceñ dla ka¿dego elementu podanej listy. Gdy\n" +" nie zostanie podane `in WORDS ...;', zak³ada siê, ¿e podano `in \"$@" +"\"'.\n" +" Dla ka¿dego elementu WORDS, NAME jest ustawiane na ten element\n" +" i uruchamiane s± COMMANDS." + +#: builtins.c:1492 +#, fuzzy +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 "" +"Równowa¿ne\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2 i EXP3 s± wyra¿eniami arytmetycznymi. Je¶li które¶ z wyra¿eñ\n" +" zostanie pominiête, zachowanie jest takie, jaby mia³o ono warto¶æ 1." + +#: builtins.c:1510 +#, fuzzy +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 "" +"WORDS jest rozwijane, generhj±c listê s³ów. Zbiór rozwiniêtych s³ów\n" +" wypisywany jest na standardowej diagnostyce, a ka¿de s³owo jest\n" +" poprzedzone przez liczbê. Gdy nie zostanie podane `in WORDS', 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 NAME jest\n" +" ustawiane na to s³owo. Gdy wiersz jest pusty, WORDS i tekst zachêty s±\n" +" Wy¶wietlane ponownie. Gdy odczytany zostanie EOF, polecenie siê koñczy.\n" +" Ka¿da inna warto¶æ powoduje przypisanie NAME warto¶ci pustej. Odczytany\n" +" wiersz jest zachowywany w zmiennej REPLY. Po ka¿dym wyborze uruchamiane\n" +" s± polecenia COMMANDS a¿ do polecenia break." + +#: builtins.c:1531 +#, fuzzy +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 "" +"Uruchomienie PIPELINE i wypisanie podsumowania zawieraj±cego czas " +"rzeczywisty,\n" +" czas procesora w trybie u¿ytkownika oraz czas procesora w trybie " +"systemu,\n" +" jakie spêdzi³o polecenie PIPELINE do chwili zatrzymania. Kod " +"zakoñczenia\n" +" jest kodem zakoñczenia polecenia PIPELINE. Opcja `-p' powoduje " +"wypisanie\n" +" podsumowania czasów w nieco innej postaci. U¿ywana jest wtedy warto¶æ\n" +" zmiennej TIMEFORMAT jako format danych wyj¶ciowych." + +#: builtins.c:1548 +#, fuzzy +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 "" +"Wybiórcze uruchamianie poleceñ COMMANDS w zale¿no¶ci od tego, czy WORD " +"pasuje\n" +" do wzorca PATTERN. Znak `|' s³u¿y do rozdzielania wielu wzorców." + +#: builtins.c:1560 +#, fuzzy +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 "" +"Uruchomiana jest lista `if COMMANDS'. Gdy jej kod powrotu jest zerem,\n" +" uruchamiana jest lista `then COMMANDS'. W przeciwnym przypadku\n" +" uruchamiane s± poszczególne listy `elif COMMANDS' i, je¶li kod powrotu\n" +" takiej listy jest zerem, uruchamiana jest odpowiednia lista\n" +" `then COMMANDS' i polecenie if siê koñczy. W przeciwnym przypadku\n" +" uruchamiana jest lista `else COMMANDS', 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." + +#: builtins.c:1577 +#, 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 "" +"Rozwijanie i uruchamianie poleceñ COMMANDS tak d³ugo, dopóki ostatnie\n" +" polecenie w `while' COMMANDS koñczy siê z kodem zero." + +#: builtins.c:1589 +#, 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 "" +"Rozwijanie i uruchamianie poleceñ COMMANDS tak d³ugo, dopóki ostatnie\n" +" polecenie w `until' COMMANDS koñczy siê z kodem niezerowym." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "" +"Uruchomienie zbioru poleceñ jako grupy. W ten sposób mo¿na przekierowaæ\n" +" ca³y zbiór poleceñ." + +#: builtins.c:1641 +#, fuzzy +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 "" +"Równowa¿ne argumentowi JOB_SPEC polecenia `fg'. Wznowienie zatrzymanego lub\n" +" dzia³aj±cego w tle zadania. JOB_SPEC mo¿e okre¶laæ albo nazwê zadania\n" +" albo jego numer. Umieszczenie `&' po JOB_SPEC umieszcza zadanie w tle\n" +" tak, jak to siê dzieje po podaniu specyfikacji zadania jako argumentu " +"dla\n" +" `bg'." + +#: builtins.c:1656 +#, 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 EXPRESSION zgodnie z zasadami obliczania wyra¿eñ\n" +" arytmetycznych. Równowa¿ne \"let EXPRESSION\"." + +#: builtins.c:1668 +#, fuzzy +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 "" +"Zwraca status wynosz±cy 0 lub 1 w zale¿no¶ci od wyniku wyra¿enia " +"warynkowego\n" +" EXPRESSION. Wyra¿enia s± tworzone na tych samych zasadach, jak\n" +" w poleceniu `test' i mog± byæ ³±czone za pomoc± nastêpuj±cych " +"operatorów\n" +" \n" +" \t( EXPRESSION )\tZwraca warto¶æ EXPRESSION\n" +" \t! EXPRESSION\tPrawdziwe, gdy EXPRESSION jest fa³szywe; fa³szywe\n" +" \t\tw innym przypadku\n" +" \tEXPR1 && EXPR2\tPrawdziwe, gdy zarówno EXPR1 jak i EXPR2 s± " +"prawdziwe;\n" +" \t\tfa³szywe w innym przypadku\n" +" \tEXPR1 || EXPR2\tPrawdziwe, gdy EXPR1 lub EXPR2 jest prawdziwe;\n" +" \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. Operatory && i || nie opliczaj± EXPR2, je¶li obliczenie EXPR1\n" +" wystarcza do okre¶lenia warto¶ci wyra¿enia." + +#: builtins.c:1694 +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:1751 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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" +" +N\tRotacja stosu czyni±ca jego wierzcho³kiem N-ty katalog (licz±c od\n" +" \tlewej strony listy wypisywanej przez `dirs', pocz±wszy od zera).\n" +" \n" +" -N\tRotacja stosu czyni±ca jego wierzcho³kiem N-ty katalog (licz±c od\n" +" \tprawej strony listy wypisywanej przez `dirs', pocz±wszy od zera).\n" +" \n" +" -n\tPominiêcie zmiany katalogu podczas umieszczania katalogów na\n" +" \tstosie tak, ¿e zmieniany jest tylko stos.\n" +" \n" +" dir\tUmieszczenie DIR na wierzcho³ku stosu i uczynienie go nowym\n" +" \tbie¿±cym katalogiem roboczym.\n" +" \n" +" Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." + +#: builtins.c:1785 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +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" +" +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 pierwszy katalog, `popd -1' usuwa drugi.\n" +" \n" +" -n\tPominiêcie zmiany katalogu podczas usuwania katalogów ze stosu tak,\n" +" \t¿e zmieniany jest tylko stos.\n" +" \n" +" Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." + +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +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" +" Znacznik -l oznacza, ¿e `dirs' nie powinno wypisywaæ katalogów w " +"skróconej\n" +" wersji, tzn. wzglêdem katalogu domowego wywo³uj±cego. Oznacza to, ¿e\n" +" `~/bin' mo¿e zostaæ wypisany jako `/homes/bfox/bin'. Znacznik -v " +"powoduje,\n" +" ¿e `dirs' wypisuje katalogi w osobnych wierszach, poprzedzaj±c ka¿dy\n" +" z nich jego pozycj± na stosie. Znacznik -p powoduje to samo, lecz bez\n" +" podawania pozycji na stosie. Znacznik -c powoduje wyczyszczenie stosu\n" +" katalogów poprzez usuniêcie wszystkich jego elementów.\n" +" \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.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +"Wypisanie mo¿liwych uzupe³nieñ w zale¿no¶ci od opcji. Przeznaczone do\n" +" wykorzystania w funkcjach pow³oki generuj±cych mo¿liwe uzupe³nienia.\n" +" Gdy podany jest opcjonalny argument WORD, generowane s± uzupe³nienia\n" +" pasuj±ce do WORD." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid " " +#~ msgstr " " + +# tekst wielowierszowy! +# +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Bez EXPR zwraca \"$line $filename\". Z EXPR zwraca" + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "\"$line $subroutine $filename\"; te dodatkowe informacje" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "mog± s³u¿yæ umo¿liwieniu ¶ledzenia stosu." + +# tekst wielowierszowy! +# +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "Warto¶æ EXPR okre¶la o ile ramek wywo³añ wzglêdem bie¿±cej ramki" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "nale¿y siê cofn±æ; ramka na szczycie stosu ma numer 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: nieprawid³owa liczba" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Polecenia pow³oki pasuj±ce do s³ów kluczowych `" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Wy¶wietla listê aktualnie pamiêtanych katalogów. Katalogi" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "umieszczane s± na li¶cie za pomoc± polecenia `pushd'; cofanie siê" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "na li¶cie odbywa siê za pomoc± polecenia `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "Opcja -l oznacza, ¿e `dirs' nie powinno wypisywaæ skróconej wersji" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "tych katalogów, które odnosz± siê do katalogu domowego. Oznacza to, ¿e" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "`~/bin' mo¿e zostaæ wypisane jako `/homes/bfox/bin'. Opcja -v powoduje," + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "¿e `dirs' wypisuje listê katalogów w osobnych wierszach, poprzedzaj±c" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "nazwy katalogów ich numerami pozycji na stosie. Opcja -p robi to samo," + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "ale nie poprzedza numerami pozycji." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "Opcja -c czy¶ci stos katalogów usuwaj±c wszystkie jego elementy." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N wypisuje N-t± z kolei pozycjê od lewej w odniesieniu do listy" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " wypisywanej przy wywo³aniu dirs bez opcji, licz±c od zera." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N wypisuje N-t± z kolei pozycjê od prawej w odniesieniu do listy" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Dodaje katalog na wierzcho³ku stosu lub wykonuje rotacjê stosu," + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "czyni±c jego wierzcho³kiem aktualny katalog bie¿±cy." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Bez argumentów zamienia dwa katalogi po³o¿one najwy¿ej na stosie." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Wykonuje rotacjê stosu tak, ¿e N-ty katalog (licz±c od" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " lewej w odniesieniu do listy wypisywanej przez `dirs'," + +#~ msgid " zero) is at the top." +#~ msgstr " pocz±wszy od zera) znajdzie siê na wierzcho³ku." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Wykonuje rotacjê stosu tak, ¿e N-ty katalog (licz±c od" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " prawej w odniesieniu do listy wypisywanej przez `dirs'," + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n wy³±cza zwyk³± zmianê katalogu przy umieszczaniu katalogów na" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " stosie tak, ¿e zmieniany jest tylko stos." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir umieszcza DIR na wierzcho³ku stosu katalogów, czyni±c go" + +#~ msgid " new current working directory." +#~ msgstr " nowym katalogiem bie¿±cym." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Stos katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Usuwa pozycje ze stosu katalogów. Bez argumentów, usuwa ze" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "stosu najwy¿szy katalog oraz wykonuje cd do nowego najwy¿szego" + +#~ msgid "top directory." +#~ msgstr "katalogu." + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N usuwa N-t± z kolei pozycjê od lewej w odniesieniu do listy" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " wypisywanej przez `dirs', licz±c od zera. Np.: `popd +0'" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " usuwa pierwszy katalog a `popd +1' usuwa drugi." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N usuwa N-t± z kolei pozycjê od prawej w odniesieniu do listy" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " wypisywanej przez `dirs', licz±c od zera. Np.: `popd -0'" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " usuwa ostatni katalog a `popd -1' usuwa przedostatni." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "-n wy³±cza zwyk³± zmianê katalogu przy usuwaniu katalogów ze" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " stosu tak, ¿e zmieniany jest tylko stos." + +#~ msgid "allocated" +#~ msgstr "przydzielony" + +#~ msgid "freed" +#~ msgstr "zwolniony" + +#~ msgid "requesting resize" +#~ msgstr "wymagaj±cy zmiany rozmiaru" + +#~ msgid "just resized" +#~ msgstr "o w³a¶nie zmienionym rozmiarze" + +#~ msgid "bug: unknown operation" +#~ msgstr "b³±d: nieznana operacja" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: alarm stra¿nka: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "Wyj¶cie z wnêtrza pêtli FOR, WHILE lub UNTIL. Je¶li podano N, " +#~ "przerywanych\n" +#~ " jest N poziomów pêtli." + +#~ 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 "" +#~ "Uruchomienie wewnêtrznego polecenia pow³oki. Przydatne przy zastêpowaniu\n" +#~ " polecenia pow³oki funkcj±, wewn±trz której wymagane jest wywo³anie " +#~ "tego\n" +#~ " polecenia pow³oki." + +#~ 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 "" +#~ "Wypisanie bia¿±cego katalogu roboczego. Z opcj± -P, pwd wypisuje " +#~ "katalog\n" +#~ " fizyczny, bez dowi±zañ symbolicznych; opcja -L powoduje, ¿e pwd " +#~ "pod±¿a\n" +#~ " za dowi±zaniami symbolicznymi." + +#~ msgid "Return a successful result." +#~ msgstr "Zwracany jest pomy¶lny wynik zakoñczenia." + +#~ 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 "" +#~ "Uruchomienie COMMAND z argumentami ARGS ignoruj±c funkcje pow³oki. Je¶li\n" +#~ " istnieje funkcja pow³oki o nazwie `ls', a istnieje potrzeba " +#~ "wywo³ania\n" +#~ " polecenia `ls', mo¿na napisaæ \"command ls\". Je¶li podano opcje -p,\n" +#~ " u¿ywana jest domy¶lna warto¶æ PATH, co zapewnia odnalezienie " +#~ "wszystkich\n" +#~ " standardowych narzêdzi. Je¶li podano opcjê -V lub -v, wypisywany " +#~ "jest\n" +#~ " napis opisuj±cy COMMAND. Opcja -V generuje obszerniejszy opis." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Przestarza³e. Patrz `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 "" +#~ "Utworzenie zmiennej lokalnej o nazwie NAME, i nadanie jej warto¶ci " +#~ "VALUE.\n" +#~ " LOCAL mo¿na u¿yæ jedynie wewn±trz funkcji; powoduje, ¿e zakres\n" +#~ " widoczno¶ci zmiennej NAME jest ograniczony do tej funkcji i jej\n" +#~ " procesów potomnych." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Wypisanie argumentów. Gdy podano -n, koñcowy znak nowego wiersza jest " +#~ "pomijany." + +#~ 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 "" +#~ "W³±czenie i wy³±czenie wewnêtrznych poleceñ pow³oki. Pozwala to u¿ywaæ\n" +#~ " programu zewnêtrznego o tej samej nazwie co polecenie wewnêtrzne " +#~ "pow³oki\n" +#~ " bez podawania pe³nej ¶cie¿ki. Je¶li podano -n, polecenia o nazwach\n" +#~ " NAME ... s± wy³±czane; w przeciwnym przypadku polecenia o tych " +#~ "nazwach\n" +#~ " s± w³±czane. Np., aby u¿ywaæ zamiast wewnêtrznego polecenia `test'\n" +#~ " polecenia znalezionego w $PATH, nale¿y napisaæ `nable -n test'.\n" +#~ " W systemach wspieraj±cych ³adowanie dynamiczne mo¿na pos³u¿yc siê " +#~ "opcj±\n" +#~ " -f do wczytania nowej listy poleceñ wewnêtrznych ze wspó³dzielonego\n" +#~ " obiektu FILENAME. Opcja -d usuwa polecenia wewnêtrzne wczytane " +#~ "wcze¶niej\n" +#~ " za pomoc± -f. W przypadku nie podania ¿adnej nazwy lub podania opcji -" +#~ "p,\n" +#~ " wypisywana jest lista poleceñ wewnêtrznych. Opcja -a oznacza " +#~ "wypisanie\n" +#~ " wszystkich poleceñ wewnêtrznych wraz z informacj± o ich w³±czeniu " +#~ "bad¼\n" +#~ " wy³±czeniu. Opcja -s ogranicza wypisywanie do poleceñ `specjalnych'\n" +#~ " zgodnych z POSIX.2. Opcja -n powoduje wypisanie listy wszystkich\n" +#~ " wy³±czonych poleceñ." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Czytanie argumentów jako danych wej¶ciowych pow³oki i uruchomienie tak\n" +#~ " powsta³ego polecenia (powsta³ych poleceñ)." + +#~ 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 "" +#~ "Uruchomienie FILE, zastêpuj±c bie¿±c± pow³okê podanym programem.\n" +#~ " Gdy nie podano FILE, przekierowanie dotyczy bie¿±cej pow³oki. Je¶li\n" +#~ " pierwszym argumentem jest `-l', to zerowym argumentem przekazywanym\n" +#~ " do FILE jest my¶lnik tak, jak to robi login. Gdy podano opcjê `-c',\n" +#~ " FILE jest uruchamiane z pustym ¶rodowiskiem. Opcja `-a' oznacza\n" +#~ " ustawienie argv[0] uruchomionego procesu na NAME. Je¶li pliku nie\n" +#~ " mo¿na uruchomiæ a pow³oka nie jest interakcyjna, to koñczy ona\n" +#~ " dzia³anie, chyba ¿e ustawiono opcjê pow³oki `execfail'." + +#~ msgid "Logout of a login shell." +#~ msgstr "Wylogowanie z pow³oki logowania" + +#~ 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 "" +#~ "Dla ka¿dego NAME, okre¶lana i zapamiêtywana jest pe³na ¶cie¿ka " +#~ "polecenia.\n" +#~ " Gdy podano opcjê -p, to jako pe³na ¶cie¿ka dla NAME jest u¿ywane\n" +#~ " PATHNAME i nie odbywa siê poszukiwanie ¶cie¿ki. Opcja -r powoduje,\n" +#~ " ¿e pow³oka zapomina wszystkie pamiêtane po³o¿enia. Opcja -d " +#~ "powoduje,\n" +#~ " ¿e pow³oka zapomina pamiêtane po³o¿enia wszystkich NAME. Podanie " +#~ "opcji\n" +#~ " -t powoduje wypisanie pe³nej ¶cie¿ki odpowiadaj±cej ka¿demu NAME.\n" +#~ " Gdy przy -t podanych zostanie wiele NAME, s± one wypisywane przed\n" +#~ " zapamiêtan± pe³n± ¶cie¿k±. Opcja -l powoduje wypisanie danych w " +#~ "postaci,\n" +#~ " która mo¿e s³u¿yæ jako dane wej¶ciowe. W przypadku nie podania " +#~ "¿adnych\n" +#~ " argumentów, wypisywane s± informacje o pamiêtanych poleceniach." + +#~ 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 "" +#~ "Wypisanie pomocnych informacji o wbudowanych poleceniach. Gdy podano\n" +#~ " PATTERN, wypisywane s± szczegó³owe informacje pomocnicze dla\n" +#~ " wszystkich poleceñ pasuj±cych do wzorca PATTERN, a w przeciwnym\n" +#~ " przypadku wypisywana jest tylko lista poleceñ wewnêtrznych. Opcja -s\n" +#~ " ogranicza opis ka¿dego z poleceñ wewnêtrznych pasuj±cych do wzorca\n" +#~ " PATTERN do krótkiego opisu sk³adni." + +#~ 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 "" +#~ "Domy¶lnie, usuwanie wszystkich argumentów JOBSPEC z tablicy aktywnych " +#~ "zadañ.\n" +#~ " Przy podaniu opcji -h, zadanie nie jest usuwane z tablicy ale, " +#~ "oznaczane\n" +#~ " w ten sposób, ¿e nie jest do niego wysy³any SIGHUP, gdy pow³oka " +#~ "otrzyma\n" +#~ " SIGHUP. Opcja -a, gdy nie jest podane JOBSPEC, oznacza usuniêcie\n" +#~ " wszystkich zadañ z tablicy zadañ; opcja -r oznacza usuniêcie tylko\n" +#~ " dzia³aj±cych zadañ." + +#~ 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 "" +#~ "Powoduje zakoñczenie funkcji z kodem powrotu okre¶lonym przez N. Gdy N\n" +#~ " zostanie pominiête, kodem powrotu jest kod powrotu ostatniego " +#~ "polecenia." + +#~ 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 "" +#~ "Dla ka¿dego NAME, usuwana jest odpowiednia zmienna lub funkcja. Po " +#~ "podaniu\n" +#~ " `-v' unset dzia³a tylko dla zmiennych. Po podaniu znacznika`-f' " +#~ "unset\n" +#~ " dzia³a tylko dla funkcji. Bez ¿adnego ze znaczników, unset najpierw\n" +#~ " próbuje unicestwiæ zmienn±, a gdy to siê nie uda, próbuje unicestwiæ\n" +#~ " funkcjê. Niektórych zmiennych nie mo¿na unicestwiæ; patrz tak¿e " +#~ "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 "" +#~ "Wszystkie NAME s± oznaczane jako eksportowane automatycznie do " +#~ "¶rodowiska\n" +#~ " kolenjno uruchamianych poleceñ. Je¶li zostanie podana opcja -f, to " +#~ "NAME\n" +#~ " oznaczaj± funkcje. W przypadku nie podania ¿adnego NAME lub podania " +#~ "opcji\n" +#~ " `-p', wypisywana jest lista wszystkich eksportowanych z tej pow³oki " +#~ "nazw.\n" +#~ " Argument `-n' oznacza, ¿e nale¿y usuni±æ w³asno¶æ eksportowania\n" +#~ " z wszystkich nastêpnych NAME. Argument `--' wy³±cza przetwarzanie\n" +#~ " dalszych opcji." + +#~ 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 "" +#~ "Oznaczanie podanych NAME jako tylko do odczytu tak, ¿e warto¶ci tych " +#~ "NAME\n" +#~ " nie mog± zostaæ zmienione przez pó¿niejsze przypisania. Gdy podana\n" +#~ " zostanie opcja -f, odpowiednio oznaczane s± równie¿ funkcje " +#~ "odpowiadaj±ce\n" +#~ " NAME. Gdy nie podano argumentów lub podano `-p', wypisywana jest " +#~ "lista\n" +#~ " wszystkich nazw tylko do odczytu. Opcja `-a' oznacza, ¿e NAME nale¿y\n" +#~ " traktowaæ jak zmienne tablicowe. Argument `--' wy³±cza przetwarzanie\n" +#~ " dalszych opcji." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Przemianowanie parametrów pozycyjnych od $N+1 ... na $1 ... Je¶li N nie\n" +#~ " zostanie podane, zak³ada siê, ¿e jest równe 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 "" +#~ "Zawieszenie wykonania bie¿±cej pow³oki do czasu otrzymania sygna³u " +#~ "SIGCONT.\n" +#~ " Podanie `-f' oznacza, ¿e pow³oka, bêd±ca pow³ok± logowania, nie " +#~ "powinna\n" +#~ " wobec tego protestowaæ, lecz zawiesiæ siê pomimo to." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Wypisywanie ³±cznych czasów u¿ytkownika i systemu dla procesów " +#~ "uruchomionych\n" +#~ " z pow³oki." + +#~ 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 "" +#~ "Ustawienie maski dla plików tworzonych przez u¿ytkownika na MODE. Gdy " +#~ "MODE\n" +#~ " zostanie pominiête lub gdy podane zostanie `-S', wypisywana jest " +#~ "bie¿±ca\n" +#~ " warto¶c maski. Opcja `-S' powoduje wyprowadzanie symboliczne; w " +#~ "przeciwnym\n" +#~ " przypadku wyprowadzana jest liczba ósemkowa. Gdy podane zostanie `-" +#~ "p'\n" +#~ " a MODE zostanie pominiête, wyprowadzane s± dane w takim formacie, " +#~ "jaki\n" +#~ " powinny mieæ dane wej¶ciowe. Gdy MODE zaczyna siê od cyfry, jest\n" +#~ " interpretowane jako liczba ósemkowa, w przeciwnym razie jest " +#~ "³añcuchem\n" +#~ " trybu w postaci symbolicznej, podobnej do akceptowanej przez 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 "" +#~ "Oczekiwanie na podany proces i zg³oszenie jego statusu zakoñczenia. Gdy " +#~ "nie\n" +#~ " zostanie podane N, oczekiwanie dotyczy wszystkich aktualnie " +#~ "aktywnych\n" +#~ " procesów potomnych, a kodem powrotu jest zero. N jest PID; gdy nie\n" +#~ " zostanie podane, oczekiwanie dotyczy wszystkich procesów potomnych\n" +#~ " pow³oki." + +#~ 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 "" +#~ "Utworzenie prostego polecenia wywo³ywanego przez NAME, które uruchamia\n" +#~ " polecenia COMMANDS. Argumenty z wiersza poleceñ podane po NAME s±\n" +#~ " przekazywane do funkcji jako $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 "" +#~ "Okre¶lenie, jak argumenty maja byc uzupe³niane dla poszczególnych NAME.\n" +#~ " Gdy podano opcjê -p, lub nie podano ¿adnych opcji, wypisywane s±\n" +#~ " istniej±ce specyfikacje uzupe³nieñ w postaci, umo¿liwiaj±cej ich " +#~ "ponowne\n" +#~ " u¿ycie jako danych wej¶ciowych. Opcja -r powoduje usuniêcie " +#~ "specyfikacji\n" +#~ " uzupe³nieñ dla wszystkich NAME lub, gdy nie podano ¿adnego NAME,\n" +#~ " wszystkich specyfikacji uzupe³nieñ." diff --git a/src/bin/bash/po/pt_BR.gmo b/src/bin/bash/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7f7ceea7bcde9134a673b35ab2e4a22ce450f7df GIT binary patch literal 9926 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 Tz&p~m;qL@PL-noT-3 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/pt_BR.po b/src/bin/bash/po/pt_BR.po new file mode 100644 index 0000000000..b7ff3cf1fd --- /dev/null +++ b/src/bin/bash/po/pt_BR.po @@ -0,0 +1,6196 @@ +# bash: Translation to Brazilian Portuguese (pt_BR) +# Copyright (C) 2002 Free Software Foundation, Inc. +# Halley Pacheco de Oliveira , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2002-05-08 13:50GMT -3\n" +"Last-Translator: Halley Pacheco de Oliveira \n" +"Language-Team: Brazilian Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "índice da matriz (array) incorreto" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%c%c: opção incorreta" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossível atribuir a índice não numérico" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossível criar: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: comando não encontrado" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: função somente para leitura" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "logout" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "encaixe (slot) %3d: " + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "escrevendo" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "número excessivo de argumentos" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "a opção requer um argumento: -" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: comando não encontrado" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: opção incorreta" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: opção incorreta" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s' não é um identificador válido" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "número do sinal incorreto" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "número do sinal incorreto" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "número do sinal incorreto" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: a variável permite somente leitura" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "esperado argumento" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "nenhum controle de trabalho nesta `shell'" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "nenhum controle de trabalho nesta `shell'" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: o trabalho terminou" + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "Terminado" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "erro de `pipe': %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Redirecionamento ambíguo" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +#, fuzzy +msgid "can only be used in a function" +msgstr "somente pode ser usado dentro de funções; faz com que o escopo visível" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função somente para leitura" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: impossível atribuir desta maneira" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossível abrir o `named pipe' %s para %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é um diretório" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: impossível executar o arquivo binário" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossível executar o arquivo binário" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "logout" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: comando não encontrado" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "Opção ilegal: -" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "a opção requer um argumento: -" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "`r', o último comando seja executado novamente." + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s: esperado expressão de número inteiro" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: esperado expressão de número inteiro" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "Erro desconhecido %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "esperado uma expressão" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%c%c: opção incorreta" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%c%c: opção incorreta" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "número do sinal incorreto" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: variável não vinculada" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "o novo diretório que ocupa o topo da pilha." + +#: builtins/pushd.def:462 +#, fuzzy +msgid "" +msgstr "\tnovo diretório atual de trabalho." + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "Estouro na base da pilha de recursividade" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "erro de `pipe': %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +#, fuzzy +msgid "cannot simultaneously unset a function and a variable" +msgstr "somente pode ser usado dentro de funções; faz com que o escopo visível" + +#: builtins/set.def:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: impossível criar: %s" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossível criar: %s" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s: variável não vinculada" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: função somente para leitura" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: comando não encontrado" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Sair de uma shell de login." + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: função somente para leitura" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: opção incorreta" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "Tempo limite de CPU excedido" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossível criar: %s" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "número do sinal incorreto" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, fuzzy, c-format +msgid "last command: %s\n" +msgstr "`r', o último comando seja executado novamente." + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "Erro desconhecido %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "usado como nome de um comando." + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "conector incorreto `%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Desvio incorreto %d" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variável não vinculada" + +#: eval.c:181 +#, fuzzy, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" +"%ctempo limite de espera excedido aguardando entrada:\n" +"fim automático da sessão\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "erro de `pipe': %s" + +#: execute_cmd.c:4363 +#, 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:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando não encontrado" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: é um diretório" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "excedido o nível de recursividade da expressão" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Estouro na base da pilha de recursividade" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expressão" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "tentativa de atribuição para algo que não é uma variável" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "divisão por 0" + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "Erro de programação: `token' inválido `%d' passado para expassign()" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' esperado para expressão condicional" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "faltando `)'" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: fim prematuro do arquivo" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (erro: o `token' é \"%s\")\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "valor muito grande para esta base de numeração" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: esperado expressão de número inteiro" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: impossível acessar os diretórios pais (anteriores)" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" + +#: input.c:258 +#, fuzzy, 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\n" +"do `bash' a partir do descritor de arquivo (fd) %d: %s" + +#: input.c:266 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"check_bash_input: já existe o espaço intermediário (buffer)\n" +"para o novo descritor de arquivo (fd) %d" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: o identificador do processo (pid) não existe (%d)!\n" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Sinal desconhecido #%d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Concluído" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Parado" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Parado" + +#: jobs.c:1443 +msgid "Running" +msgstr "Executando" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Concluído(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Fim da execução com status %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Status desconhecido" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(imagem do núcleo gravada)" + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "(wd agora: %s)\n" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "`setpgid' filho (%d para %d) erro %d: %s\n" + +#: jobs.c:2099 nojobs.c:585 +#, fuzzy, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: o pid %d não é um filho deste `shell'" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: o trabalho terminou" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "encaixe (slot) %3d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (imagem do núcleo gravada)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd agora: %s)\n" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp falhou: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: disciplina da linha: %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp falhou: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "nenhum controle de trabalho nesta `shell'" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, c-format +msgid "%s: host unknown" +msgstr "desconhecido" + +#: 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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Você tem mensagem de correio em $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Você tem mensagem nova de correio em $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "As mensagens de correio em %s foram lidas\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "erro de sintaxe na expressão" + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "erro de sintaxe: fim prematuro do arquivo" + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: o tipo da instrução está incorreto %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "encontrado EOF não esperado enquanto procurava por `%c'" + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "encontrado EOF não esperado enquanto procurava por `%c'" + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "erro de sintaxe próximo do `token' não esperado `%s'" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "erro de sintaxe na expressão" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "esperado `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: esperado operador binário" + +#: parse.y:3889 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: esperado operador binário" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "`:' esperado para expressão condicional" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "`:' esperado para expressão condicional" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "`:' esperado para expressão condicional" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erro de sintaxe próximo do `token' não esperado `%s'" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe próximo do `token' não esperado `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "erro de sintaxe: fim prematuro do arquivo" + +#: parse.y:5223 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para sair da `shell'.\n" + +#: parse.y:5447 +#, fuzzy +msgid "unexpected EOF while looking for matching `)'" +msgstr "encontrado EOF não esperado enquanto procurava por `%c'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector incorreto `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Redirecionamento ambíguo" + +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: Impossível sobrescrever arquivo existente" + +#: redir.c:157 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossível criar `pipe' para a substituição do processo: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redirecionamento" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção incorreta" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Eu não tenho nome!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, versão %s\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "opções-longas-GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opções da `shell':\n" + +#: shell.c:1786 +#, fuzzy +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD ou -c comando\t\t(somente para chamada)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ou -o opção\n" + +#: shell.c:1807 +#, 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 da " +"`shell'.\n" + +#: shell.c:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: 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 +#, fuzzy +msgid "Terminated" +msgstr "exibida." + +#: 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 de tempo" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarme (profile)" + +#: 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 "" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Sinal desconhecido #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal desconhecido #%d" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substituição incorreta: nenhum `%s' em %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "impossível criar `pipe' para a substituição do processo: %s" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "impossível criar um processo filho para a substituição do processo: %s" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossível abrir o `named pipe' %s para %s: %s" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossível abrir o `named pipe' %s para %s: %s" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"impossível duplicar o `named pipe' %s\n" +"como descritor de arquivo (fd) %d: %s" + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "impossível construir `pipes' para substituição do comando: %s" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "impossível criar um processo filho para substituição do comando: %s" + +#: subst.c:4816 +#, fuzzy +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute: impossível duplicar o `pipe' como\n" +"descritor de arquivo (fd) 1: %s" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não inicializado" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de substring < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituição incorreta" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossível atribuir desta maneira" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substituição incorreta: nenhum `%s' em %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "esperado argumento" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: esperado expressão de número inteiro" + +#: test.c:262 +msgid "`)' expected" +msgstr "esperado `)'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "esperado `)', encontrado %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: esperado operador unário" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: esperado operador binário" + +#: test.c:806 +msgid "missing `]'" +msgstr "faltando `]'" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "número do sinal incorreto" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Sinal incorreto %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar a definição da função para `%s'" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, versão %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:94 +#, fuzzy, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:116 +#, fuzzy, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:150 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:152 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:174 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:176 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [NOME[=VALOR] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [NOME ...]" + +#: builtins.c:51 +#, fuzzy +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m MAPA-TECLAS] [-f ARQUIVO] [-q NOME-FUNÇÃO] [-r SEQ-" +"TECLAS] [SEQ-TECLAS:FUNÇÃO-DE-LEITURA-DE-LINHA]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [COMANDO-INTERNO-DA-SHELL [ARG ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [EXPR]" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "cd [-PL] [DIR]" + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] COMANDO [ARG ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] NOME[=VALOR] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] NOME[=VALOR] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local NOME[=VALOR] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARG ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARG ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f ARQUIVO] [NOME ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [ARG ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts OPÇÕES NOME [ARG]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a NOME] ARQUIVO [REDIRECIONAMENTO ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "logout" + +#: builtins.c:103 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e EDITOR] [-nlr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [JOB-ESPECIFICADO]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [JOB-ESPECIFICADO]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p CAMINHO] [NOME ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [PADRÃO ...]" + +#: builtins.c:121 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [n] ou history -awrn [ARQUIVO] ou history -ps ARG [ARG...]" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [JOB-ESPECIFICADO ...] ou jobs -x COMANDO [ARGS]" + +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [JOB-ESPECIFICADO ...]" + +#: builtins.c:132 +#, fuzzy +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] [PID | JOB]... ou kill -l [SIGSPEC]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let ARG [ARG ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o OPÇÃO] [ARG ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [NOME ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [NOME ...] ou export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [NOME ...] ou readonly -p" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "exit [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "arquivo fonte" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". ARQUIVO" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [EXPR]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ ARG... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [ARG] [SINAL-ESPEC] ou trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] NOME [NOME ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [LIMITE]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [MODO]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDOS; do COMANDOS; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDOS; do COMANDOS; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NOME { COMANDOS ; } ou NOME () { COMANDOS ; }" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS }" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [JOB-ESPECIFICADO]" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "esperado uma expressão" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "esperado uma expressão" + +#: builtins.c:210 +#, fuzzy +msgid "variables - Names and meanings of some shell variables" +msgstr "As variáveis da `shell' podem ser operandos. O nome da variável é" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [DIR | +N | -N] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o OPÇÃO-LONGA] NOME-OPÇÃO [NOME-OPÇÃO...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] NOME [NOME ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +#, 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 "" +"Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," + +#: builtins.c:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +#, fuzzy +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 "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." + +#: builtins.c:338 +#, 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 "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." + +#: builtins.c:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Nenhum efeito; o comando não faz nada. Retorna zero no código de saída." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "Sair da `shell' com status igual a N. Se N for omitido, o status" + +#: builtins.c:698 +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:708 +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:738 +#, fuzzy +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 "" +"Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." + +#: builtins.c:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +#, fuzzy +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 "argumento deve ser o literal `]', para fechar o `[' de abertura." + +#: builtins.c:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +#, fuzzy +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 "" +"Executar seletivamente COMANDOS tomando por base a correspondência entre" + +#: builtins.c:1560 +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:1577 +#, 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 "Expande e executa COMANDOS enquanto o comando final nos" + +#: builtins.c:1589 +#, 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 "Expande e executa COMANDOS enquanto o comando final nos" + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "Executa um conjunto de comandos agrupando-os. Esta é uma forma de" + +#: builtins.c:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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." + +#, fuzzy +#~ msgid "" +#~ "+N displays 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" + +#, fuzzy +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." + +#, fuzzy +#~ msgid "" +#~ "-N displays 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 "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." + +#, fuzzy +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#, fuzzy +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." + +#, fuzzy +#~ msgid " zero) is at the top." +#~ msgstr "\tpartir da direita) fique no topo." + +#, fuzzy +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#, fuzzy +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." + +#, fuzzy +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao se adicionar diretórios" + +#, fuzzy +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr "\tà pilha, fazendo com que somente a pilha seja manipulada." + +#, fuzzy +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tadiciona DIR à pilha de diretórios, no topo, tornando-o o" + +#, fuzzy +#~ msgid " new current working directory." +#~ msgstr "\tnovo diretório atual de trabalho." + +#~ 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 "top directory." +#~ msgstr "o novo diretório que ocupa o topo da pilha." + +#, fuzzy +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N\tremove a n-ésima entrada contada a partir da esquerda da lista" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd +0'" + +#, fuzzy +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr "\tremove o primeiro diretório, `popd +1' o segundo." + +#, fuzzy +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N\tremove a n-ésima entrada contada a partir da direita da lista" + +#, fuzzy +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd -0'" + +#, fuzzy +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." + +#, fuzzy +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" + +#, fuzzy +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr "\tda pilha, fazendo com que somente a pilha seja manipulada." + +#, fuzzy +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "Sair de um laço FOR, WHILE ou UNTIL." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsoleta. Veja `declare'." + +#~ 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 "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Ler ARGs como entrada da `shell' e executar o(s) comando(s) resultante(s)." + +#~ msgid "Logout of a login shell." +#~ msgstr "Sair de uma shell de login." + +#, fuzzy +#~ 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 "Faz a função terminar com o valor de retorno especificado por N." + +#, fuzzy +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." + +#, fuzzy +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" + +#~ 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 "%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 "bad substitution: no ending `}' in %s" +#~ msgstr "substituição incorreta: falta o `}' final em %s" + +#~ msgid "%s: bad array subscript" +#~ msgstr "%s: indice da matriz (array) incorreto" + +#~ 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 "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 vinculada" + +#~ 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 "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 requires an argument" +#~ msgstr "%s requer um argumento" + +#~ 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 MATRIZ] [-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 "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 vinculações das funções." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Listar nomes e vinculaçõ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 "break N levels." +#~ msgstr "Se N for especificado, sai de N níveis." + +#~ 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 da `shell'. Útil quando desejamos substituir" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "um comando interno da `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 matrizes (arrays), se suportado" + +#~ 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 "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 "Enable and disable builtin shell commands. This allows" +#~ msgstr "" +#~ "Habilita e desabilita os comandos internos da `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 da `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 "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Getopts é utilizado pelos procedimentos da `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 da `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 "" +#~ "da `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 da `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 "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "" +#~ "Se a variável da `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 "" +#~ "nesta `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 a `shell' não for interativa," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "então a `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 "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 da `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 da `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 "" +#~ "da MATRIZ, 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 "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 matriz. Um argumento `--' desabilita o processamento de" + +#~ 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 "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 "`|' 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 "`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 "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\t`shell' 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 "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/src/bin/bash/po/quot.sed b/src/bin/bash/po/quot.sed new file mode 100644 index 0000000000..0122c46318 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/remove-potcdate.sin b/src/bin/bash/po/remove-potcdate.sin new file mode 100644 index 0000000000..2436c49e78 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/po/ro.gmo b/src/bin/bash/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4bbf6459d06f824417fd8fc65a18f733604c44cd GIT binary patch literal 9699 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 Iy{#AjA5C#a+yDRo literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/ro.po b/src/bin/bash/po/ro.po new file mode 100644 index 0000000000..28235003f8 --- /dev/null +++ b/src/bin/bash/po/ro.po @@ -0,0 +1,6304 @@ +# Mesajele în limba românã pentru pachetul bash +# Copyright (C) 2003 Free Software Foundation, Inc. +# Eugen Hoanca , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 1997-08-17 18:42+0300\n" +"Last-Translator: Eugen Hoanca \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "incluziune greºitã în interval" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%c%c: opþiune invalidã" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nu se poate atribui cãtre index ne-numeric" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/bind.def:260 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: comandã negãsitã" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: funcþie doar în citire (readonly)" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +#, fuzzy +msgid "loop count" +msgstr "logout" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:101 +#, fuzzy, c-format +msgid "line %d: " +msgstr "slot %3d: " + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "în scriere" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "prea mulþi parametri" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "opþiunea necesitã un parametru: -" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:205 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: comandã negãsitã" + +#: builtins/common.c:214 shell.c:787 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: opþiune invalidã" + +#: builtins/common.c:221 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: opþiune invalidã" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s' nu este un identificator valid" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "numãr de semnal invalid" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "numãr de semnal invalid" + +#: builtins/common.c:242 expr.c:1255 +#, fuzzy +msgid "invalid number" +msgstr "numãr de semnal invalid" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variabilã doar în citire" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:272 builtins/common.c:274 +#, fuzzy +msgid "argument" +msgstr "se aºteaptã parametru" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:290 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "nici un control de job în acest shell" + +#: builtins/common.c:292 +#, fuzzy +msgid "no job control" +msgstr "nici un control de job în acest shell" + +#: builtins/common.c:302 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: jobul a fost terminat" + +#: builtins/common.c:304 +#, fuzzy +msgid "restricted" +msgstr "Terminat" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:321 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "eroare de legãturã (pipe): %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:629 builtins/common.c:631 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Redirectare ambiguã" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +#, 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:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funcþie doar în citire (readonly)" + +#: builtins/declare.def:461 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: nu se poate asigna în acest mod" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: este director" + +#: builtins/evalfile.c:139 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: nu se poate executa fiºierul binar" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nu se poate executa fiºierul binar" + +#: builtins/exec.def:212 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/exit.def:65 +#, fuzzy, c-format +msgid "logout\n" +msgstr "logout" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +#, fuzzy +msgid "no command found" +msgstr "%s: comandã negãsitã" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "opþiune ilegalã: -" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "opþiunea necesitã un parametru: -" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "ultima comandã." + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +#, fuzzy +msgid "Unknown error" +msgstr "Eroare necunoscutã %d" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "se aºteaptã expresie" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%c%c: opþiune invalidã" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%c%c: opþiune invalidã" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "numãr de semnal invalid" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: variabilã fãrã limitã" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +#, fuzzy +msgid "no other directory" +msgstr "director superior." + +#: builtins/pushd.def:462 +#, fuzzy +msgid "" +msgstr "\tnoul director de lucru curent." + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "eroare de legãturã (pipe): %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +#, 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:805 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/set.def:812 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/set.def:823 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s: variabilã fãrã limitã" + +#: builtins/setattr.def:186 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: funcþie doar în citire (readonly)" + +#: builtins/shift.def:71 builtins/shift.def:77 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: comandã negãsitã" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Ieºire dintr-un login al shell-ului." + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: funcþie doar în citire (readonly)" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: opþiune invalidã" + +#: builtins/ulimit.def:427 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/ulimit.def:453 +#, fuzzy +msgid "limit" +msgstr "limitã CPU" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/umask.def:118 +#, fuzzy +msgid "octal number" +msgstr "numãr de semnal invalid" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, fuzzy, c-format +msgid "last command: %s\n" +msgstr "ultima comandã." + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +#, fuzzy +msgid "unknown command error" +msgstr "Eroare necunoscutã %d" + +#: error.c:406 +#, fuzzy +msgid "bad command type" +msgstr "ºi nume de comandã." + +#: error.c:407 +#, fuzzy +msgid "bad connector" +msgstr "conector greºit `%d'" + +#: error.c:408 +#, fuzzy +msgid "bad jump" +msgstr "Salt invalid %d" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variabilã fãrã limitã" + +#: eval.c:181 +#, fuzzy, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "%ca expirat aºteptând introducere de date: auto-logout\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "eroare de legãturã (pipe): %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: comandã negãsitã" + +#: execute_cmd.c:4708 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: este director" + +#: execute_cmd.c:4857 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nu se poate duplica fd %d în fd 0: %s" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "nivel de recursivitate al expresiei depãºit" + +#: expr.c:265 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Stivã recursivitate prea puþin folositã(underflow)" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "eroare de sintaxã în expresie " + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "s-a încercat asignare cãtre non-variabilã" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "împãrþire la 0" + +#: expr.c:471 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "bug: identificator(token) expassign greºit %d" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "`:' aºteptat dupã expresie condiþionalã" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "`)' lipsã" + +#: expr.c:897 expr.c:1175 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "valoare prea mare pentru bazã" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "eroare de redirectare" + +#: general.c:61 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: nu s-au putut accesa directoarele pãrinte" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: Nu existã pid-ul (%d)!\n" + +#: jobs.c:1416 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Semnal Necunoscut #%d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Finalizat" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Stopat" + +#: jobs.c:1439 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Stopat" + +#: jobs.c:1443 +msgid "Running" +msgstr "În rulare" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Finalizat(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Ieºire %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Stare necunoscutã" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:1568 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "(wd actual: %s)\n" + +#: jobs.c:1771 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid copil (de la %d la %d) a întâlnit o eroare %d: %s\n" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobul a fost terminat" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "slot %3d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd actual: %s)\n" + +#: jobs.c:3563 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp eºuat: %s" + +#: jobs.c:3623 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: disciplinã linie: %s" + +#: jobs.c:3633 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp eºuat: %s" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "nici un control de job în acest shell" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +msgid "unknown" +msgstr "necunoscut" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Aveþi mail în $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Aveþi mail nou în $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Mailul din %s a fost citit\n" + +#: make_cmd.c:322 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "eroare de sintaxã în expresie " + +#: make_cmd.c:324 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" + +#: make_cmd.c:325 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "eroare de sintaxã" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tip de instrucþiune greºit %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, fuzzy, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF brusc în cãutare dupã `%c'" + +#: parse.y:3722 +#, fuzzy +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF brusc în cãutare dupã `%c'" + +#: parse.y:3727 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "eroare de sintaxã neaºteptatã lângã `%s'" + +#: parse.y:3731 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "eroare de sintaxã în expresie " + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +#, fuzzy +msgid "expected `)'" +msgstr "se aºteaptã `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: se aºteaptã operator binar" + +#: parse.y:3889 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: se aºteaptã operator binar" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "`:' aºteptat dupã expresie condiþionalã" + +#: parse.y:3924 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "`:' aºteptat dupã expresie condiþionalã" + +#: parse.y:3928 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "`:' aºteptat dupã expresie condiþionalã" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "eroare de sintaxã neaºteptatã lângã `%s'" + +#: parse.y:5213 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "eroare de sintaxã neaºteptatã lângã `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" + +#: parse.y:5223 +msgid "syntax error" +msgstr "eroare de sintaxã" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n" + +#: parse.y:5447 +#, fuzzy +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF brusc în cãutare dupã `%c'" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector greºitr `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Redirectare ambiguã" + +#: redir.c:152 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nu se poate accesa(clobber) fiºierul existent" + +#: redir.c:157 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" + +#: redir.c:162 +#, 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:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "eroare de redirectare" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opþiune invalidã" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Nu am nici un nume!" + +#: shell.c:1778 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, versiunea %s\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "opþiuni lungi GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Opþiuni ale shell-ului:\n" + +#: shell.c:1786 +#, fuzzy +msgid "\t-irsD 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:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s sau -o opþiune\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "Semnal Necunoscut #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Semnal Necunoscut #%d" + +#: subst.c:1181 subst.c:1302 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substituþie invalidã: nu existã '%s' în %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nu pot asigna listã membrului intervalului" + +#: subst.c:4456 subst.c:4472 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" + +#: subst.c:4504 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" + +#: subst.c:4549 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" + +#: subst.c:4551 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" + +#: subst.c:4569 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s " + +#: subst.c:4765 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s" + +#: subst.c:4799 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "nu pot crea un copil pentru substituþia de comenzi: %s" + +#: subst.c:4816 +#, 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:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresie subºir < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituþie invalidã" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nu se poate asigna în acest mod" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substituþie invalidã: nu existã ')' de final în %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "se aºteaptã parametru" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: se aºteaptã expresie întreagã (integer)" + +#: test.c:262 +msgid "`)' expected" +msgstr "se aºteaptã `)'" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "se aºteaptã `)', s-a primit %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: se aºteaptã operator unar" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: se aºteaptã operator binar" + +#: test.c:806 +msgid "missing `]'" +msgstr "lipseºte ']'" + +#: trap.c:201 +#, fuzzy +msgid "invalid signal number" +msgstr "numãr de semnal invalid" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Semnal invalid %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "eroare în importarea definiþiei funcþiei pentru '%s'" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, versiunea %s\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:94 +#, fuzzy, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:116 +#, fuzzy, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:150 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:152 +#, fuzzy, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:174 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + +#: xmalloc.c:176 +#, fuzzy, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nume[=valoare] ... ]" + +#: builtins.c:47 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [nume ...]" + +#: builtins.c:51 +#, fuzzy +msgid "" +"bind [-lpvsPVS] [-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:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +#, fuzzy +msgid "caller [expr]" +msgstr "test [expr]" + +#: builtins.c:64 +#, fuzzy +msgid "cd [-L|-P] [dir]" +msgstr "cd [-PL] [dir]" + +#: builtins.c:66 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] comandã [arg ...]" + +#: builtins.c:76 +#, fuzzy +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] nume[=valoare] ..." + +#: builtins.c:78 +#, fuzzy +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..." + +#: builtins.c:80 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local nume[=valoare] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f nume_fiºier] [nume ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring nume [arg]" + +#: builtins.c:96 +#, fuzzy +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a nume] fiºier [redirectare ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +#, fuzzy +msgid "logout [n]" +msgstr "logout" + +#: builtins.c:103 +#, 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:107 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:111 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [job_spec]" + +#: builtins.c:114 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p nume_cale] [nume ...]" + +#: builtins.c:117 +#, fuzzy +msgid "help [-ds] [pattern ...]" +msgstr "help [tipar ...]" + +#: builtins.c:121 +#, 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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandã [args]" + +#: builtins.c:129 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [jobspec ...]" + +#: builtins.c:132 +#, 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:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +#, fuzzy +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o opþiune] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [nume ...]" + +#: builtins.c:144 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [nume ...] sau export -p" + +#: builtins.c:146 +#, fuzzy +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [nume ...] sau readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "nume fiºier sursã" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". nume fiºier" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "ori" + +#: builtins.c:164 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [arg] [signal_spec] sau trap -l" + +#: builtins.c:166 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] nume [nume ...]" + +#: builtins.c:169 +#, fuzzy +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [limitã]" + +#: builtins.c:172 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [mod]" + +#: builtins.c:175 +#, fuzzy +msgid "wait [id]" +msgstr "wait [n]" + +#: builtins.c:179 +#, fuzzy +msgid "wait [pid]" +msgstr "wait [n]" + +#: builtins.c:182 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done" + +#: builtins.c:184 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NUME [în EXPRESIE ... ;] executã COMENZI; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMENZI; do COMENZI; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMENZI; do COMENZI; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NUME { COMENZI ; } sau NUME () { COMENZI ; }" + +#: builtins.c:202 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ COMENZI }" + +#: builtins.c:204 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [job_spec]" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "se aºteaptã expresie" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "se aºteaptã expresie" + +#: builtins.c:210 +#, fuzzy +msgid "variables - Names and meanings of some shell variables" +msgstr "Variabilele shell-ului sunt admise ca operanzi. Numele variabilei" + +#: builtins.c:213 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [dir | +N | -N] [-n]" + +#: builtins.c:217 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o opþiune lungã] nume_opt [nume_opt...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +#, fuzzy +msgid "compopt [-o|+o option] [name ...]" +msgstr "type [-apt] nume [nume ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +#, 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:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "Iese din shell cu starea lui N. Dacã N este omis, starea de ieºire" + +#: builtins.c:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "" +#~ 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 "%s: bad array subscript" +#~ msgstr "%s:subscriere interval invalid" + +#~ 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 "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 "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 requires an argument" +#~ msgstr "%s necesitã un parametru" + +#~ 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 "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]" + +#~ 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/src/bin/bash/po/ru.gmo b/src/bin/bash/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..50ea7e2f5fb9f541b230952ccc3a55ff4d1cdea3 GIT binary patch literal 9142 zcmb7{e~cXGS;r@&A^30!jZ4$gLSCo2oSk^>JKG7)+D_8MPUAGLUDs(-64y7kH+Q$m z-p(?+Yx|%QD*S#hu=Wc&^edqcVD5WaD3YA(= zQ~{soop)yU&NhM3zWbed-{*bb=lAozt9QTcix!Vddmrr!w_BEUY`l{{p79NqbvI~( z?*uF0z2I5!UErUB?*Px4?-uwAe18wT3%qm4vNnPDfcJn8fwIq2-~-?|_;cWI8T>N1 zo$uGcUj+XSlzndd>3H3DgR1*vI)4t{4}JrbeZCFKy8i)+{O^Kj7<|OwOQ6X68=&y} z$DpkLm!Qn|LD|0x{yg{tP~?6)N)h|N52VZ535vcB7(8mmUjo_M@<3VlH$i^Z@A4<| ze8u#C6Wq;r9pq=-#^&O`?*wJuUQqUb1{Aq-27eV4{yqnaoPPm|{0&gn`2i?=-a&Ao zTI;>w>$ednpp1W)L9y4Hpy*{2i_1EXf->&~Q2L9Y@bd*w{P%S*1AYgT{WoFE9pEUq z1sn&(zGwN9^t;Z@tmEJ|umH;V?}4yty$0?AFM(`n{TLht zH$lX!bpRB3PJqI12}E@3OQ87OpMk>PB~a%7Cn);7i$B@-K~VU55|sH^%2bx`Df6BK=IKsbrJ&7k9-Q2gMF;AZd} z;6vaW1~;mBd=Du8Z5u3tqUT=&9|1oL%KjHXk?Y%_$onHu?D!5Am-$-^J`BqElc0>B z07cFUDDs~Lp9Oy(6uJKq{3Y;ij4b2Nf?|(xQ1ty-5EAQEQ200xihOT?V$UCgqBq6I zgWy3>{GbF1A7?>X=MTZ#z`e8=X|l%CG@YE9E{ z0c(i%VcJgGEbS@U^EAF?W430 z&?L9wI@TSuJ80}%2LsK+)CTaU@-xYt9oHh77Gw>n#AWM72^c^%P z`Dh32ByAV%FfDyHWQNPi^;E`HZmE)Yi$m6MZa9}!`QjC7R??j>D_c!fi#fBp=_$`Rg@Ss;nLF)zlWeNH zi*7|txYgpMs<_H7&dGRryB>9`73EGT&n`|oP|K$3CVg2oVNb$C#qmm>!@s7T$QNyI z4p|(}hGXTNDLJ`{GpPsRTlTff<@|I}HZHowOtCuac=;SFO*&@=$#R}!R~#dAR)m(x zlTLxnZtN{rJarqL-Clz%R8rJ%Usp-oFb~rd)UJD=43x7wq)7Yfd_T`+#G zG8r|Ti#bRlV4b_GGQN|a%I9ox=y;8Fu>$+a+(?^Hgwu1|-=Eob1J z@OhKnCBRZGYKCU>IJ4;3Ex1Khc1mai73;C0tIE~fjC$FfFyHuo8lVGRo-r@{=)&}#^D9-XA3KPV+w>umtQZsOwM2$liD*@< zk~wfD;U{s))CrSJqvxc(N$ly~>MfGNjtW6ETg5?0V>a4xf7JX6wjv2abOHKsx-<0dvdT<1>z$wetl@ z401oP&RLR*Y>P7+cCu0@OWnEa+UZS!Nj*~PRa_v-)rnZ`mXuPR zQgOs;nfbWHK#V3ur&=mV8gkUsq#D*WQ@_Y`5mr|Q$vl&)lrK5rR47mT6CV5)R8k-` zm0K;CTuv=i5+mDG2@k*@;##=bn#`Zdmq~_dVor@(NpV#uOg=n^WW-?7Z>>+LYs$C` z3eRcq_p?OeAmot=43~UL*(NcX-hxg18pn#ON#Z!dPWpag#3C+p1y|=uamhIBbgwC3 zapr;ycg)S`a>$2^-+TSEz=R4}U>XbQV91KW)Hs#3GGe*8N}n@r&{@YWqSmRZ4s%HC9!F&YD6+8m{Z`^tg zJNxji%;>|TqY!3}afFc_`gD(EM#mUdJIAs+_dGPZ3%cj<#LRIHtmT3f->f=#YT7C0 z=hT5}nbTjzJ*D;#9L&$xe`afigTv2qg1f-#l1R>QY80(=*XcxnPYuI;cLqAG6#z} zcM^}xsy!3=%Fxk5)w2tkr^&&bVu~gGS>C^EFEKA8`?nN_$42+>A5#xJpyYLQ^Zv0h z^|%^Ukn{c6{+-FtzWux9RnHjRH#Vw1^{IFYG^1OYGsc{qTlWrG`W6z_LlrHa50|)% za01h}kY-Se7Q5|E*zlL)L46bHcQ0R7wV=Jw3Ku(3OI`3U*L@wRr zTVCn;P1RP5Q6sv3^_<1JOk!Ue&`>2ba)lkbV>(_#Xwq7_PY)30K$c&z|=>pxF zUk{}pY1T|I1Bz{fM$l|_&t)2ZyB+pa$6p9h@nY0Qzl}AMR(x%E*ohg((qi75)7-#I z)LCe0%f~yK$+sfAp_QNuX*1`K!e>4hkL0nC|QWzk>@XCH1$3hAN#1af7 ztF7CFWx__B7Q%Hy!ZKoniQ^_=H#j8?>2-72t-TnW4=;oZzGS0zc(Li%W1iCVkSaQe z;}=~mVu7Y=`6~o^*gZlS3Nee(PeFsO)I!H~||fl?=tgFZwON z5p-Jd1x(U4jzek-)d3) z3VZ6bUkff1wb~Y<$q*@n#z2f%Z~DEUbW0oO zO@GMxPMcgvk|yws#)Z$=nW#7aYGP4Gi_Q<$_XhKSc8E1!tgR8x&yaD(5pIOrp_X{y za`@Jy;+iMh(MeN(8~UPXHtk;S1p30b4g2HEFeFIoFE4cvCH|O-S(A)L6WCTb}{iiuCJ~AECwTM7BLJ+3X4NS;wjFj&B*Fkak+QK zpLJBn*EW-_aS|(uP)iON)C2!wT>8(7C2bd zB?$T@@&884sUd8KDJ_|=6PiowVsyo?cgYC8(kB=kbhAaSMtZ4#++4NJjgrkr)Rxm@ z%fBL2R$QzwWWQGR4|jeeOpkZEo`wFRzYVO5HuK@u?TfCAa^Qa`v=S=)` z^^A7ZTlDdGDS!HKB+JxV-HX^JEq$S75|=)oq=ickZd5`sqvlriIM+%}YlkG$MmL+d zq)rj>O<7r5a)^3p9D&1CnIF#}_}Vfo>{xgRth5`;ZTOClO+9r!k9hi-oX=6ox8UF8x&4l?T@M(Q)BD9&g9BIXn~ibb#%gJ9xRD{whH1gn$NXmPW<, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 3.1-release\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2006-01-05 21:28+0300\n" +"Last-Translator: Evgeniy Dushistov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=KOI8-R\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" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÎÄÅËÓ ÍÁÓÓÉ×Á" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s; ÎÅ ÍÏÇÕ ÐÒÉÐÉÓÁÔØ ÎÅ ÞÉÓÌÏ×ÏÊ ÉÎÄÅËÓ" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ÐÅÒ×ÙÊ ÎÅÐÒÏÂÅÌØÎÙÊ ÓÉÍ×ÏÌ ÎÅ `\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: ÐÒÏÐÕÝÅÎ ÒÁÚÄÅÌÉÔÅÌØ Ä×ÏÅÔÏÞÉÅ" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÐÒÏÞÉÔÁÔØ: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': ÉÍÑ ÆÕÎËÃÉÉ ÎÅÉÚ×ÅÓÔÎÏ" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ÎÅ ÐÒÉ×ÑÚÁÎÁ ÎÅ Ë ÏÄÎÏÊ ÉÚ ËÌÁ×ÉÛ.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎ Ó ÐÏÍÏÝØÀ" + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ × ÃÉËÌÁÈ `for', `while', ÉÌÉ `until'" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "ÐÅÒÅÍÅÎÎÁÑ HOME ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "ÐÅÒÅÍÅÎÎÁÑ OLDPWD ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: ÏÐÃÉÑ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔÁ" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: ÔÒÅÂÕÅÔÓÑ ÞÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: ÎÅ ÎÁÊÄÅÎ" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÓÉÇÎÁÌÁ" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': ÎÅ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ ÉÌÉ ÐÒÁ×ÉÌØÎÏÅ ÉÍÑ ÚÁÄÁÞÉ" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: ÄÏÓÔÕÐÎÁÑ ÔÏÌØËÏ ÎÁ ÞÔÅÎÉÅ ÐÅÒÅÍÅÎÎÁÑ" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "ÁÒÇÕÍÅÎÔ" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: ÎÅ ÔÁËÏÊ ÚÁÄÁÞÉ" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ÎÅ ×ÓÔÒÏÅÎÎÁ × ÏÂÏÌÏÞËÕ" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: ÏÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ÔÅËÕÝÅÊ ÄÉÒÅËÔÏÒÉÉ: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÔÏÌØËÏ × ÆÕÎËÃÉÉ" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: ÄÏÓÔÕÐÎÁÑ ÔÏÌØËÏ ÎÁ ÞÔÅÎÉÅ ÆÕÎËÃÉÑ" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ ÐÅÒÅÍÅÎÎÕÀ-ÍÁÓÓÉ× ÔÁËÉÍ ÓÐÏÓÏÂÏÍ" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: Ñ×ÌÑÅÔÓÑ ÄÉÒÅËÔÏÒÉÅÊ" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ ÆÁÊÌ" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" +"ÏÂÏÌÏÞËÁ ÎÅ Ñ×ÌÑÅÔÓÑ ÚÁÐÕÝÅÎÎÏÊ ÐÏÓÌÅ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ: ÉÓÐÏÌØÚÕÊÔÅ `exit' " + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "åÓÔØ ÐÒÉÏÓÔÁÎÏ×ÌÅÎÎÙÅ ÚÁÄÁÞÉ.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "åÓÔØ ÐÒÉÏÓÔÁÎÏ×ÌÅÎÎÙÅ ÚÁÄÁÞÉ.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "ÎÅ ÎÁÛÅÌ ÔÁËÕÀ ËÏÍÁÎÄÕ" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: 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 "" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "ÐÏÓÌÅÄÎÑÑ ËÏÍÁÎÄÁ: %s\n" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÅÒ×ÉÓ" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÏÐÉÓÁÎÉÅ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': ÐÒÏÐÕÝÅÎ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "%c': ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "ÎÅÔ ÄÒÕÇÏÊ ÄÉÒÅËÔÏÒÉÉ" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ: ÄÏÓÔÕÐÎÏ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: ÎÅ ÆÕÎËÃÉÑ" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ ÏÂÏÌÏÞËÉ" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: ÆÁÊÌ ÎÅ ÎÁÊÄÅÎ" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s Ñ×ÌÑÅÔÓÑ ËÌÀÞÅ×ÙÍ ÓÌÏ×ÏÍ ÏÂÏÌÏÞËÉ\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s Ñ×ÌÑÅÔÓÑ ÆÕÎËÃÉÅÊ\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': ÐÌÏÈÁÑ ËÏÍÁÎÄÁ" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "ÞÉÓÌÏ × ×ÏÓØÍÅÒÉÞÎÏÊ ÓÉÓÔÅÍÅ ÉÓÞÉÓÌÅÎÉÑ" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "ÐÏÓÌÅÄÎÑÑ ËÏÍÁÎÄÁ: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "úÁ×ÅÒÛÁÀ ÒÁÂÏÔÕ..." + +#: error.c:405 +msgid "unknown command error" +msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ËÏÍÁÎÄÙ" + +#: error.c:406 +msgid "bad command type" +msgstr "" + +#: error.c:407 +msgid "bad connector" +msgstr "" + +#: error.c:408 +msgid "bad jump" +msgstr "" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: ËÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ÐÌÏÈÏÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ×ÙÒÁÖÅÎÉÅ" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "ÐÏÐÙÔËÁ ÐÒÉÓ×ÏÅÎÉÑ ÎÅ-ÐÅÒÅÍÅÎÎÏÊ" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "ÄÅÌÅÎÉÅ ÎÁ 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "ÐÒÏÐÕÝÅÎ `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÏÖÉÄÁÅÔÓÑ ÏÐÅÒÁÎÄ" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "%s: ÈÏÓÔ ÎÅÉÚ×ÅÓÔÅÎ" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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 "" + +#: lib/sh/netopen.c:346 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "õ ×ÁÓ ÅÓÔØ ÐÏÞÔÁ × $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "õ ×ÁÓ ÅÓÔØ ÎÏ×ÁÑ ÐÏÞÔÁ × $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "ðÏÞÔÁ × %s ÂÙÌÁ ÐÒÏÞÉÔÁÎÁ\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: `;' ÎÅ ÏÖÉÄÁÅÔÓÑ" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "ÏÖÉÄÁÌÓÑ `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ ÏËÏÌÏ `%s'" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ" + +#: parse.y:5223 +msgid "syntax error" +msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "éÓÐÏÌØÚÕÊÔÅ \"%s\", ÞÔÏÂÙ ÚÁ×ÅÒÛÉÔØÓÑ ÒÁÂÏÔÕ Ó ÏÂÏÌÏÞËÏÊ.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: ÎÅ ÍÏÇÕ ÐÅÒÅÐÉÓÁÔØ ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "ÏÛÉÂËÁ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ: ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ /tmp, ÐÏÖÁÌÕÊÓÔÁ ÓÏÚÄÁÊÔÅ!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp ÄÏÌÖÎÁ ÂÙÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÙÍ ÉÍÅÎÅÍ ÄÉÒÅËÔÏÒÉÉ" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ÎÅÄÏÐÕÓÔÉÍÁÑ ÏÐÃÉÑ" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "õ ÍÅÎÑ ÎÅÔ ÉÍÅÎÉ!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"éÓÐÏÌØÚÏ×ÁÎÉÅ:\n" +"%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ...\n" +"\t%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ÆÁÊÌ_ÓÏ_ÓËÒÉÐÔÏÍ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "äÌÉÎÎÙÅ ÏÐÃÉÉ × ÓÔÅÌÅ GNU:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "ïÐÃÉÉ ÏÂÏÌÏÞËÉ:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ÉÌÉ ÏÐÃÉÑ -o\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:583 +#, 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 +#, fuzzy +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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÞÔÅÎÉÑ" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÚÁÐÉÓÉ" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: ÐÁÒÁÍÅÔÒ null ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "ÎÅÔ ÓÏ×ÐÁÄÅÎÉÑ Ó: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ÞÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÁÒÇÕÍÅÎÔ" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:262 +msgid "`)' expected" +msgstr "ÏÖÉÄÁÅÔÓÑ `)' " + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "ÏÖÉÄÁÌÓÑ `)', ÎÁÊÄÅÎ %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÕÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÂÉÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" + +#: test.c:806 +msgid "missing `]'" +msgstr "ÐÒÏÐÕÝÅÎ `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +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:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +" îÅÔ ËÁËÏÇÏ-ÌÉÂÏ ÜÆÆÅËÔÁ; ËÏÍÁÎÄÁ ÎÉÞÅÇÏ ÎÅ ÄÅÌÁÅÔ. îÕÌØ ×ÏÚ×ÒÁÝÁÅÔÓÑ × " +"ËÁÞÅÓÔ×Å ÒÅÚÕÌØÔÁÔÁ." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "÷ÏÚ×ÒÁÝÁÅÔ ÒÅÚÕÌØÔÁÔ: ÎÅÕÄÁÞÁ." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +"ðÏËÁÚÙ×ÁÅÔ ×ÏÚÍÏÖÎÙÅ ÄÏÐÏÌÎÅÎÉÑ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÐÃÉÊ. ðÒÅÄÐÏÌÁÇÁÅÔÓÑ,\n" +" ÞÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÎÕÔÒÉ ÆÕÎËÃÉÊ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ, " +"ÇÅÎÅÒÉÒÕÀÝÅÊ ×ÏÚÍÏÖÎÙÅ ÄÏÐÏÌÎÅÎÉÑ.\n" +" åÓÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ óìï÷ï ÂÙÌ ÉÓÐÏÌØÚÏ×ÁÎ, ÔÏ ÂÕÄÕÔ " +"ÓÇÅÎÅÒÉÒÏ×ÁÎÙ ÔÏÌØËÏ ÓÏ×ÐÁÄÅÎÉÑ Ó óìï÷ï." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "âÅÚ ÷ùòáö ×ÏÚ×ÒÁÝÁÅÔ \"$ÓÔÒÏËÁ $ÉÍÑÆÁÊÌÁ\". ó ÷ùòáö," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "" +#~ "÷ÏÚ×ÒÁÝÁÅÔ \"$ÓÔÒÏËÁ $ÐÒÏÃÅÄÕÒÁ $ÉÍÑÆÁÊÌÁ\"; ÜÔÁ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ " +#~ "ÉÎÆÏÒÍÁÃÉÑ " + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÄÌÑ ÓÏÚÄÁÎÉÑ `stack trace'" + +#~ msgid "bug: unknown operation" +#~ msgstr "ÏÛÉÂËÁ: ÎÅÉÚ×ÅÓÔÎÁÑ ÏÐÅÒÁÃÉÑ" + +#, fuzzy +#~ msgid "Return a successful result." +#~ msgstr "÷ÏÚ×ÒÁÝÁÅÔ ÒÅÚÕÌØÔÁÔ: ×ÓÅ ÈÏÒÏÛÏ." + +#, fuzzy +#~ msgid "Obsolete. See `declare'." +#~ msgstr " ÷ÙÛÅÌ ÉÚ ÕÐÏÔÒÅÂÌÅÎÉÑ. óÍ. `declare'." + +#, fuzzy +#~ msgid "Logout of a login shell." +#~ msgstr "" +#~ "úÁ×ÅÒÛÅÎÉÑ ÓÅÁÎÓÁ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÚÁÐÕÝÅÎÎÏÇÏ ÐÏÓÌÅ ×ÈÏÄÁ × " +#~ "ÓÉÓÔÅÍÕ." diff --git a/src/bin/bash/po/sk.gmo b/src/bin/bash/po/sk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7c8efd2bb27f44f4d095e789120e673592a95678 GIT binary patch literal 153974 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¨Wb=X6>Z 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, 2007, 2008, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2009-02-07 15:11+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "chybný index poľa" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" + +#: arrayfunc.c:517 +#, 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:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nie je možné vytvoriÅ¥: %s" + +#: bashline.c:3413 +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:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "chýba zatvárajúca „%c“ v %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: chýba oddeľovaÄ dvojbodka" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: neplatný názov klávesovej mapy" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nie je možné preÄítaÅ¥: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: neznámy názov funkcie" + +#: builtins/bind.def:303 +#, 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:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s je možné vyvolaÅ¥ ako " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "poÄet cyklov" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“" + +#: builtins/caller.def:133 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "Vracia kontext aktuálneho volania podprocedúry." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME nebola nastavená" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD nebola nastavená" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "riadok %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "upozornenie: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: použitie " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "príliÅ¡ veľa argumentov" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: voľba vyžaduje argument" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vyžaduje sa numerický argument" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: nenájdené" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: neplatná voľba" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: neplatný názov voľby" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: nie je platný identifikátor" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "neplatné osmiÄkové Äíslo" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "neplatné Å¡estnástkové Äíslo" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "neplatné Äíslo" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: neplatné urÄenie signálu" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: nie je pid ani platný Å¡pecifikátor úlohy" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: premenná len na Äítanie" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s je mimo rozsahu" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s mimo rozsahu" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: taká úloha neexistuje" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: riadenie úloh nedostupné" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "riadenie úloh nedostupné" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: obmedzené" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "obmedzené" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nie je vstavaný príkaz (builtin) shellu" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "chyba zapisovania: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: nejednoznaÄné urÄenie úlohy" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: neplatný názov akcie" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: chýba Å¡pecifikácia dokonÄovania" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "momentálne sa nevykonáva funkcia doplňovania" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "je možné použiÅ¥ iba vo funkcii" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcia iba na Äítanie" + +#: builtins/declare.def:461 +#, 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:468 +#, 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:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dynamické naÄítavanie nie je dostupné" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nie je možné otvoriÅ¥ zdieľaný objekt %s: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nie je dynamicky naÄítané" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nie je možné zmazaÅ¥: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: je adresár" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nie je obyÄajný súbor" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: súbor je príliÅ¡ veľký" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nie je možné spustiÅ¥: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "odhlásenie\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "toto nie je login shell: použite „exit“" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Existujú zastavené úlohy.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Existujú bežiace úlohy.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "prákaz nenájdený" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "Å¡pecifikácia histórie" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nie je možné otvoriÅ¥ odkladací súbor: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "aktuálny" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "haÅ¡ovanie vypnuté" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: haÅ¡ovacia tabuľka je prázdna\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "použití\tpríkaz\n" + +#: builtins/help.def:130 +#, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nie je možné otvoriÅ¥: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "nie je možné použiÅ¥ viac ako jednu z volieb -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "poloha histórie" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenty musia byÅ¥ ID procesov alebo úloh" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Neznáma chyba" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "oÄakával sa výraz" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: neplatná Å¡pecifikácia popisovaÄa súboru" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: neplatný popisovaÄ súboru: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: neplatný poÄet riadkov" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: neplatný zaÄiatok poľa" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: neplatné kvantum spätného volania" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "názov prázdnej premennej poľa" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "vyžaduje sa podpora premennej poľa" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: chýba formátovací znak" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: neplatný formátovací znak" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "upozornenie: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "chýba hexadecimálna Äíslica v \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "žiadny iný adresár" + +#: builtins/pushd.def:462 +msgid "" +msgstr "<žiadny aktuálny adresár>" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "zásobník adresárov je prázdny" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "index zásobníka adresárov" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "chyba pri Äítaní: %d: %s" + +#: builtins/return.def:73 +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:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nie je možné zruÅ¡iÅ¥" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nie je premenná poľa" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: nie je funkcia" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "posun o" + +#: builtins/shopt.def:254 +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:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: súbor sa nepodarilo nájsÅ¥" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "nie je možné suspendovaÅ¥" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "nie je možné suspendovaÅ¥ login shell" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s má alias „%s“\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je kľúÄové slovo shellu\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkcia\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je vstavaný príkaz (builtin) shellu\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s je haÅ¡ovaný (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: neplatný argument limitu" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: chybný príkaz" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nie je možné zistiÅ¥ limit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "obmedzenie" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nie je možné zmeniÅ¥ limit: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "osmiÄkové Äíslo" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: neplatný operátor symbolického režimu" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: neplatný znak symbolického režimu" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "chyba neznámeho príkazu" + +#: error.c:406 +msgid "bad command type" +msgstr "chybný typ príkazu" + +#: error.c:407 +msgid "bad connector" +msgstr "chybný konektor" + +#: error.c:408 +msgid "bad jump" +msgstr "chybný skok" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: neviazaná premenná" + +#: eval.c:181 +#, c-format +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:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "chyba rúry" + +#: execute_cmd.c:4363 +#, 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:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: príkaz nenájdený" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: chybný interpreter" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "bola prekroÄená úroveň rekurzie výrazu" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "podteÄenie zásobníka rekurzie" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "chyba syntaxe vo výraze" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "pokus o priradenie mimo premennej" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "delenie nulou" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "chyba: chybný expassign token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "pre podmienený výraz sa oÄakáva „:“" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponent menší ako 0" + +#: expr.c:826 +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:854 +msgid "missing `)'" +msgstr "chýba „)“" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "chyba syntaxe: oÄakáva sa operand" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "chyba syntaxe: neplatný aritmetický operátor" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (chybný token je „%sâ€)" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "neplatný aritmetický základ" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "hodnota je ako základ príliÅ¡ veľká" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: chyba výrazu\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: nie je možné pristupovaÅ¥ k rodiÄovským adresárom" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp rúra" + +#: jobs.c:887 +#, 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:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: proces %5ld (%s) v the_pipeline" + +#: jobs.c:1113 +#, 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:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: taký pid neexistuje" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signál %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Hotovo" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Zastavené" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Zastavené(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Beží" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Hotovo(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "UkonÄenie %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Neznámy stav" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(bol uložený výpis pamäte) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid detského procesu (%ld to %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Neexistuje záznam o procese %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: úloha %d je zastavená" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: úloha skonÄila" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: úloha %d už je v pozadí" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: riadok %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (bol uložený výpis pamäte)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd teraz: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: funkcia getpgrp zlyhala" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: riadkový systém" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "v tomto shelli nie je riadenie úloh" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: zlyhal predpoklad: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "neznámy" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok na zozname voľných zaprataný" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: zavolaný s argumentom už uvoľneného bloku" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: zavolaný s argumentom nealokovaného bloku" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:902 +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:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: zavolaný s argumentom nealokovaného bloku" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:1022 +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:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "sieÅ¥ové operácie nie sú podporované" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Máte poÅ¡tu v súbore $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Máte novú poÅ¡tu v súbore $_" + +#: mailcheck.c:474 +#, 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:322 +msgid "syntax error: arithmetic expression required" +msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "chyba syntaxe: neoÄakávaná „;“" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "chyba syntaxe: „((%s))“" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: chybný typ inÅ¡trukcie %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" + +#: parse.y:2986 parse.y:3218 +#, 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:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "neoÄakávaný koniec súboru poÄas hľadania „]]“" + +#: parse.y:3727 +#, 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:3731 +msgid "syntax error in conditional expression" +msgstr "chyba syntaxe v podmieneÄnom príkaze" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "neoÄakávaný token „%s“, oÄakávalo sa `)'" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "oÄakávalo sa `)'" + +#: parse.y:3841 +#, 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:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "neoÄakávaný argument podmieneÄného unárneho operátora" + +#: parse.y:3885 +#, 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:3889 +msgid "conditional binary operator expected" +msgstr "oÄakáva sa podmieneÄný binárny operátor" + +#: parse.y:3906 +#, 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:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "neoÄakávaný argument v podmieneÄnom binárnom operátore" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "neoÄakávaný token „%c“ v podmieneÄnom príkaze" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "neoÄakávaný token „%s“ v podmieneÄnom príkaze" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "neoÄakávaný token %d v podmieneÄnom príkaze" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "chyba syntaxe neÄaleko neoÄakávaného tokenu „%s“" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "chyba syntaxe neÄaleko „%s“" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "chyba syntaxe: neoÄakávaný koniec súboru" + +#: parse.y:5223 +msgid "syntax error" +msgstr "chyba syntaxe" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Na opustenie shellu použite „%s“.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „)“" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "dokonÄovanie: funkcia „%s“ nebola nájdená" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: chybný konektor `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: neplatný formátovací znak" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "popisovaÄ súboru mimo rozsahu" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: nejednoznaÄné presmerovanie" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nie je možné prepísaÅ¥ existujúci súbor" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" + +#: redir.c:162 +#, 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:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musí byÅ¥ platný názov adresára" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: neplatná voľba" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Nemám meno!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, verzia %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU dlhé voľby:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Voľby shellu:\n" + +#: shell.c:1786 +msgid "\t-irsD 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:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s alebo -o voľba\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" + +#: sig.c:583 +#, 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 +msgid "Unknown Signal #" +msgstr "Neznáme Äíslo signálu" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Neznámy signál #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "chybná substitúcia: chýba „%s“ v %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na Äítanie" + +#: subst.c:4551 +#, 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:4569 +#, 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:4765 +msgid "cannot make pipe for command substitution" +msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podreÅ¥azca < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substitúcia" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "bez zhody: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "oÄakával sa argument" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oÄakával sa celoÄíselný výraz" + +#: test.c:262 +msgid "`)' expected" +msgstr "oÄakávala sa „)“" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "oÄakávala sa „)“, bolo nájdené %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oÄakával sa unárny operátor" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oÄakával sa binárny operátor" + +#: test.c:806 +msgid "missing `]'" +msgstr "chýba „]“" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "neplatné Äíslo signálu" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: chybný signál %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "chyba pri importe definície funkcie „%s“" + +#: variables.c:736 +#, 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:1898 +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:3127 +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:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "neplatný znak %d v exportstr %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "žiadne „=“ v exportstr %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: chýba kontext global_variables" + +#: variables.c:3881 +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" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright (C) 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, verzia %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "Toto je slobodný softvér; môžete ho slobodne meniÅ¥ a šíriÅ¥.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"Nie sú poskytované ŽIADNE ZÃRUKY v rozsahu aký povoľuje\n" +"aplikovateľné právo.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: nie je možné alokovaÅ¥ %lu bajtov" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: nie je možné realokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: nie je možné alokovaÅ¥ %lu bajtov" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xmalloc: %s:%d: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" + +#: xmalloc.c:174 +#, c-format +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)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [názov[=hodnota] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] názov [názov ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-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:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [vstavaná funcia shellu [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [výraz]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [adresár]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "pravda" + +#: builtins.c:72 +msgid "false" +msgstr "nepravda" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [názov[=hodnota] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] názov[=hodnota] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [voľba] názov[=hodnota] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f názov_súboru] [názov ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts názov_reÅ¥azca_volieb [arg]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a názov] [príkaz [argumenty ...]] [presmerovanie ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [Å¡pec_úlohy]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [Å¡pec_úlohy ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p cesta] [-dt] [názov ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [vzor ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [Å¡pec_úlohy ...] alebo jobs -x príkaz [argumenty]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [Å¡pec_úlohy ...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a pole] [-d oddeľovaÄ] [-i text] [-n nznakov] [-p výzva] [-t " +"zdržadnie] [-u fd] [názov ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [názov ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [názov[=hodnota] ...] alebo export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [názov[=hodnota] ...] alebo readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source názov_súboru [argumenty]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". názov_súboru [argumenty]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [výraz]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "-krát" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] Å¡pec_signálu ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] názov [názov ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [obmedzenie]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [režim]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in SLOVà ... ] ; do PRÃKAZY; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( výraz1; výraz2; výraz3 )); do PRÃKAZY; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÃZOV [in SLOVà ... ;] do PRÃKAZY; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] rúra" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SLOVO in [VZOR [| VZOR]...) PRÃKAZY ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PRÃKAZY; do PRÃKAZY; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PRÃKAZY; do PRÃKAZY; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" +"function názov_funkcie { PRÃKAZY ; } alebo názov_funkcie () { PRÃKAZY ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ PRÃKAZY ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "Å¡pec_úlohy [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( výraz ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ výraz ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "premenné - Názvy a významy niektorých premenných shellu" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | adr]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [názov_voľby ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formát [argumenty]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-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:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o 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:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o voľba] [názov ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-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:242 +#, fuzzy +msgid "" +"readarray [-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:254 +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:276 +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:289 +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" +" \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:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"ZmeniÅ¥ aktuálny adresár.\n" +" \n" +" Zmení aktuálny adresár na ADR. Premenná $HOME je Å¡tandardný ADR.\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" +" \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ý, inak nenulovú hodnotu." + +#: builtins.c:411 +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" +" \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:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"NastaviÅ¥ hodnoty a atribúty premennných.\n" +" \n" +" Deklaruje premenné a ich 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" +" -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:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"NastaviÅ¥ hodnoty a atribúty premenných.\n" +" \n" +" Zastaralé. Pozri „help declare“." + +#: builtins.c:520 +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, an error occurs,\n" +" 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:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two 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:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" +"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:921 +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" +" Každý ARG je aritmetický výraz, ktorý sa má vyhodnotiÅ¥. 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ý operator\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 (vyžiadanou ako 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:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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 sa naÄíta jeden riadok. Riadok sa rozdelí do\n" +" polí ako pri delení 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, " +"poÄínajúc nulou.\n" +" -d\tpokraÄovanie Äítania až kým sa nevyskytne prvý znak znak DELIM\n" +" namiesto znaku nového riadka.\n" +" -e a shell je interaktívny, na naÄítanie riadka sa použije readline.\n" +" -n znakov\tÄítanie vstupu skonÄí po naÄítaní ZNAKOV znakov.\n" +" -p\tvýzva\tpred pokusom o Äítanie vypíše reÅ¥azec VÃZVA bez koncového\n" +" \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" +" \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á TMOUT, jej hodnota je Å¡tandardný interval\n" +" \texpirácie. TMOUT môže byÅ¥ zlomok. Návratová hodnota je\n" +" \tväÄÅ¡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:1006 +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:1019 +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 follow 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" +" 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" +" \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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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 "" +"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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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" +" 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Ã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:1296 +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:1305 +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:1317 +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.\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 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\n" +" ukonÄení shellu. Ak je SIGNAL_SPEC DEBUG, ARG sa vykoná po každom\n" +" jednom príkaze.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +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:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" 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:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\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:1785 +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" +" \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.\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:1815 +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" +" \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.\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:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"printf formátuje a vypisuje ARGUMENTY podľa FORMÃTu.\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" +" \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:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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" +" \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:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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" +" \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:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"NaÄítaÅ¥ riadky zo súboru do premennej 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ÄŒER 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 namiest Å¡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" +" \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." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "top directory." +#~ msgstr "na nový vrchol zásobníka." + +#~ 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/src/bin/bash/po/sv.gmo b/src/bin/bash/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2c003b86afcd44bd6dcd3bbb1f4572b36359d464 GIT binary patch literal 149365 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 QwY@jXjXr#aMc?)R23hr=>;M1& literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/sv.po b/src/bin/bash/po/sv.po new file mode 100644 index 0000000000..87f40e16e2 --- /dev/null +++ b/src/bin/bash/po/sv.po @@ -0,0 +1,5324 @@ +# Swedish translation of bash +# Copyright © 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Göran Uddeborg , 2008. +# +# $Revision: 1.3 $ +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-09-15 13:09+0200\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \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:50 +msgid "bad array subscript" +msgstr "felaktigt vektorindex" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, 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:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ogiltig nyckel till associativ vektor" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: det gÃ¥r inte att tilldela till ickenumeriska index" + +#: arrayfunc.c:517 +#, 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:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: det gÃ¥r inte att skapa: %s" + +#: bashline.c:3413 +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:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: första ickeblanka tecknet är inte '\"'" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ingen avslutande \"%c\" i %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: kolonseparator saknas" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": ogiltigt tangentbindningsnamn" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: det gÃ¥r inte att läsa: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": det gÃ¥r inte att avbinda" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\": okänt funktionsnamn" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s är inte bundet till nÃ¥gra tangenter.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan anropas via " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "slingräknare" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "endast meningsfullt i en \"for\"-, \"while\"- eller \"until\"-slinga" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME är inte satt" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD är inte satt" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "rad %d: " + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "varning: " + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: användning: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "för mÃ¥nga argument" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: flaggan kräver ett argument" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: numeriskt argument krävs" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: finns inte" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ogiltig flagga" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ogiltigt flaggnamn" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": inte en giltig identifierare" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "ogiltigt oktalt tal" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "ogiltigt hexadecimalt tal" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "ogiltigt tal" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ogiltig signalspecifikation" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": inte en pid eller giltig jobbspecifikation" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: endast läsbar variabel" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s utanför giltigt intervall" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s utanför giltigt intervall" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: inget sÃ¥dant jobb" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: ingen jobbstyrning" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "ingen jobbstyrning" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: begränsat" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "begränsat" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: inte inbyggt i skalet" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "skrivfel: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: tvetydig jobbspecifikation" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ogiltigt Ã¥tgärdsnamn" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ingen kompletteringsspecifikation" + +#: builtins/complete.def:667 +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:669 +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:786 +msgid "not currently executing completion function" +msgstr "kör inte en kompletteringsfunktion" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "kan endast användas i en funktion" + +#: builtins/declare.def:353 +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:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: endast läsbar funktion" + +#: builtins/declare.def:461 +#, 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:468 +#, 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:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "dynamisk laddning är inte tillgängligt" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "det gÃ¥r inte att öppna delat objekt %s: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: inte dynamiskt laddad" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: kan inte ta bort: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: är en katalog" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: inte en normal fil" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: filen är för stor" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: det kÃ¥r inte att köra binär fil" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: kan inte köra: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "utloggning\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "inte ett inloggningsskal: använd \"exit\"" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Det finns stoppade jobb.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Det finns körande jobb.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "hittar inget kommando" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "historiespecifikation" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: det gÃ¥r inte att öppna temporärfil: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "aktuell" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "hasning avslaget" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hashtabellen tom\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "träffar\tkommando\n" + +#: builtins/help.def:130 +#, c-format +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:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: det gÃ¥r inte att öppna: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "det gÃ¥r inte att använda mer än en av -anrw" + +#: builtins/history.def:186 +msgid "history position" +msgstr "historieposition" + +#: builtins/history.def:365 +#, 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argument mÃ¥ste vara processer eller job-id:n" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Okänt fel" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "uttryck förväntades" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ogiltig filidentifierarspecifikation" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ogiltig filbeskrivare: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ogiltigt radantal" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ogiltig vektorstart" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ogiltigt Ã¥teranropskvanta" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "tomt vektorvariabelnamn" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "stöd för vektorvariabler krävs" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "\"%s\": formateringstecken saknas" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": ogiltigt formateringstecken" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "varning: %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "hexadecimal siffra saknas för \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "ingen annan katalog" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "katalogstacken är tom" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "katalogstackindex" + +#: builtins/pushd.def:683 +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\" command. Du kan komma tillbaka upp genom\n" +" listan med 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äkntat 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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ogiltig tidsgränsspecifikation" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "läsfel: %d: %s" + +#: builtins/return.def:73 +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:768 +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:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: det gÃ¥r inte att ta bort tilldelning" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: det gÃ¥r inte att ta bort tilldelning: endast läsbar %s" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: inte en vektorvariabel" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: inte en funktion" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "skiftantal" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "det gÃ¥r inte att sätta och ta bort skalflaggor samtidigt" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: filen finns inte" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "det gÃ¥r inte att suspendera" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "det gÃ¥r inte att suspendera ett inloggningsskal" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s är ett alias för \"%s\"\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s är ett nyckelord i skalet\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s är en funktion\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s är inbyggt i skalet\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s är %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s är hashad (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ogiltigt gränsargument" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": felaktigt kommando" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan inte avgöra gränsen: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "gräns" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan inte ändra gränsen: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "oktalt tal" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": ogiltig operator för symboliskt läge" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": ogiltigt tecken för symboliskt läge" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "okänt kommandofel" + +#: error.c:406 +msgid "bad command type" +msgstr "felaktig kommandotyp" + +#: error.c:407 +msgid "bad connector" +msgstr "felaktig anslutning" + +#: error.c:408 +msgid "bad jump" +msgstr "felaktigt hopp" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: obunden variabel" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atiden gick ut i väntan pÃ¥ indata: automatisk utloggning\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "det gÃ¥r inte att omdiregera standard in frÃ¥n /dev/null: %s" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: \"%c\": ogiltigt formateringstecken" + +#: execute_cmd.c:2011 +msgid "pipe error" +msgstr "rörfel" + +#: execute_cmd.c:4363 +#, 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:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: kommandot finns inte" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: felaktig tolk" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "det gÃ¥r inte att duplicera fb %d till fb %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "rekursionsnivÃ¥ i uttryck överskriden" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "underspill i rekursionsstacken" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "syntaxfel i uttrycket" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "försök att tilldela till en icke-variabel" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "division med 0" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "bug: felaktig expassign-token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "\":\" förväntades i villkorligt uttryck" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "exponenten är mindre än 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" + +#: expr.c:854 +msgid "missing `)'" +msgstr "\")\" saknas" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "syntaxfel: en operand förväntades" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaxfel: ogiltig aritmetisk operator" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (felsymbol är \"%s\")" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "ogiltig aritmetisk bas" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "värdet är för stort för basen" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: uttrycksfel\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: det gÃ¥r inte att komma Ã¥t föräldrakatalogen" + +#: input.c:94 subst.c:4559 +#, 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:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp rör" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "avgrenad pid %d fins i körande jobb %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "tar bort stoppat jobb %d med processgrupp %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: process %5ld (%s) i the_pipeline" + +#: jobs.c:1113 +#, 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:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ingen sÃ¥dan pid" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Klart" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Stoppat" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Stoppat(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Kör" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Klart(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Avslut %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Okänd status" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(minnesutskrift skapad) " + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (ak: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "barns setpgid (%ld till %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ingen uppgift om process %ld" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: jobb %d är stoppat" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobbet har avslutat" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: jobb %d är redan i bakgrunden" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: rad %d: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (minnesutskrift skapad)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(ak nu: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp misslyckades" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "det gÃ¥r inte att sätta terminalprocessgrupp (%d)" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "ingen jobbstyrning i detta skal" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: försäkran misslyckades: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +msgid "unknown" +msgstr "okänd" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block pÃ¥ frilista överskrivet" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: anropad med redan frigjort block som argument" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "free: anropad med oallokerat block som argument" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: start- och slutstyckesstorlekar skiljer" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: anropat med oallokerat block som argument" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start- och slutstycesstorlekar skiljer" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "nätverksoperationer stöds inte" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Du har post i $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Du har ny post i $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posten i %s har lästs\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "syntaxfel: aritmetiskt uttryck krävs" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "syntaxfel: oväntat \";\"" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaxfel: \"((%s))\"" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: felaktig instruktionstyp %d" + +#: make_cmd.c:651 +#, 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:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: omdirigeringsinstruktion \"%d\" utanför giltigt intervall" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "oväntat filslut vid sökning efter matchande \"%c\"" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "oväntat filslut vid sökning efter \"]]\"" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaxfel i villkorligt uttryck: oväntad symbol \"%s\"" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "syntaxfel i villkorligt uttryck" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "oväntad symbol \"%s\", \")\" förväntades" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "\")\" förväntades" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "oväntat argument \"%s\" till villkorlig unär operator" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "oväntat argument till villkorlig unär operator" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "oväntad symbol \"%s\", villkorlig binär operator förväntades" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "villkorlig binär operato förväntades" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "oväntat argument \"%s\" till villkorlig binär operator" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "oväntat argument till villkorlig binär operator" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "oväntad symbol \"%c\" i villkorligt kommando" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "oväntad symbol \"%s\" i villkorligt kommando" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "oväntad symbol %d i villkorligt kommando" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaxfel när den oväntade symbolen \"%s\"" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaxfel nära \"%s\"" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "syntaxfel: oväntat filslut" + +#: parse.y:5223 +msgid "syntax error" +msgstr "syntaxfel" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Använd \"%s\" fär att lämna skalet.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "oväntat filslut när matchande \")\" söktes" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "komplettering: funktion \"%s\" finns inte" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: felaktig anslutning \"%d\"" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": ogiltigt formateringstecken" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "filbeskrivare utanför giltigt intervall" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: tvetydig omdirigering" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: begränsad: det gÃ¥r inte att skriva över en existerande fil" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: begränsad: det gÃ¥r inte att omdirigera utdata" + +#: redir.c:162 +#, 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:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "omdirigeringsfel: det gÃ¥r inte att duplicera fb" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "hittade inte /tmp, var god skapa!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp mÃ¥ste vara ett giltigt katalognamn" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ogiltig flagga" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Jag har inget namn!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU lÃ¥nga flaggor:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Skalflaggor:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s eller -o flagga\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, 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" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ogiltig operation" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Felatkig 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 "systemkrash 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-överakare borttagen" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-ljudsekevens har avslutat" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informationsbegäran" + +#: siglist.c:222 +msgid "Unknown Signal #" +msgstr "Okänd signal nr " + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Okänd signal nr %d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "felaktig substitution: ingen avslutande \"%s\" i %s" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: det gÃ¥r inte att tilldela listor till vektormedlemmar" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "det gÃ¥r inte att skapa rör för processubstitution" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "det gÃ¥r inte att skapa barn för processubstitution" + +#: subst.c:4549 +#, 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:4551 +#, 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:4569 +#, 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:4765 +msgid "cannot make pipe for command substitution" +msgstr "det gÃ¥r inte att skapa rör för kommandosubstitution" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "det gÃ¥r inte att skapa barn för kommandosubstitution" + +#: subst.c:4816 +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:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametern tom eller inte satt" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: delstränguttryck < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: felaktig substitution" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: det gÃ¥r inte att tilldela pÃ¥ detta sätt" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "felaktig ersättning: ingen avslutande \"`\" i %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "ingen match: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argument förväntades" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: heltalsuttryck förväntades" + +#: test.c:262 +msgid "`)' expected" +msgstr "\")\" förväntades" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "\")\" förväntades, fann %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unär operator förväntades" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binär operator förväntades" + +#: test.c:806 +msgid "missing `]'" +msgstr "\"]\" saknas" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "ogiltigt signalnummer" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: felaktig signal %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "fel vid import av funktionsdefinition för \"%s\"" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "skalnivÃ¥ (%d) för hög, Ã¥terställer till 1" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "ogiltigt tecken %d i exportstr för %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "inget \"=\" i exportstr för %s" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: ingen kontext global_variables" + +#: variables.c:3881 +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" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright © 2008 Free Software Foundation, Inc." + +#: version.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 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" +"Detta är fri programvara, det fÃ¥r fritt ändra och vidaredistribuera den.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "Det finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: kan inte allokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: kan inte allokera %lu byte" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: kan inte reallokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: kan inte allokera %lu byte" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s: %d: kan inte allokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s: %d: kan inte allokera %lu byte" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %s: %d: kan inte areallokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s: %d: kan inte allokera %lu byte" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [namn[=värde] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] namn [namn ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m tangentkarta] [-f filenamn] [-q namn] [-u namn] [-r " +"tangentsekv] [-x tangentsekv:skalkommando] [tangentsekv:readline-funktion " +"eller readline-kommando]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [skalinbyggd [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [uttr]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [kat]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "true" + +#: builtins.c:72 +msgid "false" +msgstr "false" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] kommando [arg ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [namn[=värde] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] namn[=värde] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [flagga] namn[=värde] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filenamn] [namn ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts flgsträng namn [arg]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a namn] [kommando [argument ...]] [omdirigering ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:103 +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:107 +msgid "fg [job_spec]" +msgstr "fg [jobbspec]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [jobbspec ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p sökväg] [-dt] [namn ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [mönster ...]" + +#: builtins.c:121 +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:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobbspec ...]" + +#: builtins.c:132 +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:134 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a vektor] [-d avgr] [-i text] [-n ntkn] [-p prompt] [-t " +"tidgräns] [-u fb] [namn ...]" + +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o flaggnamn] [arg ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [namn ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [namn[=värde] ...] eller export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [namn[=värde] ...] eller readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "skift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "source filnamn [argument]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". filnamn [argument]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [uttr]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:162 +msgid "times" +msgstr "times" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signalspec ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] namn [namn ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [gräns]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [rättigheter]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "wait [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "wait [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAMN [in ORD ... ] ; do KOMMANDON; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( utr1; utr2; utr3 )); do KOMMANDON; done" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAMN [in ORD ... ;] do KOMMANDON; done" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "time [-p] rör" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ORD in [MÖNSTER [| MÖNSTER]...) KOMMANDON ;;]... esac" + +#: builtins.c:192 +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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMMANDON; do KOMMANDON; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMMANDON; do KOMMANDON; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function namn { KOMMANDON ; } or namn () { KOMMANDON ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ KOMMANDON ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "jobbspec [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( uttryck ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ uttryck ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabler - Namn och betydelse av nÃ¥gra skalvariabler" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | kat]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [flgnamn ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argument]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o flagga] [-A Ã¥tgärd] [-G globmnst] [-W " +"ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " +"suffix] [namn ...]" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o flagga] [-A Ã¥tgärd] [-G globmnst] [-W " +"ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " +"suffix] [ord]" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o flagga] [namn ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C Ã¥teranrop] [-c " +"kvanta] [vektor]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C Ã¥teranrop] [-c " +"kvanta] [vektor]" + +#: builtins.c:254 +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 argumen 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 avlutande 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 definerade alias i 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:276 +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:289 +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" +" \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 List funktionsnamn och bindningar.\n" +" -p List 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 tangentskevenser 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 anroper 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örs sÃ¥ att SKALKOMMANDO körs när\n" +" \t\t\t\t TANGENTSEKV skrivs.\n" +" \n" +" Slutstatus:\n" +" bind returnerar 0 om inte en okänd flagga ges eller ett fel inträffar." + +#: builtins.c:326 +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:338 +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:350 +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 falkst om SKALINBYGGD " +"inte\n" +" är inbyggd i skalet." + +#: builtins.c:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; 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\n" +" -P\tanvänd den fysiska katalogstrukturen utan att följa\n" +" \tsymboliska länkar\n" +" \n" +" Standardvärde är att följa symboliska längar, som om \"-L\" vore " +"angivet.\n" +" \n" +" Slutstatus:\n" +" Returnerar 0 om katalogen är ändrad; skilt frÃ¥n noll annars." + +#: builtins.c:411 +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" +" \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" +" \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:428 +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:439 +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:448 +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:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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\tanvänd ett standardvärde pÃ¥ PATH som är garanterat att hitta\n" +" \talla standardverktygen\n" +" -v\tskriv en beskrivning av KOMMANDO liknande den inbyggda \"type\"\n" +" -V\tskriv 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an 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" +" \toch källkodsfil vid felsökning)\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 NAMN till gemena vid tilldelning\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 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 atitmetisk 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\".\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Sätt variabelvärden och -attribut.\n" +" \n" +" FörÃ¥ldrat. Se \"help declare\"." + +#: builtins.c:520 +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, an error occurs,\n" +" 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 inträffar\n" +" eller skalet inte exekverar en funktion." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\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" +" -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" +" \\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" +" \t0 till 3 oktala siffror\n" +" \\xHH\tdet Ã¥ttabitarstecken vars värde är HH (hexadecimalt). HH\n" +" \tkan vara en eller tvÃ¥ hexadecimala siffror\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett skrivfel inträffar." + +#: builtins.c:571 +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:586 +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ändningsbar\n" +" \tform\n" +" -s\tskriv endast namnen pÃ¥ Posix \"special\"-inbyggda\n" +" \n" +" Flaggor som styr dynamisk inläsning:\n" +" -f\tLäs int 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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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 skalskrpt 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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" +" Sluttatus:\n" +" Returnerar framgÃ¥ng om inte KOMMANDO inte finns eller ett fel vid\n" +" omdirigering inträffar." + +#: builtins.c:689 +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:698 +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:708 +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:738 +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:753 +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 idintifieras 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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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\t\tglöm platsen i minnet för varje NAMN\n" +" -l\t\tvisa i ett format som kan Ã¥teranvändas som indata\n" +" -p sökväg \tanvänd SÖKVÄG som den fullständiga sökvägen till NAMN\n" +" -r\t\tglömm alla platser i minnet\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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" +" \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:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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Ã¥ avstÃ¥nd AVSTÃ…ND\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" +" -r\tläs historiefilen och lägg till innehÃ¥llet till historielistan\n" +" -w\tskriv den aktuella historien till hstoriefilen och lägg till\n" +" \tdem till historielistan\n" +" \n" +" -p\tutför historieexpansion pÃ¥ varje ARG och visa resultatet utan\n" +" \tatt lagra det i historielistan\n" +" -s\tlägg till ARG till historielistan som en ensam post\n" +" \n" +" Om FILENAMN 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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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" +" \tnotifiering\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:879 +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" +" \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" +" \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:898 +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" +" \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 "" +"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" +" \tsignalnummer som namn skall listas för\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:921 +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\texponentiatiering\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" +" \tuttf ? 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. Delutryck 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:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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 sekvensiella 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\t\tanvänd Readline för att fÃ¥ in raden i ett interaktivt\n" +" \t\t\tskal\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\n" +" -p prompt\tskriv ut strängen PROMPT utan en avslutande nyrad före\n" +" \t\tförsök att läsa\n" +" -r\t\ttillÃ¥t inte bakstreck att skydda nÃ¥gra tecken\n" +" -s\t\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\tbrÃ¥ktal. Slutstatus är större än 128 om tidsgränsen överskrids\n" +" -u fb\t\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" +" eller en ogiltig filbeskrivare ges som argument till -u." + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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 avlutade 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 nol 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 historiesubstituion i !-stil. Denna flagga är pÃ¥ som\n" +" standard när skalet är interaktivt.\n" +" -P Om satt följs inte symboliska länkar när kommandon sÃ¥som cd körs\n" +" som ändrar aktuell katalog.\n" +" -T Om satt ärvs DEBUG-fällan av skalfunktioner.\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:1101 +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" +" 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" +" 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:1121 +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:1140 +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 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 "" +"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 assoicativa vektorvariabler\n" +" -f\treferara till skalfunktioner\n" +" -p\tvisa en lista över alla oföränderliga 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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änoperatorer ocksÃ¥, och numeriska jämförelseoperatoer.\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-gruppid.\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ändarid.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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 orginalvärde. Om\n" +" ARG är den tomma strängen ingoreras 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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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\n" +" \tnamnet NAMN, inklusive alias, inbyggda och funktioner, om och endast\n" +" \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" +" \talias, inbyggt eller funktion, och returnera namnet pÃ¥ diskfilen som\n" +" \tskulle blivit exekverad\n" +" -p\treturnerar antingen namnet pÃ¥ diskfilen som skulle exekverats,\n" +" \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\"function\", \"builtin\", \"file\" eller \"\", om NAMN är ett alias, " +"ett\n" +" \treserverat ord i skalet, en skalfunktion, inbyggt i skalet, en " +"diskfil\n" +" \trespektive inte finns\n" +" \n" +" Argument:\n" +" NAMN\tKomandonamn som skall tolkas.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om alla NAMNen finns, misslyckas om nÃ¥got inte finns." + +#: builtins.c:1380 +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" +" -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" +" \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 datasegmen\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" +" -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 realtidsschemaläggningsprioriteten\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" +" \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 inge " +"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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Vänta pÃ¥ att jobb blir färdiga och returnerar slutstatus.\n" +" \n" +" Väntar pÃ¥ processen som identifieras av ID, som kan vara en process-id\n" +" eller en jobbspecifikation, och rapportera dess avslutningsstatus. Om\n" +" ID inte ges, vänta pÃ¥ alla nu körande barnprocesser, och returstatus är\n" +" noll. Om ID är en jobbspecifikation, vänta pÃ¥ alla processer i det\n" +" jobbets rör.\n" +" \n" +" Slutstatus:\n" +" Returnerar status pÃ¥ ID, misslyckas ifall ID är ogiltig eller en " +"ogiltig\n" +" flagga ges." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Vänta pÃ¥ att en process blir färdig och returnerar slutstatus.\n" +" \n" +" Väntar pÃ¥ den angivna processen och rapportera dess avslutningsstatus. " +"Om\n" +" PID inte ges, vänta pÃ¥ alla nu körande barnprocesser, och returstatus " +"är\n" +" noll. PID mÃ¥ste vara en process-id.\n" +" \n" +" Slutstatus:\n" +" Returnerar status pÃ¥ ID, misslyckas ifall ID är ogiltig eller en " +"ogiltig\n" +" flagga ges." + +#: builtins.c:1478 +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:1492 +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:1510 +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" +" Sluttatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1531 +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Ã¥ variablen TIMEFORMAT används som utmatningsformat.\n" +" \n" +" Slutstatus:\n" +" Returstatusen är returstatusen frÃ¥n RÖR." + +#: builtins.c:1548 +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:1560 +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 kommndon baserat pÃ¥ ett villkor.\n" +" \n" +" Listan \"if KOMMANDON\" exekveras. Om des slutstatus är noll sÃ¥ " +"exekveras\n" +" listan \"then COMMANDS\". Annars exekveras varje lista \"elif KOMMANDON" +"\"\n" +" i tur och ordning, och om dess slutstatus är noll exekveras motsvarande\n" +" lista \"then COMMANDS\" och if-kommandot avslutar. Annars exekveras " +"listan\n" +" \"else COMMANDS\" 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:1577 +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 kommandont i\n" +" \"while\"-KOMMANDONa har en sluttstatus pÃ¥ noll.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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 at omdirigera\n" +" en hel mängd kommandon.\n" +" \n" +" Slutstatus:\n" +" Returnerar stutusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1641 +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:1656 +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:1668 +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:1694 +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 rade 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 bexkriver 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:1751 +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" +" \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.\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" +" \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" +" \tvänster i listan som visas av \"dirs\", med start pÃ¥ noll) hamnar\n" +" \tpÃ¥ toppen.\n" +" \n" +" -N\tRotera stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" +" \thöger i listan som visas av \"dirs\", med start pÃ¥ noll) hamnar\n" +" \tpÃ¥ toppen.\n" +" \n" +" kat\tLägger till KAT till toppen av katalogstacken, och gör\n" +" \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:1785 +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" +" \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.\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" +" \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\n" +" \tsom visas av \"dirs\", med start 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 katalogen räknat frÃ¥n höger i listan\n" +" \tsom visas av \"dirs\", med start 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.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" +" katalog misslyckas." + +#: builtins.c:1815 +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" +" \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.\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ä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" +" \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" +" \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" +" \tav dirs när det anropas utan fläggor, 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:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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" +" listas alla skalflaggor med en indikation om var och en är satt.\n" +" \n" +" Flaggor:\n" +" -o\tbegränsa FLGNAMN till de som kan användas med \"set -o\"\n" +" -p\tskriv raje 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:1865 +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" +" and printf(3), 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" +" \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 sortes 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" +" argument.\n" +" \n" +" Förutom de standardformatspecifikationer som beskrivs a printf(1) och\n" +" printf(3) 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" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett skriv-\n" +" eller tilldelningsfel inträffar." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\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" +" \tÃ¥teranvändningsbart format\n" +" -r\tta bort en kompletteringsspecifikation för varje NAMN eller\n" +" \tom inga NAMN är givna, alla kompletteringsinformationer\n" +" \n" +" När komplettering försöker göras försöks Ã¥tgärder i den ordning de\n" +" versala flaggorna är uppräknade ovan.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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" +" \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 kompletteringsspecifikaation definierad." + +#: builtins.c:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Läs rader fÃ¥n en fil till en vektorvariabel.\n" +" \n" +" Läs rader frÃ¥n standard in till vektorvariabeln VEKTOR, eller frÃ¥n\n" +" filbeskrivaren FB om flaggan -u ges. Variabeln MAPFILE är standard\n" +" för VEKTOR.\n" +" \n" +" Flaggor:\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\t\tTa bort en avslutande nyrad frÃ¥n varje inläst rad.\n" +" -u fb\t\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 \tAnge antalet rader att läsa mellan varje anrop av\n" +" \t\t \tÃ…TERANROP.\n" +" \n" +" Argument:\n" +" VEKTOR\t\tNamn pÃ¥ vektorvariabel att använda för fildata.\n" +" \n" +" Om -C ges utan -c är standardkvanta 5000.\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." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" diff --git a/src/bin/bash/po/tr.gmo b/src/bin/bash/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7984078bce160e5922b470c90b7182159feab2dc GIT binary patch literal 25573 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, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2006-10-30 20:00+0200\n" +"Last-Translator: Nilgün Belma Bugüner \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "hatalı dizi indisi" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: eylem adı geçersiz" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: sayısal olmayan indise atama yapılamaz" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: oluÅŸturulamıyor: %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: boÅŸluk olmayan ilk karakter `\"' deÄŸil" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "%2$s içinde kapatan `%1$c' yok" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: ikinokta imi eksik" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': kısayol ismi geçersiz" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: okunamıyor: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': kısayol deÄŸiÅŸtirilemiyor" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': iÅŸlev ismi bilinmiyor" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s için bir kısayol atanmamış.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s bunun üzerinden çaÄŸrılabilir: " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +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:133 +#, fuzzy +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öner." + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME atanmamış" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD boÅŸ" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: uyarı: " + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: uyarı: " + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "çok fazla argüman" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: seçenek bir argüman gerektirir" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: sayısal argüman gerekli" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s:yok" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: seçenek geçersiz" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: seçenek ismi geçersiz" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': geçerli bir belirteç deÄŸil" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "geçersiz sinyal numarası" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "geçersiz sayı" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "geçersiz sayı" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: sinyal belirtimi geçersiz" + +#: builtins/common.c:257 +#, 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:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: salt okunur deÄŸiÅŸken" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s aralık dışı" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "argüman" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s aralık dışı" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: böyle bir iÅŸ yok" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: iÅŸ denetimi yok" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "iÅŸ denetimi yok" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: kısıtlı" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "kısıtlı" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: bir kabuk yerleÅŸiÄŸi deÄŸil" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "yazma hatası: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, 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:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: iÅŸ belirtimi belirsiz" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: eylem adı geçersiz" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: tamamlama belirtimi yok" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "uyarı: -F seçeneÄŸi umduÄŸunuz gibi çalışmayabilir" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "uyarı: -C seçeneÄŸi umduÄŸunuz gibi çalışmayabilir" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "sadece bir iÅŸlevde kullanılabilir" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "iÅŸlev yapmak için `-f' kullanılamaz" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: salt okunur iÅŸlev" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: dizi deÄŸiÅŸkenleri bu yolla iptal edilemez" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "özdevimli yükleme mümkün deÄŸil" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "%s paylaşımlı nesnesi açılamıyor: %s" + +#: builtins/enable.def:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: özdevimli olarak yüklenmemiÅŸ" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: silinemiyor: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: bir dizin" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: bir dosya deÄŸil" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: dosya çok büyük" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ikili dosya çalıştırılamıyor" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: çalıştırılamıyor: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "oturum açma kabuÄŸu deÄŸil: `exit' kullanın" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "DurmuÅŸ iÅŸler var.\n" + +#: builtins/exit.def:122 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "DurmuÅŸ iÅŸler var.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "komut yok" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "geçmiÅŸ belirtimi" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: geçici dosya açılamıyor: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "çitleme iptal edildi" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: çitleme tablosu boÅŸ\n" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "son komut: %s\n" + +#: builtins/help.def:130 +#, fuzzy, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Bu anahtar sözcüğe uygun kabuk komutları: `" +msgstr[1] "Bu anahtar sözcüğe uygun kabuk komutları: `" + +#: builtins/help.def:168 +#, 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:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: açılamıyor: %s" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "tek bir -anrw kullanılabilir" + +#: builtins/history.def:186 +msgid "history position" +msgstr "geçmiÅŸ konumu" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: geçmiÅŸ yorumlaması baÅŸarısız" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: geçmiÅŸ yorumlaması 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argümanlar süreç veya iÅŸ kimlikleri olmalı" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Bilinmeyen hata" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "ifade bekleniyordu" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: dosya tanıtıcı belirtimi geçersiz" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: dosya tanıtıcı geçersiz: %s" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: seçenek geçersiz" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: seçenek geçersiz" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: eylem adı geçersiz" + +#: builtins/mapfile.def:318 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: bir dizi deÄŸiÅŸkeni deÄŸil" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': biçim karakteri eksik" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': biçim karakteri geçersiz" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: uyarı: " + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "\\x için onaltılık rakam eksik" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "baÅŸka dizin yok" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +#, fuzzy +msgid "directory stack index" +msgstr "özyineleme yığıtı alttan taÅŸtı" + +#: builtins/pushd.def:683 +#, fuzzy +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 "" +"\rdirs [-clpv] [+N] [-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" +" -l seçeneÄŸi `dirs'in dizinleri ev dizininize göreli kısayollar\n" +" olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'\n" +" gibi bir gösterimle karşılaÅŸabilirsiniz. -v seçeneÄŸi `dirs'in\n" +" dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her\n" +" satırda bir girdi göstermesini saÄŸlar. -p seçeneÄŸi yığıttaki\n" +" konumu göstermemesi dışında aynı çıktıyı verir. -c seçeneÄŸi tüm\n" +" girdileri silerek dizin yığıtını boÅŸaltır. \n" +" +N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin solundan\n" +" sıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir.\n" +"\n" +" -N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin sağından\n" +" sıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir." + +#: builtins/pushd.def:705 +#, 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 "" +"\rpushd [DZN | +N | -N] [-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" +" +N (`dirs' tarafından gösterilen listenin solundan saymaya\n" +" sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" yığıtı döndürür.\n" +"\n" +" -N (`dirs' tarafından gösterilen listenin sağından saymaya\n" +" sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" yığıtı döndürür.\n" +"\n" +" +n dizinleri yığıta eklerken normal dizin deÄŸiÅŸikliÄŸini engeller,\n" +" böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur.\n" +"\n" +" DZN DiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" +" tepesine ekler.\n" +"\n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins/pushd.def:730 +#, 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 "" +"\rpopd [+N | -N] [-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 `dirs' tarafından gösterilen listenin solundan saymaya\n" +" sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" `popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" -N `dirs' tarafından gösterilen listenin sağından saymaya\n" +" sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" `popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" -n dizinleri yığıttan silerken normal dizin deÄŸiÅŸikliÄŸini\n" +" engeller, böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur. \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: zamanaşımı belirtimi geçersiz" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "okuma hatası: %d: %s" + +#: builtins/return.def:73 +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:768 +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:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: unset yapılamaz" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s:unset yapılamaz: %s salt okunur" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: bir dizi deÄŸiÅŸkeni deÄŸil" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: bir iÅŸlev deÄŸil" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "shift sayısı" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" + +#: builtins/shopt.def:319 +#, 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:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: dosya yok" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "engellenemez" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "bir oturum açma kabuÄŸu engellenemez" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s `%s' için takma addır\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s bir kabuk anahtar sözcüğüdür\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s bir iÅŸlevdir\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s bir kabuk yerleÅŸiÄŸidir\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s %s'dir\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s çitilmiÅŸ (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: sınırlama argümanı geçersiz" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': hatalı komut" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: sınır alınamıyor: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: sınır deÄŸiÅŸtirilemiyor: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "sekizlik sayı" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': simgesel kip iÅŸleci geçersiz" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': simgesel kip karakteri geçersiz" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: 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..." + +#: error.c:405 +msgid "unknown command error" +msgstr "bilinmeyen komut hatası" + +#: error.c:406 +msgid "bad command type" +msgstr "hatalı komut türü" + +#: error.c:407 +msgid "bad connector" +msgstr "hatalı baÄŸlantı" + +#: error.c:408 +msgid "bad jump" +msgstr "hatalı sıçrama" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: baÄŸlanmamış deÄŸiÅŸken" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" + +#: execute_cmd.c:491 +#, 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:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "yazma hatası: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: komut yok" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: hatalı yorumlayıcı" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "fd %d, fd %d olarak yinelenemiyor" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "ifade özyineleme düzeyi aşıldı" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "özyineleme yığıtı alttan taÅŸtı" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "ifadede sözdizimi hatası" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "deÄŸiÅŸken olmayana atama yapmaya çalışıldı" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "sıfırla bölme" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "yazılım hatası: bad expassign token" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "koÅŸullu ifade için `:' bekleniyordu" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "üs sıfırdan küçük" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" + +#: expr.c:854 +msgid "missing `)'" +msgstr "eksik `)'" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "sözdizimi hatası: terim umuluyordu" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "sözdizimi hatası: geçersiz aritmetik iÅŸleci" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "geçersiz sayı tabanı" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "deÄŸer taban için fazla büyük" + +#: expr.c:1328 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: tamsayı ifadesi bekleniyordu" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: üst dizinlere eriÅŸilemiyor" + +#: input.c:94 subst.c:4559 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" + +#: input.c:258 +#, 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:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, 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:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "durdurulan %2$ld süreç gruplu iÅŸ %1$d siliniyor" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: böyle bir pid yok" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, 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:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: süreç %ld için kayıt yok" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: iÅŸ %d durdu" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: iÅŸ sonlanmış" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: iÅŸ %d zaten artalanda" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: uyarı: " + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "bu kabukta iÅŸ denetimi yok" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: kanaat doÄŸrulaması baÅŸarısız: %s\n" + +#: lib/malloc/malloc.c:312 +#, 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:313 +#, fuzzy +msgid "unknown" +msgstr "%s: konak bilinmiyor" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı" + +#: lib/malloc/malloc.c:874 +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:877 +msgid "free: called with unallocated block argument" +msgstr "free: ayrılmamış blok argümanı ile çaÄŸrıldı" + +#: lib/malloc/malloc.c:896 +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:902 +msgid "free: start and end chunk sizes differ" +msgstr "free: baÅŸlangıç ve son tomar boyutları farklı" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: ayrılmamış blok argümanı ile çaÄŸrıldı" + +#: lib/malloc/malloc.c:1016 +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:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: baÅŸlangıç ve son tomar boyutları farklı" + +#: lib/malloc/table.c:177 +#, 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:184 +#, 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:220 +#, 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:101 +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:346 +msgid "network operations not supported" +msgstr "desteklenmeyen aÄŸ iÅŸlemleri" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "$_'de postanız var" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "$_'de yeni postanız var" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%s'deki posta okundu\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "sözdizimi hatası: `;' beklenmiyordu" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "sözdizimi hatası: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: hatalı yönerge türü %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, 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:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "`%c' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "`]]' aranırken beklenmedik dosya sonu" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "koÅŸullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "koÅŸullu ifadede sözdizimi hatası" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "`)' umuluyordu" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman `%s'" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "beklenmedik dizgecik `%s', koÅŸullu iki terimli iÅŸleç umuluyordu" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "koÅŸullu iki terimli iÅŸleç umuluyordu" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman `%s'" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik `%c'" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik `%s'" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik %d" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "`%s' yakınında sözdizimi hatası" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "sözdizimi hatası: beklenmeyen dosya sonu" + +#: parse.y:5223 +msgid "syntax error" +msgstr "sözdizimi hatası" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "KabuÄŸu bırakmak için \"%s\" kullanın.\n" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "`)' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: `%s' iÅŸlevi yok" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: hatalı baÄŸlayıcı `%d'" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': geçersiz biçim karakteri" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "dosya tanıtıcı aralık dışında" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: belirsiz yönlendirme" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: mevcut dosyanın üzerine yazılamıyor" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" + +#: redir.c:162 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "belge için geçici dosya oluÅŸturulamıyor: %s" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port aÄŸ olmaksızın desteklenmiyor" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "yönlendirme hatası: fd yinelenemiyor" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "/tmp bulunamadı, lütfen oluÅŸturun!" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "/tmp geçerli bir dizinin adı olmalıdır" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: geçersiz seçenek" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Hiç ismim yok!" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU uzun seçenekleri:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Kabuk seçenekleri:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD veya -c KOMUT veya -O shopt_seçeneÄŸi\t(sadece çaÄŸrı için)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ya da -o seçeneÄŸi\n" + +#: shell.c:1807 +#, 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:1808 +#, 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:1809 +#, 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" + +#: sig.c:583 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: geçersiz iÅŸlem" + +#: 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özdizimi hatası" + +#: 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 +#, fuzzy +msgid "Terminated" +msgstr "kısıtlı" + +#: 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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: dizi üyesine liste atanamaz" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "süreç ikamesi için borulama yapılamıyor" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "süreç ikamesi için alt süreç yapılamıyor" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "isimli boru %s okumak için açılamıyor" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "isimli boru %s yazmak için açılamıyor" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "isimli boru %s fd %d olarak yinelenemiyor" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "komut ikamesi için boru yapılamıyor" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "komut ikamesi için alt süreç yapılamıyor" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametre boÅŸ ya da deÄŸer atanmamış" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: altdizge ifadesi < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: hatalı ikame" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: bu yolla atama yapılmaz" + +#: subst.c:7499 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "eÅŸleÅŸme yok: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "argüman bekleniyordu" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: tamsayı ifadesi bekleniyordu" + +#: test.c:262 +msgid "`)' expected" +msgstr "`)' bekleniyordu" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' bekleniyordu, %s bulundu" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: tek terimli iÅŸleci bekleniyordu" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: iki terimli iÅŸleci bekleniyordu" + +#: test.c:806 +msgid "missing `]'" +msgstr "eksik `]'" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "geçersiz sinyal numarası" + +#: trap.c:324 +#, 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:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler:hatalı sinyal %d" + +#: variables.c:358 +#, 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:736 +#, 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:1898 +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:3127 +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:3344 variables.c:3353 +#, 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:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s için exportstr içinde `=' yok" + +#: variables.c:3794 +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:3807 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: genel deÄŸiÅŸkenler baÄŸlamı yok" + +#: variables.c:3881 +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" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Copyright © 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: %lu bayt ayrılamıyor" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: %lu bayt yeniden ayrılamıyor" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: %lu bayt ayrılamıyor" + +#: xmalloc.c:174 +#, c-format +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ı)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +#, fuzzy +msgid "shift [n]" +msgstr "shift sayısı" + +#: builtins.c:150 +#, fuzzy +msgid "source filename [arguments]" +msgstr "dosya ismi argüman gerekir" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "dosya ismi argüman gerekir" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +#, fuzzy +msgid "(( expression ))" +msgstr "ifade bekleniyordu" + +#: builtins.c:208 +#, fuzzy +msgid "[[ expression ]]" +msgstr "ifade bekleniyordu" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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 "" +"\ralias [-p] [Ä°SÄ°M[=DEÄžER] ...]\n" +" `alias' argümansız olarak veya -p seçeneÄŸi ile kullanıldığında rumuz\n" +" listesini alias Ä°SÄ°M=DEÄžER biçiminde standart çıktıya basar.\n" +" Aksi takdirde belirtilen Ä°SÄ°M belirtilen DEÄžERe rumuz olarak atanır.\n" +" DEÄžERden sonra gelen boÅŸluklar takma ad yorumlaması sırasında\n" +" sonraki sözcüğün takma ad ikamesi için sınanmasına sebep olur.\n" +" Hiçbir ÅŸeyin rumuzu olmayan bir Ä°SÄ°M verilmedikçe alias doÄŸru döndürür." + +#: builtins.c:276 +#, 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 "" +"\runalias [-a] [Ä°SÄ°M ... ]\n" +" Ä°SÄ°Mleri tanımlı rümuzlar listesinden siler. EÄŸer -a seçeneÄŸi " +"verilmiÅŸse,\n" +" tüm rümuz tanımları silinir." + +#: builtins.c:289 +#, 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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"\rbind [-m TUÅžDÄ°ZÄ°SÄ°] [-lpsvPSV]\n" +"bind [-m TUÅžDÄ°ZÄ°SÄ°] [-q Ä°ÅžLEV] [-u Ä°ÅžLEV] [-r TUÅžDÄ°ZÄ°SÄ°]\n" +"bind [-m TUÅžDÄ°ZÄ°SÄ°] -f DOSYAÄ°SMÄ°\n" +"bind [-m TUÅžDÄ°ZÄ°SÄ°] -x TUÅžDÄ°ZÄ°SÄ°:KABUK-KOMUTU\n" +"bind [-m TUÅžDÄ°ZÄ°SÄ°] TUÅžDÄ°ZÄ°SÄ°:Ä°ÅžLEV-Ä°SMÄ°\n" +"bind [READLINE-KOMUTU]\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" +" bind ÅŸu seçenekleri kabul eder:\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" +" -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\n" +" TUÅžDÄ°ZÄ°SÄ°nin her giriliÅŸinde KABUK-KOMUTUnun\n" +" çalıştırılmasını saÄŸlar.\n" +" -f DOSYAÄ°SMÄ° TuÅŸ kısayollarını DOSYAÄ°SMÄ°nden okur.\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" +" -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" +" -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." + +#: builtins.c:326 +#, fuzzy +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 "" +"\rcontinue [N]\n" +" FOR, WHILE veya UNTIL döngülerinin sonraki yinelemesinden devam edilir.\n" +" N verilirse dışa doÄŸru N. döngüden devam edilir. N >= 1 olmalıdır." + +#: builtins.c:338 +#, 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 "" +"\rcontinue [N]\n" +" FOR, WHILE veya UNTIL döngülerinin sonraki yinelemesinden devam edilir.\n" +" N verilirse dışa doÄŸru N. döngüden devam edilir. N >= 1 olmalıdır." + +#: builtins.c:350 +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:365 +#, 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 "" +"\rcaller [Ä°FADE]\n" +" O anki altyordam çaÄŸrısının baÄŸlamını döndürür.\n" +"\n" +" Ä°FADE olmaksızın, caller o anki altyordam çaÄŸrısının kaynak dosya " +"ismini\n" +" ve satır numarasını gösterir. EÄŸer Ä°FADE olarak negatiften farklı " +"bir\n" +" tamsayı belirtilmiÅŸse caller o anki icra çaÄŸrısı yığıtındaki o " +"konuma\n" +" karşılık gelen kaynak dosyası, satır numarası ve altyordam " +"ismini\n" +" gösterir; bu ek bilgi bir yığıtın izini sürmek için " +"kullanılabilir.\n" +"\n" +" Ä°FADE deÄŸeri ÅŸu ankinden önce kaç çaÄŸrı çerçevesinin geri " +"döneceÄŸini\n" +" belirtir; tepe çerçeve 0. çerçevedir." + +#: builtins.c:383 +#, 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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"\rcd [-L|-P] [DÄ°ZÄ°N]\n" +" Bulunulan dizinden DÄ°ZÄ°Ne geçilmesini saÄŸlar. DÄ°ZÄ°N verilmezse $HOME " +"ile\n" +" belirtilen dizine geçilir. CDPATH kabuk deÄŸiÅŸkeni mevcutsa " +"deÄŸeri,\n" +" DÄ°ZÄ°Ni arama yolu olarak kullanılır. CDPATH içindeki diÄŸer dizin " +"isimleri\n" +" birer ikinokta imi (:) ile ayrılır. DÄ°ZÄ°N bir / ile baÅŸlıyorsa " +"CDPATH\n" +" kullanılmaz. EÄŸer dizin yoksa ve `cdable_vars' kabuk seçeneÄŸi " +"etkinse\n" +" sözcük bir deÄŸiÅŸken ismi olarak denenir. EÄŸer bu deÄŸiÅŸken bir " +"deÄŸere\n" +" sahipse bu deÄŸerdeki dizine geçilir. -P seçeneÄŸi sembolik " +"baÄŸların\n" +" izlenmeyip fiziksel dizin yapısının kullanılmasını saÄŸlar; -L " +"seçeneÄŸi\n" +" sembolik baÄŸların mutlaka izlenmesini saÄŸlar." + +#: builtins.c:411 +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" +" \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:428 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"\r:\n" +" Etkisizdir; bu komut birÅŸey yapmaz. Sıfır çıkış kodu döndürülür." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"\rfalse\n" +" BaÅŸarısız bir sonuç döndürür." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +#, 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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +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." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +#, fuzzy +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"\recho [-neE] [ARG ...]\n" +" ARGümanlarını çıktılar. -n seçeneÄŸi ile satırsonu karakteri " +"baskılanır.\n" +" -e seçeneÄŸi ile aÅŸağıdaki tersbölü öncelemeli karakterlerin " +"yorumlanması\n" +" etkinleÅŸtirilir:\n" +" \t\\a\tsesli uyarı (bell)\n" +" \t\\b\tgerisilme\n" +" \t\\c\tkendisinden sonra gelen satırsonu karakterini kaldırır\n" +" \t\\E\tescape karakteri\n" +" \t\\f\tsayfa ileri\n" +" \t\\n\tsatırsonu\n" +" \t\\r\tsatırbaşı\n" +" \t\\t\tyatay sekme\n" +" \t\\v\tdüşey sekme\n" +" \t\\\\\ttersbölü\n" +" \t\\0nnn\tsekizlik deÄŸeri nnn olan sekiz bitlik karakter\n" +" \t \t(0, 1, 2 ya da 3 haneli olabilir)\n" +" \n" +" -E seçeneÄŸi ile yukarıdaki karakterlerin yorumlanmasını öntanımlı\n" +" olarak etkin olduÄŸu sistemlerde bile kapatabilirsiniz." + +#: builtins.c:571 +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:586 +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:614 +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:626 +#, 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 ($0 - $9), but if\n" +" more arguments are given, 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 "" +"\rgetopts SÇNDÄ°ZGESÄ° AD [ARG ...]\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." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +#, 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 "" +"\rexit [N]\n" +" N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n" +" çıkış durumu döner." + +#: builtins.c:698 +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:708 +#, fuzzy +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 "" +"\rfc [-e DÃœZENLEYÄ°CÄ°] [-nlr] [Ä°LK] [SON]\n" +"fc -s [ESKÄ°=YENÄ°] [KOMUT]\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" +" -e DÃœZENLEYÄ°CÄ° ile hangi düzenleyicinin kullanılacağı belirtilir.\n" +" Belirtilmezse sırayla FCEDIT, EDITOR deÄŸiÅŸkenlerine bakılır\n" +" bunlarda da birÅŸey belirtilmemiÅŸse vi kullanılır.\n" +"\n" +" -l ile komutlar stardart çıktıya listelenir.\n" +" -n ile listede satır numaraları bulunmaz.\n" +" -r ile 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." + +#: builtins.c:738 +#, fuzzy +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 "" +"\rfg [Ä°Åž_BELÄ°RTÄ°MÄ°]\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." + +#: builtins.c:753 +#, fuzzy +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 "" +"\rbg [Ä°Åž_BELÄ°RTÄ°MÄ°]\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." + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +#, 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 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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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 "" +"\rhistory [-c] [-d KONUM] [N]\n" +"history [-anrw] [DOSYAÄ°SMÄ°]\n" +"history -ps ARG [ARG ...]\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" +" -c komut geçmiÅŸi listesini tüm girdilerini silerek temizler. -d ile\n" +" satır numarası KONUM olan geçmiÅŸ girdisi silinir. -w ile geçmiÅŸ listesi\n" +" çıktısı geçmiÅŸ dosyasına yazılır. -r ile dosya okunur ve içeriÄŸi geçmiÅŸ\n" +" listesine eklenir. -a ile oturumunun baÅŸlangıcından itibaren girilen\n" +" geçmiÅŸ satırları geçmiÅŸ dosyasına eklenir. -n ile geçmiÅŸ dosyasından\n" +" henüz okunmamış olan geçmiÅŸ satırları, geçmiÅŸ listesine eklenir.\n" +"\n" +" DOSYAÄ°SMÄ° verilmezse, $HISTFILE deÄŸiÅŸkenindeki deÄŸer, o da yoksa\n" +" ~/.bash_history dosyası kullanılır. -s ile seçenek olmayan ARGümanlar\n" +" geçmiÅŸ listesine tek bir girdi olarak eklenir. -p seçeneÄŸi ile\n" +" argümanlar üzerinde geçmiÅŸ yorumlaması uygulanır ve geçmiÅŸ listesinde\n" +" hiçbir ÅŸey saklanmaksızın sonuçlar standart çıktıda gösterilir.\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." + +#: builtins.c:852 +#, 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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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 "" +"\rjobs [-lnprs] [Ä°Åž_BELÄ°RTÄ°MÄ° ...]\n" +"jobs -x KOMUT [ARG ...]\n" +" Etkin iÅŸleri listeler. -l ile normal bilgilere ek olarak süreç\n" +" kimliklerini de (PID) listeler. -p ile iÅŸlerin sadece süreç\n" +" kimliklerini listeler. -n ile sadece kullanıcının durumları\n" +" hakkında aldığı son uyarıdan beri durumları deÄŸiÅŸen iÅŸler hakkında\n" +" bilgi gösterir. Ä°Åž_BELÄ°RTÄ°MÄ° verilmiÅŸse, çıktı bu iÅŸ ile ilgili\n" +" bilgilerle sınırlıdır. -r ile sadece çalışmakta olan, -s ile ise\n" +" sadece durmuÅŸ olan iÅŸler listelenir. Seçeneksiz kullanıldığında jobs\n" +" tüm etkin iÅŸlerin durumlarını basar. -x seçeneÄŸi verilmiÅŸse,\n" +" ARGümanlar ile belirtilen tüm iÅŸ belirtimleri, iÅŸlerin süreç grup\n" +" liderinin süreç grup kimliÄŸine yerleÅŸtirilip KOMUT çalıştırılır." + +#: builtins.c:879 +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" +" \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:898 +#, 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" +" \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 "" +"\rkill [-s SÄ°NYAL | -n SÄ°NYALNUM | -SÄ°NYAL] PID | Ä°Åž_BELÄ°RTÄ°MÄ° ...\n" +"kill -l [SÄ°NYAL]\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 ya harf büyüklüğüne duyarsız olarak SIGINT gibi bir sinyal ismi\n" +" (SIG öneki olmadan da verilebilir) ya da bir sinyal numarası olabilir.\n" +" SÄ°NYALNUM ise bir sinyal numarası olmalıdır. SÄ°NYAL veya SÄ°NYALNUM\n" +" verilmezse öntanımlı olarak SIGTERM kullanılır. -l seçeneÄŸi ile sinyal\n" +" isimleri listelenir. Argümanlı -l seçeneÄŸinde argümanların listelenecek\n" +" sinyal isimlerinin numaraları olduÄŸu varsayılır. Kill iki sebepten\n" +" dolayı bir kabuk yerleÅŸiÄŸidir: süreç kimlikleri yerine iÅŸ " +"kimliklerinin\n" +" kullanımını mümkün kılar ve eÄŸer oluÅŸturabileceÄŸiniz süreç sayısı\n" +" sınırını aÅŸarsanız baÅŸka bir süreci öldürecek bir süreci baÅŸlatmak\n" +" zorunda kalmazsınız." + +#: builtins.c:921 +#, 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 "" +"\rlet Ä°FADE [Ä°FADE ...]\n" +" Her Ä°FADE 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" +" id++ id-- sonradan-arttırım ve sonradan-eksiltim\n" +" ++id --id önceden-arttırım ve önceden-eksiltim\n" +" - + tek terimli eksi ve artı imi\n" +" ! ~ mantıksal ve bitseviyesinde olumsuzlama\n" +" ** üs imi\n" +" * / % çarpma, bölme, kalan\n" +" + - toplama, çıkarma\n" +" << >> bitseviyesinde sola ve saÄŸa ötelemeler\n" +" <= >= < > karşılaÅŸtırmalar\n" +" == != eÅŸitlik, eÅŸitsizlik\n" +" & bitseviyesinde VE\n" +" ^ bitseviyesinde ayrıcalıklı VEYA\n" +" | bitseviyesinde VEYA\n" +" && mantıksal VE\n" +" || mantıksal VEYA\n" +" ifade ? ifade : ifade koÅŸullu üç terimlisi\n" +" = *= /= %=\n" +" += -= <<= \n" +" >>= &= ^= |=\n" +" atama iki terimlileri\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" +" Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as 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." + +#: builtins.c:1006 +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:1019 +#, 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 follow 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" +" 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 "" +"\rset [--abefhkmnptuvxBCHP] [-o seçenek] [arg ...]\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 bir tuzak kabuk iÅŸlevlerince\n" +" miras alını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." + +#: builtins.c:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +#, 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 "" +"\rsource DOSYAÄ°SMÄ° [ARGÃœMANlar]\n" +". DOSYAÄ°SMÄ° [ARGÃœMANlar]\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." + +#: builtins.c:1204 +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:1220 +#, 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 as well, and numeric comparison operators.\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" +" ! 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 "" +"\rtest [Ä°FADE]\n" +"[ [Ä°FADE] ]\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" +" ! Ä°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." + +#: builtins.c:1296 +#, fuzzy +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 "" +"\r[ [Ä°FADE] ]\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:1305 +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:1317 +#, 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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +#, 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" +" -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" +" \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 "" +"\rulimit [-SHacdfilmnpqstuvx] [SINIR]\n" +" ulimit kabuk tarafından baÅŸlatılan süreçlerin kullanabildiÄŸi\n" +" özkaynaklar üzerinde, sistem buna izin veriyorsa, denetim saÄŸlar.\n" +" Seçenekler verildiÄŸinde ÅŸu anlamlara gelir:\n" +"\n" +" -S Yazılımsal (`soft') sınır kullanılır.\n" +" -H Donanımsal (`hard') sınır kullanılır.\n" +" -a Mevcut tüm sınırlamalar gösterilir. -c OluÅŸan core dosyalarının " +"azami boyu\n" +" -d Bir sürecin veri segmanının azami boyu\n" +" -e Azami zamanlama önceliÄŸi (`nice')\n" +" -f Kabuk ve çocukları tarafından oluÅŸturulan dosyaların azami boyu\n" +" -i Askıdaki sinyallerin azami sayısı\n" +" -l BelleÄŸe kilitlenebilen azami boyut\n" +" -m Azami bellek boyu\n" +" -n Açık dosya tanıtıcılarının azami sayısı\n" +" -p Boruhattı tamponunun boyu\n" +" -q POSIX ileti kuyruklarındaki azami bayt miktarı\n" +" -r Azami anında çalıştırma zamanlaması önceliÄŸi\n" +" -s Yığıtın azami boyu\n" +" -t Ä°ÅŸlemci zamanının saniye cinsinden azami miktarı\n" +" -u Tek bir kullanıcının kullanabileceÄŸi azami süreç sayısı\n" +" -v Bir sürecin kullanabileceÄŸi sanal belleÄŸin azami miktarı\n" +" -x Dosya kilitlerinin azami sayısı\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. 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." + +#: builtins.c:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +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ÄŸi olabileceÄŸi gibi bir iÅŸ\n" +" belirtimi de olabilir; bir iÅŸ belirtimi verilirse iÅŸin\n" +" boruhattındaki tüm süreçler için beklenir." + +#: builtins.c:1478 +#, fuzzy +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 "" +"\rfor AD [in SÖZ ... ;] do KOMUT; done\n" +" SÖZcükler yorumlanır ve sonuçlanan listenin AD ile baÄŸlantılı her\n" +" üyesi için KOMUTlar çalıştırılır. Deyimin `in SÖZ ... ;' parçası\n" +" yoksa, `in \"$@\"' belirtilmiÅŸ gibi kümeyi oluÅŸturan her parametre\n" +" için KOMUTlar birer kere çalıştırılır." + +#: builtins.c:1492 +#, fuzzy +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 "" +"\rfor ((: for (( Ä°FADE1; Ä°FADE2; Ä°FADE3 )); do KOMUTlar; done\n" +" Bu sözdizimi ÅŸu koda 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. Verilmeyen her\n" +" ifade için 1 verilmiÅŸ gibi iÅŸlem yapılır." + +#: builtins.c:1510 +#, fuzzy +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 "" +"\rselect AD [in SÖZ ... ;] do KOMUTlar; done\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." + +#: builtins.c:1531 +#, fuzzy +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 "" +"\rtime [-p] [!] KOMUT1 [| KOMUT2 ...]\n" +" Bir boruhattındaki her komut bir kanal ile sonrakine baÄŸlıdır. Böylece\n" +" her komut bir önceki komutun çıktısını okur. time boruhattındaki iÅŸ\n" +" sonuçlanınca geçen gerçek zaman, kullanıcı ve sistem zamanını basar.\n" +" Dönüş durumu boruhattının dönüş durumudur. -p seçeneÄŸi zaman\n" +" istatistiklerinin biraz farklı bir biçimde basılmasını saÄŸlar; çıktı\n" +" biçimi olarak TIMEFORMAT deÄŸiÅŸkeninin deÄŸerini kullanır." + +#: builtins.c:1548 +#, fuzzy +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 "" +"\rcase SÖZ in [KALIP [| KALIP]...) KOMUTlar ;;]... esac\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." + +#: builtins.c:1560 +#, fuzzy +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 "" +"\rif KOMUTlar; then KOMUTlar;\n" +"[ elif KOMUTlar; then KOMUTlar; ]...\n" +"[ else KOMUTlar; ]\n" +"fi\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." + +#: builtins.c:1577 +#, 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 "" +"\rwhile KOMUTlar; do KOMUTlar; done\n" +" `while KOMUTlar; listesinin çıkış durumu sıfır olduÄŸu sürece\n" +" `do KOMUTlar;' listesi çalıştırılır." + +#: builtins.c:1589 +#, 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 "" +"\runtil KOMUTlar; do KOMUTlar; done\n" +" `until KOMUTlar; listesinin çıkış durumu sıfırdan farklı olduÄŸu sürece\n" +" `do KOMUTlar;' listesi çalıştırılır." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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:1629 +#, 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 "" +"\r{ KOMUTlar ; }\n" +" KOMUTlar bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n" +" yönlendirmede kullanmanın tek yoludur." + +#: builtins.c:1641 +#, fuzzy +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 "" +"\r%: Ä°Åž_BELÄ°RTÄ°MÄ° [&]\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." + +#: builtins.c:1656 +#, 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 "" +"\r(( Ä°FADE ))\n" +" Verilen aritmetik Ä°FADE aritmetik deÄŸerlendirme kurallarına göre\n" +" deÄŸerlendirilir. \"let Ä°FADE\" ile eÅŸdeÄŸerdir." + +#: builtins.c:1668 +#, fuzzy +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 "" +"\r[[ Ä°FADE ]]\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. && ve || iÅŸleçleri\n" +" eÄŸer ilk ifade sonuç için belirleyici ise ikincisine bakmazlar." + +#: builtins.c:1694 +#, fuzzy +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 "" +"\rdeÄŸiÅŸkenler: Bazı deÄŸiÅŸkenler ve anlamları:\n" +" BASH_VERSION Bu Bash'in sürüm bilgisi.\n" +" CDPATH ` cd'ye argüman olarak verilecek dizinlerin aranacağı\n" +" dizinlerin ikinokta imi ayraçlı listesi.\n" +" GLOBIGNORE Dosyayolu yorumlaması tarafından yoksayılacak dosya\n" +" isimlerini belirten kalıpların ikinokta imi ayraçlı\n" +" listesi.\n" +" HISTFILE Komut geçmiÅŸinizin saklanacağı dosyanın ismi.\n" +" HISTFILESIZE Bu dosyanın içerebileceÄŸi azami satır sayısı.\n" +" HISTSIZE Çalışan bir kabuÄŸun eriÅŸebileceÄŸi geçmiÅŸ " +"satırlarının\n" +" azami sayısı.\n" +" HOME Kullanıcının ev dizininin tam yolu.\n" +" HOSTNAME Makinenizin aÄŸdaki konak ismi.\n" +" HOSTTYPE Bash'in bu sürümünün altında çalıştığı iÅŸlemcinin " +"türü\n" +" IGNOREEOF Tek girdi olarak EOF karakteri alındığında kabuÄŸun\n" +" eylemini kontrol eder. Atandığında deÄŸeri, kabuk\n" +" çıkmadan önce bir girdi satırındaki ilk karakter\n" +" olarak okunabilen ardışık EOF karakterlerinin " +"sayısını\n" +" gösterir (öntanımlı 10). EÄŸer deÄŸiÅŸken mevcut " +"deÄŸilse,\n" +" EOF girdi sonunu belirtir.\n" +" MACHTYPE Bash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" +" MAILCHECK Bash'in yeni postaya kaç saniyede bir bakacağı.\n" +" MAILPATH Bash'in yeni posta var mı diye bakacağı dosya\n" +" isimlerinin ikinokta imi ayraçlı listesi.\n" +" OSTYPE Bash'in üzerinde çalıştığı çekirdeÄŸin türü.\n" +" PATH Komutları ararken bakılacak dizinlerin ikinokta imi\n" +" ayraçlı listesi.\n" +" PROMPT_COMMAND Birincil komut istemi ($PS1) basılmadan önce\n" +" çalıştırılacak komut\n" +" PS1 Birincil komut istemi dizgesi.\n" +" PS2 Ä°kincil komut istemi dizgesi.\n" +" PWD Çalışma dizininizin tam yolu.\n" +" SHELLOPTS Etkin kabuk seçeneklerinin ikinokta imi ayraçlı " +"listesi\n" +" TERM Geçerli uçbirim türünün ismi.\n" +" TIMEFORMAT time anahtar sözcüğü ile baÅŸlayan zamanlama " +"bilgisinin\n" +" nasıl belirtileceÄŸini gösteren biçim dizgesi.\n" +" auto_resume DeÄŸerin boÅŸ olmaması durmuÅŸ iÅŸin isminin onu\n" +" baÅŸlatmakta kullanılan komut satırı olduÄŸudur ve\n" +" oradaysa iÅŸ önalana alınır. `exact' deÄŸeri, komut\n" +" sözcüğünün durmuÅŸ iÅŸler listesindeki komutla tam\n" +" olarak eÅŸleÅŸmesi gerektiÄŸi anlamına gelir. " +"`substring'\n" +" deÄŸeri, komut sözcüğünün iÅŸin bir altdizgesi ile\n" +" eÅŸleÅŸmesi gerektiÄŸini belirtir. Bunlar dışında bir\n" +" deÄŸer komutun durmuÅŸ bir iÅŸe önek olması gerektiÄŸi\n" +" anlamına gelir.\n" +" histchars GeçmiÅŸ yorumlaması, hızlı ikame ve sembolleÅŸtirmeyi\n" +" denetleyen en çok üç karakter. Ä°lk karakter geçmiÅŸ\n" +" yorumlamasının baÅŸlatılmasını saÄŸlayan geçmiÅŸ\n" +" yorumlama karakteridir ve normalde ! iÅŸaretidir.\n" +" Ä°kinci karakter, bir satırdaki ilk karakter " +"olduÄŸunda\n" +" `hızlı ikame'yi imleyen karakterdir ve normalde ^\n" +" imidir. Ä°stemlik olan üçüncü karakter ise, bir\n" +" sözcüğün ilk karakteri olarak bulunduÄŸunda satırın\n" +" kalanının açıklama olmasını saÄŸlayan karakterdir ve\n" +" normalde # imidir.\n" +" HISTIGNORE GeçmiÅŸ listesine hangi satırların kaydedilmesi\n" +" gerektiÄŸine karar vermek için kullanılan kalıpların\n" +" ikinokta imi ayraçlı listesi.\n" + +#: builtins.c:1751 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"\rpushd [DZN | +N | -N] [-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" +" +N (`dirs' tarafından gösterilen listenin solundan saymaya\n" +" sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" yığıtı döndürür.\n" +"\n" +" -N (`dirs' tarafından gösterilen listenin sağından saymaya\n" +" sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" yığıtı döndürür.\n" +"\n" +" +n dizinleri yığıta eklerken normal dizin deÄŸiÅŸikliÄŸini engeller,\n" +" böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur.\n" +"\n" +" DZN DiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" +" tepesine ekler.\n" +"\n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins.c:1785 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"\rpopd [+N | -N] [-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 `dirs' tarafından gösterilen listenin solundan saymaya\n" +" sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" `popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" -N `dirs' tarafından gösterilen listenin sağından saymaya\n" +" sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" `popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" -n dizinleri yığıttan silerken normal dizin deÄŸiÅŸikliÄŸini\n" +" engeller, böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur. \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins.c:1815 +#, 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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"\rdirs [-clpv] [+N] [-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" +" -l seçeneÄŸi `dirs'in dizinleri ev dizininize göreli kısayollar\n" +" olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'\n" +" gibi bir gösterimle karşılaÅŸabilirsiniz. -v seçeneÄŸi `dirs'in\n" +" dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her\n" +" satırda bir girdi göstermesini saÄŸlar. -p seçeneÄŸi yığıttaki\n" +" konumu göstermemesi dışında aynı çıktıyı verir. -c seçeneÄŸi tüm\n" +" girdileri silerek dizin yığıtını boÅŸaltır. \n" +" +N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin solundan\n" +" sıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir.\n" +"\n" +" -N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin sağından\n" +" sıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +#, 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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"\rprintf [-v DEĞİŞKEN] BİÇİM [ARGümanlar]\n" +" BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek\n" +" yazar. 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. Standart printf(1) biçimlerine ek olarak, %b printf'in tersbölü\n" +" öncelemeli karakterlerin karşı düşen ARGümanda yorumlanmasını saÄŸlar ve\n" +" %q printf'in karşı düşen ARGümanı kabuk girdisi olarak kullanılabilecek\n" +" biçimde çıktılamasını saÄŸlar. -v seçeneÄŸi çıktının standart çıktıya\n" +" basılması yerine DEĞİŞKENe atanmasını saÄŸlar. " + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +#, 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 "" +"\rcompgen [-abcdefgjksuv] [-o SEÇENEK] [-A EYLEM] [-G KALIP] [-W SÖZLÄ°ST]\n" +" [-P ÖNEK] [-S SONEK] [-X SÃœZGEÇ] [-F Ä°ÅžLEV] [-C KOMUT] [SÖZCÃœK]\n" +" Seçeneklere baÄŸlı olarak olası tamamlamaları gösterir. Olası\n" +" 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." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ 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 "top directory." +#~ msgstr "yığıtın tepesinde kalan dizine geçer." + +#~ 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 "" +#~ "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 "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 "" +#~ "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/src/bin/bash/po/vi.gmo b/src/bin/bash/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2411ab4ac3c905d47d8bdc8d2383900a644a9f82 GIT binary patch literal 164633 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 z zy&&0=*gu_UX2cO&Zr?`>K30u|jZAb{iXD|3yD1Whbx&31Y0iA9S7R?irCIA0Gg?Aa z@jWm>)Q&<51$F`jXb;nKdpJCSUwoTn8Ci*gTNR?_Z!4fE0#NMJL^L5w4;2O5O2%@& zZ&+I!FUt-D1>$2mx^NYel58SGlSPBmmYKi}Qgh@P_>3rFz<@M{Y*6WZ`;BdpdtQA) zaOyVzy2x&&&fW&`C0jcp2-znuTBIlELFWX5FX4uWRkJWuvqrWIQ=27EK0UlO#NiHr zo$-Od^9*x*)(?Sw=^Y-Js$XmtMIUx=T+u7O={RAp2=(uW86jdT@ZWyz1~7;eg4MxH zUo=P=ylH6m^rs;;(C$GQB`5l0WJy=OH;eIlZ-s0|VTh7y6)WR-^Oun0@Iue=Zyaxk!tjIYck zBh+$GE66vB*5e!!FhgE@S1>0{*g71!!Lev1)1jUiylM?|T*H@Yr!*XuEO|1Hi7Kz2 zztD^ti*5aodltud0b(flVz>JpO6Jx6fJYz_Vk==7oD(Gdd~ahDS$|9gE;%}c!$^`1 zf(zTgwSk=Q^VeoAdTI}eJat0vr4GT#oQmlc{o=3%6y}Xjj%e(w!8c;X-N#;WFvc>m zs<0r)p;RYktXpp4MipEhV6iCsFD%v zl4iHw6erNZKYssS!6#JE$qh^go&sGs;a7+h9V_dU>GsKazsck_c8FMEAizd3&S6|B zkFtr90t^LR1A`WlF<>H7h}(?m#bg})yH%ltEvKPJXG=o2JSlF|T^|YKlAKeS#U~B` zuTTxhP_mbzU4#^oOIcd90RxgZCiMkQcih?{RqzJsQ^-kOn7>^Kt znSfR)H6XfwqB5>t=kocN&b@Ytf$gC45KszKm^CEVILNQm7n3D(xpS^8K8ukW-YN{q z!@i?;k4Kp5hoeYAF|y1p;sb^(X)*I+B$Q#oBBG%!dLGMiE zrUxv1h)wWoS$X$>m6v8vx$^Glm6w)5TKp*8Y&btiH{&kHh)o$l4}0G<>c#P<{~)UJ zR)`CB(HiGs!)unqhP2R89JltavrLo2K*0l~G-=*8UQK*@Wve`0Z>pt~4B>Cof=Vis zhI5!0sVPv3U!B(gO2ymalOQRR6#<-#h|pFrdyHBTt~$%FxY&V-LP8&?e9RdYrJ@;3 zpQ{Y6gr|`TD_7`L@2W`@KZjHrwhM9#!2wKwmC!g=ARLAw8+&a}p(k(Xp-KX13Mb0p zmcWP}We_4hcl==h)$rjIGDi2%B=kpRC{Pt0OaMnMb}YWFpW*Pa8&iwCVi<#>j;jR{0IHVqew18r^MI#mI z7^Ep=O9TlUScX>Ql!t|3C8wn=+>mzfJfp6`f0xc*I(y;#6sJXs=6)W`qXlAu*nZW*I+2y3!1hX?FH;~n_e%GlVv7?oO;(Wr({Z&5Mi%MXVT ziZ|@#Q(OEm3|An7)M?tq5aLoza-)MAfBuB(0i-B!u>~kXfo|*JOQ@x@>b|%xw`Ye>Vibw>b9hWEOswGfN4#0$GUgCx zn+MTSS@L^D(9R$UAw7|c#h6``mI8NVQBNUt5i;Sa*F_%0QWi-lwH_!BG7<+AyPa`v^9yXKn% z#MgX74(DT4?CdODfp73sByWrcdl#(lz_@g=OZz1{QZ!*7`rp6!$fqy_mSaa1{bW-N z>s>9z;)}i_sq+-?%1T`edPz4QQzbW~p+r|z8lr$DxB6J2i_wXj62xK6SSqq~LDr%z z6ekX@_EaYurZ2k+*Kg(kN10S@V>wE3|C2%%xk9XT01$_1w!n)cuJ|x^Ef%-W-j)P1 zHTrhijMiwbm4+;k9gN{fjLvEpxDT-)usiG&1S&vF{a{Y+91$0&W|bs1TB(t{V^afm zC1K+AHKOF7MjdGT0*4)0>Gc;nM;3c4yt}y?P9;qqve)MJwT-oHl4tb@{aIWX)XBhp-j?5tg{iYqz50!1#;i)4dzI`_K0 z!Rn~;>Wh`#f3`BHJH0VUt7j6Lo~z~p)Pml z=X6)$8A#BNNpLy$rOVHH`$V#3D8LaIFkt3cY9^X~ACD`n*l5Tc!p3Uc*Yk(ajY~vm zuGy=UrAt_!%2^-=C&LUw(lL;dxyM1JhZZ7eRYkhii913d?2N4d-ke9`4vp+5<8 z$D&*{Z1;qx<70}UQCZ;Xjj^d3fj+{yE5mq@$GWMtlHZU6lb>d^5Irc=2s#d8Qq&+5 ziDNdz!h-U$WtO-vR@f{&_GOlh1$d1kZo!4+ZNau_!G(GC?4=8Ts+*0?k&xd>&dx$C zle@hC3p?tf{4{iM*n(7%)g^}jJcuuyinW*@uus|)_Yi_2b}qCdD(Omr5hEW`9trB~ z3`GlRxE{?j`L4xMd#ArL8n4hxpvubpjP>{WJyEJGd}DFlb)L|a9#4y|QaqI0u-|Mu z{73|RRUAo6BN5BD+=>R`@2S^b$+JYVN4y|In&wC78DnqIofMb`HtWO(W1pI`gC8hG zd&Rb(kIvFUSd{%5))Vh-U}fR3#1_B)qp$N!3UP1C;7Wu?7hXOpO#{4~g0NzI~_ z&N}f52>4bYshMWSp%*nG7rVLxJp{`Ok(h}yR6}UAESaF-;B%;S#^{@A*lF>ymva{Y z%8`*x(py<6mWcBt4GiCL`D39YZ(yaUhF5nB%&#dP?hso<)}r#!bdf|2#v{Z%nbJ{ zIsgrBcrzUd9_oW-5tuxWYByex2`toMYP~^tg*d^h3$ydG`ix{%rs(R~>C>(;3O$SX zr$kmVRopAMk9ai4xiKs_j$UfuI3GDm&@?-t>3EPrLNL%764K0v%u6vEKHS?+r!kn; zjU0&jub)2N>#uKbZOj>QhjPu3ut>rJ(~$Ua?Ts>ugIj`BJnX=(79|>Bwm;wb#@D_x z*}cjCHokVMv$4?KV2Ryczqi$uS^bS+qJb-Ie|d)rEM)(TVLMb``Aw;OEBa*jqCsHo zVXpKGV1(u70}|{}jDrSMTY5Z!f3Iy<*{tYiP_Zf?!?=Q+<9 zKd&xq&1#dqRd;S{uXL^6-BYJc<(|o?2&D4f0m?yhfOzVHc5;b;9$o;vQzHWJJ zGa#j7(IQA>&QWBnA~%kbq!G<(9FAh_1*X z&ar`FxqB;cBe298v^+r&2|h-#k#U4YhtjOx8T6uTI$4&(1v7x*mL&^04sx>qUs%Gk zTuXH1B1>7=I89I%Ou+#{;ybd8yvh*!%gGs~xw)|Ax9y1IVv1-G^t?0CR!-|2=3rpE zX*{kpOtl~GB6{vdzis0qt143O)kcb#2<}mH<3|T$ux_hOWEhk9bY;7?dMA|MuTmXQ7bAKbpe}iA>!k6V+kFj2qTK4o2lwS zH!qP!kR=en+kRx4DZ@g`Thy#3ms+inSF45DLrFvCA3MPD*cY1hiwcze@D^(1oIte+ zPPSFVB1gJh2nRe%`cyhVD5ZQnVJ5A}wjtZ5@|XV2Uy61tIs_6b1xuB7g;T|F`Q--E z;5lOwwsO-Rh&C@HK;l(TL&gn`SPBJ_$< zL(|5gW7=@o6=OmOlW0sUb5_gLfUvq2W7}4H&|jj9F;L}(ng|ek#VovNbAg_g6}3*$ zGtc3d@T<$?T9l$1(2wTNx|Yy*aF&V9ijsXHhB5vO(YNuXm9=Yjr_i#!3;Llzu8!$A z7nN3p0#$ynDnt$ACGVR0x|}48HQ^`vZMwxZa}d8suMd?-2t2y$JbAWa%uxvDL-5nI zuJ0v7v78FreNGid4Bgvmi?IaZDtDvl_*R9S<`r4xo~ct|vE^-%nH~Vk^%rXGN5N;r zM2&m!B3TZJ-U0=BM<{DQ4#XY?qr{PwF-qzYi`e8Nx&|jN_S+6bRpCo3f$<~7UhH(FX>zO~t#o6U4#1>2(V_1^k|>dLq>i95lNeI}iI$ z+l7Xa6*3KqaPZGU4$8_mG;ov%L&UMa98a5RQ>AXOSe(LfZui?V2}M%GxsRNkdR+r* z!r(+#`X!4Z{7d45;ylZO;oLL@zvtJMc0aY+i`UMdv1Po(e??41k%&f0T+5yniLJ61 zx(QrpUb}9~$U7#Sf&diQS%nSiVD;T@$GbOn@QH`1xJNBKe?&$$l!5lH6 z?fyZ?XzD=rv;~SBLQpYpld(_^CXvhF*#%jmcWIICiP3pL zNmUu8)Of@L7O~JZ(19DE0_AK43Y|Z@)zS40i9klsqYY%6|C!`E*LXTl)y*Y$Y&&Bu z<8RZpJ&EG*Ky;cV;e$L{CLnxT8Kmi^1Z*|U`J^k8CopFo)8JSN!HfH@z z5r&J&Y(Wx9)^45jtTM)*9_A==qx*SWY{NNHVxJ=&^Te|%klh3f&J!jt{fy!1maUkMtD>=lLQiK z(oQ$zUgbp<&OJ7GZMdY|&Jh8tQKaHVAXj1v;WX;uK=hvrlVD_;>oV?25Hsn%IP~)g z+npo4ns?-xW4v<7rBKZJaw9KX0$>P4O?WLG?ospu5S|~)5=A4qZ($ZtHRKSSC>Z0^R0U&rGxIqHpT{T~B&=w^$Csq`nG<8V#| z3$Dk!jL^&-i_$4ZVn5m5iG2|315X?9k_NiIh?9YkADOv+*MNRu)F^Jw(3&!^1IFl8 zW4Mqgpp~TKtsV?gfBDwX9Nw8U7*=rB>c@&~Np@CI8}$&%6x-{55#c?FEK$2QeWLlC9;NsXlAU0s!J6sXEgA(4+L*{jYpq`0d}*RHrNE^-T5xW(c$9RN~)VC zXovzWJf1^4?d1%EODWOoEG;Lg}Ig44b`iH;w;3ZuWLGnvpKzq{`x>(kJ$=>!v}8y zx`uaZL*`!8cL9%*3%`a+4!1K$7IPFBI#`tdZ`-)eu=(-Mx7h+vw7jrFu}s2KeHmv~ z$jL@CJ32azN>2Li%-?O5a-`_TgGwBkB&M*BrZw4JxU(LrGbOZ7ug;OFr%oQ@pJ(iK zX>BQ0W2oXI_QjwU4(g_;Uy>gn-aTm$Jkjo@11oxUNNd0%{E%WNy$W^Ycc|1Z3eb3k z@g=BAcTC6f8u)@kjvjIhuZ_5qAr6WLq0yt8+%gCStm-KF+4YNiL6TtHY#AmnT~H2E zS1#5w4oom$!IZ{CVZp>%%EcYdrRXKOLp=%5o#$ZQA z)=St%WsPNODP|$}2L{j@Ue#Bq>2MX0^Z&lUauF3GY|+Io(LLrcTvrAkCrVq>%`Qpv z9N@RATo^f9kc_3lQSS?%f=w%D>4Dxt^$QFt6DhaSh5&NI^bMh=*tet*SE15T;aCNx z)RVJV6FKEfx`jksS4qdyiVXUxD}P=qoWL5FDHG}tCmO$O-3q~)AwRelt$xr8a;+)9 zVuIDG+9C@*Ep^my(ML96B^@IfWC0L@0vS9nHjJn4#;G5jyf`(DnhB?V15Oldz7`B0 zWnjbC+SYeCf@3#e41gE?_Q5A#8;rHsF2)aswS7>Pf?}Xn7dYniBf$txAqaRSyqe^R zb>t9Q9(m_9T%PFL;ul_iA5c>filiuyfOe?m=Mm7(^trvA|8kxT_6t*|q#KW_Fz{4P z2}qn4l}}+ra2<|aI7tcLF{8&3WWo-%uWq6o-2}K2LXC+{)OwvL4YeB}uFN;lcvgWQ zqp;&6TbbkSL{6iZ&+YzaR&#pq(Z?6<0N=;2bY9y1Pn}7=02fxU>Ea0-dfY!DjQj<+ zA*~PwwzOCf)eJfnL_}!}6+5mhRYrSRPND;jAJ}Un9~|$T)6=0#=s(_FS4dyhM=Upy zO<1JjHR5q^)$1=({Xj@twyi~@f2zBrbz+Er;}Ie(dihSMpNbW29;ysGq+(6f^1q;XI6l08QVSll&UEf6*U53HMZ*s+GB%1K@smDhL}1woDy52MR$IiQf_g zH~eHaByvnph(Y6(6hcijBy!@_r*$rJ#~DHm=adeDVqD9ZsPLf}NqlNydiVXQnRDkk zt?^n@?j}WD0669@eQ`cbQtNvG<`DzO8 zOTU$w!?$B#X?f}F;It)K@>fxaBOZA-f$$|y_DHQF`7l$TPSGA_5#EAo_tggjD-@iB zfP>_f(l}hp2#;c)!KKVQ2^qWf1u;KR6#$|;Q@?{=NI&ND0U6}FPQG+~!JQ*VY`|Yt zP+`tFrXVoH7B{y(j_G*-+oup;L*C-Mw^}PT<2>RJ|MsUHR(K8sM6yD%Gu;k zpwk?0%$Pw#9cn_G@32$V;HPvG`c6D(M~Y-Fxd|b!yx5q|?~MEbH~xYVcc2n_R&C2T zf=t3#ty+lEpsC7`r3aUbz`Ce2MzeyiRpM*E7(l8^55sALtKqCHpk!+E&Kiowo~@KscaK+c+DA7#SITkYOXpXsudgbGHg@R7 zmVoP0?aPYlzmF_)04iCq_kfC6FU)$DI9?>v&zRb^f&}q7m z=<-BuSQnrt_xte~RlDkKnaa5Wn{wQB)VSR8a?gfrtF}9gR-Xt=h6d#s!Qc%qb9vS| zsfKLHrh=4eBp62=>m+Mr9U@~T^oN32D~!HqjMwNGb$cMd2h46c;bG}LLi*{PHPq`; zyFAKhXX#7N6oxXjSyx!;QzU*Z*)+BjvLKi;BaeAAI!3Ma@Sq70^Q2*JtNv8|9ZH&i z5n1xEEv#H35_0qV9j7-)?%0ub4zdhq;ffr5sPkuZ1%!K{g$xO$Uo6j5?0{ikvSiH8 z8sck252w(AGa4v&o7N%2q~3>C2|@(Nf!(vKeq7$!O8m;SdbOiS$@j4-$}X|;@!{l6 zit8(pnhZ3Jygz*jfMBv^0vis{VFh@N4@U^7^;$o3cfT&@^Alx_~fKx(jPCH+gD~DRu5OoDBo@?2?PwkK? z%DXC6Q>BNW>epCj;lp^Cd*VJ<%P?W=g)Vhrg#S6WcS(NSDLy* zkZvg^_i`j8a|+?IpgjfTIECU1=k?x^ji4P%>wo7voXQ$PcnUs-xTW1i?5_QhndbLFs921Z zU#}RE-|o#ACNVBMS6f%EnDhS5_KZa}<~moewxGMC9;q)KK9p+lOQJxL_P#OvJX-1_ zE9wga<^zR7Fpy*>Sk+-v{fM}j1jqwyL97-d;0B_{9zxbLxrb<3AiQ-215ex#a|kEf zZGGO(!Y9r1`k`|Jw$OnMR+Ua#WQ~|&=rBsqr8G;)-aIhtTkA;U2IW@TSNjdc6$X{1 z9B!GAS5S1b#i0RoQLD)VdEA269Z@3h{ZNc6Q;xl13noC{VcKv!72d}4C#7(7v+iMU z1iIP7h@^yeY@Ilf%4`J!tTQRC+4=dI^^LW;h0V=VoLHFe9R2+jULGM`2mytxD^Mye zfI$lAZmtS%`NgYxl*%_K#&b48pwH-Jgf8o7&93xj@%Osx=G}eTzw*3dzFjP(o%hVe zgM~PAGqa)^mYEx~8@<_UD+@px5G!G%97VcN&al2m0kpRN4i|-xZe{tp{fyoJanBGI zERa_Dh^MwEe(y2*Eu%Pc6U0tryAe$aPQO=?wKU>`Tu-PGeh>i*)aM;q@HSG~Bo>vF z^pn>c^hxk2#s2vJAB5s)e*i#Vs;_A7?k)Q>SEpApt>q zXLKlMduw54yWhJx6Yjl8GnTcjO(qs+6>_b`ZI@S^31?JsF=MPY6SA`i$*V0plz*kW zvVLRp((9L@gzmsaBKop<5rMw*s~Gf`U#6hH$}11_dH=fyXpwJ7IEC0FhUIrU*o`N4 zk)SMD-=_2(P;(*5_0E<4)fPXIdl)AeFmWp08gxxBwzJJH33)+Kk0PuUJgGGJsNOEi}Y;AA!wfWyuspSAM4d`fEf8bJ zPNY0dJfV#r`h5g`JsqZlDA2)KL?F%AgEPb(g4AYX2z~mj2(HCeEPgHA+XV*f2me%|ZY44Mr8V90D`)6y?DlGXtj+z{9(gyZS~B%_VlZ&?#VS&%bHEjv0r z7km`K)&w=Iw)V2Q8c^fB!|0HvruZTdXuZxucdkVCurV4-KkU@|cH3uCh~pz{H(3*S2zKotoj+r{@=LJl)?W zb0Tx8x!dZWa-gLR)?b@nSYfZn10CZQ-0e>o|I{>RQb7y(fowi!iZH6;5PadU4r&^Y zlx07-2zb`m2?M|jx+lJ-MR^?ZV0o?!vtfRs?pe*(04qz6&g;8>6J%A;m^HiN5cZeq zfkUxS4$*>p-NfVe8QQfpM4idNK1w9VYfX-r@M=m`Z}0Gh*c1zSD2x`^(s;9sXQjK` zcNhOs4Yz;yCVwHsHy1k7dpn=%w$3ZB>^=JQwa%5dI`+p^E7Jc7748NC2Y0ERv;F}k7B(AVZ@&kt)RLYWBv6TSBZq$ z4OX2iQOU#xGhBPSxz*c3=Vvv~qAANNgk{OkS>&D6AnQvDEU!CzZEk*Hap}*mZ*DW) z6+2I!j*?&P@XZTe?P2$Xak4>;UXpe6+4hW1{Oa?cSYge~CU{xKYS{VAI=*Ok1MBz6 zAno+`w?kjF@cVQ6;*!upvQr&z>x;`!{i6qXVE)<0Gl(hSUf}m8$m<*Gg^FRX!x?ye z@jo4IsTwnwgl%B&t@ZO(6}raMJ;Z6&oh@{2eM>8P>#63VOnupy;!VZTqYKD0$L#)l z9t(iC+`abltCrDSEcTNL6uGT{Lb7gamE0@5u&gpFQ%1*IbL$%%by$3|g0~a z*W}L3Bg$9!C*VPD$$kN4a7&pTp45X|K;%qikp|=M;9?1E@&LgS^IrxVx9qXKE8RKF zXV(7Iln^j=m9IC~-V{SF>x)^DG@WsUM_J)^-LlLlUqjqdEyXg==$azG>#-<-0}Hn- zjCQ5l_eszPDFkvg{kCv+*sn5qj0j!si+|Rg0>rNcAaD(#_!d7D;ctlJ)x1!03SHq6{72LOh=KK`RgPCL= z7^mq<3iBH@Ly8E5NI(n>0E|ThER?kRFZYcbzwc%GCt7}|hHxMd1c^J&C8=AP#8_zA zT{k*ow#p4@-7pV-i`pl`l+~@E&>P8o+hF_mU6t^KY*amlT$x2-X2EdMT@Zd&`jO&3 z*%m6yO1SDU(YTA#ZzBJB%Do<}&sfnH?Hrp|TfA8@l3a1U@h@NVFE$Hag?uJO{LX@;UwcjQ#s;XJXfsw0;d9xiA8}SA()^U(Z z(Q&nqKjrt8%ywhgF!V zHXpzQihd9du|;>bzwxH8QyL2y0gE=RIM#6xN~_>+R3Dbf$=c|0?) zkYqDgN^Nd!nE#6pZSyD$;wt_g*CGwfW^G1%owHt}I*Qxx!#ol~MNQA(c$IKAra=-* z&{9?`hyD(AGKjsAx3t(9@1945cBwB z)`_5~Q#h(w&Zp=*SZx^ds_VRhiY^D#s%L^wd8>oBD|{l%s&7YhxN3=ox2o}Ml|>lX zMX;BYy7iT8)nXC?pv5WNpgSz~pjgUSONVlcwG6T1N+YKgMcb*CB^V@b3YTxFUB!-A zm?4~0u0KYzPS4HRyJoG`+3O24%L^L|GxKY6+pFBWg_EFt*2VG)<$9Hm=pE&4t?OJz z4RxSinJ8;N~wmi{+HjI?cf=iRpR#wGqm6m0v6CgWsH@PUKqiz_>!UClI5}Wi6JHwVky2^eeUy}w!|Lq1 zE-Qza-RAgW6*lQ!RN?+@Q$SAR{2*v{!F6bd4gZ4WEs*G$Sq`O{5+LJL^@H$hZ2T;rSKu8 zb-)&cu7^PE(I(OlaTc-1hwEj`S6DCHekYYU7hA|?rk5egz@wKYxjhd)?7|#Ot0K+W ziFjwu_y`hzrt)lGZ8-KE0Sr0I0{kkZN^VPG9FL6#?ZNEk&a(5|387k?30KBhqrxFE zWz}C={_;Mavw1PayN_Yd@TC0qf8V4xmto!X96-;%-0p92p`P@NKP%I6?uVb@eUqgv z9*CaVoLgHrH^{>A9>TROTh1XP$ixRB?vNLqER}!`72_pmQeG!PGP|QwcWubtj=3kB zm=v{HSqnE2^a7J?z*nArKY;Bvk(l67sHn4mJ>WDmK^7=W60t zPd+r=LUItw|8Xx55R^;y-JE!Z%=hP5n4*ZA2GUx8MNZP}B7+V!LxLwH@U1NY9{!f5 zd`#zm&}&cQJb~k$`hIoaosA??5cRLohc&<#p==V$Hd+ZK{Q4A2DXpJB8XFiT^eJ1J6tMf03BSB}e(KE33l}b2 zoGd$gv}Jz?N(+g;W+WMD%Bp+x1&~-7fTHmm+x?mKh5mf6zeGfEb{&Q(j#A3jbP-$} z$y2kL6%cae==@d45ONwE#27o>q*(ev5|W%Ln>q91g=64~8a&xgoG0_soS2nXQ6#%$ z)%bIB_QnEFKTv35Puc{c74B^k+hv{BUsFz=pbDtNKHgkd!IXWXa2w7k3`MSIVR8BT zYJYue`^L@FljoFG8%XtN_9}**;yF>TE79pe(>V+(qcv@FO5KLs*vZ!Ba&Iw3d*v38 zW1tFYbJu+o-Jlb6|K2N@fM`Jiyr^>9=+0E-N9J2Km2pjnlo#}Y%mZU`vm{hVf zjJh?uv6U*YsQFSHKm}Q?kWwY89BW$AGekABr5BEzjH+-jyN`-UN28y(V_iuDTXDQ2 zoq9|Wr6BqfoPn?_h(>^b_#jFX&B+ms6jtV>0<~205B-QA&qJ&^&RcNwd@r4iul`vf9VseVFl%C3G*n^*rqIiV!v~_FU zvQmrdTgVYp>qTHzzq-^J$W9Jb>8UAdu1glvnF7!I1ja3fuHPR0_Aq0(5vQwezh^&SFGH-z<^H# zm3ywkz3Tcbc&ng}CYvQ$pfDf$reKzRQsGZH;F90&=I(k!WbQZQuL`umarT4Acl#g_ zXt5(#31yV7vAV;JWx<4B(O6dGdf-?Gt_^zq zYgcW#%WM99m$*Z)4fMTTWsi`M8_`vHfQbT2jhG`nByBJ{(V4>aveF8B(xfkQf7ovY zXZm0N=0Cg8QGzcx{q6)~$>BDd?ip~rjW@yTmEOGSGz`aAD6P2KdULjiH*Lk~R5yk7 z74CT*deg(nK3jI`tq#=2nIXz>s`Ij^2ecB;*jcy{{n03?QkjQlS1)By2%%aQBa|;= z*P0z(6^x-UeQDfCf_iCfF<^b4It3aZvQPVw=TGMr=%d2{YQN9 zNk+8z%VSZ9lOd=yKlY|aZuR#mxwc{7q|o2#xJB(=;?WhZb|#D4dh8x5ck{j|bop*M zG(C|=dyI(>Y`Xu9$^AY2k`LV_cv5k_`>s3, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.0-pre1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-09-08 17:26+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.7b3\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "sai mảng in thấp" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: không thể chuyển đổi mảng theo số mÅ© sang mảng kết hợp" + +#: arrayfunc.c:479 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: khoá màng kết hợp không hợp lệ" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: không thể cấp phát cho chỉ số không thuá»™c số" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: phải sá»­ dụng chữ thấp khi gán mảng kết hợp" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: không thể tạo %s" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: không tìm thấy sÆ¡ đồ phím cho câu lệnh" + +#: bashline.c:3491 +#, 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à dấu sổ chéo ngược « / »" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "thiếu « %c » đóng trong %s" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: thiếu dấu hai chấm định giá»›i" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "« %s »: tên sÆ¡ đồ phím không hợp lệ" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: không thể Ä‘á»c %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "« %s »: không thể hủy tổ hợp" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "« %s »: tên hàm không rõ" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s không được tổ hợp vá»›i phím.\n" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "%s có thể được gá»i thông qua " + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "đếm vòng" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" +"chỉ có nghÄ©a trong vòng lặp:\n" +" • for\ttrong\n" +" • while\ttrong khi\n" +" • until\tđến khi" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "ChÆ°a đặt biến môi trÆ°á»ng HOME (nhà)" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "ChÆ°a đặt biến môi trÆ°á»ng OLDPWD (mật khẩu cÅ©)" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "dòng %d:" + +#: builtins/common.c:139 error.c:260 +#, c-format +msgid "warning: " +msgstr "cảnh báo :" + +#: builtins/common.c:153 +#, c-format +msgid "%s: usage: " +msgstr "%s: sá»­ dụng:" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "quá nhiá»u đối số" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: tùy chá»n cần thiết má»™t đối số" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: cần thiết đối số thuá»™c số" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s: không tìm thấy" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s: tùy chá»n không hợp lệ" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: tên tùy chá»n không hợp lệ" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "« %s »: không phải đồ nhận diện hợp lệ" + +#: builtins/common.c:238 +msgid "invalid octal number" +msgstr "số bát phân không hợp lệ" + +#: builtins/common.c:240 +msgid "invalid hex number" +msgstr "số thập lục không hợp lệ" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "số không hợp lệ" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: sai xác định tín hiệu" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "« %s »: không phải đặc tả hợp lệ cho PID hoặc công việc" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: biến chỉ Ä‘á»c" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s ở ngoại phạm vi" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "đối số" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s ở ngoại phạm vi" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s: không có công việc nhÆ° vậy" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s: không có Ä‘iá»u khiển công việc" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "không có Ä‘iá»u khiển công việc" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s: bị hạn chế" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "bị hạn chế" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: không phải dá»±ng sẵn trình bao" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "lá»—i ghi: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: gặp lá»—i khi lấy thÆ° mục hiện thá»i: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: đặc tả công việc mÆ¡ hồ" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: tên hành vi không hợp lệ" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: không có đặc tả Ä‘iá»n nốt" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "cảnh báo: tùy chá»n « -F » có lẽ không hoạt Ä‘á»™ng nhÆ° mong đợi" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "cảnh báo: tùy chá»n « -C » có lẽ không hoạt Ä‘á»™ng nhÆ° mong đợi" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "hiện thá»i không thá»±c thi chức năng Ä‘iá»n nốt" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "chỉ có thể được dùng trong má»™t hàm" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "không thể dùng « -f » để tạo hàm" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s: hàm chỉ Ä‘á»c" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: không thể phá hủy biến mảng bằng cách này" + +#: builtins/declare.def:468 +#, 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 theo số mÅ©" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "không có sẵn chức năng nạp Ä‘á»™ng" + +#: builtins/enable.def:312 +#, 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:335 +#, 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:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s không phải được nạp Ä‘á»™ng" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: không thể xoá: %s" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "%s: là thÆ° mục" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: không phải là tập tin chuẩn" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "%s: tập tin quá lá»›n" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, 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:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: không thể thá»±c hiện: %s" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "đăng xuất\n" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "không phải trình bao đăng nhập: hãy dùng lệnh « exit » (thoát)" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Vẫn có công việc bị dừng.\n" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "Vẫn có công việc Ä‘ang chạy.\n" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "không tìm thấy lệnh" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "đặc tả lịch sá»­" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: không thể mở tập tin tạm thá»i: %s" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "hiện thá»i" + +#: builtins/fg_bg.def:158 +#, 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 thiết đối số -- %c\n" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "chức năng tạo ký hiệu lá»™n xá»™n bị tắt" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: bảng ký hiệu lá»™n xá»™n còn rá»—ng\n" + +#: builtins/hash.def:244 +#, c-format +msgid "hits\tcommand\n" +msgstr "gá»i nhá»›\tlệnh\n" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Câu lệnh trình bao tÆ°Æ¡ng ứng vá»›i từ khoá `" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"không có chủ Ä‘á» trợ giúp tÆ°Æ¡ng ứng vá»›i « %s ». Hãy thá»­ câu lệnh:\n" +" • help help\n" +" • man -k %s\n" +" • info %s" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: không thể mở : %s" + +#: builtins/help.def:337 +#, 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 trình bao này được xác định ná»™i bá»™. Hãy gõ :\n" +" • help\t\tđể xem danh sách này.\n" +" • info bash\tđể tìm thêm thông tin chung vá» trình bao.\n" +" • man -k\t} • info\t\t} để tìm thêm thông tin vá» lệnh không có trong danh " +"sách này.\n" +"\n" +"Dấu sao « * » bên cạnh tên thì ngụ ý nó bị tắt.\n" +"\n" + +#: builtins/history.def:154 +msgid "cannot use more than one of -anrw" +msgstr "chỉ có thể dùng má»™t của những tùy chá»n « -a », « -n », « -r », « -w »" + +#: builtins/history.def:186 +msgid "history position" +msgstr "vị trí lịch sá»­" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: lá»—i mở rá»™ng 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:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: đối số phải là mã số của tiến trình (PID) hoặc công việc" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "Lá»—i không rõ" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "đợi biểu thức" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: sai xác định bá»™ mô tả tập tin" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, 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:258 builtins/mapfile.def:296 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: sai đếm dòng" + +#: builtins/mapfile.def:269 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: gốc mảng không hợp lệ" + +#: builtins/mapfile.def:286 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: lượng gá»i ngược không hợp lệ" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "%s: tên biến mảng vẫn trống" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "cần thiết há»— trợ biến mảng" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "« %s »: thiếu ký tá»± định dạng" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "« %c »: ký tá»± định dạng không hợp lệ" + +#: builtins/printf.def:571 +#, c-format +msgid "warning: %s: %s" +msgstr "cảnh báo : %s: %s" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "thiếu chữ số thập phân cho \\x" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "không có thÆ° mục khác" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "đống thÆ° mục vẫn trống" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "chỉ mục đống thÆ° mục" + +#: builtins/pushd.def:683 +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.\n" +"\tLệnh « pushd » thêm thÆ° mục vào danh sách này;\n" +"« popd » nâng thÆ° mục lên danh sách.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-c\tgá»™t đống thÆ° mục bằng cách xoá má»i phần tá»­\n" +"\t\t-l\tđừng in ra phiên bản thÆ° mục có dấu ngã nằm trÆ°á»›c\n" +"\t\t\tmà tÆ°Æ¡ng ứng vá»›i thÆ° mục chính của ngÆ°á»i dùng\n" +"\t\t-p\tin ra đống thÆ° mục má»—i dòng má»™t mục\n" +"\t\t-v\tin ra đống thÆ° mục má»—i dòng má»™t mục\n" +"\t\t\tcó vị trí đống nằm trÆ°á»›c\n" +"\n" +"\tÄối số :\n" +"\t\t+N\thiển thị mục thứ N đếm từ bên trái danh sách\n" +"\t\t\thiển thị theo thÆ° mục khi không Ä‘Æ°a ra tùy chá»n,\n" +"\t\t\tbắt đầu từ số không.\n" +"\n" +"\t\t-N\thiển thị mục thứ N đếm từ bên phải danh sách\n" +"\t\t\thiển thị theo thÆ° mục khi không Ä‘Æ°a ra tùy chá»n,\n" +"\t\t\tbắt đầu từ số không." + +#: builtins/pushd.def:705 +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 má»™t thÆ° mục vào đầu của đống thÆ° mục, hoặc xoay đống,\n" +"\tlàm cho thÆ° mục má»›i đầu đống là thÆ° mục làm việc hiện thá»i.\n" +"\tKhông có đối số thì trao đổi hai thÆ° mục đầu.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-n\tthu hồi chức năng chuyển đổi thÆ° mục bình thÆ°á»ng\n" +"\tkhi thêm thÆ° mục vào đống, thì chỉ thao tác đống chính nó.\n" +"\n" +"\tÄối số :\n" +"\t\t+N\txoay đống để mà thÆ° mục thứ N\n" +"\t\t\t(đếm từ bên trái danh sách hiển thị theo thÆ° mục,\n" +"\t\t\tbắt đầu từ số không) nằm ở đầu.\n" +"\n" +"\t\t-N\txoay đống để mà thÆ° mục thứ N\n" +"\t\t\t(đếm từ bên phải danh sách hiển thị theo thÆ° mục,\n" +"\t\t\tbắt đầu từ số không) nằm ở đầu.\n" +"\n" +"\t\tdir\tthêm DIR vào đầu đống thÆ° mục,\n" +"\t\tthì làm cho nó thÆ° mục làm việc hiện thá»i.\n" +"\n" +"\tDá»±ng sẵn « dirs » hiển thị đống thÆ° mục." + +#: builtins/pushd.def:730 +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 thÆ° mục.\n" +"Không Ä‘Æ°a ra đối số thì gỡ bá» thÆ° mục đầu khá»i đống,\n" +"\tvà chuyển đổi sang thÆ° mục đầu má»›i.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-n\tthu hồi chức năng chuyển đổi thÆ° mục bình thÆ°á»ng\n" +"\t\tkhi gỡ bá» thÆ° mục khá»i đống, thì chỉ thao tác đống chính nó.\n" +"\n" +"\tÄối số :\n" +"\t\t+N\tgỡ bá» mục thứ N đếm từ bên trái danh sách\n" +"\t\t\thiển thị bằng « dirs », bắt đầu từ số không.\n" +"\tVí dụ : « popd +0 » sẽ gỡ bá» thÆ° mục đầu tiên,\n" +"\t\t« popd +1 » gỡ bá» thÆ° mục thứ hai, v.v.\n" +"\n" +"\t\t-N\tgỡ bá» mục thứ N đếm từ bên phải danh sách\n" +"\t\t\thiển thị bằng « dirs », bắt đầu từ số không.\n" +"\tVí dụ : « popd -0 » sẽ gỡ bá» thÆ° mục cuối cùng,\n" +"\t\t« popd -1 » gỡ bá» thÆ° mục giáp cuối, v.v.\n" +"\n" +"\tDá»±ng sẵn « dirs » sẽ hiển thị đống thÆ° mục." + +#: builtins/read.def:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: sai xác định quá hạn" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "lá»—i Ä‘á»c: %d: %s" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" +"chỉ có thể « return » (trở vá») từ má»™t hàm hoặc văn lệnh được gá»i từ nguồn" + +#: builtins/set.def:768 +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:805 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: không thể hủy đặt" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: không thể hủy đặt: %s chỉ Ä‘á»c" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: không phải biến mảng" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "%s: không phải hàm" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "đếm dá»i" + +#: builtins/shopt.def:254 +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 trình bao" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: tên tùy chá»n trình bao không hợp lệ" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "cần thiết đối số tên tập tin" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "%s: không tìm thấy tập tin" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "không thể ngÆ°ng" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "không thể ngÆ°ng trình bao đăng nhập" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s có bí danh tá»›i « %s »\n" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s là từ khoá trình bao\n" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "%s là hàm\n" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s là dá»±ng sẵn trình bao\n" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "%s là %s\n" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s có ký hiệu lá»™n xá»™n (%s)\n" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: đối số giá»›i hạn không hợp lệ" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "« %c »: câu lệnh sai" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: không thể lấy giá»›i hạn: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "giá»›i hạn" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: không thể sá»­a đổi giá»›i hạn: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "số bát phân" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "« %c »: toán từ chế Ä‘á»™ tượng trÆ°ng không hợp lệ" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "« %c »: ký tá»± chế Ä‘á»™ tượng trÆ°ng không hợp lệ" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "dòng" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "câu lệnh cuối cùng: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Hủy bá»..." + +#: error.c:405 +msgid "unknown command error" +msgstr "lá»—i lệnh không rõ" + +#: error.c:406 +msgid "bad command type" +msgstr "kiểu lệnh sai" + +#: error.c:407 +msgid "bad connector" +msgstr "bá»™ kết nối sai" + +#: error.c:408 +msgid "bad jump" +msgstr "sai nhảy" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: biến chÆ°a tổ hợp" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\tquá hạn trong khi đợi dữ liệu nhập nên tá»± Ä‘á»™ng đăng xuất\n" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "không thể chuyển hÆ°á»›ng đầu vào tiêu chuẩn từ « /dev/null »: %s" + +#: execute_cmd.c:1112 +#, 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:2011 +msgid "pipe error" +msgstr "lá»—i ống dẫn" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: bị hạn chế: không thể ghi rõ dấu sổ chéo « / » trong tên câu lệnh" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s: không tìm thấy lệnh" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bá»™ thông dịch sai" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "không thể nhân đôi fd %d tá»›i fd %d" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "vượt quá giá»›i hạn mức Ä‘á»™ đệ quy của biểu thức" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "trán ngược đống đệ quy" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "lá»—i cú pháp trong biểu thức" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "thá»­ gán cho đồ không phải biến" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "chia cho không" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "lá»—i (bug): hiệu bài ấn định biểu thức sai" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "đợi dấu hai chấm « : » cho biểu thức Ä‘iá»u kiện" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "số mÅ© nhá» hÆ¡n 0" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "đợi đồ nhận diện đằng sau tăng/giảm dần sẵn" + +#: expr.c:854 +msgid "missing `)'" +msgstr "thiếu dấu ngoặc đóng « ) »" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "lá»—i cú pháp: đợi toán hạng" + +#: expr.c:1177 +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:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (hiệu bài lá»—i là « %s »)" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "cÆ¡ số (số há»c) không hợp lệ" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "cÆ¡ số có giá trị quá lá»›n" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: lá»—i biểu thức\n" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: không thể truy cập thÆ° mục cấp trên" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "không thể đặt lại chế Ä‘á»™ nodelay (không hoãn) cho fd %d" + +#: input.c:258 +#, 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á»› cho dữ liệu nhập bash từ fd %d" + +#: input.c:266 +#, 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:466 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "tiến trình con đã tạo (PID %d) xuất hiện trong công việc Ä‘ang chạy %d" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Ä‘ang xoá công việc bị dừng chạy %d vá»›i nhóm tiến trình %ld" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline" + +#: jobs.c:1113 +#, 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:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: không có PID (mã số tiến trình) nhÆ° vậy" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "Tín hiệu %d" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "Hoàn tất" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "Bị dừng" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "Bị dừng(%s)" + +#: jobs.c:1443 +msgid "Running" +msgstr "Äang chạy" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "Hoàn tất(%d)" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "Thoát %d" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "Không rõ trạng thái" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "(lõi bị đổ)" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid tiến trình con (%ld thành %ld)" + +#: jobs.c:2099 nojobs.c:585 +#, 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 trình bao này" + +#: jobs.c:2326 +#, 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:2598 +#, 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:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: công việc bị chấm dứt" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: công việc %d đã chạy trong ná»n" + +#: jobs.c:3492 +#, c-format +msgid "%s: line %d: " +msgstr "%s: dòng %d:" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr " (lõi bị đổ)" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd bây giá»: %s)\n" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp bị lá»—i" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: ká»· luật dòng" + +# NghÄ©a chữ : dừng dịch +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:3661 +#, 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:3666 +msgid "no job control in this shell" +msgstr "không có Ä‘iá»u khiển công việc trong trình bao này" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc (cấp phát bá»™ nhá»›): lá»—i khẳng định: %s\n" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc (cấp phát bá»™ nhá»›): %s:%d: khẳng định bị há»ng\r\n" + +#: lib/malloc/malloc.c:313 +msgid "unknown" +msgstr "không rõ" + +#: lib/malloc/malloc.c:797 +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 " +"rảnh bị ghi vào" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "free: đã được gá»i vá»›i đối số khối đã giải phá»ng" + +#: lib/malloc/malloc.c:877 +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:896 +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:902 +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:1001 +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:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes ở ngoại phạm vi" + +#: lib/malloc/malloc.c:1022 +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:177 +#, 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:184 +#, 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:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p đã có trong bảng nhÆ° còn rảnh ?\n" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "không há»— trợ thao tác mạng" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "Bạn có thÆ° trong $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "Bạn có thÆ° má»›i trong $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "ThÆ° tín trong %s đã được Ä‘á»c\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "lá»—i cú pháp: cần thiết biểu thức số há»c" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "lá»—i cú pháp: dấu chấm phẩy « ; » bất thÆ°á»ng" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "lá»—i cú pháp: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: kiểu chỉ dẫn sai %d" + +#: make_cmd.c:651 +#, 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 (mong đợi « %s »)" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: chỉ dẫn chuyển hÆ°á»›ng « %d » ở ngoại phạm vi" + +#: parse.y:2986 parse.y:3218 +#, 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:3722 +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:3727 +#, 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: hiệu bài bất thÆ°á»ng « %s »" + +#: parse.y:3731 +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:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "gặp hiệu bài bất thÆ°á»ng « %s », còn mong đợi dấu ngoặc đóng « ) »" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "đợi dấu đóng ngoặc « ) »" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "đối số bất thÆ°á»ng « %s » tá»›i toán tá»­ nguyên phân Ä‘iá»u kiện" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "đối số bất thÆ°á»ng tá»›i toán tá»­ nguyên phân Ä‘iá»u kiện" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "hiệu bài bất thÆ°á»ng « %s » còn đợi toán tá»­ nhị phân Ä‘iá»u kiện" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "đợi toán tá»­ nhị phân Ä‘iá»u kiện" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "đối số bất thÆ°á»ng « %s » tá»›i toán tá»­ nhị phân Ä‘iá»u kiện" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "đối số bất thÆ°á»ng tá»›i toán tá»­ nhị phân Ä‘iá»u kiện" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "gặp hiệu bài bất thÆ°á»ng « %c » trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "gặp hiệu bài bất thÆ°á»ng « %s » trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "gặp hiệu bài bất thÆ°á»ng « %d » trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "gặp lá»—i cú pháp ở gần hiệu bài bất thÆ°á»ng « %s »" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "gặp lá»—i cú pháp gần « %s »" + +#: parse.y:5223 +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:5223 +msgid "syntax error" +msgstr "lá»—i cú pháp" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Dùng « %s » để rá»i trình bao.\n" + +#: parse.y:5447 +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 dấu ngoặc đóng « ) » tÆ°Æ¡ng ứng" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: không tìm thấy hàm « %s »" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bá»™ kết nối sai « %d »" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: « %c »: ký tá»± định dạng không hợp lệ" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "bá»™ mô tả tập tin ở ngoại phạm vi" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: lá»i chuyển hÆ°á»›ng mÆ¡ hồ" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: không thể ghi đè lên tập tin đã có" + +#: redir.c:157 +#, 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:162 +#, 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:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" +"/dev/(tcp|udp)/host/port không được há»— trợ khi không có chức năng chạy mạng" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "gặp lá»—i chuyển hÆ°á»›ng nên không thể nhân đôi fd" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "không tìm thấy « /tmp », hãy tạo." + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "« /tmp » phải là tên thÆ° mục hợp lệ" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: tùy chá»n không hợp lệ" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "Không có tên." + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "bash của GNU, phiên bản %s-(%s)\n" + +#: shell.c:1779 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Sá»­ dụng:\t%s [tùy chá»n GNU dài] [tùy chá»n] ...\n" +"\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh ...\n" + +#: shell.c:1781 +msgid "GNU long options:\n" +msgstr "Tùy chá»n GNU dài:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Tùy chá»n trình bao :\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD hoặc -c lệnh or -O shopt_option\t\t(chỉ cuá»™c gá»i)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s hoặc -o tùy chá»n\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Gõ câu lệnh trợ giúp « %s -c \"help set\" » để xem thêm thông tin vá» các tùy " +"chá»n trình bao.\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Gõ câu lệnh trợ giúp « %s -c help » để xem thêm thông tin vá» các câu lệnh " +"trình bao dá»±ng sẵn.\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Dùng lệnh « bashbug » để thông báo lá»—i.\n" + +#: sig.c:583 +#, 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 máy" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Gián Ä‘oạn" + +#: 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 "Ngoại lệ chấm Ä‘á»™ng" + +#: siglist.c:86 +msgid "Killed" +msgstr "Bị giết" + +#: siglist.c:90 +msgid "Bus error" +msgstr "lá»—i mạch nối" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Lá»—i chia ra từng Ä‘oạn" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Sai gá»i hệ thống" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "á»ng dẫn bị 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 VR 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 "V/R 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 "Mục ghi bị khoá" + +#: 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ị cúp Ä‘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 +msgid "Unknown Signal #" +msgstr "Không rõ tín hiệu #" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Không rõ tín hiệu #%d" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "sai thay thế: không có « %s » đóng trong %s" + +#: subst.c:2458 +#, 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:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "không thể tạo ống dẫn để thay thế tiến trình" + +#: subst.c:4504 +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:4549 +#, 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:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "không thể mở ống dẫn đặt tên %s để ghi" + +#: subst.c:4569 +#, 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:4765 +msgid "cannot make pipe for command substitution" +msgstr "không thể tạo ống dẫn để thay thế lệnh" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "không thể tạo tiến trình con để thay thế lệnh" + +#: subst.c:4816 +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:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: tham số vô giá trị hoặc chÆ°a được đặt" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: biểu thức chuá»—i phụ < 0" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sai thay thế" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: không thể gán bằng cách này" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sai thay thế: không có « ` » đóng trong %s" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "không khá»›p: %s" + +#: test.c:145 +msgid "argument expected" +msgstr "mong đợi đối số" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: đợi biểu thức số nguyên" + +#: test.c:262 +msgid "`)' expected" +msgstr "đợi dấu ngoặc đóng « ) »" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "đợi dấu ngoặc đóng « ) », còn tìm %s" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: đợi toán tá»­ nguyên phân" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: đợi toán tá»­ nhị phân" + +#: test.c:806 +msgid "missing `]'" +msgstr "thiếu dấu ngoặc vụ đóng « ] »" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "số thứ tá»± tín hiệu không hợp lệ" + +#: trap.c:324 +#, 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:328 +#, 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 " +"mình" + +#: trap.c:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: tín hiệu sai %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "gặp lá»—i khi nhập lá»i xác định hàm cho « %s »" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "cấp trình bao (%d) quá cao nên đặt lại thành 1" + +#: variables.c:1898 +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:3127 +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:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "sai ký tá»± %d trong chuá»—i exportstr cho %s" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "không có dấu bằng « = » trong chuá»—i exportstr cho %s" + +#: variables.c:3794 +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 trình bao) không phải là " +"ngữ cảnh hàm" + +#: variables.c:3807 +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:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: đầu của shell_variables (các biến trình bao) không phải là phạm " +"vi môi trÆ°á»ng tạm thá»i" + +#: version.c:46 +#, fuzzy +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "Tác quyá»n © năm 2008 của Tổ chức Phần má»m Tá»± do." + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Giấy phép GPLv3+: Giấy Phép Công Cá»™ng GNU phiên bản 3 hay sau \n" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "bash của GNU, phiên bản %s (%s)\n" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "Äây là phần má»m tá»± do thì bạn có quyá»n sá»­a đổi và phát hành lại nó.\n" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "KHÔNG BẢO ÄẢM GÃŒ CẢ, vá»›i Ä‘iá»u kiện được pháp luật cho phép.\n" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: không thể cấp phát %lu byte (%lu byte đã cấp phát)" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: không thể cấp phát %lu byte" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: không thể cấp phát lại %lu byte (%lu byte đã cấp phát)" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: không thể cấp phát %lu byte" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: không thể cấp phát %lu byte (%lu byte đã cấp phát)" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: không thể cấp phát %lu byte" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" +"xrealloc: %s:%d: không thể cấp phát lại %lu byte (%lu byte đã cấp phát)" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: không thể cấp phát %lu byte" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [tên[=giá-trị] ... ]" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] tên [tên ...]" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m sÆ¡_đồ_phím] [-f tên_tập_tin] [-q tên] [-u tên] [-r " +"dãy_phím] [-x dãy_phím:lệnh_trình_bao] [dãy_phím:chức_năng-readline hay lệnh-" +"readline]" + +#: builtins.c:54 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "tiếp tục [n]" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "caller [b_thức]" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "cd [-L|-P] [tmục]" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:68 +msgid ":" +msgstr ":" + +#: builtins.c:70 +msgid "true" +msgstr "đúng" + +#: builtins.c:72 +msgid "false" +msgstr "sai" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [tên[=giá_trị] ...]" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] tên[=giá_trị] ..." + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "local [tùy_chá»n] tên[=giá_trị] ..." + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [đối_số ...]" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [đối_số ...]" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f tên_tập_tin] [tên ...]" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "eval [đối_số ...]" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "getopts chuá»—i_tùy_chá»n tên [đối_số]" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a tên] [lệnh [đối_số ...]] [chuyển_hÆ°á»›ng ...]" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "đăng xuất [n]" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e tên-e] [-lnr] [đầu] [cuối]\n" +"\thay\n" +"fc -s [mẫu=lập_lại] [lệnh]" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "fg [đặc_tả_công_việc]" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "bg [đặc_tả_công_việc ...]" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p Ä‘Æ°á»ng_dẫn] [-dt] [tên ...]" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "help [-ds] [mẫu ...]" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d hiệu] [n]\n" +"\thay\n" +"history -anrw [tên_tập_tin]\n" +"\thay\n" +"history -ps đối_số [đối_số...]" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" +"jobs [-lnprs] [đặc_tả_công_việc ...]\n" +"\thoặc\n" +"jobs -x lệnh [các_đối_số]" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [đặc_tả_công_việc ...]" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s đặc_tả_tín_hiệu | -n số_tín_hiệu | -đặc_tả_tín_hiệu] pid | " +"đặc_tả_công_việc ...\n" +"\thay\n" +"kill -l [đặc_tả_tín_hiệu]" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "let đối_số [đối_số ...]" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-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á»±] [-p nhắc] [-t " +"thá»i_hạn] [-u fd] [tên ...]" + +# nghÄ©a chữ +#: builtins.c:138 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o tùy_chá»n] [đối_số ...]" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "unset [-f] [-v] [tên ...]" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" +"export [-fn] [tên[=giá_trị] ...]\n" +"\thay\n" +"export -p" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" +"readonly [-af] [tên[=giá_trị] ...]\n" +"\thay\n" +"readonly -p" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "nguồn tên_tập_tin [đối_số ...]" + +#: builtins.c:152 +msgid ". filename [arguments]" +msgstr ". tên_tập_tin [đối_số ...]" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "ngÆ°ng [-f]" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "test [b_thức]" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "[ đối_số ... ]" + +#: builtins.c:162 +msgid "times" +msgstr "lần" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[đối_số] đặc_tả_tín_hiệu ...]" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] tên [tên ...]" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [giá»›i_hạn]" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [chế_Ä‘á»™]" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "đợi [id]" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "đợi [pid]" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for TÊN [in CÃC-TỪ ... ;] do các_CÂU_LỆNH; done" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do các_CÂU_LỆNH; done" + +#: builtins.c:186 +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:188 +msgid "time [-p] pipeline" +msgstr "thá»i hạn [-p] ống dẫn" + +#: builtins.c:190 +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:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if các_CÂU_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:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while các_CÂU_LỆNH; do các_CÂU_LỆNH; done" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until các_CÂU_LỆNH; do các_CÂU_LỆNH; done" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" +"chức_năng tên { các_CÂU_LỆNH ; }\n" +"\thay\n" +"tên () { các_CÂU_LỆNH ; }" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "{ LỆNH ; }" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "đặc_tả_công_việc [&]" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "(( biểu_thức ))" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "[[ biểu_thức ]]" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "biến — tên và nghÄ©a của má»™t số biến trình bao" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | tmục]" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [tùy_chá»n ...]" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v biến] định_dạng [đối_số]" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-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:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o 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:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "compopt [-o|+o tùy_chá»n] [tên ...]" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gá»i_ngược] [-c lượng] " +"[mảng]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gá»i_ngược] [-c lượng] " +"[mảng]" + +#: builtins.c:254 +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 "" +"Xác định hoặc hiển thị bí danh.\n" +"\n" +"\tKhông Ä‘Æ°a ra đối số thì « alias » in ra danh sách các bí danh\n" +"\ttheo định dạng có thể dùng lại được « bí_danh TÊN=GIÃ_TRỊ »\n" +"\ttrên đầu ra tiêu chuẩn.\n" +"\n" +"\tCó đối số thì má»™t bí danh được xác định cho má»—i TÊN có giá trị Ä‘Æ°a ra.\n" +"\tMá»™t dấu cách theo sau trong GIÃ_TRỊ thì gây ra từ kế tiếp được kiểm tra\n" +"\tcó bí danh được thay thế khi bí danh được mở rá»™ng.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-p\tin ra tất cả các bí danh đã xác định theo má»™t định dạng\n" +"\t\t\tcó thể dùng lại được\n" +"\n" +"\tTrạng thái thoát:\n" +"\tbí danh trả lại Äúng nếu không Ä‘Æ°a ra TÊN chÆ°a có bí danh được xác định." + +#: builtins.c:276 +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á» má»—i TÊN khá»i danh sách các bí danh đã xác định.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\tgỡ bá» tất cả các lá»i xác định bí danh.\n" +"\n" +"Trả lại thành công nếu không có TÊN là má»™t bí danh không tồn tại." + +#: builtins.c:289 +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" +" \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 kiểu Readline.\n" +"\n" +"\tTổ hợp má»™t dãy phím vá»›i má»™t chức năng hay vÄ© lệnh kiểu Readline,\n" +"\t\thoặc đặt má»™t biến Readline.\n" +"\tCú pháp đối số khác tùy chá»n cÅ©ng tÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i cú pháp\n" +"\t\ttrong « ~/.inputrc », nhÆ°ng phải được gá»­i dÆ°á»›i dạng\n" +"\t\tmá»™t đối số riêng lẻ.\n" +"\t\tVí dụ : bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-m sÆ¡_đồ_phím\tdùng sÆ¡ đồ phím này làm sÆ¡ đồ phím\n" +"\t\t\ttrong khoảng thá»i gian chạy câu lệnh này.\n" +"\t\tTên sÆ¡ đồ phím hợp lệ:\n" +"\t\t\temacs, emacs-standard, emacs-meta,\n" +"\t\t\temacs-ctlx, vi, vi-move, vi-command,\n" +"\t\t\tvi-insert\n" +"\t\t-l\tliệt kê các tên chức năng\n" +"\t\t-P\tliệt kê các tên và tổ hợp của chức năng\n" +"\t\t-p\tliệt kê các chức năng và tổ hợp theo má»™t định dạng\n" +"\t\t\tcó thể dùng lại được làm dữ liệu nhập vào\n" +"\t\t-S\tliệt kê các dãy phím mà gá»i vÄ© lệnh và giá trị tÆ°Æ¡ng ứng\n" +"\t\t-S\tliệt kê các dãy phím mà gá»i vÄ© lệnh và giá trị tÆ°Æ¡ng ứng\n" +"\t\t\ttheo má»™t định dạng có thể dùng lại được\n" +"\t\t\tlàm dữ liệu nhập vào\n" +"\t\t-q tên_chức_năng\thá»i những phím nào gá»i chức năng này\n" +"\t\t-u tên_chức_năng\ttháo tổ hợp tất cả các phím tổ hợp\n" +"\t\t\tvá»›i chức năng này\n" +"\t\t-r dãy_phím\tgỡ bá» tổ hợp đối vá»›i dãy phím này\n" +"\t\t-f tên_tập_tin\tÄ‘á»c các tổ hợp phím từ tập tin này\n" +"\t\t-x dãy_phím:lệnh_trình_bao\tchạy câu lệnh trình bào này\n" +"\t\t\tkhi dãy phím này được nhập vào\n" +"\n" +"\tTrạng thái thoát:\n" +"\tbind trả lại 0 nếu không Ä‘Æ°a ra tùy chá»n không nhận ra hay gặp lá»—i." + +#: builtins.c:326 +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 kiểu trong, trong khi hay đến khi.\n" +"\n" +"\tThoát khá»i má»™t vòng lặp kiểu TRONG, TRONG KHI hay ÄẾN KHI.\n" +"\tCó ghi rõ N thì ngắt N vòng lặp bao bá»c.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrạng thái thoát là 0 nếu N không nhá» hÆ¡n hay bằng 1." + +#: builtins.c:338 +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 kiểu trong, trong khi hay đến khi.\n" +"\n" +"\tTiếp tục lại lần lặp lại kế tiếp của vòng lặp bao bá»c\n" +"\t\tkiểu TRONG, TRONG KHI hay ÄẾN KHI.\n" +"\tÄÆ°a ra N thì tiếp tục chạy vòng lặp bao bá»c thứ N.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrạng thái thoát là 0 nếu N không nhá» hÆ¡n hay bằng 1." + +#: builtins.c:350 +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 dá»±ng sẵn trình bao.\n" +"\n" +"\tChạy SHELL-BUILTIN (dá»±ng sẵn trình bao) vá»›i các Äá»I_Sá»\n" +"\tmà không thá»±c thi chức năng dò tìm câu lệnh.\n" +"\tCó ích khi bạn muốn thá»±c thi lại má»™t dá»±ng sẵn trình bao\n" +"\tdÆ°á»›i dạng má»™t chức năng trình bao, nhÆ°ng cÅ©ng\n" +"\tcần thá»±c thi dá»±ng sẵn bên trong chức năng.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái thoát của SHELL-BUILTIN,\n" +"\thoặc sai nếu SHELL-BUILTIN không phải là má»™t\n" +"\tdá»±ng sẵn trình bao." + +#: builtins.c:365 +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 cuá»™c gá»i hàm phụ hiện thá»i.\n" +"\n" +"\tKhông có B_THỨC thì trả lại « $line $filename ».\n" +"\tCó B_THỨC thì trả lại « $line $subroutine $filename »;\n" +"\tthông tin thêm này có thể được dùng để cung cấp vết đống.\n" +"\n" +"\tGiá trị của B_THỨC thì ngụ ý bao nhiêu khung gá»i cần lùi lại\n" +"đằng trÆ°á»›c khung hiện tại; khung đầu là khung 0.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại 0 nếu trình bao Ä‘ang chạy chức năng trình bao,\n" +"\t\tB_THỨC cÅ©ng hợp lệ." + +#: builtins.c:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" +"Chuyển đổi thÆ° mục làm việc của trình bao.\n" +"\n" +"\tChuyển đổi thÆ° mục hiện thá»i sang TMỤC.\n" +"\tThÆ° mục mặc định là giá trị của biến trình bao HOME.\n" +"\n" +"\tBiến CDPATH thì xác định Ä‘Æ°á»ng dẫn tìm kiếm cho thÆ° mục chứa TMỤC.\n" +"\tCác tên thÆ° mục xen kẽ trong CDPATH cÅ©ng định giá»›i bằng dấu hai chấm « : " +"».\n" +"\tMá»™t tên thÆ° mục trống tÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i thÆ° mục hiện tại.\n" +"\tNếu TMỤC bắt đầu vá»›i dấu chéo « / » thì không dùng CDPATH.\n" +"\n" +"\tNếu không tìm thấy thÆ° mục, và đặt biến trình bao « cdable_vars »,\n" +"\t\tthì giả sá»­ từ là má»™t tên biến.\n" +"\tNếu biến đó có giá trị thì giá trị này được dùng cho TMỤC.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-L\tép buá»™c theo liên kết tượng trÆ°ng\n" +"\t\t-P\tdùng cấu trúc thÆ° mục vật lý mà không theo liên kết tượng trÆ°ng\n" +"\n" +"\tMặc định là theo liên kết tượng trÆ°ng, nhÆ° là tùy chá»n « -L » Ä‘Æ°a ra.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại 0 nếu thÆ° mục được chuyển đổi; không thì khác số không." + +#: builtins.c:411 +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" +" \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 ra tên của thÆ° mục hoạt Ä‘á»™ng hiện thá»i.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-L\tin ra giá trị của $PWD nếu nó đặt tên\n" +"\t\t\tcủa thÆ° mục hoạt Ä‘á»™ng hiện thá»i\n" +"\t\t-P\tin ra thÆ° mục vật lý, không có liên kết má»m\n" +"\n" +"\t\tMặc định là « pwd » hoạt Ä‘á»™ng nhÆ° là « -L » được ghi rõ.\n" +"\n" +"\t\tTrạng thái thoát:\n" +"\t\tTrả lại 0 nếu không Ä‘Æ°a ra tùy chá»n sai\n" +"\t\tvà nếu Ä‘á»c được thÆ° mục hiện thá»i." + +#: builtins.c:428 +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" +"\tKhông có hiệu ứng: câu lệnh không làm gì.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tLúc nào cÅ©ng thành công." + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Trả lại má»™t kết quả thành công.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tLúc nào cÅ©ng thành công." + +#: builtins.c:448 +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" +"\tTrạng thái thoát:\n" +"\tLúc nào cÅ©ng không thành công." + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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 câu lệnh Ä‘Æ¡n giản, hoặc hiển thị thông tin vá» các câu lệnh.\n" +"\n" +"Chạy LỆNH vá»›i các Äá»I_Sá» thu hồi chức năng dò tìm chức năng trình bao,\n" +"hoạc hiển thị thông tin vá» các câu LỆNH được ghi rõ.\n" +"Có thể được dùng để gá»i câu lệnh trên Ä‘Ä©a khi đã có má»™t chức năng cùng tên.\n" +"\n" +"Tùy chá»n:\n" +"\t-p\tdùng má»™t giá trị mặc định cho ÄƯỜNG_DẪN\n" +"\t\tmà chắc chắn sẽ tìm má»i tiện ích tiêu chuẩn\n" +"\t-v\tin ra mô tả vá» câu LỆNH mà tÆ°Æ¡ng tá»± vá»›i dá»±ng sẵn « type » (kiểu)\n" +"\t-V\tin ra mô tả chi tiết hÆ¡n vá» má»—i câu 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, hoặc bị lá»—i nếu không tìm thấy câu " +"LỆNH." + +#: builtins.c:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Äặt các giá trị và thuá»™c tính của biến.\n" +"\n" +"\tTuyên bố má»—i biến và gán cho nó má»™t số thuá»™c tính.\n" +"\tKhông Ä‘Æ°a ra TÊN thì hiển thị các thuá»™c tính và giá trị của má»i giá trị.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-f\thạn chế hành Ä‘á»™ng, hoặc hiển thị đối vá»›i tên và mô tả của chức năng\n" +"\t\t-F\thiển thị chỉ đối vá»›i tên chức năng\n" +"\t\t\t(và số thứ tá»± dòng và tập tin nguồn khi gỡ lá»—i)\n" +"\t\t-p\thiển thị các thuá»™c tính và giá trị của má»—i TÊN\n" +"\n" +"\tTùy chá»n cÅ©ng đặt thuá»™c tính:\n" +"\t\t-a\tđặt TÊN là mảng theo số mÅ© (nếu được há»— trợ)\n" +"\t\t-A\tđặt TÊN là mảng kết hợp (nếu được há»— trợ)\n" +"\t\t-i\tđặt TÊN có thuá»™c tính « integer » (số nguyên)\n" +"\t\t-l\tchuyển đổi TÊN sang chữ thÆ°á»ng khi được gán\n" +"\t\t-r\tđặt TÊN là chỉ Ä‘á»c\n" +"\t\t-t\tđặt TÊN có thuá»™c tính « trace » (theo vết)\n" +"\t\t-u\tchuyển đổi TÊN sang chữ hoa khi được gán\n" +"\t\t-x\tđặt TÊN xuất\n" +"\n" +"\tDùng « + » thay cho « - » thì tắt thuá»™c tính Ä‘Æ°a ra.\n" +"\n" +"\tBiến có thuá»™c tính số nguyên thì định giá theo số há»c\n" +"\t\t(xem câu lệnh « let ») khi biến có giá trị được gán.\n" +"\n" +"\tKhi dùng trong chức năng, « declare » (tuyên bố) đặt TÊN là cục bá»™,\n" +"\t\tnhÆ° khi dùng câu lệnh « local » (cục bá»™).\n" +"\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hoặc gặp lá»—i." + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" +"Äặt các giá trị và thuá»™c tính của biến.\n" +"\n" +"\tQuá cÅ©. Xem « help declare »." + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" +"Xác định các biến cục bá»™.\n" +"\n" +"\tTạo má»™t biến cục bá»™ tên TÊN, và gán cho nó GIÃ_TRỊ.\n" +"\tTÙY_CHỌN có thể là bất cứ tùy chá»n nào được « declare » chấp nhận.\n" +"\n" +"\tBiến cục bá»™ chỉ dùng được bên trong chức năng;\n" +"\t\tchỉ chức năng trong đó nó được xác định\n" +"\t\t(và các chức năng con) có khả năng phát hiện nó.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i,\n" +"\tvà nếu trình bao Ä‘ang chạy chức năng." + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Ghi các đối số vào đầu ra tiêu chuẩn.\n" +"\n" +"\tHiển thị các Äá»I_Sá» trên đầu ra tiêu chuẩn,\n" +"\t\tvá»›i má»™t ký tá»± dòng má»›i theo sau.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-n\tđừng phụ thêm ký tá»± dòng má»›i\n" +"\t\t-e\tbật Ä‘á»c ký tá»± thoát kiểu gạch chéo ngược mà theo sau\n" +"\t\t-E\tthu hồi dứt khoát Ä‘á»c ký tá»± thoát kiểu gạch chéo ngược\n" +"\n" +"\t« echo » Ä‘á»c những ký tá»± thoát này kiểu gạch chéo ngược:\n" +"\t\t\\a\tchuông báo\n" +"\t\t\\b\txoá lùi\n" +"\t\t\\c\tthu hồi kết xuất thêm nữa\n" +"\t\t\\e\tký tá»± thoát\n" +"\t\t\\f\tnạp giấy\n" +"\t\t\\n\tdòng má»›i\n" +"\t\t\\r\txuống dòng\n" +"\t\t\\0nnn\tký tá»± có mã ASCII NNN (1-3 chữ số bát phân)\n" +"\t\t\\xHH\tký tá»± 8-bit có giá trị HH (1-2 chữ số thập lục)\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không gặp lá»—i ghi.\t\t\\t\tkhoảng tab theo chiá»u " +"ngang\n" +"\t\t\\v\tkhoảng tab theo chiá»u dá»c\n" +"\t\t\\\\\tgạch chéo ngược" + +#: builtins.c:571 +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 các đối số vào đầu ra tiêu chuẩn\n" +"\n" +"\tHiển thị các Äá»I_Sá» trên đầu ra tiêu chuẩn vá»›i má»™t dòng má»›i theo sau.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-n\tđừng phụ thêm má»™t dòng má»›i\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không gặp lá»—i ghi." + +#: builtins.c:586 +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/tắt dá»±ng sẵn trình bao.\n" +"\b\tBật và tắt các dá»±ng sẵn trình bao.\b\tChức năng tắt thì cho phép bạn " +"thá»±c thi má»™t câu lệnh Ä‘Ä©a\n" +"\tmà cùng tên vá»›i má»™t dá»±ng sẵn trình bao,\n" +"\tkhông cần dùng tên Ä‘Æ°á»ng dẫn đầy đủ.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\tin ra má»™t danh sách các dá»±ng sẳn, cÅ©ng hiển thị trạng thái bật/tắt\n" +"\t\t-b\ttắt má»—i TÊN hoặc hiển thị danh sách các dá»±ng sẵn bị tắt\n" +"\t\t-p\tin ra danh sách các dá»±ng sẵn theo má»™t định dạng có thể dùng lại " +"được\n" +"\t\t-s\tin ra chỉ tên má»—i dá»±ng sẵn Posix « đặc biệt »\n" +"\n" +"\tTùy chá»n Ä‘iá»u khiển chức năng nạp Ä‘á»™ng:\n" +"\t\t-f\tnạp dá»±ng sẵn TÊN từ Ä‘iá»u khiển dùng chung TÊN_TẬP_TIN\n" +"\t\t-d\tgỡ bá» má»™t dá»±ng sẵn được nạp dùng « -f »\n" +"\n" +"\tKhông có tùy chá»n thì má»—i TÊN được bật lại.\n" +"\n" +"\tÄể sá»­ dụng « test » (hàm thá»­) nằm trên Ä‘Æ°á»ng dẫn mặc định $PATH\n" +"\tthay cho phiên bản của dá»±ng sẵn trình bao,\n" +"\thãy gõ chuá»—i « enable -n test ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu TÊN là má»™t dá»±ng sẵn trình bao, và không gặp lá»—i." + +#: builtins.c:614 +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 "" +"Thá»±c thi các đối số dÆ°á»›i dạng má»™t câu lệnh trình bao.\n" +"\n" +"\tPhối hợp các Äá»I_Sá» thành má»™t chuá»—i riêng lẻ,\n" +"\tdùng kết quả làm dữ liệu nhập vào trình bao,\n" +"\tvà thá»±c thi các câu lệnh kết quả.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái thoát của câu lệnh,\n" +"\thay thành công nếu câu lệnh vô giá trị." + +#: builtins.c:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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 cú pháp của đối số tùy chá»n.\n" +"\n" +"\tGetopts được thủ tục trình bao dùng để phân tích cú pháp\n" +"\t\tcủa tham số thuá»™c ví trị dÆ°á»›i dạng tùy chá»n.\n" +"\n" +"\tOPTSTRING chứa những chữ tùy chá»n cần nhận ra;\n" +"\tmá»™t chữ có dấu hai chấm theo sau thì tùy chá»n mong đợi má»™t đối số,\n" +"\tmà nên định giá»›i bằng khoảng trắng.\n" +"\n" +"\tMá»—i lần được gá»i, getopts sẽ đặt tùy chá»n kế tiếp\n" +"\t\tvào biến trình bao $name\n" +"\t\t(cÅ©ng khởi tạo tên đó nếu nó chÆ°a tồn tại)\n" +"\t\tvà đặt chỉ mục của đối số kế tiếp cần xá»­ lý\n" +"\t\tvào biến trình bao OPTIND.\n" +"\tOPTIND được sÆ¡ khởi thành 1 má»—i lần trình bao\n" +"\thay má»™t văn lệnh trình bao được gá»i.\n" +"\tKhi má»™t tùy chá»n đòi há»i má»™t đối số,\n" +"\tgetopts đặt đối số đó vào biến trình bao OPTARG.\n" +"\n" +"\tgetopts thông báo lá»—i bằng má»™t của hai cách.\n" +"\tNếu ký tá»± đầu tiên của chuá»—i OPTSTRING là dấu hai chấm,\n" +"\tgetopts dùng chức năng thông báo lá»—i má»™t cách im.\n" +"\tBằng chế Ä‘á»™ này, không in ra thông Ä‘iệp lá»—i nào.\n" +"\tNếu gặp tùy chá»n sai thì getopts đặt vào OPTARG\n" +"\tký tá»± tùy chá»n được tìm. Không tìm thấy đối số cần thiết\n" +"\tthì getopts đặt má»™t dấu hai chấm vào TÊN\n" +"\tvà đặt OPTARG thành ký tá»± tùy chá»n được tìm.\n" +"\tNếu getopts không phải ở chế Ä‘á»™ im, và gặp tùy chá»n sai,\n" +"\tthì getopts đặt má»™t dấu há»i « ? » vào TÊN và bỠđặt OPTARG.\n" +"\tKhông tìm thấy tùy chá»n cần thiết thì « ? » được đặt vào TÊN,\n" +"\tOPTARG bị bỠđặt, và in ra má»™t thông Ä‘iệp chẩn Ä‘oán.\n" +"\n" +"\tNếu biến trình bao OPTERR có giá trị 0,\n" +"\tthì getopts tắt chức năng in ra thông Ä‘iệp,\n" +"\tthậm chí nếu ký tá»± đầu tiên của chuá»—i OPTSTRING\n" +"\tkhông phải là dấu hai chấm. OPTERR có giá trị 1 theo mặc định.\n" +"\n" +"Getopts bình thÆ°á»ng phân tích cách tham số thuá»™c vị trí ($0 - $9),\n" +"\tnhÆ°ng nếu Ä‘Æ°a ra đối số bổ sung,\n" +"\t(các) đối số này được phân tích để thay thế.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu tìm thấy má»™t tùy chá»n;\n" +"\tkhông thành công nếu gặp kết thúc các tùy chá»n,\n" +"\thoặc nếu gặp lá»—i." + +#: builtins.c:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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ế trình bao bằng câu lệnh Ä‘Æ°a ra.\n" +"\n" +"\tThá»±c thi câu LỆNH, cÅ©ng thay thế trình bao này bằng chÆ°Æ¡ng trình được ghi " +"rõ.\n" +"\tCác Äá»I_Sá» trở thành các đối số đối vá»›i câu LỆNH.\n" +"\tKhông Ä‘Æ°a ra câu LỆNH thì bất cứ việc chuyển hÆ°á»›ng nào\n" +"\tsẽ xảy ra trong trình bao Ä‘ang chạy.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a tên\tgá»­i TÊN cho câu LỆNH dÆ°á»›i dạng đối số thứ không\n" +"\t\t-c\tthá»±c thi câu LỆNH vá»›i má»™t môi trÆ°á»ng trống\n" +"\t\t-l\tđặt má»™t dấu gạch vào đối số thứ không đối vá»›i câu LỆNH\n" +"\n" +"\tNếu câu LỆNH không thể thá»±c thi được, má»™t trình bao không tÆ°Æ¡ng tác\n" +"\tsẽ thoát ra, nếu không đặt tùy chá»n trình bao « execfail ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu tìm được câu LỆNH và không gặp lá»—i chuyển hÆ°á»›ng." + +#: builtins.c:689 +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 khá»i trình bao.\n" +"\n" +"\tThoát khá»i trình bao vá»›i trạng thái N.\n" +"\tKhông Ä‘Æ°a ra N thì trạng thái thoát\n" +"\tlà trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:698 +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 khá»i má»™t trình bao đăng nhập.\n" +"\n" +"\tThoát khá»i má»™t trình bao đăng nhập, vá»›i trạng thái thoát N.\n" +"\tTrả lại lá»—i nếu không được thá»±c thi trong trình bao đăng nhập." + +#: builtins.c:708 +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 các câu lệnh từ danh sách lược sá»­.\n" +"\n" +"\tfc được dùng để liệt kê hoặc chỉnh sá»­a và thá»±c thi lại\n" +"\tcâu lệnh từ danh sách lược sá»­.\n" +"\tÄẦU và CUá»I có thể là số mà xác định phạm vi,\n" +"hoặc ÄẦU có thể là má»™t chuá»—i đại diện câu lệnh\n" +"\tvừa chạy nhất mà bắt đầu vá»›i chuá»—i đó.\n" +"\tTùy chá»n:\n" +"\t\t-e ENAME\tchá»n trình soạn thảo nào cần dùng;\n" +"\t\t\tmặc định là FCEDIT, sau đó EDITOR, sau đó vi\n" +"\t\t-l\tliệt kê các dòng thay vào chỉnh sá»­a\n" +"\t\t-n\tliệt kê mà không in ra số thứ tá»± dòng\n" +"\t\t-r\tđảo ngược thứ tá»± các dòng (má»›i nhất trÆ°á»›c)\n" +"\n" +"\tTùy theo định dạng « fc -s [mẫu=lần_lập_lại ...] [lệnh] »,\n" +"\tcâu LỆNH được chạy lại sau khi thay thế CŨ bằng MỚI.\n" +"\n" +"\tCÅ©ng có thể sá»­ dụng bí danh có ích « r='fc -s' »,\n" +"\tvì thế việc gõ « r cc » sẽ chạy câu lệnh cuối cùng\n" +"\tmà bắt đầu vá»›i « cc », và việc gõ « r »\n" +"\tsẽ Ä‘Æ¡n giản chạy lại câu lệnh cuối cùng.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công hay trạng thái của câu lệnh được thá»±c thi;\n" +"\t\tgặp lá»—i thì khác số không." + +#: builtins.c:738 +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 lên trÆ°á»›c.\n" +"\n" +"\tNâng lên trÆ°á»›c công việc được ÄẶC_TẢ_CÔNG_VIỆC đại diện,\n" +"\tthì làm cho nó là công việc hiện thá»i.\n" +"\tKhông Ä‘Æ°a ra ÄẶC_TẢ_CÔNG_VIỆC\n" +"\tthì dùng công việc hiện thá»i tùy theo trình bao.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrạng thái của câu lệnh được nâng lên trÆ°á»›c;\n" +"\tgặp lá»—i thì không thành công." + +#: builtins.c:753 +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 "" +"Gá»­i công việc ra sau.\n" +"\n" +"\tGá»­i ra sau các công việc được má»—i ÄẶC_TẢ_CÔNG_VIỆC đại diện,\n" +"\tnhÆ° là công việc được bắt đầu vá»›i « & ».\n" +"\tKhông Ä‘Æ°a ra ÄẶC_TẢ_CÔNG_VIỆC\n" +"\tthì dùng công việc hiện thá»i tùy theo trình bao.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu chức năng Ä‘iá»u khiển công việc được bật\n" +"\tvà không gặp lá»—i." + +#: builtins.c:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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í của chÆ°Æ¡ng trình.\n" +"\n" +"\tXác định và ghi nhá»› tên Ä‘Æ°á»ng dẫn đầy đủ của má»—i TÊN câu lệnh.\n" +"\tNếu không Ä‘Æ°a ra đối số, hiển thị thông tin vá» các câu lệnh được ghi nhá»›.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-d\tquên vị trí được ghi nhá»› của má»—i TÊN\n" +"\t\t-l\thiển thị theo má»™t định dạng có thể được dùng lại\n" +"\t\t\tdÆ°á»›i dạng dữ liệu nhập vào\n" +"\t\t-p tên_Ä‘Æ°á»ng_dẫn\tdùng TÊN_ÄƯỜNG_DẪN là tên Ä‘Æ°á»ng dẫn đầy đủ của TÊN\n" +"\t\t-r\tquên má»i vị trí được ghi nhá»›\n" +"\t\t-t\tin ra vị trí được ghi nhá»› của má»—i TÊN,\n" +"\t\t\tcó nhiá»u TÊN thì cÅ©ng in ra TÊN tÆ°Æ¡ng ứng ở trÆ°á»›c vị trí\n" +"\n" +"\tÄối số:\n" +"\t\tTÊN\tmá»—i TÊN được tìm theo Ä‘Æ°á»ng dẫn mặc định $PATH,\n" +"\t\tvà được thêm vào danh sách các câu lệnh được ghi nhá»›.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả 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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying 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á» các câu lệnh dá»±ng sẵn.\n" +"\n" +"\tHiển thị bản tóm tắt ngắn vá» các câu lệnh dá»±ng sẵn.\n" +"\tNếu cÅ©ng ghi rõ MẪU thì in ra trợ giúp chi tiết\n" +"\tvá» tất cả các câu lệnh tÆ°Æ¡ng ứng vá»›i mẫu đó ;\n" +"\tkhông thì in ra danh sách các chủ Ä‘á» trợ giúp.\n" +"\n" +"\rTùy chá»n:\n" +"\t\t-d\txuất mô tả ngắn vá» má»—i chủ Ä‘á»\n" +"\t\t-m\thiển thị cách sá»­ dụng theo định dạng\n" +"\t\t\tkiểu trang hÆ°á»›ng dẫn (man)\n" +"\t\t-s\txuất chỉ má»™t bản tóm tắt ngắn vá» cách sá»­ dụng\n" +"\t\t\tcho má»—i chủ Ä‘á» tÆ°Æ¡ng ứng vá»›i MẪU\n" +"\n" +"\tÄối số :\n" +"\t\tMẪU\tmẫu ghi rõ má»™t chủ Ä‘á» trợ giúp\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả 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:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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ượd sá»­.\n" +"\n" +"\tHiển thị danh sách lược sá»­ vá»›i các số thứ tá»± dòng,\n" +"\tcÅ©ng đặt dấu sao « * » vào trÆ°á»›c má»—i mục nhập bị sá»­a đổi.\n" +"\tÄối số N thì liệt kê chỉ N mục nhập cuối cùng.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-c\txoá sạch danh sách lược sá»­ bằng cách xoá má»i mục nhập\n" +"\t\t-d hiệu\txoá mục nhập lược sá»­ ở hiệu này\n" +"\n" +"\t\t-a\tphụ thêm vào tập tin lÆ° ợc sá»­ các dòng lược sá»­ từ phiên chạy này\n" +"\t\t-n\tÄ‘á»c má»i dòng lược sá»­ chÆ°a Ä‘á»c từ tập tin lược sá»­\n" +"\t\t-r\tÄ‘á»c tÆ° lược sá»­ và phụ thêm ná»™i dung vào lược sá»­\n" +"\t\t-w\tghi lược sá»­ hiện thá»i vào tập tin lược sá»­\n" +"\t\t\tcÅ©ng phụ thêm vào danh sách lược sá»­\n" +"\n" +"\t\t-p\tmở rá»™ng lược sá»­ vá»›i má»—i Äá»I_Sá», và hiển thị kết quả\n" +"\t\t\tmà không ghi nhá»› nó vào danh sách lược sá»­\n" +"\t\t-s\tphụ thêm các Äá»I_Sá» vào danh sách lược sá»­\n" +"\t\t\tdÆ°á»›i dạng má»™t mục nhập riêng lẻ\n" +"\n" +"\tÄÆ°a ra TÊN_TẬP_TIN thì nó được dùng làm tập tin lược sá»­.\n" +"\tNếu không, và nếu $HISTFILE có giá trị, thì nó được dùng;\n" +"\tnếu $HISTFILE không có giá trị thì dùng « ~/.bash_history ».\n" +"\n" +"\tNếu biến $HISTTIMEFORMAT đã được đặt và có giá trị,\n" +"\tthì giá trị đó được dùng làm chuá»—i định dạng\n" +"\tcho strftime(3) in ra nhãn thá»i gian tÆ°Æ¡ng ứng\n" +"\tvá»›i má»—i mục nhập lược sá»­ được hiển thị.\n" +"\tKhông thì không in ra nhãn thá»i gian.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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" +"\tLiệt kê các công việc Ä‘ang chạy.\n" +"\tÄẶC_TẢ_CÔNG_VIỆC hạn chế kết xuất thành công việc đó.\n" +"\tKhông Ä‘Æ°a ra tùy chá»n thì hiển thị trạng thái\n" +"\tcủa má»i công việc Ä‘ang chạy.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-l\tliệt kê các mã số tiến trình, thêm vào thông tin bình thÆ°á»ng\n" +"\t\t-n\tliệt kê chỉ những tiến trình đã thay đổi trạng thái\n" +"\t\t\tkể từ lần thông báo cuối cùng\n" +"\t\t-s\thạn chế kết xuất thành những công việc bị dừng chạy\n" +"\n" +"\tÄÆ°a ra « -x » thì câu LỆNH được chạy sau khi tất cả các đặc tả công việc\n" +"\tmà xuất hiện trong các Äá»I_SỠđã được thay thế bằng mã số tiến trình\n" +"\tcủa trình dẫn đầu nhóm tiến trình của công việc đó.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i.\n" +"\tÄÆ°a ra « -x » thì trả lại trạng thái thoát của câu LỆNH." + +#: builtins.c:879 +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" +" \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ỡ bá» công việc khá»i trình bao Ä‘ang chạy.\n" +"\n" +"\tGỡ bá» má»—i đối số JOBSPEC (đặc tả công việc) khá»i bảng các công việc Ä‘ang " +"chạy.\n" +"\tKhông có JOBSPEC thì trình bao dùng thông tin riêng vá» công việc Ä‘ang Ä‘ang " +"chạy.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\tgỡ bá» má»i công việc nếu không Ä‘Æ°a ra JOBSPEC\n" +"\t\t-h\tđánh dấu má»—i JOBSPEC để không gá»­i tín hiệu ngÆ°ng kết nối SIGHUP\n" +"\t\t\tcho công việc nếu trình bao nhận được SIGHUP\n" +"\t\t-r\tgỡ bá» chỉ những công việc Ä‘ang chạy\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay JOBSPEC sai." + +#: builtins.c:898 +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" +" \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 "" +"Gá»­i má»™t tín hiệu cho má»™t công việc.\n" +"\n" +"\tGá»­i cho những tiến trình được mã số hay đặc tả công việc đại diện\n" +"\ttín hiệu được SIGSPEC hay SIGNUM được đặt tên.\n" +"\tKhông Ä‘Æ°a ra SIGSPEC, cÅ©ng không Ä‘Æ°a ra SIGNUM,\n" +"\tthì giả sá»­ SIGTERM.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-s TTH\tTTH là má»™t tên tín hiệu\n" +"\t\t-n STH\tSTH là má»™t số thứ tá»± tín hiệu\n" +"\t\t-l\tliệt kê các tên tín hiệu ;\n" +"\t\t\tnếu có đối số theo sau « -l », thì giả sá»­ má»—i đối số\n" +"\t\t\tlà số thứ tá»± tin hiệu cho đó nên liệt kê tên\n" +"\n" +"\tKill là má»™t dá»±ng sẵn trình bao vì hai lý do :\n" +"\tnó cho phép dùng mã số công việc thay cho mã số tiến trình,\n" +"\tvà cho phép giết tiến trình nếu tá»›i giá»›i hạn số các tiến trình\n" +"\tđược phép tạo.\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:921 +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" +"\tÄịnh giá má»—i Äá»I_Sá» nhÆ° là má»™t biểu thức số há»c.\n" +"\tViệc định giá xảy ra theo số nguyên có Ä‘á»™ rá»™ng cố định\n" +"\tmà không kiểm tra có tràn chÆ°a,\n" +"\tdù trÆ°á»ng hợp chia cho không được bắt và đặt cá» là má»™t lá»—i.\n" +"\tTheo đây có danh sách các toán tá»­ được nhóm lại\n" +"\ttheo cấp các toán tá»­ cùng quyá»n Ä‘i trÆ°á»›c.\n" +"\tDanh sách các cấp có thứ tá»± quyá»n Ä‘i trÆ°á»›c giảm.\n" +"\n" +"\tid++, id--\tbiến đổi sau khi tăng/giảm dần\n" +"\t++id, --id\tbiến đổi trÆ°á»›c khi tăng/giảm dần\n" +"\t-, +\ttrừ, cá»™ng nguyên phân\n" +"\t!, ~\tphủ định lôgic và theo vị trí bit\n" +"\t**\tmÅ© hoá\n" +"\t*, /, %\tphép nhân, phép chia, số dÆ°\n" +"\t+, -\tphép công, phép trừ\n" +"\t<<, >>\tdá»i theo vị trí bit bên trái/phải\n" +"\t<=, >=, <, >\tso sánh\n" +"\t==, !=\t bất đẳng thức, đẳng thức\n" +"\t&\tAND (và) theo vị trí bit\n" +"\t^\tXOR (hoặc loại từ) theo vị trí bit\n" +"\t||\tOR (hoặc) theo vị trí bit\n" +"\tb_thức ? b_thức : b_thức\ttoán từ Ä‘iá»u kiện\n" +"\t=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=\tgán\n" +"\n" +"\tCho phép biến trình bao dÆ°á»›i dạng toán hạng.\n" +"\tTên của biến được thay thế bằng giá trị của nó\n" +"\t(bị ép buá»™c thành má»™t số nguyên rá»™ng cố định)\n" +"\tbên trong má»™t biểu thức.\n" +"\tBiến không cần có thuá»™c tính số nguyên được bật\n" +"\tđể được dùng làm biểu thức.\n" +"\n" +"\tCác toán tá»­ được định giá theo thứ tá»± quyá»n Ä‘i trÆ°á»›c.\n" +"\tCác biểu thức con nằm trong dấu ngoặc vẫn còn được định giá trÆ°á»›c tiên,\n" +"\tthì có quyá»n cao hÆ¡n các quy tắc Ä‘i trÆ°á»›c bên trên.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tNếu Äá»I_Sá» cuối cùng được định giá thành 0 thì let trả lại 1;\n" +"\tkhông thì let trả lại 0." + +#: builtins.c:966 +#, 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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" 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, sau đó chia nó ra nhiá»u trÆ°á»ng.\n" +"\n" +"\tÄá»c má»™t dòng riêng lẻ từ đầu vào tiêu chuẩn,\n" +"\thoặc từ bá»™ mô tả tập tin FD nếu Ä‘Æ°a ra tùy chá»n « -u ».\n" +"\tDòng được chia ra nhiá»u trÆ°á»ng giống nhÆ° khi chia từ ra,\n" +"\tvà từ đầu tiên được gán cho TÊN đầu tiên,\n" +"\ttừ thứ hai cho TÊN thứ hai, v.v.,\n" +"\tvà từ còn lại nào được gán cho TÊN cuối cùng.\n" +"\tChỉ những ký tá»± được tìm trong $IFS được nhận ra là ký tá»± định giá»›i từ.\n" +"\n" +"\tKhông Ä‘Æ°a ra TÊN thì dòng được Ä‘á»c sẽ được ghi nhá»› vào biến REPLY (trả " +"lá»i).\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a MẢNG\tgán các từ được Ä‘á»c cho những số mÅ© tuần tá»±\n" +"\t\t\tcủa biến mảng MẢNG, bắt đầu từ số không.\n" +"\t\t-d định_giá»›i\ttiếp tục đến khi Ä‘á»c ký tá»± đầu tiên của DELIM,\n" +"\t\t\thÆ¡n là ký tá»± dòng má»›i\n" +"\t\t-e\tdùng Readline để lấy dòng trong má»™t trình bao tÆ°Æ¡ng tác\n" +"\t\t-i chuá»—i\tdùng chuá»—i này nhÆ° là văn bản đầu tiên cho Readline\n" +"\t\t-n số_ky_tá»±\ttrở vá» sau khi Ä‘á»c số các ký tá»± này,\n" +"\t\t\thÆ¡n là đợi má»™t ký tá»± dòng má»›i\n" +"\t\t-p nhắc\txuất chuá»—i NHẮC mà không có ký tá»± dòng má»›i theo sau,\n" +"\t\t\ttrÆ°á»›c khi thá»­ Ä‘á»c\n" +"\t\t-r\tđừng cho phép gạch chéo ngược thoát ký tá»±\n" +"\t\t-s\tđừng báo lai dữ liệu nhập vào đến từ thiết bị cuối\n" +"\t\t-t thá»i_hạn\tquá thá»i và trả lại không thành công\n" +"\t\t\tnếu chÆ°a Ä‘á»c má»™t dòng dữ liệu nhập hoàn toàn trong số giấy này.\n" +"\t\t\tGiá trị của biến TMOUT là thá»i hạn mặc định.\n" +"\t\t\tThá»i hạn này có thể là má»™t số thuá»™c phân số.\n" +"\t\t\tTrạng thái thoát lá»›n hÆ¡n 128 nếu vượt quá thá»i hạn này.\n" +"\t\t-u fd\tÄ‘á»c từ bá»™ mô tả tập tin FD thay cho đầu vào tiêu chuẩn\n" +"\n" +"\tTrạng thái thoát:\n" +"\tMã trả lại là số không, nếu không gặp kết thúc tập tin,\n" +"\tkhông quá thá»i khi Ä‘á»c, và không Ä‘Æ°a ra bá»™ mô tả tập tin sai\n" +"\tlàm đối số tá»›i « -u »." + +#: builtins.c:1006 +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ả lại từ má»™t chức năng trình bao.\n" +"\n" +"\tGây ra má»™t chức năng hay văn lệnh từ nguồn sẽ thoát\n" +"\tvá»›i giá trị trả lại được N ghi rõ.\n" +"\tKhông Ä‘Æ°a ra N thì trạng thái trả lại thuá»™c vá» câu lệnh cuối cùng\n" +"\t\tđược chạy bên trong chức năng hay văn lệnh.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại N, hoặc bị lá»—i nếu trình bao không Ä‘ang chạy\n" +"\t\tmá»™t chức năng hay văn lệnh." + +#: builtins.c:1019 +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 follow 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" +" 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 bỠđặt giá trị của tùy chá»n trình bao và tham số thuá»™c vị trí.\n" +"\n" +"\tSá»­a đổi giá trị của thuá»™c tính trình bao và tham số thuá»™c vị trí,\n" +"\thoặc hiển thị tên và giá trị của biến trình bao.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\tđánh dấu các biến được tạo hay sá»­a đổi để xuất ra\n" +"\t\t-b\tthông báo ngay vá» công việc bị chấm dứt\n" +"\t\t-e\tthoát ngay nếu câu lệnh thoát vá»›i trạng thái khác số không\n" +"\t\t-f\ttắt chức năng tạo tên tập tin (glob)\n" +"\t\t-h\tnhá»› vị trí của má»—i câu lệnh khi nó được dò tìm\n" +"\t\t-k\tmá»i đối số gán được đặt vào môi trÆ°á»ng cho má»™t câu lệnh,\n" +"\t\t\tkhông phải chỉ những đối số nằm trÆ°á»›c tên câu lệnh\n" +"\t\t-m\tbật chức năng Ä‘iá»u khiển công việc\n" +"\t\t-n\tÄ‘á»c câu lệnh mà không thá»±c thi\n" +"\t\t-o tên_tùy_chá»n\tđặt biến tÆ°Æ¡ng ứng vá»›i tùy chá»n này:\n" +"\t\t\t• allexport\tbằng -a\n" +"\t\t\t• braceexpand\tbằng -B\n" +"\t\t\t• emacs\tdùng má»™t giao diện chỉnh sá»­a dòng kiểu emacs\n" +"\t\t\t• errexit\tbằng -e\n" +"\t\t\t• errtrace\tbằng -E\n" +"\t\t\t• functrace\tbằng -T\n" +"\t\t\t• hashall\tbằng -h\n" +"\t\t\t• histexpand\tbằng -H\n" +"\t\t\t• history\tbật lược sá»­ câu lệnh\n" +"\t\t\t• ignoreeof\ttrình bao sẽ không thoát khi Ä‘á»c ký tá»± kết thúc tập tin\n" +"\t\t\t• interactive-comments\tcho phép ghi chú trong câu lệnh tÆ°Æ¡ng tác\n" +"\t\t\t• keyword\tbằng -k\n" +"\t\t\t• monitor\tbằng -m\n" +"\t\t\t• noclobber\tbằng -C\n" +"\t\t\t• noexec\tbằng -n\n" +"\t\t\t• noglob\tbằng -f\n" +"\t\t\t• nolog\thiện thá»i được chấp nhận nhÆ°ng bị bá» qua\n" +"\t\t\t• notify\tbằng -b\n" +"\t\t\t• nounset\tbằng -u\n" +"\t\t\t• onecmd\tbằng -t\n" +"\t\t\t• physical\tbằng -P\n" +"\t\t\t• pipefail\tgiá trị trả lại của má»™t ống dẫn\n" +"\t\t\t\tlà trạng thái của câu lệnh cuối cùng\n" +"\t\t\t\tthoát vá»›i trạng thái khác số không,\n" +"\t\t\t\thay số không nếu không có câu lệnh\n" +"\t\t\t\tthoát vá»›i trạng thái khác số không\n" +"\t\t\t• posix\tthay đổi ứng xá»­ của bash\n" +"\t\t\t\tmà thao tác mặc định khác vá»›i tiêu chuẩn Posix,\n" +"\t\t\t\tđể tùy theo tiêu chuẩn\n" +"\t\t\t• privileged\tbằng -p\n" +"\t\t\t• verbose\tbằng -v\n" +"\t\t\t• vi\tdùng má»™t giao diện chỉnh sá»­a kiểu vi\n" +"\t\t\t• xtrace\tbằng -x\n" +"\t\t-p\tbật khi nào mã số thật và mã số có kết quả\n" +"\t\t\tkhông tÆ°Æ¡ng ứng vá»›i nhau.\n" +"\t\t\tTắt tính năng xá»­ lý tập tin $ENV\n" +"\t\t\tvà nhập chức năng trình bao.\n" +"\t\t\tViệc tắt tùy chá»n này thì gêy ra UID và GID có kết quả\n" +"\t\t\tđược đặt thành UID và GID thật.\n" +"\t\t-t\tthoát sau khi Ä‘á»c và thá»±c thi má»™t câu lệnh\n" +"\t\t-u\txá»­ lý biến chÆ°a đặt là lá»—i khi thay thế\n" +"\t\t-v\tin ra má»—i dòng nhập vào trình bao khi nó được Ä‘á»c\n" +"\t\t-x\tin ra má»—i câu lệnh và đối số tÆ°Æ¡ng ứng\n" +"\t\t\tkhi nó được thá»±c thi\n" +"\\t-B\ttrình bao sẽ mở rá»™ng các dấu ngoặc móc\n" +"\t\t-C\tđặt thì không cho phép ghi Ä‘á» lên tập tin bình thÆ°á»ng\n" +"\t\t\tđã tồn tại bằng cách chuyển hÆ°á»›ng kết xuất\n" +"\t\t-E\tđặt thì bẫy ERR được chức năng trình bao kế thừa\n" +"\t\t-H\tbật chức năng thay thế kiểu !\n" +"\t\t\tCá» này được đặt theo mặc định khi trình bao tÆ°Æ¡ng tác\n" +"\t\t-P\tđặt thì không theo liên kết tượng trÆ°ng\n" +"\t\t\tkhi thá»±c thi câu lệnh nhÆ° cd mà chuyển đổi thÆ° mục hiện tại\n" +"\t\t-T\tđặt thì bẩy DEBUG (gỡ lá»—i) được chức năng trình bao kế thừa\n" +"\t\t-\tgán bất cứ đối số còn lại nào cho những tham số thuá»™c vị trí.\n" +"\t\t\tHai tùy chá»n « -x » và « -v » Ä‘á»u bị tắt.\n" +"\n" +"\tViệc dùng « + » hÆ¡n là « - » thì gây ra các cá» này bị tắt.\n" +"\tCác cá» cÅ©ng có thể được dùng khi gá»i trình bao.\n" +"\tCÅ©ng có thể tìm thấy tập cá» hiện thá»i trong « $- ».\n" +"\tCác đối số còn lại là tham số thuá»™c vị trí,\n" +"\tvà được gán (theo thứ tá»±) cho $1, $2, .. $n.\n" +"\tKhông Ä‘Æ°a ra đối số thì in ra má»i biến trình bao.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không gặp tùy chá»n sai." + +#: builtins.c:1101 +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" +" 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 "" +"BỠđặt giá trị và thuá»™c tính của biến và chức năng của trình bao.\n" +"\n" +"\tÄối vá»›i má»—i TÊN, gỡ bá» biến hay chức năng mà tÆ°Æ¡ng ứng.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-f\tÄ‘á»c má»—i TÊN dượi dạng má»™t chức năng trình bao\n" +"\t\t-v\tÄ‘á»c má»—i TÊN dượi dạng má»™t biến trình bao\n" +"\n" +"\tKhông có tùy chá»n thì chức năng bỠđặt sẽ thá»­ bỠđặt má»™t biến,\n" +"\tvà nếu không thành công, sau đó thá»­ bỠđặt má»™t chức năng.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai, và TÊN không chỉ Ä‘á»c." + +#: builtins.c:1121 +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 trình bao.\n" +"\n" +"\tÄánh dấu má»—i TÊN để tá»± Ä‘á»™ng xuất vào môi trÆ°á»ng của câu lệnh được chạy vá» " +"sau.\n" +"\tÄÆ°a ra GIÃ_TRỊ thì gán GIÃ_TRỊ trÆ°á»›c khi xuất ra.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-f\ttham chiếu đến chức năng trình bao\n" +"\t\t-n\tgỡ bá» thuá»™c tính xuất khẩu khá»i má»—i TÊN\n" +"\t\t-p\thiển thị danh sách các biến và chức năng Ä‘á»u được xuất ra\n" +"\n" +"\tÄối số « -- » thì tắt chức năng xá»­ lý tùy chá»n sau nữa.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN sai," + +#: builtins.c:1140 +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 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 "" +"Äánh dấu biến trình bao không thể thay đổi được.\n" +"\n" +"\tÄánh dấu má»—i TÊN là chỉ Ä‘á»c; những giá trị của TÊN nhÆ° vậy\n" +"\tthì không thay đổi được bất chấp việc gán theo sau.\n" +"\tÄÆ°a ra GIÃ_TRỊ thì gán GIÃ_TRỊ trÆ°á»›c khi đánh dấu là chỉ Ä‘á»c.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\ttham chiếu đến biến kiểu mảng theo số mÅ©\n" +"\t\t-A\ttham chiếu đến biến kiểu mảng kết hợp\n" +"\t\t-f\ttham chiếu đến chức năng trình bao\n" +"\t\t-p\thiển thị danh sách các biến và chức năng vẫn chỉ Ä‘á»c\n" +"\n" +"\tÄối số « -- » thì tắt chức năng xá»­ lý tùy chá»n sau nữa.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN sai." + +#: builtins.c:1161 +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á»i tham số thuá»™c vị trí.\n" +"\n" +"\tThay đổi tên của tham số thuá»™c vị trí $N+1,$N+2 ... đến $1,$2 ...\n" +"\tKhông Ä‘Æ°a ra N thì giả sá»­ nó là 1.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu N không âm hay lá»›n hÆ¡n $#." + +#: builtins.c:1173 builtins.c:1188 +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 các câu lệnh từ má»™t tập tin trong trình bao Ä‘ang chạy.\n" +"\n" +"\tÄá»c và thá»±c thi các câu lệnh từ TÊN_TẬP_TIN\n" +"\ttrong trình bao Ä‘ang chạy.\n" +"\tNhững mục nhập trong $PATH được dùng\n" +"\tđể tìm thÆ° mục chứa tên tập tin này.\n" +"\tÄÆ°a ra đối số thì má»—i đối số trở thành tham số thuá»™c vị trí\n" +"\tkhi TÊN_TẬP_TIN được thá»±c thi.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được thá»±c thi trong " +"TÊN_TẬP_TIN;\n" +"\tkhông thành công nếu không thể Ä‘á»c TÊN_TẬP_TIN." + +#: builtins.c:1204 +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 trình bao.\n" +"\n" +"\tNgÆ°ng chạy trình bao này đến khi nó nhận tín hiệu tiếp tục (SIGCONT).\n" +"\tNếu không ép buá»™c thì không thể ngÆ°ng chạy trình bao kiểu đăng nhập.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-f\tép buá»™c việc ngÆ°ng, thậm chí nếu trình bao có kiểu đăng nhập\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu chức năng Ä‘iá»u khiển công việc đã được bật, và " +"không gặp lá»—i." + +#: builtins.c:1220 +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 as well, and numeric comparison operators.\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" +" ! 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), phụ thuá»™c vào phép tính B_THỨC.\n" +"Biểu thức kiểu nguyên phân hoặc nhị phân cÅ©ng được.\n" +"Biểu thức nguyên phân thÆ°á»ng dùng để kiểm tra trạng thái của tập tin.\n" +"CÅ©ng có đối số chuá»—i, và toán tá»­ so sánh thuá»™c số.\n" +" \n" +" Toán tá»­ tập tin:\n" +" \n" +" -a TẬP_TIN Äúng nếu tập tin có phải tồn tại.\n" +" -b TẬP_TIN Äúng nếu tập tin là đặc biệt vá» khối.\n" +" -c TẬP_TIN Äúng nếu tập tin là đặc biệt vá» ký tá»±.\n" +" -d TẬP_TIN Äúng nếu tập tin là má»™t thÆ° mục.\n" +" -e TẬP_TIN Äúng nếu tập tin có phải tồn tại.\n" +" -f TẬP_TIN Äúng nếu tập tin có phải tồn tại\n" +"\t\t\t\t\tcÅ©ng là má»™t tập tin bình thÆ°á»ng.\n" +" -g TẬP_TIN Äúng nếu tập tin là set-group-id (đặt mã số " +"nhóm).\n" +" -h TẬP_TIN Äúng nếu tập tin là má»™t liên kết tượng trÆ°ng.\n" +" -L TẬP_TIN Äúng nếu tập tin là má»™t liên kết tượng trÆ°ng.\n" +" -k TẬP_TIN Äúng nếu tập tin có bit « dính » được đặt.\n" +" -p TẬP_TIN Äúng nếu tập tin là má»™t ống dẫn đặt tên.\n" +" -r TẬP_TIN Äúng nếu tập tin cho bạn Ä‘á»c được.\n" +" -s TẬP_TIN Äúng nếu tập tin có phải tồn tại và không phải " +"rá»—ng.\n" +" -S TẬP_TIN Äúng nếu tập tin là má»™t ổ cắm.\n" +" -t FD Äúng nếu FD (bá»™ mô tả tập tin) được mở trên thiết bị " +"cuối.\n" +" -u TẬP_TIN Äúng nếu tập tin is set-user-id.\n" +" -w TẬP_TIN Äúng nếu tập tin cho bạn ghi vào được.\n" +" -x TẬP_TIN Äúng nếu tập tin cho bạn thá»±c hiện được.\n" +" -O TẬP_TIN Äúng nếu tập tin được bạn sở hữu má»™t cách hiệu " +"quả.\n" +" -G TẬP_TIN Äúng nếu tập tin được nhóm của bạn sở hữu\n" +"\t\t\t\t\tmá»™t cách hiệu quả.\n" +" -N TẬP_TIN Äúng nếu tập tin đã bị sá»­a đổi kể từ lần Ä‘á»c cuối " +"cùng.\n" +" \n" +" TẬP_TIN1 -nt TẬP_TIN2 Äúng nếu tập tin 1 má»›i hÆ¡n tập tin 2\n" +"\t\t(tùy theo ngày sá»­a đổi)\n" +" \n" +" TẬP_TIN1 -ot TẬP_TIN2 Äúng nếu tập tin 1 cÅ© hÆ¡n tập tin 2.\n" +" \n" +" TẬP_TIN1 -ef TẬP_TIN2 Äúng nếu tập tin 1 là má»™t liên kết cứng\n" +"\t\t\t\t\t\ttá»›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ông rá»—ng.\n" +" \n" +" CHUá»–I1 = CHUá»–I2\t\tÄúng nếu hai chuá»—i trùng nhau.\n" +" CHUá»–I1 != CHUá»–I2\tÄúng nếu hai chuá»—i khác nhau.\n" +" CHUá»–I1 < CHUá»–I2\t\tÄúng nếu CHUá»–I1 sắp xếp đằng trÆ°á»›c CHUá»–I2\n" +"\t\t\t\t\t\ttheo thứ tá»± từ Ä‘iển.\n" +" CHUá»–I1 > CHUá»–I2\t\tÄúng nếu CHUá»–I1 sắp xếp đằng sau CHUá»–I2\n" +"\t\t\t\t\t\ttheo 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 trình bao này đã được bật.\n" +" ! B_THỨC Äúng nếu biểu thức này không đúng.\n" +" B_THỨC1 -a B_THỨC2 \t\tÄúng nếu cả hai biểu thức này là đúng.\n" +" B_THỨC1 -o B_THỨC2 \t\tÄúng nếu má»™t của hai biểu thức này là đúng.\n" +" \n" +" đối_số1 OP đối_số2 \t\tPhép thá»­ số há»c. OP là má»™t của:\n" +"\t\t-eq\t\tbằng\n" +"\t\t-ne\t\tkhông bằng\n" +" \t-lt\t\tnhá» hÆ¡n\n" +"\t\t-le\t\tnhá» hÆ¡n hoặc bằng\n" +"\t\t-gt\t\tlá»›n hÆ¡n\n" +"\t\t-ge\t\tlá»›n hÆ¡n hoặc bằng\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu B_THỨC định giá thành Äúng;\n" +"\tkhông thành công nếu B_THỨC định giá thành Sai hay Ä‘Æ°a ra đối số sai." + +#: builtins.c:1296 +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" +"\tÄây là má»™t từ đồng nghÄ©a vá»›i dá»±ng sẵn « test »,\n" +"\tnhÆ°ng đối số cuối cùng phải là má»™t « ] » nghÄ©a chữ,\n" +"\tđổ tÆ°Æ¡ng ứng vá»›i « [ » mở." + +#: builtins.c:1305 +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" +"\tIn ra thá»i lượng chạy trình bao (và các tiến trình con)\n" +"\t\tđối vá»›i hệ thống và má»—i ngÆ°á»i dùng.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tLúc nào cÅ©ng thành công." + +#: builtins.c:1317 +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.\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ắt các tín hiệu và dữ kiện khác.\n" +"\n" +"\tXác định và kích hoạt các bá»™ xá»­ lý cần chạy khi trình bao\n" +"\tnhận được tín hiệu hay Ä‘iá»u kiện khác.\n" +"\n" +"\tÄá»I_Sá» là má»™t câu lệnh cần Ä‘á»c và thá»±c thi khi trình bao\n" +"\tnhận được (các) tín hiệu ÄẶC_TẢ_TÃN_HIỆU.\n" +"\tNếu không Ä‘Æ°a ra Äá»I_Sá»\n" +"\t(và cung cấp chỉ má»™t ÄẶC_TẢ_TÃN_HIỆU riêng lẻ),\n" +"\thoặc Ä‘Æ°a ra « - », má»—i tín hiệu được ghi rõ\n" +"\tthì được đặt lại vá» giá trị gốc.\n" +"\tNếu Äá»I_Sá» là chuá»—i vô giá trị\n" +"\tthì má»—i ÄẶC_TẢ_TÃN_HIỆU bị bá» qua\n" +"\tbởi trình bao và những câu lệnh nó gá»i.\n" +"\n" +"\tNếu Ä‘Æ°a ra má»™t ÄẶC_TẢ_TÃN_HIỆU là EXIT (0),\n" +"\tthì Äá»I_SỠđược thá»±c thi khi thoát khá»i trình bao.\n" +"\tNếu Ä‘Æ°a ra má»™t ÄẶC_TẢ_TÃN_HIỆU là DEBUG,\n" +"\tÄá»I_SỠđược thá»±c thi đằng trÆ°á»›c má»—i câu lệnh Ä‘Æ¡n giản.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-l\tin ra danh sách các tên tín hiệu và số thứ tá»± tÆ°Æ¡ng ứng\n" +"\t\t-p\thiển thị các câu lệnh bắt tÆ°Æ¡ng ứng vá»›i má»—i ÄẶC_TẢ_TÃN_HIỆU\n" +"\n" +"\tMá»—i ÄẶC_TẢ_TÃN_HIỆU là hoặc má»™t tên tín hiệu trong ,\n" +"\thoặc má»™t số thứ tá»± tín hiệu.\n" +"\tTên tín hiệu không phân biệt chữ hoa/thÆ°á»ng,\n" +"\tvà không bắt buá»™c phải dùng tiá»n tố « SIG ».\n" +"\tCó thể gá»­i cho trình bao má»™t tín hiệu,\n" +"\tdùng « kill -signal $$ ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra ÄẶC_TẢ_TÃN_HIỆU sai\n" +"\thay tùy chá»n sai." + +#: builtins.c:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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" +"\tÄối vá»›i má»—i TÊN, ngụ ý nó sẽ được giải thích nhÆ° thế nào\n" +"\t\tnếu nó được dùng dÆ°á»›i dạng má»™t tên câu lệnh.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-a\thiển thị má»i vị trí chứa tập tin thá»±c thi được có TÊN;\n" +"\t\t\tkhông đặt tùy chá»n « -p » thì cÅ©ng bao gồm\n" +"\t\t\tcác bí danh, dá»±ng sẵn và chức năng.\n" +"\t\t-f\tthu hồi tính năng dò tìm chức năng trình bao\n" +"\t\t-P\tép buá»™c tìm kiếm ÄƯỜNG_DẪN đối vá»›i má»—i TÊN,\n" +"\t\t\tthậm chí nếu nó là bí danh, dá»±ng sẵn hay chức năng,\n" +"\t\t\tvà trả lại tên của tập tin trên Ä‘Ä©a mà sẽ được thá»±c thi\n" +"\t\t-p\ttrả lại hoặc tên của tập tin trên Ä‘Ä©a mà sẽ được thá»±c thi,\n" +"\t\t\thoặc không trả lại gì nếu câu lệnh « type -t TÊN »\n" +"\t\t\tsẽ không trả lại « file » (tập tin).\n" +"\t\t-t\txuất má»™t từ riêng lẻ mà má»™t của:\n" +"\t\t\t• alias\tbí danh\n" +"\t\t\t• keyword\ttừ dành riêng của trình bao\n" +"\t\t\t• function\tchức năng của trình bao\n" +"\t\t\t• builtin\tdá»±ng sẵn của trình bao\n" +"\t\t\t• file\ttập tin trên Ä‘Ä©a\n" +"\t\t\t• \t\t(không gì) không tìm thấy\n" +"\n" +"\tÄối số :\n" +"\tTÊN\ttên câu lệnh cần giải thích.\n" +"\n" +"\tTráng thái thoát:\n" +"\tTrả lại thành công nếu tìm thấy tất cả các TÊN; không thì bị lá»—i." + +#: builtins.c:1380 +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" +" -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" +" \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 các giá»›i hạn tài nguyên trình bao.\n" +"\n" +"\tCung cấp Ä‘iá»u khiển vá»›i các tài nguyên sẵn sàng\n" +"\tcho trình bao và các tiến trình được nó tạo,\n" +"\ttrên hệ thống cho phép Ä‘iá»u khiển nhÆ° vậy.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-S\tdùng giá»›i hạn tài nguyên « soft » (má»m)\n" +"\t\t-H\tdùng giá»›i hạn tài nguyên « hard » (cứng)\n" +"\t\t-a\tthông báo má»i giá»›i hạn hiện thá»i\n" +"\t\t-b\tkích cỡ của vùng đệm ổ cắm\n" +"\t\t-c\tkích cỡ tối Ä‘a của tập tin lõi được tạo\n" +"\t\t-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" +"\t\t-e\tmức Æ°u tiên cao nhất khi định thá»i (« nice »)\n" +"\t\t-f\tkích cỡ tối Ä‘a của của tập tin được ghi bởi trình bao\n" +"\t\t\tvà các tiến trình con của nó\n" +"\t\t-i\tsố tối Ä‘a các tín hiệu bị hoãn\n" +"\t\t-l\tkích cỡ tối Ä‘a mà má»™t tiến trình có thể khoá vào bá»™ nhá»›\n" +"\t\t-m\tkích cỡ tối Ä‘a của tập hợp ná»™i trú\n" +"\t\t-n\tsố tối Ä‘a các bá»™ mô tả tập tin còn mở\n" +"\t\t-p\tkích cỡ của vùng đệm ống dẫn\n" +"\t\t-q\tsố tối Ä‘a các byte trong hàng đợi thông Ä‘iệp POSIX\n" +"\t\t-r\tmức Æ°u tiên cao nhất khi định thá»i thật\n" +"\t\t-s\tkích cỡ tối Ä‘a của đống\n" +"\t\t-t\tthá»i gian CPU lâu nhất, theo giây\n" +"\t\t-u\tsố tối Ä‘a các tiến trình của ngÆ°á»i dùng\n" +"\t\t-v\tkích cỡ của bá»™ nhá»› ảo\n" +"\t\tsố tối Ä‘a các khoá tập tin\n" +"\n" +"\tNếu Ä‘Æ°a ra GIỚI_HẠN thì nó là giá trị má»›i của tài nguyên được ghi rõ ;\n" +"\tcÅ©ng có ba giá trị GIỚI_HẠN đặc biệt:\n" +"\t\t• soft\tgiá»›i hạn má»m hiện thá»i\n" +"\t\t• hard\tgiá»›i hạn cứng hiện thá»i\n" +"\t\t• unlimited\tvô hạn\n" +"\tKhông thì in ra giá trị hiện thá»i của tài nguyên được ghi rõ.\n" +"\tKhông Ä‘Æ°a ra tùy chá»n thì giả sá»­ « -f ».\n" +"\n" +"\tGiá trị được ghi rõ theo bÆ°á»›c 1024-byte, trừ :\n" +"\t\t• -t\ttheo giây\n" +"\t\t• -p\ttheo bÆ°á»›c 512-byte\n" +"\t\t• -u\tsố các tiến trình không theo tá»· lệ\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:1425 +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Äặt mặt nạ (bá»™ lá»c) tạo tập tin của ngÆ°á»i dùng thành CHẾ_ÄỘ.\n" +"\t\tKhông Ä‘Æ°a ra CHẾ_ÄỘ thì in ra giá trị hiện thá»i của mặt nạ.\n" +"\n" +"\tNếu CHẾ_ÄỘ bắt đầu vá»›i má»™t chữ số, nó được Ä‘á»c là má»™t số bát phân;\n" +"\t\tkhông thì nó là má»™t chuá»—i chế Ä‘á»™ tượng trÆ°ng\n" +"\t\tgiống nhÆ° chuá»—i được chmod(1) chấp nhận.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-p\tkhông Ä‘Æ°a ra CHẾ_ÄỘ thì xuất theo má»™t định dạng\n" +"\t\t\tcó thể được dùng lại làm dữ liệu nhập vào\n" +"\t\t-S\tlàm cho kết xuất cÅ©ng tượng trÆ°ng,\n" +"\t\t\tkhông thì xuất má»™t số bát phân\n" +"\n" +"\tTráng thái thoát:\n" +"\tTrả lại thành công nếu không có CHẾ_ÄỘ sai hay tùy chá»n sai." + +#: builtins.c:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Äợi công việc chạy xong, sau đó trả lại trạng thái thoát.\n" +"\n" +"\tÄợi tiến trình được ID nhận diện, mà có thể là má»™t mã số tiến trình\n" +"\t\thay má»™t đặc tả công việc, sau đó trả lại trạng thái chấm dứt của nó.\n" +"\t\tKhông Ä‘Æ°a ra ID thì đợi tất cả các tiến trình con Ä‘ang chạy,\n" +"\t\tvà trạng thái trả lại là số không.\n" +"\t\tNếu ID là má»™t đặc tả công việc thì đợi tất cả các tiến trình\n" +"\t\tvẫn nằm trong ống dẫn của công việc đó.\n" +"\n" +"\tTráng thái thoát:\n" +"\tTrả lại trạng thái của ID; không thành công nếu ID sai\n" +"\t\thoặc Ä‘Æ°a ra tùy chá»n sai." + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" +"Äợi tiến trình chạy xong, sau đó thông báo trạng thái thoát của nó.\n" +"\n" +"\tÄợi tiến trình đã ghi rõ,\n" +"\tsau đó thông báo trạng thái chấm dứt của nó.\n" +"\tNếu không Ä‘Æ°a ra PID (mã số tiến trình)\n" +"\tthì đợi tất cả các tiến trình con Ä‘ang chạy,\n" +"\tvà mã trả lại là số không.\n" +"\tPID phải là má»™t mã số tiến trình.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của ID (mã số);\n" +"\tkhông thành công nếu ID sai,\n" +"\thoặc nếu Ä‘Æ°a ra tùy chá»n sai." + +#: builtins.c:1478 +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 câu lệnh cho má»—i bá»™ phận trong má»™t danh sách.\n" +"\n" +"\tVòng lặp « for » (cho) thì thá»±c thi câu lệnh\n" +"\tcho má»—i bá»™ phận trong má»™t danh sách các mục.\n" +"\tKhông Ä‘Æ°a ra « in CÃC_TỪ ... » thì giả sá»­ « in \"$@\" ».\n" +"\tÄối vá»›i má»—i phần tá»­ trong CÃC_TỪ,\n" +"\tTÊN được đặt thành phần tá»­ đó,\n" +"\tvà các câu LỆNH được thá»±c thi.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1492 +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" +"\tTÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i:\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +"EXP1, EXP2, EXP3 là biểu thức số há»c.\n" +"Bá» sót biểu thức nào thì ứng xá»­ nhÆ° nó tính là 1.\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1510 +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ừ trong má»™t danh sách, và thá»±c thi câu lệnh.\n" +"\n" +"WORDS được mở rá»™ng, mà tạo má»™t danh sách các từ.\n" +"Tập hợp các từ đã mở rá»™ng được in trên đầu lá»—i tiêu chuẩn.\n" +"\tmá»—i từ có con số Ä‘i trÆ°á»›c.\n" +"Không có « in WORDS » thì giả sá»­ « in \"$@\" ».\n" +"Dấu nhắc PS3 thì được hiển thị, và má»™t dòng được Ä‘á»c\n" +"\ttừ đầu vào tiêu chuẩn.\n" +"Nếu dòng này là số tÆ°Æ¡ng ứng vá»›i má»™t của những từ được hiển thị,\n" +"\tTÊN sẽ được đặt thành từ đó.\n" +"Dòng rá»—ng thì hiển thị lại WORDS và dấu nhắc.\n" +"Äá»c kết thúc tập tin thì chạy xong câu lệnh đó.\n" +"Bất cứ giá trị khác nào được Ä‘á»c sẽ gây ra TÊN được đặt thành vô giá trị.\n" +"Dòng được Ä‘á»c sẽ được lÆ°u lại vào biến REPLY (trả lá»i).\n" +"Các CÂU_LỆNH được thá»±c hiện sau khi chá»n má»—i đồ,\n" +"\tđến khi má»™t lệnh gián Ä‘oạn được thá»±c hiện.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1531 +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 được chiếm khi ống dẫn thá»±c thi.\n" +"\n" +"\tThá»±c thi PIPELINE (ống dẫn) và in ra bản tóm tắt thá»i gian thật,\n" +"\tthá»i gian CPU của ngÆ°á»i dùng, và thá»i gian CPU của hệ thống\n" +"\t00 chiếm khi thá»±c thi ống dẫn, khi ống dẫn chấm dứt.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-p\tin ra bản tóm tắt đếm thá»i gian\n" +"\t\t\ttheo định dạng POSIX có thể mang theo\n" +"\n" +"\tGiá trị của biến TIMEFORMAT (định dạng thá»i gian)\n" +"\tđược dùng làm định dạng kết xuất.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrạng thái trả lai là trạng thái trả lại của PIPELINE." + +#: builtins.c:1548 +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 câu lệnh dá»±a vào khá»›p mẫu.\n" +"\n" +"\tThá»±c thi các câu LỆNH má»™t cách chá»n lá»c,\n" +"\tdá»±a vào TỪ tÆ°Æ¡ng ứng vá»›i MẪU.\n" +"\tNhiá»u mẫu định giá»›i bằng « | ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1560 +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 dá»±a vào Ä‘iá»u kiện.\n" +"\n" +"\tDanh sách « if LỆNH » được thá»±c thi.\n" +"\tNếu trạng thái thoát của nó là số không,\n" +"\tthì danh sách « then LỆNH » được thá»±c thi.\n" +"\tKhông thì má»—i danh sách « elif LỆNH » được thá»±c thi lần lượt,\n" +"\tvà nếu trạng thái thoát của nó là số không,\n" +"\tthì danh sách « then LỆNH » tÆ°Æ¡ng ứng được thá»±c thi\n" +"\tvà câu lệnh « nếu » (if) sẽ chạy xong.\n" +"\tKhông thì danh sách « else LỆNH » được thá»±c thi, nếu có.\n" +"\tTrạng thái thoát của toàn bá»™ tạo dá»±ng\n" +"\tlà trạng thái của câu lệnh cuối cùng được chạy,\n" +"\thoặc số không nếu không có Ä‘iá»u kiện có kết quả là Äúng.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1577 +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 câu lệnh miá»…n là má»™t phép thá»­ thành công.\n" +"\n" +"\tMở rá»™ng và thá»±c thi các câu LỆNH miá»…n là câu lệnh cuối cùng\n" +"\ttrong những câu LỆNH « while » (trong khi)\n" +"\tcó trạng thái thoát là số không.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1589 +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 câu lệnh miá»…n là má»™t phép thá»­ không thành công.\n" +"\n" +"\tMở rá»™ng và thá»±c thi các câu LỆNH miá»…n là câu lệnh cuối cùng\n" +"\ttrong các câu LỆNH « until » (đến khi) có trạng thái thoát\n" +"\tkhác số không.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1601 +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 "" + +#: builtins.c:1615 +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 "" +"Xác định chức năng trình bao.\n" +"\n" +"\tTạo má»™t chức năng trình bao có TÊN.\n" +"\tKhi được gá»i dÆ°á»›i dạng má»™t câu lệnh Ä‘Æ¡n giản,\n" +"\tTÊN chạy các câu LỆNH theo ngữ cảnh của trình bao Ä‘ang gá»i.\n" +"\tKhi TÊN được gá»i, các đối số được gá»­i cho chức năng dÆ°á»›i dạng $1...$n,\n" +"\tvà tên chức năng nằm trong $FUNCNAME.\n" +"\n" +"\tTráng thái thoát:\n" +"\tTrả lại thành công nếu TÊN không phải chỉ Ä‘á»c." + +#: builtins.c:1629 +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ại các câu lệnh làm cùng má»™t Ä‘Æ¡n vị.\n" +"\n" +"\tChạy má»™t tập hợp các câu lệnh trong cùng má»™t nhóm.\n" +"\tÄây là má»™t phÆ°Æ¡ng pháp chuyển hÆ°á»›ng\n" +"\tmá»™t tập hợp câu lệnh hoàn toàn.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của câu lệnh cuối cùng được chạy." + +#: builtins.c:1641 +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" +"\tTÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i đối số ÄẶC_TẢ_CÔNG_VIỆC vá»›i câu lệnh « fg ».\n" +"\tTiếp tục lai má»™t công việc bị dừng chạy hay chạy vá» ná»n.\n" +"\tÄẶC_TẢ_CÔNG_VIỆC có thể ghi rõ hoặc má»™t tên công việc,\n" +"\thoặc má»™t số thứ tá»± công việc.\n" +"\tÄặt má»™t « & » theo sau ÄẶC_TẢ_CÔNG_VIỆC sẽ đặt công việc vá» ná»n,\n" +"\tnhÆ° là đặc tả công việc đã được cung cấp dÆ°á»›i dạng má»™t đối số vá»›i « bg ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại trạng thái của công việc đã tiếp tục lại." + +#: builtins.c:1656 +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ểut thức số há»c.\n" +"\n" +"\tBIỂU_THỨC được tính tùy theo các quy tắc vỠđịnh giá số há»c.\n" +"\tTÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i « let BIỂU_THỨC ».\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại 1 nếu BIỂU_THỨC tính là 0; không thì trả lại 0." + +#: builtins.c:1668 +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 Ä‘iá»u kiện.\n" +"\n" +"Trả vá» trạng thái 0 hoặc 1, phụ thuá»™c vào phép tính\n" +"\tbiểu thức Ä‘iá»u kiện BIỂU_THỨC.\n" +"Biểu thức chứa cùng những nguyên sÆ¡ được dùng bởi dá»±ng sẵn « test »,\n" +"\tvà có thể được tổ hợp dùng các toán tá»­ theo đây:\n" +" \n" +" \t( BIỂU_THỨC )\tTrả vá» giá trị của BIỂU_THỨC\n" +" \t! BIỂU_THỨC\tÄúng nếu BIỂU_THỨC là không đúng; không thì sai\n" +" \tB_THỨC1 && B_THỨC2\n" +"\tÄúng nếu cả hai B_THỨC1 và B_THỨC2 Ä‘á»u là đúng; không thì sai\n" +" \tB_THỨC1 || B_THỨC2\n" +"\tÄúng nếu má»™t của B_THỨC1 và B_THỨC2 là đúng; không thì sai\n" +" \n" +"Khi dùng toán từ « == » và « != », chuá»—i bên phải toán tá»­ được dùng làm mẫu,\n" +"\tvà thá»±c hiện chức năng khá»›p mẫu.\n" +"Toán tá»­ « && » và « || » không tính B_THỨC2 nếu B_THỨC1 là đủ\n" +"\tđể tính giá trị của biểu thức.\n" +"\n" +"\tTrạng thái thoát:\n" +"\t0 hay 1 phụ thuá»™c vào giá trị của BIỂU_THỨC." + +#: builtins.c:1694 +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à sá»­ dụng của má»—i biến trình bao thÆ°á»ng dùng.\n" +"\n" +"BASH_VERSION\tThông tin phiên bản vá» phần má»m Bash này.\n" +" CDPATH\tDanh sách các thÆ° mục định giá»›i bằng dấu hai chấm,\n" +"\tqua đó cần tìm kiếm thÆ° mục được Ä‘Æ°a ra dạng đối số vá»›i « cd ».\n" +" GLOBIGNORE\tDanh sách các mẫu định giá»›i bằng dấu hai chấm,\n" +"\tmà diá»…n tả các tên tập tin cần bá» qua khi mở rá»™ng tên Ä‘Æ°á»ng dẫn.\n" +" HISTFILE\tTên của tập tin chứa lịch sá»­ câu lệnh của bạn.\n" +" HISTFILESIZE\tSố tối Ä‘a các dòng có thể được tập tin này chứa.\n" +" HISTSIZE\tSố tối Ä‘a các dòng lịch sá»­ mà trình bao Ä‘ang chạy có thể truy " +"cập.\n" +" HOME\tTên Ä‘Æ°á»ng dẫn đầy đủ đến thÆ° mục đăng nhập của bạn.\n" +" HOSTNAME\tTên của máy chủ hiện thá»i của bạn.\n" +" HOSTTYPE\tKiểu CPU dÆ°á»›i đó phiên bản Bash này Ä‘ang chạy.\n" +" IGNOREEOF\tÄiá»u khiển ứng xá»­ của trình bao khi nhận\n" +"\tký tá»± kết thúc tập tin (EOF) là dữ liệu nhập Ä‘á»™c nhất.\n" +"\tÄặt thì giá trị của nó là số ký tá»± EOF có thể gặp liên tục\n" +"\ttrên má»™t dòng rá»—ng trÆ°á»›c khi trình bao sẽ thoát (mặc định là 10).\n" +"\tKhông đặt thì EOF sẽ cÅ©ng kết thúc nhập vào.\n" +" MACHTYPE\tMá»™t chuá»—i diá»…n tả hệ thống hiện thá»i trên đó Bash Ä‘ang chạy.\n" +" MAILCHECK\tKhoảng thá»i gian, theo giây, giữa hai lần Bash kiểm tra\n" +"\tcó thÆ° má»›i chÆ°a.\n" +" MAILPATH\tDanh sách các tên tập tin định giá»›i bằng dấu hai chấm\n" +"\ttrong đó Bash kiểm tra có thÆ° má»›i chÆ°a.\n" +" OSTYPE\tPhiên bản UNIX trên đó Bash này Ä‘ang chạy.\n" +" PATH\tDanh sách các thÆ° mục định giá»›i bằng dấu hai chấm,\n" +"\tqua đó cần tìm kiếm câu lệnh.\n" +" PROMPT_COMMAND\tMá»™t câu lệnh cần thá»±c hiện trÆ°á»›c khi in ra\n" +"\tmá»—i chuá»—i nhắc chính.\n" +" PS1\t\tChuá»—i nhắc chính.\n" +" PS2\t\tChuá»—i 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 các tùy chá»n trình bao đã hiệu lá»±c\n" +"\tđịnh giá»›i bằng dấu hai chấm.\n" +" TERM\tTên của 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ê đếm thá»i gian\n" +"\tđược hiển thị bởi từ dành riêng « time ».\n" +" auto_resume\tCó giá trị thì trÆ°á»›c tiên tìm má»™t từ lệnh xuất hiện má»™t " +"mình\n" +"\ttrên má»™t dòng, trong danh sách các công việc bị dừng chạy.\n" +"\tTìm được thì đặt công việc đó vào trÆ°á»›c.\n" +"\tGiá trị « exact » (chính xác) có nghÄ©a là từ lệnh phải tÆ°Æ¡ng ứng\n" +"\tchính xác vá»›i má»™t câu lệnh trong danh sách các công việc bị dừng chạy.\n" +"\tGiá trị « substring » (chuá»—i phụ) có nghÄ©a là từ lệnh phải tÆ°Æ¡ng ứng\n" +"\tvá»›i má»™t chuá»—i phụ của công việc đó.\n" +" histchars\tCác ký tá»± Ä‘iá»u khiển mở rá»™ng và thay thế nhanh lịch sá»­.\n" +"\tKý tá»± đầu tiên thÆ°á»ng là ký tá»± thay thế lịch sá»­, thÆ°á»ng là « ! ».\n" +"\tKý tá»± thứ hai là ký tá»± thay thế nhanh, thÆ°á»ng là « ^ ».\n" +"\tKý tá»± thứ ba là ký tá»± ghi chú vá» lịch sá»­, thÆ°á»ng là « # ».\n" +" HISTIGNORE\tDanh sách các mẫu định giá»›i bằng dấu hai chấm,\n" +"\tđược ùng để quyết định những câu lệnh nào nên được lÆ°u\n" +"\tvào danh sách lịch sá»­.\n" + +#: builtins.c:1751 +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" +" \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.\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" +"\n" +"Thêm má»™t thÆ° mục vào đầu của đống thÆ° mục, hoặc xoay đống,\n" +"\tlàm cho thÆ° mục má»›i đầu đống là thÆ° mục làm việc hiện thá»i.\n" +"Không có đối số thì trao đổi hai thÆ° mục đầu.\n" +"\n" +"+N\tXoay đống để thÆ° mục thứ N (đếm từ bên trái danh sách\n" +"\tđược hiển thị bằng « dirs », bắt đầu từ số không) dá»i lên đầu.\n" +"\n" +"-N\tXoay đống để thÆ° mục thứ N (đếm từ bên phải danh sách\n" +"\tđược hiển thị bằng « dirs », bắt đầu từ số không) dá»i lên đầu.\n" +"\n" +"-n\tThu hồi chức năng chuyển đổi bình thÆ°á»ng khi thêm thÆ° mục\n" +"\tvào đống, để thao tác chỉ đống.\n" +"\n" +"dir\tThêm T_MỤC vào đầu đống thÆ° mục, làm cho nó là thÆ° mục\n" +"\tlàm việc hiện thá»i má»›i.\n" +"\n" +"Dá»±ng sẵn « dirs » thì hiển thị đống thÆ° mục.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra đối số sai,\n" +"\tcÅ©ng không sai chuyển đổi thÆ° mục." + +#: builtins.c:1785 +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" +" \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.\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" +"\n" +"Gỡ bá» thÆ° mục khá»i đống thÆ° mục.\n" +"Không có đối số thì gỡ bá» thÆ° mục đầu khá»i đống,\n" +"\tvà cd (chuyển đổi thÆ° mục) sang thÆ° mục đầu má»›i.\n" +"\n" +"+N\tGỡ bá» thÆ° mục thứ N (đếm từ bên trái danh sách\n" +"\tđược hiển thị bằng « dirs », bắt đầu từ số không).\n" +"\tVí dụ :\n" +"\t\tpopd +0\t\tgỡ bá» thÆ° mục cuối cùng\n" +"\t\tpopd +1\t\tgỡ bá» thÆ° mục thứ hai.\n" +"\n" +"-N\tGỡ bá» thÆ° mục thứ N (đếm từ bên phải danh sách\n" +"\tđược hiển thị bằng « dirs », bắt đầu từ số không).\n" +"\tVí dụ :\n" +"\t\tpopd -0\t\tgỡ bá» thÆ° mục cuối cùng\n" +"\t\tpopd -1\t\tgỡ bá» thÆ° mục giáp cuối.\n" +"\n" +"-n\tThu hồi chức năng chuyển đổi bình thÆ°á»ng khi gỡ bá» thÆ° mục\n" +"\tkhá»i đống, để thao tác chỉ đống.\n" +"\n" +"Dá»±ng sẵn « dirs » thì hiển thị đống thÆ° mục.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra đối số sai,\n" +"\tcÅ©ng không sai chuyển đổi thÆ° mục." + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Hiển thị đống thÆ° mục.\n" +"\n" +"\tHiển thị danh sách các thÆ° mục được nhá»› hiện thá»i.\n" +"\tCâu lệnh « pushd » sẽ thêm thÆ° mục vào danh sách;\n" +"\tcâu lệnh « popd » cÅ©ng nâng thÆ° mục lên danh sách.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-c\tgá»™t đống thÆ° mục bằng cách xoá má»i phần tá»­\n" +"\t\tâ‚«l\tđừng in a phiên bản thÆ° mục có dấu ngã\n" +"\t\t\t(tÆ°Æ¡ng đối so vá»›i thÆ° mục chính của ngÆ°á»i dùng)\n" +"\t\t-p\tin ra đống thÆ° mục, má»—i dòng má»™t mục\n" +"\t\t-v\tin ra đống thÆ° mục, má»—i dòng má»™t mục,\n" +"\t\t\tvá»›i tiá»n tố là vị trí trong đống\n" +"\n" +"\tÄối số :\n" +"\t\t+N\thiển thị mục thứ N bắt đầu từ bên trái danh sách\n" +"\t\t\tđược hiển thị bằng « dirs »\n" +"\t\t\tkhi được gá»i mà không Ä‘Æ°a ra tùy chá»n,\n" +"\t\t\tbắt đầu từ số không.\n" +"\n" +"\t\t-N\thiển thị mục thứ N bắt đầu từ bên phải danh sách\n" +"\t\t\tđược hiển thị bằng « dirs »\n" +"\t\t\tkhi được gá»i mà không Ä‘Æ°a ra tùy chá»n,\n" +"\t\t\tbắt đầu từ số không.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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Ỡđặt các tùy chá»n trình bao.\n" +"\n" +"\tThay đổi thiết lập của má»—i tùy chá»n trình bao có TÊN_TÙY_CHỌN.\n" +"\tKhông có đối số tùy chá»n thì liệt kê tất cả các tùy chá»n trình bao,\n" +"\tcÅ©ng ngụ ý má»—i tùy chá»n được đặt hay không.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-o\thạn chế TÊN_TÙY_CHỌN thành những tên được xác định\n" +"\t\tđể sá»­ dụng vá»›i « set -o »\n" +"\t\t-p\tin ra má»—i tùy chá»n trình bao, cÅ©ng ngụ ý trạng thái của nó\n" +"\t\t-q\tthu hồi kết xuất\n" +"\t\t-u\ttắt (bỠđặt) má»—i TÊN_TÙY_CHỌN\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu TÊN_TÙY_CHỌN được bật;\n" +"\tkhông thành công nếu Ä‘Æ°a ra tùy chá»n sai hay TÊN_TÙY_CHỌN bị tắt." + +#: builtins.c:1865 +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" +" and printf(3), 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" +" \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 ra các Äá»I_Sá» tùy theo ÄỊNH_DẠNG.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-v BIẾN\tgán kết xuất cho biến trình bao này,\n" +"\t\t\thÆ¡n là hiển thị nó trên đầu ra tiêu chuẩn\n" +"\n" +"\tÄỊNH_DẠNG là má»™t chuá»—i ký tá»± mà chứa ba kiểu đối tượng:\n" +"\t\t• ký tá»± bình thÆ°á»ng\tđược sao chép sang đầu ra tiêu chuẩn\n" +"\t\t• dãy ký tá»± thoát\t00 chuyển đổi và sao chép sang đầu ra tiêu chuẩn\n" +"\t\tđặc tả định dạng\tmá»—i đặc tả gây ra in đối số kế tiếp.\n" +"\n" +"\tThêm vào đặc tả định dạng tiêu chuẩn được diá»…n tả\n" +"\ttrong printf(1) và printf(3), printf Ä‘á»c được:\n" +"\n" +"\t\t%b\tmở rá»™ng dãy thoát kiểu gạch chéo ngược trong đối số tÆ°Æ¡ng ứng\n" +"\t\t%q\ttrích dẫn đối số bằng má»™t cách có thể dùng lại được\n" +"\t\t\tlàm dữ liệu nhập vào trình bao\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i kiểu ghi hay " +"gán." + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Ghi rõ Readline sẽ Ä‘iá»n nốt các đối số nhÆ° thế nào.\n" +"\n" +"\tÄối vá»›i má»—i TÊN, ghi rõ các đối số sẽ được Ä‘iá»n nốt nhÆ° thế nào.\n" +"\tKhông Ä‘Æ°a ra tùy chá»n thì in ra các đặc tả Ä‘iá»n nốt\n" +"\tbằng má»™t cách cho phép dùng lại đặc tả làm dữ liệu nhập vào.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-p\tin ra các đặc tả Ä‘iá»n nốt đã tồn tại theo má»™t định dạng\n" +"\t\t\tcó thể dùng lại được\n" +"\t\t-r\tgỡ bá» má»™t đặc tả Ä‘iá»n nốt cho má»—i TÊN,\n" +"\t\t\thoặc nếu không Ä‘Æ°a ra TÊN thì gỡ bá» tất cả các đặc tả Ä‘iá»n nốt\n" +"\n" +"\tKhi chức năng Ä‘iá»n nốt được thá»­, những hành Ä‘á»™ng được làm\n" +"\t\ttheo thứ tá»± của những tùy chá»n chữ hoa bên trên.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:1915 +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ị các việc Ä‘iá»n nốt có thể làm, phụ thuá»™c vào những tùy chá»n.\n" +"\n" +"\tDá»± định dùng từ bên trong má»™t chức năng trình bao\n" +"\tmà tạo các việc Ä‘iá»n nốt có thể làm.\n" +"\tNếu Ä‘Æ°a ra đối số TỪ vẫn tùy chá»n,\n" +"\tthì tạo các kết quả tÆ°Æ¡ng ứng vá»›i TỪ.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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 Ä‘iá»n nốt.\n" +"\n" +"\tSá»­a đổi các tùy chá»n Ä‘iá»n nốt đối vá»›i má»—i TÊN,\n" +"\thoặc nếu không Ä‘Æ°a ra TÊN thì chức năng Ä‘iá»n nốt Ä‘ang chạy.\n" +"\tKhông Ä‘Æ°a ra tùy chá»n thì in ra các tùy chá»n Ä‘iá»n nốt\n" +"\tđối vá»›i má»—i TÊN hay đặc tả Ä‘iá»n nốt hiện thá»i.\n" +"\n" +"\tTùy chá»n\"\n" +"\t\t-o tùy_chá»n\tđặt tùy chá»n Ä‘iá»n nốt này đối vá»›i má»—i TÊN\n" +"\n" +"\tDùng « +o » thay cho « -o » thì tắt tùy chá»n Ä‘Æ°a ra.\n" +"\n" +"\tÄối số :\n" +"\n" +"\tMá»—i TÊN tham chiếu đến má»™t câu lệnh cho đó má»™t đặc tả Ä‘iá»n nốt\n" +"\tphải được xác định trÆ°á»›c dùng dá»±ng sẵn « complete ».\n" +"\tKhông Ä‘Æ°a ra TÊN thì « compopt » phải được gá»i\n" +"\tbởi má»™t chức năng Ä‘ang tạo việc Ä‘iá»n nốt,\n" +"\tcác tùy chá»n vá» hàm tạo việc Ä‘iá»n nốt Ä‘ang chạy cÅ©ng được sá»­a đổi.\n" +"\n" +"\tTrạng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai,\n" +"\tvà TÊN có má»™t đặc tả Ä‘iá»n nốt được xác định." + +#: builtins.c:1958 +#, fuzzy +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" +"Äá»c các dòng từ má»™t tập tin vào má»™t biến mảng.\n" +"\n" +"\tÄá»c các dòng từ đầu vào tiêu chuẩn vào biến mảng MẢNG,\n" +"\thoặc từ bá»™ mô tả tập tin FD nếu Ä‘Æ°a ra tùy chá»n « -u ».\n" +"\tBiến TẬP_TIN_SÆ _Äá»’ là MẢNG mặc định.\n" +"\n" +"\tTùy chá»n:\n" +"\t\t-n Sá»\tsao chép nhiá»u nhất Sá» dòng. Nếu Sá» là 0 thì sao chép má»i dòng.\n" +"\t\t-O Gá»C\tbắt đầu gán cho MẢNG ở chỉ mục Gá»C. Chỉ mục mặc định là 0.\n" +"\t\t-s Sá»\thủy Sá» dòng đầu tiên được Ä‘á»c.\n" +"\t\t-t\tgỡ bá» má»™t ký tá»± dòng má»›i theo sau khá»i má»—i dòng được Ä‘á»c.\n" +"\t\t-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" +"\t\t-C GỌI_NGƯỢC\tđịnh giá GỌI_NGƯỢC má»—i lần Ä‘á»c LƯỢNG dòng.\n" +"\t\t-c LƯỢNG\tghi rõ số các dòng được Ä‘á»c giữa hai lần gá»i GỌI_NGƯỢC.\n" +"\n" +"\tÄối số :\n" +"\tMẢNG\ttên biến mảg cần dùng cho dữ liệu tập tin.\n" +"\n" +"\tNếu Ä‘Æ°a ra « -C » mà không có « -c » thì lượng mặc định là 5000.\n" +"\n" +"\tKhông Ä‘Æ°a ra má»™t Gá»C dứt khoát thì mapfile (tập tin sÆ¡ đồ)\n" +"\t\tsẽ xoá sạch MẢNG trÆ°á»›c khi gán cho nó.\n" +"\n" +"\tTráng thái thoát:\n" +"\tTrả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai và MẢNG không phải chỉ " +"Ä‘á»c." + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" diff --git a/src/bin/bash/po/zh_TW.gmo b/src/bin/bash/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c40fe10bb8fadfbbf121f45e676ce07d505ffc08 GIT binary patch literal 5993 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 literal 0 HcmV?d00001 diff --git a/src/bin/bash/po/zh_TW.po b/src/bin/bash/po/zh_TW.po new file mode 100644 index 0000000000..4144b631c0 --- /dev/null +++ b/src/bin/bash/po/zh_TW.po @@ -0,0 +1,3847 @@ +# Chinese translations for bash package. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Zi-You Dai , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 14:53-0500\n" +"PO-Revision-Date: 2008-08-20 20:12+0800\n" +"Last-Translator: Zi-You Dai \n" +"Language-Team: Chinese (traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: arrayfunc.c:50 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:313 builtins/declare.def:474 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:479 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s:無效的功能å稱" + +#: arrayfunc.c:481 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:517 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:379 +#, c-format +msgid "%s: cannot create: %s" +msgstr "" + +#: bashline.c:3413 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:3491 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:3520 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:3554 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/bind.def:120 builtins/bind.def:123 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:206 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:245 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s:ä¸èƒ½è®€å–: %s" + +#: builtins/bind.def:260 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/bind.def:295 builtins/bind.def:325 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s':未知函數å稱" + +#: builtins/bind.def:303 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:307 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:77 builtins/break.def:117 +msgid "loop count" +msgstr "" + +#: builtins/break.def:137 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:133 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" + +#: builtins/cd.def:215 +msgid "HOME not set" +msgstr "HOME 沒有設置" + +#: builtins/cd.def:227 +msgid "OLDPWD not set" +msgstr "OLDPWD 沒有設置" + +#: builtins/common.c:101 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:139 error.c:260 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s:警告:" + +#: builtins/common.c:153 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s:警告:" + +#: builtins/common.c:166 test.c:822 +msgid "too many arguments" +msgstr "太多引數" + +#: builtins/common.c:191 shell.c:493 shell.c:774 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s:é¸é …需è¦ä¸€å€‹å¼•æ•¸" + +#: builtins/common.c:198 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s:數字引數必須" + +#: builtins/common.c:205 +#, c-format +msgid "%s: not found" +msgstr "%s:沒有找到" + +#: builtins/common.c:214 shell.c:787 +#, c-format +msgid "%s: invalid option" +msgstr "%s:無效é¸é …" + +#: builtins/common.c:221 +#, c-format +msgid "%s: invalid option name" +msgstr "%s:無效é¸é …å" + +#: builtins/common.c:228 general.c:231 general.c:236 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s':ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符" + +#: builtins/common.c:238 +#, fuzzy +msgid "invalid octal number" +msgstr "無效信號數" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid hex number" +msgstr "%s:無效的號碼" + +#: builtins/common.c:242 expr.c:1255 +msgid "invalid number" +msgstr "" + +#: builtins/common.c:250 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s:無效的信號è¦æ ¼" + +#: builtins/common.c:257 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s':ä¸æ˜¯ä¸€å€‹ pid 或有效的工作è¦æ ¼" + +#: builtins/common.c:264 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s:åªè®€è®Šæ•¸" + +#: builtins/common.c:272 +#, c-format +msgid "%s: %s out of range" +msgstr "%s:%s 超出範åœ" + +#: builtins/common.c:272 builtins/common.c:274 +msgid "argument" +msgstr "引數" + +#: builtins/common.c:274 +#, c-format +msgid "%s out of range" +msgstr "%s 超出範åœ" + +#: builtins/common.c:282 +#, c-format +msgid "%s: no such job" +msgstr "%s:沒有此類的工作" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no job control" +msgstr "%s:沒有工作控制" + +#: builtins/common.c:292 +msgid "no job control" +msgstr "沒有工作控制" + +#: builtins/common.c:302 +#, c-format +msgid "%s: restricted" +msgstr "%s:有é™çš„" + +#: builtins/common.c:304 +msgid "restricted" +msgstr "有é™çš„" + +#: builtins/common.c:312 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s:ä¸æ˜¯ä¸€å€‹å…§å»º shell" + +#: builtins/common.c:321 +#, c-format +msgid "write error: %s" +msgstr "寫入錯誤: %s" + +#: builtins/common.c:329 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:563 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s:錯誤檢索當å‰ç›®éŒ„: %s: %s\n" + +#: builtins/common.c:629 builtins/common.c:631 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s:å«ç³Šçš„工作è¦æ ¼" + +#: builtins/complete.def:270 +#, c-format +msgid "%s: invalid action name" +msgstr "%s:無效的功能å稱" + +#: builtins/complete.def:430 builtins/complete.def:615 +#: builtins/complete.def:813 +#, c-format +msgid "%s: no completion specification" +msgstr "%s:沒有完æˆçš„è¦æ ¼" + +#: builtins/complete.def:667 +msgid "warning: -F option may not work as you expect" +msgstr "警告: -F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" + +#: builtins/complete.def:669 +msgid "warning: -C option may not work as you expect" +msgstr "警告: -C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" + +#: builtins/complete.def:786 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:122 +msgid "can only be used in a function" +msgstr "åªèƒ½ç”¨åœ¨ä¸€å€‹å‡½æ•¸" + +#: builtins/declare.def:353 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:365 execute_cmd.c:4818 +#, c-format +msgid "%s: readonly function" +msgstr "%s:åªè®€å‡½æ•¸" + +#: builtins/declare.def:461 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "" + +#: builtins/declare.def:468 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:137 builtins/enable.def:145 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:312 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:335 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:459 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:474 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "" + +#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675 +#: shell.c:1439 +#, c-format +msgid "%s: is a directory" +msgstr "" + +#: builtins/evalfile.c:139 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: builtins/evalfile.c:147 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "" + +#: builtins/exec.def:212 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "" + +#: builtins/exit.def:65 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:88 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:120 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:122 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:261 +msgid "no command found" +msgstr "" + +#: builtins/fc.def:341 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:362 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "" + +#: builtins/fg_bg.def:149 builtins/jobs.def:282 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:158 +#, 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:92 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:244 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "最後的命令: %s\n" + +#: builtins/help.def:130 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" + +#: builtins/help.def:168 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "%s: cannot open: %s" +msgstr "" + +#: builtins/help.def:337 +#, 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:154 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:186 +msgid "history position" +msgstr "" + +#: builtins/history.def:365 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s:無效æœå‹™" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:197 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:260 +msgid "Unknown error" +msgstr "" + +#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516 +msgid "expression expected" +msgstr "" + +#: builtins/mapfile.def:241 builtins/read.def:272 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:249 builtins/read.def:279 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:258 builtins/mapfile.def:296 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s:無效é¸é …" + +#: builtins/mapfile.def:269 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s:無效é¸é …" + +#: builtins/mapfile.def:286 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s:無效的功能å稱" + +#: builtins/mapfile.def:318 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:339 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:367 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:544 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:571 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s:警告:" + +#: builtins/printf.def:750 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:195 +msgid "no other directory" +msgstr "" + +#: builtins/pushd.def:462 +msgid "" +msgstr "" + +#: builtins/pushd.def:506 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:508 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:683 +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:705 +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:730 +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:248 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:574 +#, c-format +msgid "read error: %d: %s" +msgstr "" + +#: builtins/return.def:73 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:768 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:805 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/set.def:812 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/set.def:823 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:186 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/shift.def:71 builtins/shift.def:77 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:254 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:319 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:153 +#, c-format +msgid "%s: file not found" +msgstr "" + +#: builtins/suspend.def:101 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:111 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:234 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:255 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:274 +#, c-format +msgid "%s is a function\n" +msgstr "" + +#: builtins/type.def:296 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:317 builtins/type.def:391 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:372 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:398 +#, c-format +msgid "`%c': bad command" +msgstr "`%c':壞的命令" + +#: builtins/ulimit.def:427 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s:ä¸èƒ½å¾—到 limit: %s" + +#: builtins/ulimit.def:453 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:465 builtins/ulimit.def:765 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s" + +#: builtins/umask.def:118 +msgid "octal number" +msgstr "八進制數" + +#: builtins/umask.def:231 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:286 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:320 error.c:322 error.c:324 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "最後的命令: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#: error.c:405 +msgid "unknown command error" +msgstr "未知命令錯誤" + +#: error.c:406 +msgid "bad command type" +msgstr "壞的命令類型" + +#: error.c:407 +msgid "bad connector" +msgstr "壞的連接器" + +#: error.c:408 +msgid "bad jump" +msgstr "" + +#: error.c:446 +#, c-format +msgid "%s: unbound variable" +msgstr "" + +#: eval.c:181 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:491 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1112 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2011 +#, fuzzy +msgid "pipe error" +msgstr "寫入錯誤: %s" + +#: execute_cmd.c:4363 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:4454 +#, c-format +msgid "%s: command not found" +msgstr "%s:命令找ä¸åˆ°" + +#: execute_cmd.c:4708 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "" + +#: execute_cmd.c:4857 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:241 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:265 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:379 +msgid "syntax error in expression" +msgstr "表é”語法錯誤" + +#: expr.c:419 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:440 expr.c:445 expr.c:756 +msgid "division by 0" +msgstr "" + +#: expr.c:471 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:513 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:781 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:826 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:854 +msgid "missing `)'" +msgstr "" + +#: expr.c:897 expr.c:1175 +msgid "syntax error: operand expected" +msgstr "" + +#: expr.c:1177 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1201 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1259 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1279 +msgid "value too great for base" +msgstr "" + +#: expr.c:1328 +#, c-format +msgid "%s: expression error\n" +msgstr "" + +#: general.c:61 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: input.c:94 subst.c:4559 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:258 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:466 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:887 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1005 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1110 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "" + +#: jobs.c:1113 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1401 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" + +#: jobs.c:1416 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1430 jobs.c:1455 +msgid "Done" +msgstr "" + +#: jobs.c:1435 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1439 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1443 +msgid "Running" +msgstr "" + +#: jobs.c:1457 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1459 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1462 +msgid "Unknown status" +msgstr "" + +#: jobs.c:1549 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:1568 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:1771 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2099 nojobs.c:585 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2326 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2598 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2820 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:2829 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3492 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s:警告:" + +#: jobs.c:3506 nojobs.c:814 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:3518 jobs.c:3531 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:3563 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:3623 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:3633 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:3661 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:3666 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:313 +#, fuzzy +msgid "unknown" +msgstr "%s:主機未知" + +#: lib/malloc/malloc.c:797 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:874 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:877 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:896 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:902 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1016 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1022 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:177 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:184 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:220 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:101 +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:346 +msgid "network operations not supported" +msgstr "ä¸æ”¯æŒç¶²è·¯æ“作" + +#: mailcheck.c:433 +msgid "You have mail in $_" +msgstr "您有郵件在 $_" + +#: mailcheck.c:458 +msgid "You have new mail in $_" +msgstr "您有新郵件在 $_" + +#: mailcheck.c:474 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "郵件在 %s 已閱讀\n" + +#: make_cmd.c:322 +msgid "syntax error: arithmetic expression required" +msgstr "語法錯誤:必須算術表é”" + +#: make_cmd.c:324 +msgid "syntax error: `;' unexpected" +msgstr "語法錯誤: `;' æ„外" + +#: make_cmd.c:325 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "語法錯誤: `((%s))'" + +#: make_cmd.c:567 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document:壞的指示類型 %d" + +#: make_cmd.c:651 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:746 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection:é‡æ–°å°Žå‘指示 `%d' 超出範åœ" + +#: parse.y:2986 parse.y:3218 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3722 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3727 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3731 +msgid "syntax error in conditional expression" +msgstr "語法錯誤,在有æ¢ä»¶çš„表é”" + +#: parse.y:3809 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3813 +msgid "expected `)'" +msgstr "é æœŸ `)'" + +#: parse.y:3841 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3845 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3885 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3889 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3906 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3910 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3921 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3924 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3928 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:5195 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:5213 +#, c-format +msgid "syntax error near `%s'" +msgstr "" + +#: parse.y:5223 +msgid "syntax error: unexpected end of file" +msgstr "" + +#: parse.y:5223 +msgid "syntax error" +msgstr "語法錯誤" + +#: parse.y:5285 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "" + +#: parse.y:5447 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1018 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:285 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1348 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:105 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:148 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:152 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "" + +#: redir.c:157 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:162 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:517 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:1023 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:328 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:332 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:876 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c:無效é¸é …" + +#: shell.c:1638 +msgid "I have no name!" +msgstr "我沒有åå­—ï¼" + +#: shell.c:1778 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1779 +#, 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:1781 +msgid "GNU long options:\n" +msgstr "GNU é•·é¸é …:\n" + +#: shell.c:1785 +msgid "Shell options:\n" +msgstr "Shell é¸é …:\n" + +#: shell.c:1786 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD 或 -c 命令或 -O shopt_option\t\t(åªæœ‰å¼•ç”¨)\n" + +#: shell.c:1801 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o é¸é …\n" + +#: shell.c:1807 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "輸入 `%s -c \"help set\"' 更多訊æ¯é—œæ–¼ shell é¸é …。\n" + +#: shell.c:1808 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "輸入 `%s -c help' 更多訊æ¯é—œæ–¼å…§å»º shell 命令。\n" + +#: shell.c:1809 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "使用 `bashbug' 命令報告臭蟲。\n" + +#: sig.c:583 +#, 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 +#, fuzzy +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 +#, fuzzy +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 +msgid "Unknown Signal #" +msgstr "" + +#: siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1181 subst.c:1302 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2458 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:4456 subst.c:4472 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:4504 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:4549 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:4551 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:4569 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:4765 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:4799 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:4816 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:5318 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:5608 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:6660 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:6740 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:7499 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "" + +#: subst.c:8375 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:145 +msgid "argument expected" +msgstr "" + +#: test.c:154 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:262 +msgid "`)' expected" +msgstr "" + +#: test.c:264 +#, c-format +msgid "`)' expected, found %s" +msgstr "" + +#: test.c:279 test.c:688 test.c:691 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:444 test.c:731 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:806 +msgid "missing `]'" +msgstr "" + +#: trap.c:201 +msgid "invalid signal number" +msgstr "無效信號數" + +#: trap.c:324 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:328 +#, 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:372 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler:壞的信號 %d" + +#: variables.c:358 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "錯誤,輸入的函數定義為 `%s'" + +#: variables.c:736 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1898 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:3127 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:3344 variables.c:3353 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:3359 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3794 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3807 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3881 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:46 +msgid "Copyright (C) 2009 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 +#, c-format +msgid "This is free software; you are free to change and redistribute it.\n" +msgstr "" + +#: version.c:92 +#, c-format +msgid "There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: xmalloc.c:92 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:94 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:114 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:116 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:150 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:152 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:174 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:176 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:43 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:47 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:51 +msgid "" +"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:54 +msgid "break [n]" +msgstr "" + +#: builtins.c:56 +msgid "continue [n]" +msgstr "" + +#: builtins.c:58 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:61 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:64 +msgid "cd [-L|-P] [dir]" +msgstr "" + +#: builtins.c:66 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:68 +msgid ":" +msgstr "" + +#: builtins.c:70 +msgid "true" +msgstr "" + +#: builtins.c:72 +msgid "false" +msgstr "" + +#: builtins.c:74 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:76 +msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:78 +msgid "typeset [-aAfFilrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:80 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:83 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:87 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:90 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:92 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:94 +msgid "getopts optstring name [arg]" +msgstr "" + +#: builtins.c:96 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" + +#: builtins.c:98 +msgid "exit [n]" +msgstr "" + +#: builtins.c:100 +msgid "logout [n]" +msgstr "" + +#: builtins.c:103 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:107 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:111 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:114 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:117 +msgid "help [-ds] [pattern ...]" +msgstr "" + +#: builtins.c:121 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:125 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:129 +msgid "disown [-h] [-ar] [jobspec ...]" +msgstr "" + +#: builtins.c:132 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:134 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:136 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t " +"timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:138 +msgid "return [n]" +msgstr "" + +#: builtins.c:140 +msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]" +msgstr "" + +#: builtins.c:142 +msgid "unset [-f] [-v] [name ...]" +msgstr "" + +#: builtins.c:144 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:146 +msgid "readonly [-af] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:148 +msgid "shift [n]" +msgstr "" + +#: builtins.c:150 +msgid "source filename [arguments]" +msgstr "" + +#: builtins.c:152 +#, fuzzy +msgid ". filename [arguments]" +msgstr "太多引數" + +#: builtins.c:155 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:158 +msgid "test [expr]" +msgstr "" + +#: builtins.c:160 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:162 +msgid "times" +msgstr "" + +#: builtins.c:164 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:166 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:169 +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "" + +#: builtins.c:172 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:175 +msgid "wait [id]" +msgstr "" + +#: builtins.c:179 +msgid "wait [pid]" +msgstr "" + +#: builtins.c:182 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:184 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:190 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:192 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:194 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:196 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:200 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:202 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:206 +msgid "(( expression ))" +msgstr "" + +#: builtins.c:208 +msgid "[[ expression ]]" +msgstr "" + +#: builtins.c:210 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:213 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:217 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:221 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:224 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:226 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:229 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W " +"wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] " +"[name ...]" +msgstr "" + +#: builtins.c:233 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:237 +msgid "compopt [-o|+o option] [name ...]" +msgstr "" + +#: builtins.c:240 +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:242 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" + +#: builtins.c:254 +#, 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' with no arguments or with the -p option prints the list\n" +" of aliases in the form alias NAME=VALUE on standard output.\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. Alias returns\n" +" true unless a NAME is given for which no alias has been defined." + +#: builtins.c:276 +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:289 +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" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:326 +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:338 +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:350 +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:365 +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:383 +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\n" +" -P\tuse the physical directory structure without following symbolic\n" +" \tlinks\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed; non-zero otherwise." +msgstr "" + +#: builtins.c:411 +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" +" \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:428 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:439 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:448 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:457 +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\tuse a default value for PATH that is guaranteed to find all of\n" +" \tthe standard utilities\n" +" -v\tprint a description of COMMAND similar to the `type' builtin\n" +" -V\tprint 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:476 +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" +" \tsource file when debugging)\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 NAMEs to lower case on assignment\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs 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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:512 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Obsolete. See `help declare'." +msgstr "" + +#: builtins.c:520 +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, an error occurs,\n" +" or the shell is not executing a function." +msgstr "" + +#: builtins.c:537 +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" +" -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" +" \\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" +" \t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:571 +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:586 +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:614 +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:626 +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 ($0 - $9), but if\n" +" more arguments are given, 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:668 +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\t\texecute COMMAND with an empty environment\n" +" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" 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:689 +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:698 +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:708 +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:738 +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:753 +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:767 +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\t\tforget the remembered location of each NAME\n" +" -l\t\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME is the full pathname of NAME\n" +" -r\t\tforget all remembered locations\n" +" -t\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\t\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:792 +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" +" \tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:816 +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" +" \tlist\n" +" -w\twrite the current history to the history file\n" +" \tand append them to the history list\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \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:852 +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\tlist only processes that have changed status since the last\n" +" \tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -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:879 +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" +" \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:898 +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" +" \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 "" + +#: builtins.c:921 +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:966 +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\t\tuse Readline to obtain the line in an interactive shell\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\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\t\tdo not allow backslashes to escape any characters\n" +" -s\t\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tvariable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" +" \t\texit status is greater than 128 if the timeout is exceeded\n" +" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1006 +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:1019 +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 follow 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" +" 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:1101 +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" +" 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:1121 +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:1140 +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 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:1161 +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:1173 builtins.c:1188 +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:1204 +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:1220 +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 as well, and numeric comparison operators.\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" +" ! 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:1296 +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:1305 +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:1317 +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.\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:1349 +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" +" \tincludes aliases, builtins, and functions, if and only if\n" +" \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" +" \tbuiltin, or function, and returns the name of the disk file\n" +" \tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \tor nothing if `type -t NAME' would not return `file'.\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +" \treserved word, shell function, shell builtin, disk file, or not\n" +" \tfound, 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:1380 +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" +" -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" +" \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:1425 +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:1445 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for the process identified by ID, which may be a process ID or a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in the job's pipeline.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1463 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for the specified process and reports its termination status. If\n" +" PID is not given, all currently active child processes are waited for,\n" +" and the return code is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of ID; fails if ID is invalid or an invalid option " +"is\n" +" given." +msgstr "" + +#: builtins.c:1478 +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:1492 +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:1510 +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:1531 +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:1548 +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:1560 +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:1577 +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:1589 +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:1601 +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 "" + +#: builtins.c:1615 +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:1629 +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:1641 +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:1656 +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:1668 +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:1694 +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:1751 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1785 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1815 +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" +" \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.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1844 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" 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:1865 +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" +" and printf(3), 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" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1892 +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" +" \tNAMEs are supplied, all completion specifications\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1915 +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:1930 +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 begin executed. If no OPTIONs are givenm, " +"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" +" \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:1958 +msgid "" +"Read lines from the standard input into an array variable.\n" +" \n" +" Read lines from the standard input into the array variable ARRAY, or " +"from\n" +" file descriptor FD if the -u option is supplied. The variable MAPFILE " +"is\n" +" the default ARRAY.\n" +" \n" +" Options:\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" +" -s count \tDiscard the first COUNT lines read.\n" +" -t\t\tRemove a trailing newline from each line read.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" +" \n" +" Arguments:\n" +" ARRAY\t\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 as an additional argument.\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." +msgstr "" + +#: builtins.c:1990 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "requesting resize" +#~ msgstr "è¦æ±‚調整" + +#~ msgid "just resized" +#~ msgstr "åªæ˜¯å¤§å°" + +#~ msgid "bug: unknown operation" +#~ msgstr "bug:未知æ“作" diff --git a/src/bin/bash/print_cmd.c b/src/bin/bash/print_cmd.c index 9429472eff..285d8fffc8 100644 --- a/src/bin/bash/print_cmd.c +++ b/src/bin/bash/print_cmd.c @@ -1,21 +1,22 @@ /* print_command -- A way to make readable commands from a command tree. */ -/* Copyright (C) 1989 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. +/* Copyright (C) 1989-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 2, or (at your option) any later -version. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU 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" @@ -35,10 +36,14 @@ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #endif #include "bashansi.h" +#include "bashintl.h" #include "shell.h" #include "flags.h" #include /* use <...> so we pick it up from the build directory */ + +#include "shmbutil.h" + #include "builtins/common.h" #if !HAVE_DECL_PRINTF @@ -73,6 +78,10 @@ static void command_print_word_list __P((WORD_LIST *, char *)); static void print_case_clauses __P((PATTERN_LIST *)); static void print_redirection_list __P((REDIRECT *)); static void print_redirection __P((REDIRECT *)); +static void print_heredoc_header __P((REDIRECT *)); +static void print_heredoc_body __P((REDIRECT *)); +static void print_heredocs __P((REDIRECT *)); +static void print_deferred_heredocs __P((const char *)); static void print_for_command __P((FOR_COM *)); #if defined (ARITH_FOR_COMMAND) @@ -87,12 +96,8 @@ static void print_while_command __P((WHILE_COM *)); static void print_until_command __P((WHILE_COM *)); static void print_until_or_while __P((WHILE_COM *, char *)); static void print_if_command __P((IF_COM *)); -#if defined (DPAREN_ARITHMETIC) -static void print_arith_command __P((ARITH_COM *)); -#endif #if defined (COND_COMMAND) static void print_cond_node __P((COND_COM *)); -static void print_cond_command __P((COND_COM *)); #endif static void print_function_def __P((FUNCTION_DEF *)); @@ -107,6 +112,8 @@ int command_string_index = 0; 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. */ @@ -133,6 +140,7 @@ make_command_string (command) COMMAND *command; { command_string_index = was_heredoc = 0; + deferred_heredocs = 0; make_command_string_internal (command); return (the_printed_command); } @@ -142,6 +150,8 @@ static void make_command_string_internal (command) COMMAND *command; { + char s[3], *op; + if (command == 0) cprintf (""); else @@ -197,7 +207,7 @@ make_command_string_internal (command) #if defined (DPAREN_ARITHMETIC) case cm_arith: - print_arith_command (command->value.Arith); + print_arith_command (command->value.Arith->exp); break; #endif @@ -214,6 +224,7 @@ make_command_string_internal (command) case cm_connection: skip_this_indent++; + printing_connection++; make_command_string_internal (command->value.Connection->first); switch (command->value.Connection->connector) @@ -222,7 +233,13 @@ make_command_string_internal (command) case '|': { char c = command->value.Connection->connector; - cprintf (" %c", c); + + s[0] = ' '; + s[1] = c; + s[2] = '\0'; + + print_deferred_heredocs (s); + if (c != '&' || command->value.Connection->second) { cprintf (" "); @@ -232,22 +249,27 @@ make_command_string_internal (command) break; case AND_AND: - cprintf (" && "); + print_deferred_heredocs (" && "); if (command->value.Connection->second) skip_this_indent++; break; case OR_OR: - cprintf (" || "); + print_deferred_heredocs (" || "); if (command->value.Connection->second) skip_this_indent++; break; case ';': - if (was_heredoc == 0) - cprintf (";"); + if (deferred_heredocs == 0) + { + if (was_heredoc == 0) + cprintf (";"); + else + was_heredoc = 0; + } else - was_heredoc = 0; + print_deferred_heredocs (inside_function_def ? "" : ";"); if (inside_function_def) cprintf ("\n"); @@ -260,12 +282,15 @@ make_command_string_internal (command) break; default: - cprintf ("print_command: bad connector `%d'", + cprintf (_("print_command: bad connector `%d'"), command->value.Connection->connector); break; } make_command_string_internal (command->value.Connection->second); + if (deferred_heredocs) + print_deferred_heredocs (""); + printing_connection--; break; case cm_function_def: @@ -283,6 +308,12 @@ make_command_string_internal (command) 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; @@ -324,6 +355,8 @@ indirection_level_string () { register int i, j; char *ps4; + char ps4_firstc[MB_LEN_MAX+1]; + int ps4_firstc_len, ps4_len; indirection_string[0] = '\0'; ps4 = get_string_value ("PS4"); @@ -335,10 +368,33 @@ indirection_level_string () ps4 = decode_prompt_string (ps4); change_flag ('x', FLAG_ON); - for (i = 0; *ps4 && i < indirection_level && i < 99; i++) - indirection_string[i] = *ps4; + if (ps4 == 0 || *ps4 == '\0') + return (indirection_string); - for (j = 1; *ps4 && ps4[j] && i < 99; i++, j++) +#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 || MB_INVALIDCH (ps4_firstc_len)) + { + 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 + + for (i = j = 0; ps4_firstc[0] && j < indirection_level && i < 99; 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 < 99; i++, j++) indirection_string[i] = ps4[j]; indirection_string[i] = '\0'; @@ -346,15 +402,49 @@ indirection_level_string () return (indirection_string); } +void +xtrace_print_assignment (name, value, assign_list, xflags) + char *name, *value; + int assign_list, xflags; +{ + char *nval; + + if (xflags) + fprintf (stderr, "%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 (stderr, "%s=(%s)\n", name, nval); + else + fprintf (stderr, "%s=%s\n", name, nval); + + if (nval != value) + FREE (nval); + + fflush (stderr); +} + /* A function to print the words of a simple command when set -x is on. */ void -xtrace_print_word_list (list) +xtrace_print_word_list (list, xtflags) WORD_LIST *list; + int xtflags; { WORD_LIST *w; char *t, *x; - fprintf (stderr, "%s", indirection_level_string ()); + if (xtflags) + fprintf (stderr, "%s", indirection_level_string ()); + for (w = list; w; w = w->next) { t = w->word->word; @@ -386,12 +476,29 @@ command_print_word_list (list, separator) _print_word_list (list, separator, cprintf); } -static void -print_for_command (for_command) +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; +{ + fprintf (stderr, "%s", indirection_level_string ()); + fprintf (stderr, "for %s in ", for_command->name->word); + xtrace_print_word_list (for_command->map_list, 0); +} + +static void +print_for_command (for_command) + FOR_COM *for_command; +{ + print_for_command_head (for_command); + cprintf (";"); newline ("do\n"); indentation += indentation_amount; @@ -406,13 +513,13 @@ static void print_arith_for_command (arith_for_command) ARITH_FOR_COM *arith_for_command; { - cprintf ("for (( "); + cprintf ("for (("); command_print_word_list (arith_for_command->init, " "); - cprintf (" ; "); + cprintf ("; "); command_print_word_list (arith_for_command->test, " "); - cprintf (" ; "); + cprintf ("; "); command_print_word_list (arith_for_command->step, " "); - cprintf (" ))"); + cprintf ("))"); newline ("do\n"); indentation += indentation_amount; make_command_string_internal (arith_for_command->action); @@ -423,12 +530,29 @@ print_arith_for_command (arith_for_command) #endif /* ARITH_FOR_COMMAND */ #if defined (SELECT_COMMAND) -static void -print_select_command (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; +{ + fprintf (stderr, "%s", indirection_level_string ()); + fprintf (stderr, "select %s in ", select_command->name->word); + xtrace_print_word_list (select_command->map_list, 0); +} + +static void +print_select_command (select_command) + SELECT_COM *select_command; +{ + print_select_command_head (select_command); + cprintf (";"); newline ("do\n"); indentation += indentation_amount; @@ -476,11 +600,27 @@ print_group_command (group_command) 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; +{ + fprintf (stderr, "%s", indirection_level_string ()); + fprintf (stderr, "case %s in\n", case_command->word->word); +} + static void print_case_command (case_command) CASE_COM *case_command; { - cprintf ("case %s in ", case_command->word->word); + print_case_command_head (case_command); + if (case_command->clauses) print_case_clauses (case_command->clauses); newline ("esac"); @@ -499,7 +639,12 @@ print_case_clauses (clauses) indentation += indentation_amount; make_command_string_internal (clauses->action); indentation -= indentation_amount; - newline (";;"); + if (clauses->flags & CASEPAT_FALLTHROUGH) + newline (";&"); + else if (clauses->flags & CASEPAT_TESTNEXT) + newline (";;&"); + else + newline (";;"); clauses = clauses->next; } indentation -= indentation_amount; @@ -562,13 +707,13 @@ print_if_command (if_command) } #if defined (DPAREN_ARITHMETIC) -static void -print_arith_command (arith_command) - ARITH_COM *arith_command; +void +print_arith_command (arith_cmd_list) + WORD_LIST *arith_cmd_list; { - cprintf ("(( "); - command_print_word_list (arith_command->exp, " "); - cprintf (" ))"); + cprintf ("(("); + command_print_word_list (arith_cmd_list, " "); + cprintf ("))"); } #endif @@ -618,7 +763,7 @@ print_cond_node (cond) } } -static void +void print_cond_command (cond) COND_COM *cond; { @@ -696,6 +841,57 @@ print_simple_command (simple_command) } } +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; +} + +/* 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 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; +{ + REDIRECT *hdtail; + + for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) + { + cprintf (" "); + print_heredoc_header (hdtail); + } + if (cstring[0] != ';' || cstring[1]) + cprintf ("%s", cstring); + if (deferred_heredocs) + cprintf ("\n"); + for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) + { + print_heredoc_body (hdtail); + cprintf ("\n"); + } + if (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; @@ -722,6 +918,13 @@ print_redirection_list (redirects) else hdtail = heredocs = newredir; } + else if (redirects->instruction == r_duplicating_output_word && redirects->redirector == 1) + { + /* Temporarily translate it as the execution code does. */ + redirects->instruction = r_err_and_out; + print_redirection (redirects); + redirects->instruction = r_duplicating_output_word; + } else print_redirection (redirects); @@ -732,19 +935,47 @@ print_redirection_list (redirects) /* Now that we've printed all the other redirections (on one line), print the here documents. */ - if (heredocs) + if (heredocs && printing_connection) + deferred_heredocs = heredocs; + else if (heredocs) { - cprintf (" "); - for (hdtail = heredocs; hdtail; hdtail = hdtail->next) - { - print_redirection (hdtail); - cprintf ("\n"); - } + print_heredocs (heredocs); dispose_redirects (heredocs); - was_heredoc = 1; } } +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->redirector != 0) + cprintf ("%d", redirect->redirector); + + /* 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; @@ -762,13 +993,13 @@ print_redirection (redirect) case r_output_direction: if (redirector != 1) cprintf ("%d", redirector); - cprintf (">%s", redirectee->word); + cprintf ("> %s", redirectee->word); break; case r_input_direction: if (redirector != 0) cprintf ("%d", redirector); - cprintf ("<%s", redirectee->word); + cprintf ("< %s", redirectee->word); break; case r_inputa_direction: /* Redirection created by the shell. */ @@ -778,27 +1009,14 @@ print_redirection (redirect) case r_appending_to: if (redirector != 1) cprintf ("%d", redirector); - cprintf (">>%s", redirectee->word); + cprintf (">> %s", redirectee->word); break; case r_deblank_reading_until: - kill_leading++; - /* ... */ case r_reading_until: - if (redirector != 0) - cprintf ("%d", redirector); - /* If the here document delimiter is quoted, single-quote it. */ - if (redirect->redirectee.filename->flags & W_QUOTED) - { - char *x; - x = sh_single_quote (redirect->here_doc_eof); - cprintf ("<<%s%s\n", kill_leading? "-" : "", x); - free (x); - } - else - cprintf ("<<%s%s\n", kill_leading? "-" : "", redirect->here_doc_eof); - cprintf ("%s%s", - redirect->redirectee.filename->word, redirect->here_doc_eof); + print_heredoc_header (redirect); + cprintf ("\n"); + print_heredoc_body (redirect); break; case r_reading_string: @@ -852,13 +1070,17 @@ print_redirection (redirect) break; case r_err_and_out: - cprintf (">&%s", redirectee->word); + cprintf ("&>%s", redirectee->word); + break; + + case r_append_err_and_out: + cprintf ("&>>%s", redirectee->word); break; case r_input_output: if (redirector != 1) cprintf ("%d", redirector); - cprintf ("<>%s", redirectee->word); + cprintf ("<> %s", redirectee->word); break; case r_output_force: @@ -874,6 +1096,8 @@ reset_locals () { inside_function_def = 0; indentation = 0; + printing_connection = 0; + deferred_heredocs = 0; } static void @@ -922,13 +1146,14 @@ print_function_def (func) /* 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. - MULTI_LINE is non-zero to pretty-print, or zero for all on one line. + 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, multi_line) +named_function_string (name, command, flags) char *name; COMMAND *command; - int multi_line; + int flags; { char *result; int old_indent, old_amount; @@ -938,13 +1163,14 @@ named_function_string (name, command, multi_line) old_indent = indentation; old_amount = indentation_amount; command_string_index = was_heredoc = 0; + deferred_heredocs = 0; if (name && *name) cprintf ("%s ", name); cprintf ("() "); - if (multi_line == 0) + if ((flags & FUNC_MULTILINE) == 0) { indentation = 1; indentation_amount = 0; @@ -957,7 +1183,7 @@ named_function_string (name, command, multi_line) inside_function_def++; - cprintf (multi_line ? "{ \n" : "{ "); + cprintf ((flags & FUNC_MULTILINE) ? "{ \n" : "{ "); cmdcopy = copy_command (command); /* Take any redirections specified in the function definition (which should @@ -987,7 +1213,7 @@ named_function_string (name, command, multi_line) result = the_printed_command; - if (!multi_line) + if ((flags & FUNC_MULTILINE) == 0) { #if 0 register int i; @@ -1005,6 +1231,9 @@ named_function_string (name, command, multi_line) dispose_command (cmdcopy); + if (flags & FUNC_EXTERNAL) + result = remove_quoted_escapes (result); + return (result); } @@ -1116,7 +1345,7 @@ cprintf (control, va_alist) break; default: - programming_error ("cprintf: bad `%%' argument (%c)", c); + programming_error (_("cprintf: `%c': invalid format character"), c); /*NOTREACHED*/ } } diff --git a/src/bin/bash/quit.h b/src/bin/bash/quit.h index 31b2765a3a..e7bf05b694 100644 --- a/src/bin/bash/quit.h +++ b/src/bin/bash/quit.h @@ -1,32 +1,40 @@ /* quit.h -- How to handle SIGINT gracefully. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ /* Non-zero means SIGINT has already ocurred. */ -extern int interrupt_state; +extern volatile int interrupt_state; +extern volatile int terminating_signal; -/* Macro to call a great deal. SIGINT just sets above variable. When - it is safe, put QUIT in the code, and the "interrupt" will take place. */ -#define QUIT if (interrupt_state) throw_to_top_level () +/* 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 SETINTERRUPT interrupt_state = 1 #define CLRINTERRUPT interrupt_state = 0 @@ -34,4 +42,12 @@ extern int interrupt_state; #define ADDINTERRUPT interrupt_state++ #define DELINTERRUPT interrupt_state-- +/* 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) + #endif /* _QUIT_H_ */ diff --git a/src/bin/bash/redir.c b/src/bin/bash/redir.c index 2b6b745ead..182891763f 100644 --- a/src/bin/bash/redir.c +++ b/src/bin/bash/redir.c @@ -1,22 +1,23 @@ /* redir.c -- Functions to perform input and output redirection. */ -/* Copyright (C) 1997-2002 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ + #include "config.h" #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) @@ -25,7 +26,7 @@ #include #include "bashtypes.h" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "filecntl.h" @@ -42,8 +43,11 @@ 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" @@ -53,6 +57,10 @@ extern int errno; # include "input.h" #endif +#define SHELL_FD_BASE 10 + +int expanding_redir; + extern int posixly_correct; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; @@ -60,10 +68,11 @@ extern REDIRECT *exec_redirection_undo_list; /* Static functions defined and used in this file. */ static void add_undo_close_redirect __P((int)); static void add_exec_redirect __P((REDIRECT *)); -static int add_undo_redirect __P((int)); +static int add_undo_redirect __P((int, enum r_instruction, int)); static int expandable_redirection_filename __P((REDIRECT *)); static int stdin_redirection __P((enum r_instruction, int)); -static int do_redirection_internal __P((REDIRECT *, int, int, int)); +static int undoablefd __P((int)); +static int do_redirection_internal __P((REDIRECT *, int)); static int write_here_document __P((int, WORD_DESC *)); static int write_here_string __P((int, WORD_DESC *)); @@ -93,9 +102,10 @@ redirection_error (temp, error) if (temp->redirector < 0) /* This can happen when read_token_word encounters overflow, like in exec 4294967297>x */ - filename = "file descriptor out of range"; + filename = _("file descriptor out of range"); #ifdef EBADF - else if (temp->redirector >= 0 && errno == EBADF) + /* This error can never involve NOCLOBBER */ + else if (error != NOCLOBBER_REDIRECT && temp->redirector >= 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 @@ -135,21 +145,21 @@ redirection_error (temp, error) switch (error) { case AMBIGUOUS_REDIRECT: - internal_error ("%s: ambiguous redirect", filename); + internal_error (_("%s: ambiguous redirect"), filename); break; case NOCLOBBER_REDIRECT: - internal_error ("%s: cannot overwrite existing file", filename); + internal_error (_("%s: cannot overwrite existing file"), filename); break; #if defined (RESTRICTED_SHELL) case RESTRICTED_REDIRECT: - internal_error ("%s: restricted: cannot redirect output", filename); + 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)); + internal_error (_("cannot create temp file for here-document: %s"), strerror (heredoc_errno)); break; default: @@ -160,21 +170,21 @@ redirection_error (temp, error) FREE (allocname); } -/* Perform the redirections on LIST. If FOR_REAL, then actually make - input and output file descriptors, otherwise just do whatever is - neccessary for side effecting. INTERNAL says to remember how to - undo the redirections later, if non-zero. If SET_CLEXEC is non-zero, - file descriptors opened in do_redirection () have their close-on-exec - flag set. */ +/* Perform the redirections on LIST. If flags & RX_ACTIVE, then actually + make input and output file descriptors, otherwise just do whatever is + neccessary 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, for_real, internal, set_clexec) +do_redirections (list, flags) REDIRECT *list; - int for_real, internal, set_clexec; + int flags; { int error; REDIRECT *temp; - if (internal) + if (flags & RX_UNDOABLE) { if (redirection_undo_list) { @@ -187,7 +197,7 @@ do_redirections (list, for_real, internal, set_clexec) for (temp = list; temp; temp = temp->next) { - error = do_redirection_internal (temp, for_real, internal, set_clexec); + error = do_redirection_internal (temp, flags); if (error) { redirection_error (temp, error); @@ -210,6 +220,7 @@ expandable_redirection_filename (redirect) 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: @@ -238,7 +249,9 @@ redirection_expand (word) w->flags |= W_NOSPLIT; tlist1 = make_word_list (w, (WORD_LIST *)NULL); + expanding_redir = 1; tlist2 = expand_words_no_vars (tlist1); + expanding_redir = 0; dispose_words (tlist1); if (!tlist2 || tlist2->next) @@ -263,7 +276,7 @@ write_here_string (fd, redirectee) int herelen, n, e; herestr = expand_string_to_string (redirectee->word, 0); - herelen = strlen (herestr); + herelen = STRLEN (herestr); n = write (fd, herestr, herelen); if (n == herelen) @@ -272,7 +285,7 @@ write_here_string (fd, redirectee) herelen = 1; } e = errno; - free (herestr); + FREE (herestr); if (n != herelen) { if (e == 0) @@ -370,7 +383,7 @@ here_document_to_fd (redirectee, ri) char *filename; int r, fd, fd2; - fd = sh_mktmpfd ("sh-thd", MT_USERANDOM, &filename); + 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) @@ -476,7 +489,7 @@ redir_special_open (spec, filename, flags, mode, ri) if (all_digits (filename+8) && legal_number (filename+8, &lfd) && lfd == (int)lfd) { fd = lfd; - fd = fcntl (fd, F_DUPFD, 10); + fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE); } else fd = AMBIGUOUS_REDIRECT; @@ -485,13 +498,13 @@ redir_special_open (spec, filename, flags, mode, ri) #if !defined (HAVE_DEV_STDIN) case RF_DEVSTDIN: - fd = fcntl (0, F_DUPFD, 10); + fd = fcntl (0, F_DUPFD, SHELL_FD_BASE); break; case RF_DEVSTDOUT: - fd = fcntl (1, F_DUPFD, 10); + fd = fcntl (1, F_DUPFD, SHELL_FD_BASE); break; case RF_DEVSTDERR: - fd = fcntl (2, F_DUPFD, 10); + fd = fcntl (2, F_DUPFD, SHELL_FD_BASE); break; #endif @@ -501,7 +514,7 @@ redir_special_open (spec, filename, flags, mode, ri) #if defined (HAVE_NETWORK) fd = netopen (filename); #else - internal_warning ("/dev/(tcp|udp)/host/port not supported without networking"); + internal_warning (_("/dev/(tcp|udp)/host/port not supported without networking")); fd = open (filename, flags, mode); #endif break; @@ -591,23 +604,39 @@ redir_open (filename, flags, mode, ri) fd = open (filename, flags, mode); #if defined (AFS) if ((fd < 0) && (errno == EACCES)) - fd = open (filename, flags & ~O_CREAT, mode); + { + 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 FOR_REAL is zero, then just do whatever is neccessary to produce the - appropriate side effects. REMEMBERING, if non-zero, says to remember - how to undo each redirection. If SET_CLEXEC is non-zero, then - we set all file descriptors > 2 that we open to be close-on-exec. */ + If flags & RX_ACTIVE is zero, then just do whatever is neccessary 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. */ static int -do_redirection_internal (redirect, for_real, remembering, set_clexec) +do_redirection_internal (redirect, flags) REDIRECT *redirect; - int for_real, remembering, set_clexec; + int flags; { WORD_DESC *redirectee; int redir_fd, fd, redirector, r, oflags; @@ -621,6 +650,9 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) redirector = redirect->redirector; ri = redirect->instruction; + if (redirect->flags & RX_INTERNAL) + flags |= RX_INTERNAL; + if (TRANSLATE_REDIRECT (ri)) { /* We have [N]>&WORD[-] or [N]<&WORD[-]. Expand WORD, then translate @@ -708,6 +740,7 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) 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) @@ -739,13 +772,13 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) if (fd < 0) return (errno); - if (for_real) + if (flags & RX_ACTIVE) { - if (remembering) + if (flags & RX_UNDOABLE) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector); + add_undo_redirect (redirector, ri, -1); else add_undo_close_redirect (redirector); } @@ -754,6 +787,20 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) 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 ((fd != redirector) && (dup2 (fd, redirector) < 0)) return (errno); @@ -775,7 +822,7 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) * both sh and ksh leave the file descriptors open across execs. * The Posix standard mentions only the exec builtin. */ - if (set_clexec && (redirector > 2)) + if ((flags & RX_CLEXEC) && (redirector > 2)) SET_CLOSE_ON_EXEC (redirector); } @@ -791,12 +838,12 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) /* If we are hacking both stdout and stderr, do the stderr redirection here. */ - if (ri == r_err_and_out) + if (ri == r_err_and_out || ri == r_append_err_and_out) { - if (for_real) + if (flags & RX_ACTIVE) { - if (remembering) - add_undo_redirect (2); + if (flags & RX_UNDOABLE) + add_undo_redirect (2, ri, -1); if (dup2 (1, 2) < 0) return (errno); } @@ -818,13 +865,13 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) return (HEREDOC_REDIRECT); } - if (for_real) + if (flags & RX_ACTIVE) { - if (remembering) + if (flags & RX_UNDOABLE) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector); + add_undo_redirect (redirector, ri, -1); else add_undo_close_redirect (redirector); } @@ -843,7 +890,7 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) duplicate_buffered_stream (fd, redirector); #endif - if (set_clexec && (redirector > 2)) + if ((flags & RX_CLEXEC) && (redirector > 2)) SET_CLOSE_ON_EXEC (redirector); } @@ -860,17 +907,16 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) case r_duplicating_output: case r_move_input: case r_move_output: - if (for_real && (redir_fd != redirector)) + if ((flags & RX_ACTIVE) && (redir_fd != redirector)) { - if (remembering) + if (flags & RX_UNDOABLE) { /* Only setup to undo it if the thing to undo is active. */ if (fcntl (redirector, F_GETFD, 0) != -1) - add_undo_redirect (redirector); + add_undo_redirect (redirector, ri, redir_fd); else add_undo_close_redirect (redirector); } - #if defined (BUFFERED_INPUT) check_bash_input (redirector); #endif @@ -887,24 +933,49 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) 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<&-'. */ + 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 (((fcntl (redir_fd, F_GETFD, 0) == 1) || set_clexec) && +#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) + SET_OPEN_ON_EXEC (redirector); + /* dup-and-close redirection */ if (ri == r_move_input || ri == r_move_output) - close (redir_fd); + { + close (redir_fd); +#if defined (COPROCESS_SUPPORT) + coproc_fdchk (redir_fd); /* XXX - loses coproc fds */ +#endif + } } break; case r_close_this: - if (for_real) + if (flags & RX_ACTIVE) { - if (remembering && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector); + if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) + add_undo_redirect (redirector, ri, -1); + +#if defined (COPROCESS_SUPPORT) + coproc_fdchk (redirector); +#endif #if defined (BUFFERED_INPUT) check_bash_input (redirector); @@ -922,25 +993,34 @@ do_redirection_internal (redirect, for_real, remembering, set_clexec) return (0); } -#define SHELL_FD_BASE 10 - /* Remember the file descriptor associated with the slot FD, on REDIRECTION_UNDO_LIST. Note that the list will be reversed before it is executed. 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. */ + 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. */ static int -add_undo_redirect (fd) +add_undo_redirect (fd, ri, fdbase) int fd; + enum r_instruction ri; + int fdbase; { int new_fd, clexec_flag; REDIRECT *new_redirect, *closer, *dummy_redirect; - new_fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE); + 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) { - sys_error ("redirection error: cannot duplicate fd"); + sys_error (_("redirection error: cannot duplicate fd")); return (-1); } @@ -948,6 +1028,7 @@ add_undo_redirect (fd) rd.dest = 0; closer = make_redirection (new_fd, r_close_this, rd); + closer->flags |= RX_INTERNAL; dummy_redirect = copy_redirects (closer); rd.dest = new_fd; @@ -955,6 +1036,9 @@ add_undo_redirect (fd) new_redirect = make_redirection (fd, r_duplicating_input, rd); else new_redirect = make_redirection (fd, r_duplicating_output, rd); + new_redirect->flags |= RX_INTERNAL; + if (clexec_flag == 0 && fd >= 3 && new_fd >= SHELL_FD_BASE) + new_redirect->flags |= RX_SAVCLEXEC; new_redirect->next = closer; closer->next = redirection_undo_list; @@ -964,6 +1048,23 @@ add_undo_redirect (fd) 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 redirctions 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) + { + rd.dest = new_fd; + new_redirect = make_redirection (fd, r_duplicating_output, rd); + 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 @@ -974,6 +1075,8 @@ add_undo_redirect (fd) 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); } @@ -988,6 +1091,7 @@ add_undo_close_redirect (fd) rd.dest = 0; closer = make_redirection (fd, r_close_this, rd); + closer->flags |= RX_INTERNAL; closer->next = redirection_undo_list; redirection_undo_list = closer; } @@ -1024,6 +1128,7 @@ stdin_redirection (ri, redirector) 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: return (0); diff --git a/src/bin/bash/redir.h b/src/bin/bash/redir.h index 7b13a4a93d..474acda1d7 100644 --- a/src/bin/bash/redir.h +++ b/src/bin/bash/redir.h @@ -1,30 +1,38 @@ /* redir.h - functions from redir.c. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 */ + extern void redirection_error __P((REDIRECT *, int)); -extern int do_redirections __P((REDIRECT *, int, int, int)); +extern int do_redirections __P((REDIRECT *, int)); extern char *redirection_expand __P((WORD_DESC *)); extern int stdin_redirects __P((REDIRECT *)); diff --git a/src/bin/bash/shell.c b/src/bin/bash/shell.c index b4036fa033..b28e3b4857 100644 --- a/src/bin/bash/shell.c +++ b/src/bin/bash/shell.c @@ -1,23 +1,24 @@ /* shell.c -- GNU's idea of the POSIX shell specification. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + along with Bash. If not, see . +*/ +/* Birthdate: Sunday, January 10th, 1988. Initial author: Brian Fox @@ -27,7 +28,7 @@ #include "config.h" #include "bashtypes.h" -#ifdef HAVE_SYS_FILE_H +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "posixstat.h" @@ -43,6 +44,8 @@ # include #endif +#include "bashintl.h" + #define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ #include "shell.h" @@ -69,6 +72,10 @@ # include #endif +#if defined (READLINE) +# include "bashline.h" +#endif + #include #include @@ -94,10 +101,11 @@ extern int shell_level; extern int subshell_environment; extern int last_command_exit_value; extern int line_number; -extern char *primary_prompt, *secondary_prompt; extern int expand_aliases; -extern char *this_command_name; extern int array_needs_making; +extern int gnu_error_format; +extern char *primary_prompt, *secondary_prompt; +extern char *this_command_name; /* Non-zero means that this shell has already been run; i.e. you should call shell_reinitialize () if you need to start afresh. */ @@ -136,6 +144,12 @@ int interactive_shell = 0; 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 @@ -169,6 +183,13 @@ time_t shell_start_time; /* Are we running in an emacs shell window? */ int running_under_emacs; +/* Do we have /dev/fd? */ +#ifdef HAVE_DEV_FD +int have_devfd = HAVE_DEV_FD; +#else +int have_devfd = 0; +#endif + /* The name of the .(shell)rc file. */ static char *bashrc_file = "~/.bashrc"; @@ -192,22 +213,33 @@ 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 */ int no_line_editing = 0; /* Don't do fancy line editing. */ -int posixly_correct = 0; /* Non-zero means posix.2 superset. */ int dump_translatable_strings; /* Dump strings in $"...", don't execute. */ int dump_po_strings; /* Dump strings in $"..." in po format */ int wordexp_only = 0; /* Do word expansion only */ +int protected_mode = 0; /* No command substitution with --wordexp */ + +#if defined (STRICT_POSIX) +int posixly_correct = 1; /* Non-zero means posix.2 superset. */ +#else +int posixly_correct = 0; /* Non-zero means posix.2 superset. */ +#endif + /* Some long-winded argument names. These are obviously new. */ #define Int 1 #define Charp 2 -struct { - char *name; +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 }, @@ -217,6 +249,7 @@ struct { { "noprofile", Int, &no_profile, (char **)0x0 }, { "norc", Int, &no_rc, (char **)0x0 }, { "posix", Int, &posixly_correct, (char **)0x0 }, + { "protected", Int, &protected_mode, (char **)0x0 }, { "rcfile", Charp, (int *)0x0, &bashrc_file }, #if defined (RESTRICTED_SHELL) { "restricted", Int, &restricted, (char **)0x0 }, @@ -245,10 +278,12 @@ int default_buffered_input = -1; int read_from_stdin; /* -s flag supplied */ int want_pending_command; /* -c flag supplied */ +/* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */ +char *command_execution_string; /* argument to -c option */ + int malloc_trace_at_exit = 0; static int shell_reinitialized = 0; -static char *local_pending_command; static FILE *default_input; @@ -259,6 +294,8 @@ static int parse_long_options __P((char **, int, int)); static int parse_shell_options __P((char **, int, int)); static int bind_args __P((char **, int, int, int)); +static void start_debugger __P((void)); + static void add_shopt_to_alist __P((char *, int)); static void run_shopt_alist __P((void)); @@ -273,6 +310,7 @@ static int uidget __P((void)); static void init_interactive __P((void)); static void init_noninteractive __P((void)); +static void init_interactive_script __P((void)); static void set_shell_name __P((char *)); static void shell_initialize __P((void)); @@ -287,11 +325,11 @@ _cygwin32_check_tmp () struct stat sb; if (stat ("/tmp", &sb) < 0) - internal_warning ("could not find /tmp, please create!"); + 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"); + internal_warning (_("/tmp must be a valid directory name")); } } #endif /* __CYGWIN__ */ @@ -349,7 +387,7 @@ main (argc, argv, env) #endif /* __CYGWIN__ */ /* Wait forever if we are debugging a login shell. */ - while (debugging_login_shell); + while (debugging_login_shell) sleep (3); set_default_locale (); @@ -374,7 +412,9 @@ main (argc, argv, env) /* Initialize `local' variables for all `invocations' of main (). */ arg_index = 1; - local_pending_command = (char *)NULL; + if (arg_index > argc) + arg_index = argc; + command_execution_string = (char *)NULL; want_pending_command = locally_skip_execution = read_from_stdin = 0; default_input = stdin; #if defined (BUFFERED_INPUT) @@ -447,11 +487,11 @@ main (argc, argv, env) following args are $0...$n respectively. */ if (want_pending_command) { - local_pending_command = argv[arg_index]; - if (local_pending_command == 0) + command_execution_string = argv[arg_index]; + if (command_execution_string == 0) { - report_error ("-c: option requires an argument"); - exit (EX_USAGE); + report_error (_("%s: option requires an argument"), "-c"); + exit (EX_BADUSAGE); } arg_index++; } @@ -465,16 +505,16 @@ main (argc, argv, env) no -c command no arguments remaining or the -s flag given standard input is a terminal - standard output is a terminal + standard error is a terminal Refer to Posix.2, the description of the `sh' utility. */ if (forced_interactive || /* -i flag */ - (!local_pending_command && /* No -c command and ... */ + (!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 (stdout)))) /* output is a terminal. */ + isatty (fileno (stderr)))) /* error output is a terminal. */ init_interactive (); else init_noninteractive (); @@ -499,7 +539,7 @@ main (argc, argv, env) alias expansion in non-interactive shells, and other Posix.2 things. */ if (posixly_correct) { - bind_variable ("POSIXLY_CORRECT", "y"); + bind_variable ("POSIXLY_CORRECT", "y", 0); sv_strict_posix ("POSIXLY_CORRECT"); } @@ -511,18 +551,31 @@ main (argc, argv, env) Variables from the environment are expected to be set, etc. */ shell_initialize (); + set_default_lang (); set_default_locale_vars (); + /* + * M-x term -> TERM=eterm EMACS=22.1 (term:0.96) (eterm) + * M-x shell -> TERM=dumb EMACS=t (no line editing) + * M-x terminal -> TERM=emacs-em7955 EMACS= (line editing) + */ if (interactive_shell) { - char *term; + char *term, *emacs; - term = getenv ("TERM"); + term = get_string_value ("TERM"); + emacs = get_string_value ("EMACS"); + + /* Not sure any emacs terminal emulator sets TERM=emacs any more */ no_line_editing |= term && (STREQ (term, "emacs")); - term = getenv ("EMACS"); - running_under_emacs = term ? ((strmatch ("*term*", term, 0) == 0) ? 2 : 1) - : 0; - no_line_editing |= term && term[0] == 't' && term[1] == '\0'; + no_line_editing |= emacs && emacs[0] == 't' && emacs[1] == '\0' && STREQ (term, "dumb"); + + /* running_under_emacs == 2 for `eterm' */ + running_under_emacs = (emacs != 0) || (term && STREQN (term, "emacs", 5)); + running_under_emacs += term && STREQN (term, "eterm", 5) && strstr (emacs, "term"); + + if (running_under_emacs) + gnu_error_format = 1; } top_level_arg_index = arg_index; @@ -534,7 +587,7 @@ main (argc, argv, env) code = setjmp (top_level); if (code) { - if (code == EXITPROG) + if (code == EXITPROG || code == ERREXIT) exit_shell (last_command_exit_value); else { @@ -594,7 +647,7 @@ main (argc, argv, env) /* If we are invoked as `sh', turn on Posix mode. */ if (act_like_sh) { - bind_variable ("POSIXLY_CORRECT", "y"); + bind_variable ("POSIXLY_CORRECT", "y", 0); sv_strict_posix ("POSIXLY_CORRECT"); } @@ -614,16 +667,20 @@ main (argc, argv, env) exit_shell (last_command_exit_value); } - if (local_pending_command) + if (command_execution_string) { arg_index = bind_args (argv, arg_index, argc, 0); startup_state = 2; + + if (debugging_mode) + start_debugger (); + #if defined (ONESHOT) executing = 1; - run_one_command (local_pending_command); + run_one_command (command_execution_string); exit_shell (last_command_exit_value); #else /* ONESHOT */ - with_input_from_string (local_pending_command, "-c"); + with_input_from_string (command_execution_string, "-c"); goto read_and_execute; #endif /* !ONESHOT */ } @@ -648,12 +705,16 @@ main (argc, argv, env) /* Bind remaining args to $1 ... $n */ arg_index = bind_args (argv, arg_index, argc, 1); + + if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0) + start_debugger (); + /* Do the things that should be done only for interactive shells. */ if (interactive_shell) { /* Set up for checking for presence of mail. */ - remember_mail_dates (); reset_mail_timer (); + init_mail_dates (); #if defined (HISTORY) /* Initialize the interactive history stuff. */ @@ -710,8 +771,8 @@ parse_long_options (argv, arg_start, arg_end) *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_USAGE); + report_error (_("%s: option requires an argument"), long_args[i].name); + exit (EX_BADUSAGE); } else *long_args[i].char_value = argv[arg_index]; @@ -723,9 +784,9 @@ parse_long_options (argv, arg_start, arg_end) { if (longarg) { - report_error ("%s: invalid option", argv[arg_index]); + report_error (_("%s: invalid option"), argv[arg_index]); show_shell_usage (stderr, 0); - exit (EX_USAGE); + exit (EX_BADUSAGE); } break; /* No such argument. Maybe flag arg. */ } @@ -786,7 +847,7 @@ parse_shell_options (argv, arg_start, arg_end) break; } if (set_minus_o_option (on_or_off, o_option) != EXECUTION_SUCCESS) - exit (EX_USAGE); + exit (EX_BADUSAGE); next_arg++; break; @@ -812,9 +873,9 @@ parse_shell_options (argv, arg_start, arg_end) default: if (change_flag (arg_character, on_or_off) == FLAG_ERROR) { - report_error ("%c%c: invalid option", on_or_off, arg_character); + report_error (_("%c%c: invalid option"), on_or_off, arg_character); show_shell_usage (stderr, 0); - exit (EX_USAGE); + exit (EX_BADUSAGE); } } } @@ -845,6 +906,10 @@ exit_shell (s) 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. */ @@ -929,7 +994,7 @@ run_startup_files () /* get the rshd/sshd case out of the way first. */ if (interactive_shell == 0 && no_rc == 0 && login_shell == 0 && - act_like_sh == 0 && local_pending_command) + act_like_sh == 0 && command_execution_string) { #ifdef SSH_SOURCE_BASHRC run_by_ssh = (find_variable ("SSH_CLIENT") != (SHELL_VAR *)0) || @@ -1065,6 +1130,8 @@ shell_is_restricted (name) if (restricted) return 1; temp = base_pathname (name); + if (*temp == '-') + temp++; return (STREQ (temp, RESTRICTED_SHELL_NAME)); } @@ -1082,6 +1149,8 @@ maybe_make_restricted (name) char *temp; temp = base_pathname (name); + if (*temp == '-') + temp++; if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME))) { set_var_read_only ("PATH"); @@ -1133,7 +1202,7 @@ run_wordexp (words) char *words; { int code, nw, nb; - WORD_LIST *wl, *result; + WORD_LIST *wl, *tl, *result; code = setjmp (top_level); @@ -1144,6 +1213,7 @@ run_wordexp (words) /* Some kind of throw to top_level has occured. */ case FORCE_EOF: return last_command_exit_value = 127; + case ERREXIT: case EXITPROG: return last_command_exit_value; case DISCARD: @@ -1167,6 +1237,9 @@ run_wordexp (words) 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 @@ -1217,6 +1290,7 @@ run_one_command (command) /* Some kind of throw to top_level has occured. */ case FORCE_EOF: return last_command_exit_value = 127; + case ERREXIT: case EXITPROG: return last_command_exit_value; case DISCARD: @@ -1237,7 +1311,7 @@ bind_args (argv, arg_start, arg_end, start_index) register int i; WORD_LIST *args; - for (i = arg_start, args = (WORD_LIST *)NULL; i != arg_end; i++) + for (i = arg_start, args = (WORD_LIST *)NULL; i < arg_end; i++) args = make_word_list (make_word (argv[i]), args); if (args) { @@ -1250,9 +1324,13 @@ bind_args (argv, arg_start, arg_end, start_index) FREE (dollar_vars[0]); dollar_vars[0] = savestring (args->word->word); remember_args (args->next, 1); + push_args (args->next); /* BASH_ARGV and BASH_ARGC */ } else /* bind to $1...$n for shell script */ - remember_args (args, 1); + { + remember_args (args, 1); + push_args (args); /* BASH_ARGV and BASH_ARGC */ + } dispose_words (args); } @@ -1264,6 +1342,23 @@ void unbind_args () { remember_args ((WORD_LIST *)NULL, 1); + pop_args (); /* Reset BASH_ARGV and BASH_ARGC */ +} + +static void +start_debugger () +{ +#if defined (DEBUGGER) && defined (DEBUGGER_START_FILE) + int old_errexit; + + old_errexit = exit_immediately_on_error; + exit_immediately_on_error = 0; + + maybe_execute_file (DEBUGGER_START_FILE, 1); + function_trace_mode = 1; + + exit_immediately_on_error += old_errexit; +#endif } static int @@ -1271,13 +1366,15 @@ open_shell_script (script_name) char *script_name; { int fd, e, fd_is_tty; - char *filename, *path_filename; + 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 - free (dollar_vars[0]); - dollar_vars[0] = savestring (script_name); filename = savestring (script_name); fd = open (filename, O_RDONLY); @@ -1304,6 +1401,24 @@ open_shell_script (script_name) exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); } + free (dollar_vars[0]); + dollar_vars[0] = savestring (script_name); + +#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 @@ -1321,7 +1436,7 @@ open_shell_script (script_name) { e = errno; if ((fstat (fd, &sb) == 0) && S_ISDIR (sb.st_mode)) - internal_error ("%s: is a directory", filename); + internal_error (_("%s: is a directory"), filename); else { errno = e; @@ -1331,7 +1446,7 @@ open_shell_script (script_name) } else if (sample_len > 0 && (check_binary_file (sample, sample_len))) { - internal_error ("%s: cannot execute binary file", filename); + internal_error (_("%s: cannot execute binary file"), filename); exit (EX_BINARY_FILE); } /* Now rewind the file back to the beginning. */ @@ -1341,7 +1456,7 @@ open_shell_script (script_name) /* 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, 0, -1); + fd = move_to_high_fd (fd, 1, -1); #if defined (__CYGWIN__) && defined (O_TEXT) setmode (fd, O_TEXT); @@ -1382,7 +1497,7 @@ open_shell_script (script_name) /* 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_noninteractive (); + init_interactive_script (); free (filename); return (fd); @@ -1404,17 +1519,12 @@ set_bash_input () /* with_input_from_stdin really means `with_input_from_readline' */ if (interactive && no_line_editing == 0) with_input_from_stdin (); - else #if defined (BUFFERED_INPUT) - { - if (interactive == 0) - with_input_from_buffered_stream (default_buffered_input, dollar_vars[0]); - else - with_input_from_stream (default_input, dollar_vars[0]); - } -#else /* !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]); -#endif /* !BUFFERED_INPUT */ } /* Close the current shell script input source and forget about it. This is @@ -1431,6 +1541,7 @@ unset_bash_input (check_zero) { 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) @@ -1452,11 +1563,12 @@ set_shell_name (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 = base_pathname (argv0); + shell_name = argv0 ? base_pathname (argv0) : PROGRAM; - if (*shell_name == '-') + if (argv0 && *argv0 == '-') { - shell_name++; + if (*shell_name == '-') + shell_name++; login_shell++; } @@ -1465,7 +1577,7 @@ set_shell_name (argv0) if (shell_name[0] == 's' && shell_name[1] == 'u' && shell_name[2] == '\0') su_shell++; - shell_name = argv0; + shell_name = argv0 ? argv0 : PROGRAM; FREE (dollar_vars[0]); dollar_vars[0] = savestring (shell_name); @@ -1479,8 +1591,8 @@ set_shell_name (argv0) static void init_interactive () { - interactive_shell = startup_state = interactive = 1; - expand_aliases = 1; + expand_aliases = interactive_shell = startup_state = 1; + interactive = 1; } static void @@ -1497,6 +1609,13 @@ init_noninteractive () #endif /* JOB_CONTROL */ } +static void +init_interactive_script () +{ + init_noninteractive (); + expand_aliases = interactive_shell = startup_state = 1; +} + void get_current_user_info () { @@ -1516,7 +1635,8 @@ get_current_user_info () } else { - current_user.user_name = savestring ("I have no name!"); + 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 ("/"); } @@ -1637,6 +1757,12 @@ shell_reinitialize () delete_all_contexts (shell_variables); delete_all_variables (shell_functions); + reinit_special_variables (); + +#if defined (READLINE) + bashline_reinitialize (); +#endif + shell_reinitialized = 1; } @@ -1649,15 +1775,15 @@ show_shell_usage (fp, extra) 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", + 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); + 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-irsD or -c command or -O shopt_option\t\t(invocation only)\n", fp); + fputs (_("Shell options:\n"), fp); + fputs (_("\t-irsD 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")) @@ -1672,15 +1798,15 @@ show_shell_usage (fp, extra) t = xstrchr (s, ']'); if (t) *t = '\0'; - fprintf (fp, "\t-%s or -o option\n", s); + 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, _("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")); } } @@ -1706,7 +1832,7 @@ run_shopt_alist () for (i = 0; i < shopt_ind; i++) if (shopt_setopt (shopt_alist[i].word, (shopt_alist[i].token == '-')) != EXECUTION_SUCCESS) - exit (EX_USAGE); + exit (EX_BADUSAGE); free (shopt_alist); shopt_alist = 0; shopt_ind = shopt_len = 0; diff --git a/src/bin/bash/shell.h b/src/bin/bash/shell.h index 0cc3a9270b..bc38903259 100644 --- a/src/bin/bash/shell.h +++ b/src/bin/bash/shell.h @@ -1,22 +1,22 @@ /* shell.h -- The data structures used by the shell */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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" @@ -40,7 +40,6 @@ #include "sig.h" #include "pathnames.h" #include "externs.h" -#include "version.h" extern int EOF_Reached; @@ -71,23 +70,26 @@ extern int EOF_Reached; #define EX_EXPFAIL 261 /* word expansion failed */ /* Flag values that control parameter pattern substitution. */ -#define MATCH_ANY 0x0 -#define MATCH_BEG 0x1 -#define MATCH_END 0x2 +#define MATCH_ANY 0x000 +#define MATCH_BEG 0x001 +#define MATCH_END 0x002 -#define MATCH_TYPEMASK 0x3 +#define MATCH_TYPEMASK 0x003 -#define MATCH_GLOBREP 0x10 -#define MATCH_QUOTED 0x20 +#define MATCH_GLOBREP 0x010 +#define MATCH_QUOTED 0x020 +#define MATCH_STARSUB 0x040 /* Some needed external declarations. */ extern char **shell_environment; extern WORD_LIST *rest_of_args; /* Generalized global variables. */ +extern int debugging_mode; extern int executing, login_shell; extern int interactive, interactive_shell; extern int startup_state; +extern int shell_compatibility_level; /* Structure to pass around that holds a bitmap of file descriptors to close, and the size of that structure. Used in execute_cmd.c. */ @@ -119,3 +121,44 @@ extern struct user_info current_user; #else # define USE_VAR(x) #endif + +/* 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; + + /* 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 + + /* 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; + +} sh_parser_state_t; + +/* Let's try declaring these here. */ +extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); +extern void restore_parser_state __P((sh_parser_state_t *)); diff --git a/src/bin/bash/sig.c b/src/bin/bash/sig.c index ec2b28f532..5d76f0bfea 100644 --- a/src/bin/bash/sig.c +++ b/src/bin/bash/sig.c @@ -1,22 +1,22 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -32,6 +32,8 @@ #include #include +#include "bashintl.h" + #include "shell.h" #if defined (JOB_CONTROL) #include "jobs.h" @@ -51,13 +53,22 @@ #endif extern int last_command_exit_value; +extern int last_command_exit_signal; extern int return_catch_flag; extern int loop_level, continuing, breaking; +extern int executing_list; +extern int comsub_ignore_return; extern int parse_and_execute_level, shell_initialized; extern int hup_on_exit; /* Non-zero after SIGINT. */ -int interrupt_state; +volatile int interrupt_state = 0; + +/* Non-zero after SIGWINCH */ +volatile int sigwinch_received = 0; + +/* Set to the value of any terminating signal received. */ +volatile int terminating_signal = 0; /* The environment at the top-level R-E loop. We use this in the case of error return. */ @@ -71,6 +82,13 @@ sigset_t top_level_mask; /* 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 __P((void)); void @@ -91,6 +109,7 @@ initialize_signals (reinit) struct termsig { int signum; SigHandler *orig_handler; + int orig_flags; }; #define NULL_HANDLER (SigHandler *)SIG_DFL @@ -100,89 +119,89 @@ struct termsig { and so forth. */ static struct termsig terminating_signals[] = { #ifdef SIGHUP -{ SIGHUP, NULL_HANDLER }, +{ SIGHUP, NULL_HANDLER, 0 }, #endif #ifdef SIGINT -{ SIGINT, NULL_HANDLER }, +{ SIGINT, NULL_HANDLER, 0 }, #endif #ifdef SIGILL -{ SIGILL, NULL_HANDLER }, +{ SIGILL, NULL_HANDLER, 0 }, #endif #ifdef SIGTRAP -{ SIGTRAP, NULL_HANDLER }, +{ SIGTRAP, NULL_HANDLER, 0 }, #endif #ifdef SIGIOT -{ SIGIOT, NULL_HANDLER }, +{ SIGIOT, NULL_HANDLER, 0 }, #endif #ifdef SIGDANGER -{ SIGDANGER, NULL_HANDLER }, +{ SIGDANGER, NULL_HANDLER, 0 }, #endif #ifdef SIGEMT -{ SIGEMT, NULL_HANDLER }, +{ SIGEMT, NULL_HANDLER, 0 }, #endif #ifdef SIGFPE -{ SIGFPE, NULL_HANDLER }, +{ SIGFPE, NULL_HANDLER, 0 }, #endif #ifdef SIGBUS -{ SIGBUS, NULL_HANDLER }, +{ SIGBUS, NULL_HANDLER, 0 }, #endif #ifdef SIGSEGV -{ SIGSEGV, NULL_HANDLER }, +{ SIGSEGV, NULL_HANDLER, 0 }, #endif #ifdef SIGSYS -{ SIGSYS, NULL_HANDLER }, +{ SIGSYS, NULL_HANDLER, 0 }, #endif #ifdef SIGPIPE -{ SIGPIPE, NULL_HANDLER }, +{ SIGPIPE, NULL_HANDLER, 0 }, #endif #ifdef SIGALRM -{ SIGALRM, NULL_HANDLER }, +{ SIGALRM, NULL_HANDLER, 0 }, #endif #ifdef SIGTERM -{ SIGTERM, NULL_HANDLER }, +{ SIGTERM, NULL_HANDLER, 0 }, #endif #ifdef SIGXCPU -{ SIGXCPU, NULL_HANDLER }, +{ SIGXCPU, NULL_HANDLER, 0 }, #endif #ifdef SIGXFSZ -{ SIGXFSZ, NULL_HANDLER }, +{ SIGXFSZ, NULL_HANDLER, 0 }, #endif #ifdef SIGVTALRM -{ SIGVTALRM, NULL_HANDLER }, +{ SIGVTALRM, NULL_HANDLER, 0 }, #endif #if 0 #ifdef SIGPROF -{ SIGPROF, NULL_HANDLER }, +{ SIGPROF, NULL_HANDLER, 0 }, #endif #endif #ifdef SIGLOST -{ SIGLOST, NULL_HANDLER }, +{ SIGLOST, NULL_HANDLER, 0 }, #endif #ifdef SIGUSR1 -{ SIGUSR1, NULL_HANDLER }, +{ SIGUSR1, NULL_HANDLER, 0 }, #endif #ifdef SIGUSR2 -{ SIGUSR2, NULL_HANDLER }, +{ SIGUSR2, NULL_HANDLER, 0 }, #endif }; @@ -190,6 +209,7 @@ static struct termsig terminating_signals[] = { #define XSIG(x) (terminating_signals[x].signum) #define XHANDLER(x) (terminating_signals[x].orig_handler) +#define XSAFLAGS(x) (terminating_signals[x].orig_flags) static int termsigs_initialized = 0; @@ -212,7 +232,7 @@ initialize_terminating_signals () 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 = termination_unwind_protect; + act.sa_handler = termsig_sighandler; act.sa_flags = 0; sigemptyset (&act.sa_mask); sigemptyset (&oact.sa_mask); @@ -226,6 +246,7 @@ initialize_terminating_signals () 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. */ if (!interactive_shell && XHANDLER (i) == SIG_IGN) @@ -247,7 +268,8 @@ initialize_terminating_signals () if (signal_is_trapped (XSIG (i))) continue; - XHANDLER(i) = signal (XSIG (i), termination_unwind_protect); + 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. */ if (!interactive_shell && XHANDLER (i) == SIG_IGN) @@ -289,6 +311,7 @@ initialize_shell_signals () { set_signal_handler (SIGINT, sigint_sighandler); set_signal_handler (SIGTERM, SIG_IGN); + set_sigwinch_handler (); } } @@ -314,6 +337,7 @@ reset_terminating_signals () continue; act.sa_handler = XHANDLER (i); + act.sa_flags = XSAFLAGS (i); sigaction (XSIG (i), &act, (struct sigaction *) NULL); } #else /* !HAVE_POSIX_SIGNALS */ @@ -329,6 +353,25 @@ reset_terminating_signals () #undef XSIG #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 (); + +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + run_unwind_protects (); + loop_level = continuing = breaking = 0; + executing_list = comsub_ignore_return = return_catch_flag = 0; +} + /* What to do when we've been interrupted, and it is safe to handle it. */ void throw_to_top_level () @@ -344,12 +387,14 @@ throw_to_top_level () if (interrupt_state) return; + last_command_exit_signal = (last_command_exit_value > 128) ? + (last_command_exit_value - 128) : 0; last_command_exit_value |= 128; /* Run any traps set on SIGINT. */ run_interrupt_trap (); - /* Cleanup string parser environment. */ + /* Clean up string parser environment. */ while (parse_and_execute_level) parse_and_execute_cleanup (); @@ -366,7 +411,7 @@ throw_to_top_level () #if defined (READLINE) if (interactive) - bashline_reinitialize (); + bashline_reset (); #endif /* READLINE */ #if defined (PROCESS_SUBSTITUTION) @@ -375,7 +420,7 @@ throw_to_top_level () run_unwind_protects (); loop_level = continuing = breaking = 0; - return_catch_flag = 0; + executing_list = comsub_ignore_return = return_catch_flag = 0; if (interactive && print_newline) { @@ -401,9 +446,36 @@ jump_to_top_level (value) } sighandler -termination_unwind_protect (sig) +termsig_sighandler (sig) int sig; { + terminating_signal = sig; + + /* XXX - should this also trigger when interrupt_immediately is set? */ + if (terminate_immediately) + { + terminate_immediately = 0; + termsig_handler (sig); + } + + SIGRETURN (0); +} + +void +termsig_handler (sig) + int sig; +{ + static int handling_termsig = 0; + + /* 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 (); @@ -422,11 +494,13 @@ termination_unwind_protect (sig) unlink_fifo_list (); #endif /* PROCESS_SUBSTITUTION */ + /* Reset execution context */ + loop_level = continuing = breaking = 0; + executing_list = comsub_ignore_return = return_catch_flag = 0; + run_exit_trap (); set_signal_handler (sig, SIG_DFL); kill (getpid (), sig); - - SIGRETURN (0); } /* What we really do when SIGINT occurs. */ @@ -465,6 +539,35 @@ sigint_sighandler (sig) 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 +} + /* Signal functions used by the rest of the code. */ #if !defined (HAVE_POSIX_SIGNALS) @@ -491,7 +594,7 @@ sigprocmask (operation, newset, oldset) break; default: - internal_error ("Bad code in sig.c: sigprocmask"); + internal_error (_("sigprocmask: %d: invalid operation"), operation); } if (oldset) diff --git a/src/bin/bash/sig.h b/src/bin/bash/sig.h index 2b4c115183..d67f6cca5c 100644 --- a/src/bin/bash/sig.h +++ b/src/bin/bash/sig.h @@ -1,22 +1,22 @@ /* sig.h -- header file for signal handler definitions. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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! */ @@ -108,15 +108,27 @@ do { \ #endif /* JOB_CONTROL */ +/* Extern variables */ +extern volatile int sigwinch_received; + +extern int interrupt_immediately; +extern int terminate_immediately; + /* Functions from sig.c. */ -extern sighandler termination_unwind_protect __P((int)); +extern sighandler termsig_sighandler __P((int)); +extern void termsig_handler __P((int)); extern sighandler sigint_sighandler __P((int)); extern void initialize_signals __P((int)); extern void initialize_terminating_signals __P((void)); extern void reset_terminating_signals __P((void)); +extern void top_level_cleanup __P((void)); extern void throw_to_top_level __P((void)); extern void jump_to_top_level __P((int)) __attribute__((__noreturn__)); +extern sighandler sigwinch_sighandler __P((int)); +extern void set_sigwinch_handler __P((void)); +extern void unset_sigwinch_handler __P((void)); + /* Functions defined in trap.c. */ extern SigHandler *set_sigint_handler __P((void)); extern SigHandler *trap_to_sighandler __P((int)); diff --git a/src/bin/bash/siglist.c b/src/bin/bash/siglist.c index 127facf6a6..27eb26a442 100644 --- a/src/bin/bash/siglist.c +++ b/src/bin/bash/siglist.c @@ -1,22 +1,22 @@ /* siglist.c -- signal list for those machines that don't have one. */ -/* Copyright (C) 1989 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -44,26 +44,26 @@ initialize_siglist () for (i = 0; i < NSIG; i++) sys_siglist[i] = (char *)0x0; - sys_siglist[0] = "Bogus signal"; + sys_siglist[0] = _("Bogus signal"); #if defined (SIGHUP) - sys_siglist[SIGHUP] = "Hangup"; + sys_siglist[SIGHUP] = _("Hangup"); #endif #if defined (SIGINT) - sys_siglist[SIGINT] = "Interrupt"; + sys_siglist[SIGINT] = _("Interrupt"); #endif #if defined (SIGQUIT) - sys_siglist[SIGQUIT] = "Quit"; + sys_siglist[SIGQUIT] = _("Quit"); #endif #if defined (SIGILL) - sys_siglist[SIGILL] = "Illegal instruction"; + sys_siglist[SIGILL] = _("Illegal instruction"); #endif #if defined (SIGTRAP) - sys_siglist[SIGTRAP] = "BPT trace/trap"; + sys_siglist[SIGTRAP] = _("BPT trace/trap"); #endif #if defined (SIGIOT) && !defined (SIGABRT) @@ -71,59 +71,59 @@ initialize_siglist () #endif #if defined (SIGABRT) - sys_siglist[SIGABRT] = "ABORT instruction"; + sys_siglist[SIGABRT] = _("ABORT instruction"); #endif #if defined (SIGEMT) - sys_siglist[SIGEMT] = "EMT instruction"; + sys_siglist[SIGEMT] = _("EMT instruction"); #endif #if defined (SIGFPE) - sys_siglist[SIGFPE] = "Floating point exception"; + sys_siglist[SIGFPE] = _("Floating point exception"); #endif #if defined (SIGKILL) - sys_siglist[SIGKILL] = "Killed"; + sys_siglist[SIGKILL] = _("Killed"); #endif #if defined (SIGBUS) - sys_siglist[SIGBUS] = "Bus error"; + sys_siglist[SIGBUS] = _("Bus error"); #endif #if defined (SIGSEGV) - sys_siglist[SIGSEGV] = "Segmentation fault"; + sys_siglist[SIGSEGV] = _("Segmentation fault"); #endif #if defined (SIGSYS) - sys_siglist[SIGSYS] = "Bad system call"; + sys_siglist[SIGSYS] = _("Bad system call"); #endif #if defined (SIGPIPE) - sys_siglist[SIGPIPE] = "Broken pipe"; + sys_siglist[SIGPIPE] = _("Broken pipe"); #endif #if defined (SIGALRM) - sys_siglist[SIGALRM] = "Alarm clock"; + sys_siglist[SIGALRM] = _("Alarm clock"); #endif #if defined (SIGTERM) - sys_siglist[SIGTERM] = "Terminated"; + sys_siglist[SIGTERM] = _("Terminated"); #endif #if defined (SIGURG) - sys_siglist[SIGURG] = "Urgent IO condition"; + sys_siglist[SIGURG] = _("Urgent IO condition"); #endif #if defined (SIGSTOP) - sys_siglist[SIGSTOP] = "Stopped (signal)"; + sys_siglist[SIGSTOP] = _("Stopped (signal)"); #endif #if defined (SIGTSTP) - sys_siglist[SIGTSTP] = "Stopped"; + sys_siglist[SIGTSTP] = _("Stopped"); #endif #if defined (SIGCONT) - sys_siglist[SIGCONT] = "Continue"; + sys_siglist[SIGCONT] = _("Continue"); #endif #if !defined (SIGCHLD) && defined (SIGCLD) @@ -131,87 +131,87 @@ initialize_siglist () #endif #if defined (SIGCHLD) - sys_siglist[SIGCHLD] = "Child death or stop"; + sys_siglist[SIGCHLD] = _("Child death or stop"); #endif #if defined (SIGTTIN) - sys_siglist[SIGTTIN] = "Stopped (tty input)"; + sys_siglist[SIGTTIN] = _("Stopped (tty input)"); #endif #if defined (SIGTTOU) - sys_siglist[SIGTTOU] = "Stopped (tty output)"; + sys_siglist[SIGTTOU] = _("Stopped (tty output)"); #endif #if defined (SIGIO) - sys_siglist[SIGIO] = "I/O ready"; + sys_siglist[SIGIO] = _("I/O ready"); #endif #if defined (SIGXCPU) - sys_siglist[SIGXCPU] = "CPU limit"; + sys_siglist[SIGXCPU] = _("CPU limit"); #endif #if defined (SIGXFSZ) - sys_siglist[SIGXFSZ] = "File limit"; + sys_siglist[SIGXFSZ] = _("File limit"); #endif #if defined (SIGVTALRM) - sys_siglist[SIGVTALRM] = "Alarm (virtual)"; + sys_siglist[SIGVTALRM] = _("Alarm (virtual)"); #endif #if defined (SIGPROF) - sys_siglist[SIGPROF] = "Alarm (profile)"; + sys_siglist[SIGPROF] = _("Alarm (profile)"); #endif #if defined (SIGWINCH) - sys_siglist[SIGWINCH] = "Window changed"; + sys_siglist[SIGWINCH] = _("Window changed"); #endif #if defined (SIGLOST) - sys_siglist[SIGLOST] = "Record lock"; + sys_siglist[SIGLOST] = _("Record lock"); #endif #if defined (SIGUSR1) - sys_siglist[SIGUSR1] = "User signal 1"; + sys_siglist[SIGUSR1] = _("User signal 1"); #endif #if defined (SIGUSR2) - sys_siglist[SIGUSR2] = "User signal 2"; + sys_siglist[SIGUSR2] = _("User signal 2"); #endif #if defined (SIGMSG) - sys_siglist[SIGMSG] = "HFT input data pending"; + sys_siglist[SIGMSG] = _("HFT input data pending"); #endif #if defined (SIGPWR) - sys_siglist[SIGPWR] = "power failure imminent"; + sys_siglist[SIGPWR] = _("power failure imminent"); #endif #if defined (SIGDANGER) - sys_siglist[SIGDANGER] = "system crash imminent"; + sys_siglist[SIGDANGER] = _("system crash imminent"); #endif #if defined (SIGMIGRATE) - sys_siglist[SIGMIGRATE] = "migrate process to another CPU"; + sys_siglist[SIGMIGRATE] = _("migrate process to another CPU"); #endif #if defined (SIGPRE) - sys_siglist[SIGPRE] = "programming error"; + sys_siglist[SIGPRE] = _("programming error"); #endif #if defined (SIGGRANT) - sys_siglist[SIGGRANT] = "HFT monitor mode granted"; + sys_siglist[SIGGRANT] = _("HFT monitor mode granted"); #endif #if defined (SIGRETRACT) - sys_siglist[SIGRETRACT] = "HFT monitor mode retracted"; + sys_siglist[SIGRETRACT] = _("HFT monitor mode retracted"); #endif #if defined (SIGSOUND) - sys_siglist[SIGSOUND] = "HFT sound sequence has completed"; + sys_siglist[SIGSOUND] = _("HFT sound sequence has completed"); #endif #if defined (SIGINFO) - sys_siglist[SIGINFO] = "Information request"; + sys_siglist[SIGINFO] = _("Information request"); #endif for (i = 0; i < NSIG; i++) @@ -219,9 +219,9 @@ initialize_siglist () if (!sys_siglist[i]) { sys_siglist[i] = - (char *)xmalloc (10 + strlen ("Unknown Signal #")); + (char *)xmalloc (10 + strlen (_("Unknown Signal #"))); - sprintf (sys_siglist[i], "Unknown Signal #%d", i); + sprintf (sys_siglist[i], _("Unknown Signal #%d"), i); } } } diff --git a/src/bin/bash/siglist.h b/src/bin/bash/siglist.h index d185691a01..4cb65308f6 100644 --- a/src/bin/bash/siglist.h +++ b/src/bin/bash/siglist.h @@ -1,22 +1,22 @@ /* siglist.h -- encapsulate various definitions for sys_siglist */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* Copyright (C) 1993, 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ diff --git a/src/bin/bash/signames_haiku.h b/src/bin/bash/signames_haiku.h index 96c7aa7f24..8125c7a8ea 100644 --- a/src/bin/bash/signames_haiku.h +++ b/src/bin/bash/signames_haiku.h @@ -1,8 +1,8 @@ -/* This file was automatically created by /home/bonefish/develop/haiku/haiku/generated-gcc2/objects/linux/x86/release/bin/bash/mksignames. - Do not edit. Edit support/mksignames.c instead. */ +/* This file was automatically created by ./mksignames. + Do not edit. Edit support/signames.c instead. */ /* A translation list so we can be polite to our users. */ -char *signal_names[NSIG + 3] = { +char *signal_names[NSIG + 4] = { "EXIT", "SIGHUP", "SIGINT", @@ -35,5 +35,9 @@ char *signal_names[NSIG + 3] = { "SIGXFSZ", "DEBUG", "ERR", + "RETURN", (char *)0x0 }; + +#define initialize_signames() + diff --git a/src/bin/bash/stringlib.c b/src/bin/bash/stringlib.c index 97280cf5a8..09866d5dad 100644 --- a/src/bin/bash/stringlib.c +++ b/src/bin/bash/stringlib.c @@ -1,22 +1,22 @@ /* stringlib.c - Miscellaneous string functions. */ -/* Copyright (C) 1996-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -170,7 +170,10 @@ strsub (string, pat, rep, global) temp[templen++] = string[i++]; } } - temp[templen] = 0; + if (temp) + temp[templen] = 0; + else + temp = savestring (string); return (temp); } diff --git a/src/bin/bash/subst.c b/src/bin/bash/subst.c index 13e0e31f9e..62a3d028e4 100644 --- a/src/bin/bash/subst.c +++ b/src/bin/bash/subst.c @@ -1,33 +1,35 @@ -/* subst.c -- The part of the shell that does parameter, command, and - globbing substitutions. */ +/* 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-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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" -#include +#if defined (HAVE_PWD_H) +# include +#endif #include #include @@ -37,6 +39,7 @@ #include "bashansi.h" #include "posixstat.h" +#include "bashintl.h" #include "shell.h" #include "flags.h" @@ -52,6 +55,8 @@ #include "builtins/getopt.h" #include "builtins/common.h" +#include "builtins/builtext.h" + #include #include @@ -68,6 +73,9 @@ extern int errno; #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 @@ -75,9 +83,8 @@ extern int errno; #define ST_SQUOTE 0x04 /* unused yet */ #define ST_DQUOTE 0x08 /* unused yet */ -/* Flags for the string extraction functions. */ -#define EX_NOALLOC 0x01 /* just skip; don't return substring */ -#define EX_VARNAME 0x02 /* variable name; for string_extract () */ +/* Flags for the `pflags' argument to param_expand() */ +#define PF_NOCOMSUB 0x01 /* Do not perform command substitution */ /* These defs make it easier to use the editor. */ #define LBRACE '{' @@ -118,11 +125,20 @@ pid_t current_command_subst_pid = NO_PID; SHELL_VAR *ifs_var; char *ifs_value; unsigned char ifs_cmap[UCHAR_MAX + 1]; + +#if defined (HANDLE_MULTIBYTE) +unsigned char ifs_firstc[MB_LEN_MAX]; +size_t ifs_firstc_len; +#else unsigned char ifs_firstc; +#endif + +int assigning_in_environment; /* Extern functions and variables from different files. */ -extern int last_command_exit_value; +extern int last_command_exit_value, last_command_exit_signal; extern int subshell_environment; +extern int subshell_level, parse_and_execute_level; extern int eof_encountered; extern int return_catch_flag, return_catch_value; extern pid_t dollar_dollar_pid; @@ -130,11 +146,20 @@ extern int posixly_correct; extern char *this_command_name; extern struct fd_bitmap *current_fds_to_close; extern int wordexp_only; +extern int expanding_redir; +extern int tempenv_assign_error; + +#if !defined (HAVE_WCSDUP) && defined (HANDLE_MULTIBYTE) +extern wchar_t *wcsdup __P((const wchar_t *)); +#endif /* 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; + #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 @@ -145,7 +170,9 @@ static int glob_argv_flags_size; #endif 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; +static char extract_string_error, extract_string_fatal; /* Tell the expansion functions to not longjmp back to top_level on fatal errors. Enabled when doing completion and prompt string expansion. */ @@ -176,31 +203,42 @@ static WORD_LIST *expand_string_leave_quoted __P((char *, int)); static WORD_LIST *expand_string_for_rhs __P((char *, int, int *, int *)); static WORD_LIST *list_quote_escapes __P((WORD_LIST *)); -static char *dequote_escapes __P((char *)); static char *make_quoted_char __P((int)); static WORD_LIST *quote_list __P((WORD_LIST *)); -static WORD_LIST *dequote_list __P((WORD_LIST *)); -static char *remove_quoted_escapes __P((char *)); -static char *remove_quoted_nulls __P((char *)); static int unquoted_substring __P((char *, char *)); static int unquoted_member __P((int, char *)); -static int do_assignment_internal __P((const char *, int)); +#if defined (ARRAY_VARS) +static SHELL_VAR *do_compound_assignment __P((char *, char *, int)); +#endif +static int do_assignment_internal __P((const WORD_DESC *, int)); -static char *string_extract_verbatim __P((char *, int *, char *)); +static char *string_extract_verbatim __P((char *, size_t, int *, char *, int)); static char *string_extract __P((char *, int *, char *, int)); static char *string_extract_double_quoted __P((char *, int *, int)); static inline char *string_extract_single_quoted __P((char *, int *)); -static inline int skip_single_quoted __P((char *, size_t, int)); +static inline int skip_single_quoted __P((const char *, size_t, int)); static int skip_double_quoted __P((char *, size_t, int)); static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int)); static char *extract_dollar_brace_string __P((char *, int *, int, int)); static char *pos_params __P((char *, int, int, int)); +static unsigned char *mb_getcharlens __P((char *, int)); + +static char *remove_upattern __P((char *, char *, int)); +#if defined (HANDLE_MULTIBYTE) +static wchar_t *remove_wpattern __P((wchar_t *, size_t, wchar_t *, int)); +#endif static char *remove_pattern __P((char *, char *, int)); + static int match_pattern_char __P((char *, char *)); +static int match_upattern __P((char *, char *, int, char **, char **)); +#if defined (HANDLE_MULTIBYTE) +static int match_pattern_wchar __P((wchar_t *, wchar_t *)); +static int match_wpattern __P((wchar_t *, char **, size_t, wchar_t *, int, char **, char **)); +#endif static int match_pattern __P((char *, char *, int, char **, char **)); static int getpatspec __P((int, char *)); static char *getpattern __P((char *, int, int)); @@ -208,48 +246,60 @@ static char *variable_remove_pattern __P((char *, char *, int, int)); static char *list_remove_pattern __P((WORD_LIST *, char *, int, int, int)); static char *parameter_list_remove_pattern __P((int, char *, int, int)); #ifdef ARRAY_VARS -static char *array_remove_pattern __P((ARRAY *, char *, int, char *, int)); +static char *array_remove_pattern __P((SHELL_VAR *, char *, int, char *, int)); #endif static char *parameter_brace_remove_pattern __P((char *, char *, char *, int, int)); static char *process_substitute __P((char *, int)); -static char *read_comsub __P((int, int)); +static char *read_comsub __P((int, int, int *)); #ifdef ARRAY_VARS static arrayind_t array_length_reference __P((char *)); #endif static int valid_brace_expansion_word __P((char *, int)); -static char *parameter_brace_expand_word __P((char *, int, int)); -static char *parameter_brace_expand_indir __P((char *, int, int)); -static char *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *)); +static int chk_atstar __P((char *, int, int *, int *)); +static int chk_arithsub __P((const char *, int)); + +static WORD_DESC *parameter_brace_expand_word __P((char *, int, int)); +static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); +static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *)); static void parameter_brace_expand_error __P((char *, char *)); static int valid_length_expression __P((char *)); static intmax_t parameter_brace_expand_length __P((char *)); static char *skiparith __P((char *, int)); -static int verify_substring_values __P((char *, char *, int, intmax_t *, intmax_t *)); -static int get_var_and_type __P((char *, char *, SHELL_VAR **, char **)); +static int verify_substring_values __P((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *)); +static int get_var_and_type __P((char *, char *, int, SHELL_VAR **, char **)); +static char *mb_substring __P((char *, int, int)); static char *parameter_brace_substring __P((char *, char *, char *, int)); static char *pos_params_pat_subst __P((char *, char *, char *, int)); static char *parameter_brace_patsub __P((char *, char *, char *, int)); -static char *parameter_brace_expand __P((char *, int *, int, int *, int *)); -static char *param_expand __P((char *, int *, int, int *, int *, int *, int *, int)); +static char *pos_params_casemod __P((char *, char *, int, int)); +static char *parameter_brace_casemod __P((char *, char *, int, char *, int)); + +static WORD_DESC *parameter_brace_expand __P((char *, int *, int, int *, int *)); +static WORD_DESC *param_expand __P((char *, int *, int, int *, int *, int *, int *, int)); static WORD_LIST *expand_word_internal __P((WORD_DESC *, int, int, int *, int *)); static WORD_LIST *word_list_split __P((WORD_LIST *)); +static void exp_jump_to_top_level __P((int)); + static WORD_LIST *separate_out_assignments __P((WORD_LIST *)); static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int)); #ifdef BRACE_EXPANSION static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int)); #endif +#if defined (ARRAY_VARS) +static int make_internal_declare __P((char *, char *)); +#endif static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int)); static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int)); @@ -497,11 +547,12 @@ sub_append_number (number, target, indx, size) /* 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 & EX_VARNAME) + 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 & EX_NOALLOC) is non-zero, don't return the substring, just - update SINDEX. */ + 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; @@ -510,12 +561,14 @@ string_extract (string, sindex, charlist, flags) int flags; { register int c, i; + int found; size_t slen; char *temp; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; + found = 0; while (c = string[i]) { if (c == '\\') @@ -526,7 +579,7 @@ string_extract (string, sindex, charlist, flags) break; } #if defined (ARRAY_VARS) - else if ((flags & EX_VARNAME) && c == '[') + else if ((flags & SX_VARNAME) && c == '[') { int ni; /* If this is an array subscript, skip over it and continue. */ @@ -536,13 +589,25 @@ string_extract (string, sindex, charlist, flags) } #endif else if (MEMBER (c, charlist)) + { + found = 1; break; + } ADVANCE_CHAR (string, slen, i); } - temp = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, 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); } @@ -647,21 +712,39 @@ add_one_character: ${ ... } 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_delimited_string (string, &si, "$(", "(", ")", 0); /*)*/ + ret = extract_command_subst (string, &si, 0); else ret = extract_dollar_brace_string (string, &si, 1, 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; + } + for (t = 0; ret[t]; t++, j++) temp[j] = ret[t]; - temp[j++] = string[si]; + temp[j] = string[si]; - i = si + 1; - free (ret); + if (string[si]) + { + j++; + i = si + 1; + } + else + i = si; + + if (free_ret) + free (ret); continue; } @@ -735,9 +818,9 @@ skip_double_quoted (string, slen, sind) { si = i + 2; if (string[i + 1] == LPAREN) - ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); + ret = extract_command_subst (string, &si, SX_NOALLOC); else - ret = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC); + ret = extract_dollar_brace_string (string, &si, 1, SX_NOALLOC); i = si + 1; continue; @@ -771,7 +854,8 @@ string_extract_single_quoted (string, sindex) char *t; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + /* 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); @@ -787,7 +871,7 @@ string_extract_single_quoted (string, sindex) static inline int skip_single_quoted (string, slen, sind) - char *string; + const char *string; size_t slen; int sind; { @@ -806,14 +890,21 @@ skip_single_quoted (string, slen, sind) /* 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, sindex, charlist) +string_extract_verbatim (string, slen, sindex, charlist, flags) char *string; + size_t slen; int *sindex; char *charlist; + int flags; { register int i = *sindex; +#if defined (HANDLE_MULTIBYTE) + size_t clen; + wchar_t *wcharlist; +#endif int c; char *temp; + DECLARE_MBSTATE; if (charlist[0] == '\'' && charlist[1] == '\0') { @@ -822,18 +913,74 @@ string_extract_verbatim (string, sindex, charlist) return temp; } - for (i = *sindex; c = string[i]; i++) + i = *sindex; +#if 0 + /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need + this only if MB_CUR_MAX > 1. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1; +#endif +#if defined (HANDLE_MULTIBYTE) + clen = strlen (charlist); + wcharlist = 0; +#endif + while (c = string[i]) { - if (c == CTLESC) +#if defined (HANDLE_MULTIBYTE) + size_t mblength; +#endif + if ((flags & SX_NOCTLESC) == 0 && c == CTLESC) { - i++; + i += 2; + 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; continue; } +#if defined (HANDLE_MULTIBYTE) + 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; @@ -842,13 +989,21 @@ string_extract_verbatim (string, sindex, charlist) /* 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 ")". */ + Make (SINDEX) get the position of the matching ")". ) + XFLAGS is additional flags to pass to other extraction functions, */ char * -extract_command_subst (string, sindex) +extract_command_subst (string, sindex, xflags) char *string; int *sindex; + int xflags; { - return (extract_delimited_string (string, sindex, "$(", "(", ")", 0)); + if (string[*sindex] == '(') /*)*/ + return (extract_delimited_string (string, sindex, "$(", "(", ")", xflags|SX_COMMAND)); /*)*/ + else + { + xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); + return (xparse_dolparen (string, string+*sindex, sindex, xflags)); + } } /* Extract the $[ construct in STRING, and return a new string. (]) @@ -877,12 +1032,25 @@ extract_process_subst (string, starter, sindex) #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; { - return (extract_delimited_string (string, sindex, "(", (char *)NULL, ")", 0)); + int slen; + char *ret; + + slen = strlen (string); /* ( */ + if (string[slen - 1] == ')') + { + ret = substring (string, *sindex, slen - 1); + *sindex = slen - 1; + return ret; + } + return 0; } #endif @@ -904,7 +1072,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) int i, c, si; size_t slen; char *t, *result; - int pass_character, nesting_level; + int pass_character, nesting_level, in_comment; int len_closer, len_opener, len_alt_opener; DECLARE_MBSTATE; @@ -913,7 +1081,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) len_alt_opener = STRLEN (alt_opener); len_closer = STRLEN (closer); - pass_character = 0; + pass_character = in_comment = 0; nesting_level = 1; i = *sindex; @@ -925,6 +1093,14 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) 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; @@ -932,6 +1108,15 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) continue; } + /* Not exactly right yet; should handle shell metacharacters and + multibyte characters, too. */ + 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++; @@ -943,7 +1128,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) if (STREQN (string + i, opener, len_opener)) { si = i + len_opener; - t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|EX_NOALLOC); + t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|SX_NOALLOC); i = si + 1; continue; } @@ -952,7 +1137,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) 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|EX_NOALLOC); + t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|SX_NOALLOC); i = si + 1; continue; } @@ -971,7 +1156,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) if (c == '`') { si = i + 1; - t = string_extract (string, &si, "`", flags|EX_NOALLOC); + t = string_extract (string, &si, "`", flags|SX_NOALLOC); i = si + 1; continue; } @@ -989,15 +1174,23 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) ADVANCE_CHAR (string, slen, i); } - if (c == 0 && nesting_level && no_longjmp_on_fatal_error == 0) + if (c == 0 && nesting_level) { - report_error ("bad substitution: no `%s' in %s", closer, string); - last_command_exit_value = EXECUTION_FAILURE; - jump_to_top_level (DISCARD); + if (no_longjmp_on_fatal_error == 0) + { + report_error (_("bad substitution: no closing `%s' in %s"), closer, string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); + } + else + { + *sindex = i; + return (char *)NULL; + } } si = i - *sindex - len_closer + 1; - if (flags & EX_NOALLOC) + if (flags & SX_NOALLOC) result = (char *)NULL; else { @@ -1072,7 +1265,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) if (c == '`') { si = i + 1; - t = string_extract (string, &si, "`", flags|EX_NOALLOC); + t = string_extract (string, &si, "`", flags|SX_NOALLOC); i = si + 1; continue; } @@ -1082,7 +1275,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) if (string[i] == '$' && string[i+1] == LPAREN) { si = i + 2; - t = extract_delimited_string (string, &si, "$(", "(", ")", flags|EX_NOALLOC); /*)*/ + t = extract_command_subst (string, &si, flags|SX_NOALLOC); i = si + 1; continue; } @@ -1102,14 +1295,22 @@ extract_dollar_brace_string (string, sindex, quoted, flags) ADVANCE_CHAR (string, slen, i); } - if (c == 0 && nesting_level && no_longjmp_on_fatal_error == 0) + if (c == 0 && nesting_level) { - report_error ("bad substitution: no ending `}' in %s", string); - last_command_exit_value = EXECUTION_FAILURE; - jump_to_top_level (DISCARD); + if (no_longjmp_on_fatal_error == 0) + { /* { */ + report_error (_("bad substitution: no closing `%s' in %s"), "}", string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); + } + else + { + *sindex = i; + return ((char *)NULL); + } } - result = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i); + result = (flags & SX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i); *sindex = i; return (result); @@ -1137,9 +1338,9 @@ de_backslash (string) prev_i = i; ADVANCE_CHAR (string, slen, i); if (j < prev_i) - do string[j++] = string[prev_i++]; while (prev_i < i); + do string[j++] = string[prev_i++]; while (prev_i < i); else - j = i; + j = i; } string[j] = '\0'; @@ -1171,6 +1372,95 @@ unquote_bang (string) } #endif +#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0) + +/* 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, si, c, invert; + size_t slen; + char *temp; + DECLARE_MBSTATE; + + slen = strlen (string + start) + start; + if (flags & SD_NOJMP) + no_longjmp_on_fatal_error = 1; + invert = (flags & SD_INVERT); + + i = start; + pass_next = backq = 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) + { + if (c == '`') + backq = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '`') + { + backq = 1; + i++; + continue; + } + else if (invert == 0 && member (c, delims)) + break; + else if (c == '\'' || c == '"') + { + i = (c == '\'') ? skip_single_quoted (string, slen, ++i) + : skip_double_quoted (string, slen, ++i); + /* no increment, the skip functions increment past the closing quote. */ + } + else if (c == '$' && (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); + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } + else if (invert && (member (c, delims) == 0)) + break; + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(i); +} + #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 @@ -1180,8 +1470,6 @@ unquote_bang (string) recognizes need to be the same as the contents of rl_completer_quote_characters. */ -#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0) - int char_is_quoted (string, eindex) char *string; @@ -1274,90 +1562,10 @@ unclosed_pair (string, eindex, openstr) return (openc); } -/* 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) - char *string; - int start; - char *delims; -{ - int i, pass_next, backq, si, c; - size_t slen; - char *temp; - DECLARE_MBSTATE; - - slen = strlen (string + start) + start; - no_longjmp_on_fatal_error = 1; - i = start; - pass_next = backq = 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) - { - if (c == '`') - backq = 0; - ADVANCE_CHAR (string, slen, i); - continue; - } - else if (c == '`') - { - backq = 1; - i++; - continue; - } - else if (c == '\'' || c == '"') - { - i = (c == '\'') ? skip_single_quoted (string, slen, ++i) - : skip_double_quoted (string, slen, ++i); - /* no increment, the skip functions increment past the closing quote. */ - } - else if (c == '$' && (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, "$(", "(", ")", EX_NOALLOC); /* ) */ - else - temp = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC); - i = si; - if (string[i] == '\0') /* don't increment i past EOS in loop */ - break; - i++; - continue; - } - else if (member (c, delims)) - break; - else - ADVANCE_CHAR (string, slen, i); - } - - CQ_RETURN(i); -} - /* 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. SENTINEL is an index to look for. NWP, if non-NULL + 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. */ @@ -1369,7 +1577,7 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp) int sentinel; int *nwp, *cwp; { - int ts, te, i, nw, cw; + int ts, te, i, nw, cw, ifs_split; char *token, *d, *d2; WORD_LIST *ret, *tl; @@ -1383,23 +1591,52 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp) } d = (delims == 0) ? ifs_value : delims; + ifs_split = delims == 0; /* Make d2 the non-whitespace characters in delims */ d2 = 0; if (delims) { - d2 = (char *)xmalloc (strlen (delims) + 1); - for (i = ts = 0; delims[i]; i++) + 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 (whitespace(delims[i]) == 0) +#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; - for (i = 0; member (string[i], d) && spctabnl(string[i]); i++) + /* Remove sequences of whitspace 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') return (ret); @@ -1409,7 +1646,7 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp) cw = -1; while (1) { - te = skip_to_delim (string, ts, d); + te = skip_to_delim (string, ts, d, SD_NOJMP); /* If we have a non-whitespace delimiter character, use it to make a separate field. This is just about what $IFS splitting does and @@ -1417,8 +1654,14 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp) if (ts == te && d2 && member (string[ts], d2)) { te = ts + 1; - while (member (string[te], d2)) - te++; + /* 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])) + te++; + else + while (member (string[te], d2)) + te++; } token = substring (string, ts, te); @@ -1449,8 +1692,8 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp) if (string[te] == 0) break; - i = te /* + member (string[te], d) */; - while (member (string[i], d) && spctabnl(string[i])) + i = te; + while (member (string[i], d) && (ifs_split || spctabnl(string[i]))) i++; if (string[i]) @@ -1493,7 +1736,7 @@ assignment_name (string) int offset; char *temp; - offset = assignment (string); + offset = assignment (string, 0); if (offset == 0) return (char *)NULL; temp = substring (string, 0, offset); @@ -1521,6 +1764,10 @@ string_list_internal (list, sep) 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; @@ -1565,6 +1812,42 @@ string_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 @@ -1574,12 +1857,41 @@ char * string_list_dollar_star (list) WORD_LIST *list; { + 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 - return (string_list_internal (list, sep)); + 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)) @@ -1596,19 +1908,112 @@ string_list_dollar_at (list, quoted) WORD_LIST *list; int quoted; { - char *ifs, sep[2]; + 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__ */ + 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 sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs; sep[1] = '\0'; +#endif + /* XXX -- why call quote_list if ifs == 0? we can get away without doing + it now that quote_escapes quotes spaces */ +#if 0 tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0)) +#else + tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) +#endif ? quote_list (list) : list_quote_escapes (list); - return (string_list_internal (tlist, sep)); + + ret = string_list_internal (tlist, sep); +#if defined (HANDLE_MULTIBYTE) && !defined (__GNUC__) + free (sep); +#endif + return ret; +} + +/* Turn the positional paramters 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. */ +char * +string_list_pos_params (pchar, list, quoted) + int pchar; + WORD_LIST *list; + int quoted; +{ + 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); + } + else if (pchar == '*' && (quoted & Q_HERE_DOCUMENT)) + { + tlist = quote_list (list); + word_list_remove_quoted_nulls (tlist); + ret = string_list (tlist); + } + 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); + } + 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); + else if (pchar == '@') + ret = string_list_dollar_star (list); + 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 @@ -1651,7 +2056,8 @@ list_string (string, separators, quoted) WORD_LIST *result; WORD_DESC *t; char *current_word, *s; - int sindex, sh_style_split, whitesep; + int sindex, sh_style_split, whitesep, xflags; + size_t slen; if (!string || !*string) return ((WORD_LIST *)NULL); @@ -1660,7 +2066,13 @@ list_string (string, separators, quoted) 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. */ @@ -1679,9 +2091,12 @@ list_string (string, separators, quoted) extract a word, stopping at a separator skip sequences of spc, tab, or nl as long as they are separators This obeys the field splitting rules in Posix.2. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 1; for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { - current_word = string_extract_verbatim (string, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + current_word = string_extract_verbatim (string, slen, &sindex, separators, xflags); if (current_word == 0) break; @@ -1691,10 +2106,9 @@ list_string (string, separators, quoted) below. */ if (QUOTED_NULL (current_word)) { - t = make_bare_word (""); - t->flags |= W_QUOTED; - free (t->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') @@ -1703,6 +2117,7 @@ list_string (string, separators, quoted) perform quoted null character removal on the current word. */ remove_quoted_nulls (current_word); result = add_string_to_list (current_word, result); + result->word->flags &= ~W_HASQUOTEDNULL; /* just to be sure */ if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) result->word->flags |= W_QUOTED; } @@ -1711,10 +2126,9 @@ list_string (string, separators, quoted) Bourne shell style, then add a quoted null argument. */ else if (!sh_style_split && !spctabnl (string[sindex])) { - t = make_bare_word (""); - t->flags |= W_QUOTED; - free (t->word); + t = alloc_word_desc (); t->word = make_quoted_char ('\0'); + t->flags |= W_QUOTED|W_HASQUOTEDNULL; result = make_word_list (t, result); } @@ -1725,7 +2139,10 @@ list_string (string, separators, quoted) /* Move past the current separator character. */ if (string[sindex]) - sindex++; + { + DECLARE_MBSTATE; + ADVANCE_CHAR (string, slen, sindex); + } /* Now skip sequences of space, tab, or newline characters if they are in the list of separators. */ @@ -1737,7 +2154,13 @@ list_string (string, separators, quoted) 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]) && !spctabnl (string[sindex])) - 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] && spctabnl (string[sindex]) && isifs (string[sindex])) + sindex++; + } } return (REVERSE_LIST (result, WORD_LIST *)); } @@ -1755,17 +2178,24 @@ get_word_from_string (stringp, separators, endptr) { register char *s; char *current_word; - int sindex, sh_style_split, whitesep; + int sindex, sh_style_split, whitesep, xflags; + size_t slen; if (!stringp || !*stringp || !**stringp) return ((char *)NULL); - s = *stringp; - 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; + if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL; + } + + s = *stringp; + slen = 0; /* Remove sequences of whitespace at the beginning of STRING, as long as those characters appear in IFS. */ @@ -1790,7 +2220,10 @@ get_word_from_string (stringp, separators, endptr) This obeys the field splitting rules in Posix.2. */ sindex = 0; - current_word = string_extract_verbatim (s, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (s) : 1; + current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags); /* Set ENDPTR to the first character after the end of the word. */ if (endptr) @@ -1801,7 +2234,10 @@ get_word_from_string (stringp, separators, endptr) /* Move past the current separator character. */ if (s[sindex]) - 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. */ @@ -1813,7 +2249,13 @@ get_word_from_string (stringp, separators, endptr) 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 && isifs (s[sindex]) && !spctabnl (s[sindex])) - 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] && spctabnl (s[sindex]) && isifs (s[sindex])) + sindex++; + } /* Update STRING to point to the next field. */ *stringp = s + sindex; @@ -1901,25 +2343,61 @@ list_string_with_quotes (string) /* */ /********************************************************/ +#if defined (ARRAY_VARS) +static SHELL_VAR * +do_compound_assignment (name, value, flags) + char *name, *value; + int flags; +{ + SHELL_VAR *v; + int mklocal, mkassoc; + WORD_LIST *list; + + mklocal = flags & ASS_MKLOCAL; + mkassoc = flags & ASS_MKASSOC; + + if (mklocal && variable_context) + { + v = find_variable (name); + list = expand_compound_array_assignment (v, value, flags); + if (mkassoc) + v = make_local_assoc_variable (name); + else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context) + v = make_local_array_variable (name); + assign_compound_array_list (v, list, flags); + } + else + v = assign_array_from_string (name, value, flags); + + 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 (string, expand) - const char *string; +do_assignment_internal (word, expand) + const WORD_DESC *word; int expand; { - int offset; + int offset, tlen, appendop, assign_list, aflags, retval; char *name, *value; SHELL_VAR *entry; #if defined (ARRAY_VARS) char *t; - int ni, assign_list = 0; + int ni; #endif + const char *string; - offset = assignment (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; @@ -1927,28 +2405,27 @@ do_assignment_internal (string, expand) { char *temp; - name[offset] = 0; + if (name[offset - 1] == '+') + { + appendop = 1; + name[offset - 1] = '\0'; + } + + name[offset] = 0; /* might need this set later */ temp = name + offset + 1; + tlen = STRLEN (temp); #if defined (ARRAY_VARS) - if (expand && temp[0] == LPAREN && xstrchr (temp, RPAREN)) + if (expand && (word->flags & W_COMPASSIGN)) { assign_list = ni = 1; - value = extract_delimited_string (temp, &ni, "(", (char *)NULL, ")", 0); + value = extract_array_assignment_list (temp, &ni); } else #endif - /* Perform tilde expansion. */ if (expand && temp[0]) - { - temp = (xstrchr (temp, '~') && unquoted_member ('~', temp)) - ? bash_tilde_expand (temp, 1) - : savestring (temp); - - value = expand_string_if_necessary (temp, 0, expand_string_unsplit); - free (temp); - } + value = expand_string_if_necessary (temp, 0, expand_string_assignment); else value = savestring (temp); } @@ -1961,60 +2438,102 @@ do_assignment_internal (string, expand) if (echo_command_at_execute) { -#if defined (ARRAY_VARS) - if (assign_list) - fprintf (stderr, "%s%s=(%s)\n", indirection_level_string (), name, value); - else -#endif - fprintf (stderr, "%s%s=%s\n", indirection_level_string (), name, value); + 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 = xstrchr (name, '[')) /*]*/ { if (assign_list) { - report_error ("%s: cannot assign list to array member", name); + report_error (_("%s: cannot assign list to array member"), name); ASSIGN_RETURN (0); } - entry = assign_array_element (name, value); + entry = assign_array_element (name, value, aflags); if (entry == 0) ASSIGN_RETURN (0); } else if (assign_list) - entry = assign_array_from_string (name, value); + { + if (word->flags & W_ASSIGNARG) + aflags |= ASS_MKLOCAL; + if (word->flags & W_ASSIGNASSOC) + aflags |= ASS_MKASSOC; + entry = do_compound_assignment (name, value, aflags); + } else #endif /* ARRAY_VARS */ - entry = bind_variable (name, value); + entry = bind_variable (name, value, aflags); stupidly_hack_special_variables (name); +#if 1 + /* 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)) + { + last_command_exit_value = 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); +#else if (entry) VUNSETATTR (entry, att_invisible); - /* Return 1 if the assignment seems to have been performed correctly. */ ASSIGN_RETURN (entry ? ((readonly_p (entry) == 0) && noassign_p (entry) == 0) : 0); +#endif } /* Perform the assignment statement in STRING, and expand the - right side by doing command and parameter expansion. */ + right side by doing tilde, command and parameter expansion. */ int do_assignment (string) - const char *string; + char *string; { - return do_assignment_internal (string, 1); + WORD_DESC td; + + td.flags = W_ASSIGNMENT; + td.word = string; + + return do_assignment_internal (&td, 1); +} + +int +do_word_assignment (word) + WORD_DESC *word; +{ + 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 do command and - parameter substitution on the right hand 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) - const char *string; + char *string; { - return do_assignment_internal (string, 0); + WORD_DESC td; + + td.flags = W_ASSIGNMENT; + td.word = string; + + return (do_assignment_internal (&td, 0)); } /*************************************************** @@ -2111,6 +2630,12 @@ pos_params (string, start, end, quoted) if (save == 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 = 1; params && i < start; i++) params = params->next; if (params == 0) @@ -2122,10 +2647,9 @@ pos_params (string, start, end, quoted) } t->next = (WORD_LIST *)NULL; - if (string[0] == '*') - ret = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (quote_list (h)) : string_list (h); - else - ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h); + + ret = string_list_pos_params (string[0], h, quoted); + if (t != params) t->next = params; @@ -2140,9 +2664,9 @@ pos_params (string, start, end, quoted) /******************************************************************/ #if defined (PROCESS_SUBSTITUTION) -#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC) +#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC || s == '~') #else -#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC) +#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~') #endif /* If there are any characters in STRING that require full expansion, @@ -2160,7 +2684,8 @@ expand_string_if_necessary (string, quoted, func) char *ret; DECLARE_MBSTATE; - slen = strlen (string); + /* 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]) { @@ -2230,6 +2755,22 @@ expand_string_unsplit_to_string (string, 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; +{ + return (expand_string_if_necessary (string, quoted, expand_string)); +} + #if defined (COND_COMMAND) /* Just remove backslashes in STRING. Returns a new string. */ char * @@ -2253,11 +2794,12 @@ remove_backslashes (string) /* This needs better error handling. */ /* Expand W for use as an argument to a unary or binary operator in a - [[...]] expression. If SPECIAL is nonzero, this is the rhs argument + [[...]] 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. The - caller is responsible for removing the backslashes if the unquoted - words is needed later. */ + 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. */ char * cond_expand_word (w, special) WORD_DESC *w; @@ -2265,17 +2807,11 @@ cond_expand_word (w, special) { char *r, *p; WORD_LIST *l; + int qflags; if (w->word == 0 || w->word[0] == '\0') return ((char *)NULL); - if (xstrchr (w->word, '~') && unquoted_member ('~', w->word)) - { - p = bash_tilde_expand (w->word, 0); - free (w->word); - w->word = p; - } - l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); if (l) { @@ -2286,8 +2822,11 @@ cond_expand_word (w, special) } else { + qflags = QGLOB_CVTNULL; + if (special == 2) + qflags |= QGLOB_REGEXP; p = string_list (l); - r = quote_string_for_globbing (p, QGLOB_CVTNULL); + r = quote_string_for_globbing (p, qflags); free (p); } dispose_words (l); @@ -2312,14 +2851,13 @@ call_expand_word_internal (w, q, i, c, e) result = expand_word_internal (w, q, i, c, e); if (result == &expand_word_error || result == &expand_word_fatal) { - expand_no_split_dollar_star = 0; /* XXX */ /* 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; - jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF); + exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF); /* NOTREACHED */ } else @@ -2370,7 +2908,43 @@ expand_string_unsplit (string, quoted) if (value) { if (value->word) - remove_quoted_nulls (value->word->word); + { + remove_quoted_nulls (value->word->word); + 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; + + td.flags = W_ASSIGNRHS; + 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); + value->word->flags &= ~W_HASQUOTEDNULL; + } dequote_list (value); } return (value); @@ -2382,9 +2956,10 @@ expand_string_unsplit (string, quoted) 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) +expand_prompt_string (string, quoted, wflags) char *string; int quoted; + int wflags; { WORD_LIST *value; WORD_DESC td; @@ -2392,7 +2967,7 @@ expand_prompt_string (string, quoted) if (string == 0 || *string == 0) return ((WORD_LIST *)NULL); - td.flags = 0; + td.flags = wflags; td.word = savestring (string); no_longjmp_on_fatal_error = 1; @@ -2408,7 +2983,10 @@ expand_prompt_string (string, quoted) if (value) { if (value->word) - remove_quoted_nulls (value->word->word); + { + remove_quoted_nulls (value->word->word); + value->word->flags &= ~W_HASQUOTEDNULL; + } dequote_list (value); } return (value); @@ -2492,7 +3070,14 @@ expand_string (string, quoted) /* 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. */ + 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). */ char * quote_escapes (string) char *string; @@ -2500,17 +3085,23 @@ quote_escapes (string) register char *s, *t; size_t slen; char *result, *send; + int quote_spaces, skip_ctlesc, skip_ctlnul; DECLARE_MBSTATE; slen = strlen (string); send = string + slen; + quote_spaces = (ifs_value && *ifs_value == 0); + + for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) + skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; + t = result = (char *)xmalloc ((slen * 2) + 1); s = string; while (*s) { - if (*s == CTLESC || *s == CTLNUL) + if ((skip_ctlesc == 0 && *s == CTLESC) || (skip_ctlnul == 0 && *s == CTLNUL) || (quote_spaces && *s == ' ')) *t++ = CTLESC; COPY_CHAR_P (t, s, send); } @@ -2545,13 +3136,14 @@ list_quote_escapes (list) characters. Also used by parts of the pattern substitution code. */ -static char * +char * dequote_escapes (string) char *string; { - register char *s, *t; + register char *s, *t, *s1; size_t slen; char *result, *send; + int quote_spaces; DECLARE_MBSTATE; if (string == 0) @@ -2561,14 +3153,16 @@ dequote_escapes (string) send = string + slen; t = result = (char *)xmalloc (slen + 1); - s = string; if (strchr (string, CTLESC) == 0) - return (strcpy (result, s)); + return (strcpy (result, string)); + quote_spaces = (ifs_value && *ifs_value == 0); + + s = string; while (*s) { - if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) + if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' '))) { s++; if (*s == '\0') @@ -2580,7 +3174,9 @@ dequote_escapes (string) return result; } -/* Return a new string with the quoted representation of character C. */ +/* 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; @@ -2602,7 +3198,9 @@ make_quoted_char (c) return (temp); } -/* Quote STRING. Return a new string. */ +/* 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; @@ -2636,7 +3234,7 @@ quote_string (string) return (result); } -/* De-quoted quoted characters in STRING. */ +/* De-quote quoted characters in STRING. */ char * dequote_string (string) char *string; @@ -2690,13 +3288,16 @@ quote_list (list) { t = w->word->word; w->word->word = quote_string (t); - free (t); + if (*t == 0) + w->word->flags |= W_HASQUOTEDNULL; /* XXX - turn on W_HASQUOTEDNULL here? */ w->word->flags |= W_QUOTED; + free (t); } return list; } -static WORD_LIST * +/* De-quote quoted characters in each word in LIST. */ +WORD_LIST * dequote_list (list) WORD_LIST *list; { @@ -2706,6 +3307,8 @@ dequote_list (list) 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; } @@ -2714,7 +3317,7 @@ dequote_list (list) /* Remove CTLESC protecting a CTLESC or CTLNUL in place. Return the passed string. */ -static char * +char * remove_quoted_escapes (string) char *string; { @@ -2735,7 +3338,7 @@ remove_quoted_escapes (string) of how expand_word_internal works. remove_quoted_nulls () turns STRING into an empty string iff it only consists of a quoted null, and removes all unquoted CTLNUL characters. */ -static char * +char * remove_quoted_nulls (string) char *string; { @@ -2752,13 +3355,17 @@ remove_quoted_nulls (string) while (i < slen) { if (string[i] == CTLESC) - { - i++; j++; - if (i == slen) - break; - } + { + /* 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++; + i++; prev_i = i; ADVANCE_CHAR (string, slen, i); @@ -2783,7 +3390,10 @@ word_list_remove_quoted_nulls (list) register WORD_LIST *t; for (t = list; t; t = t->next) - remove_quoted_nulls (t->word->word); + { + remove_quoted_nulls (t->word->word); + t->word->flags &= ~W_HASQUOTEDNULL; + } } /* **************************************************************** */ @@ -2792,6 +3402,33 @@ word_list_remove_quoted_nulls (list) /* */ /* **************************************************************** */ +#if defined (HANDLE_MULTIBYTE) +#if 0 /* Currently 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 @@ -2806,7 +3443,7 @@ word_list_remove_quoted_nulls (list) #define RP_SHORT_RIGHT 4 static char * -remove_pattern (param, pattern, op) +remove_upattern (param, pattern, op) char *param, *pattern; int op; { @@ -2814,11 +3451,6 @@ remove_pattern (param, pattern, op) register char *end; register char *p, *ret, c; - if (param == NULL || *param == '\0') - return (param); - if (pattern == NULL || *pattern == '\0') /* minor optimization */ - return (savestring (param)); - len = STRLEN (param); end = param + len; @@ -2834,6 +3466,7 @@ remove_pattern (param, pattern, op) return (savestring (p)); } *p = c; + } break; @@ -2876,9 +3509,126 @@ remove_pattern (param, pattern, op) } break; } + return (savestring (param)); /* no match, return original string */ } +#if defined (HANDLE_MULTIBYTE) +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 (wcsdup (wparam)); /* no match, return original string */ +} +#endif /* HANDLE_MULTIBYTE */ + +static char * +remove_pattern (param, pattern, op) + char *param, *pattern; + int op; +{ + 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; + char *xret; + + n = xdupmbstowcs (&wpattern, NULL, pattern); + if (n == (size_t)-1) + return (remove_upattern (param, pattern, op)); + n = xdupmbstowcs (&wparam, NULL, param); + if (n == (size_t)-1) + { + free (wpattern); + return (remove_upattern (param, pattern, op)); + } + oret = ret = remove_wpattern (wparam, n, wpattern, op); + + 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 + return (remove_upattern (param, pattern, op)); +} + /* Return 1 of the first character of STRING could match the first character of pattern PAT. Used to avoid n2 calls to strmatch(). */ static int @@ -2916,19 +3666,46 @@ match_pattern_char (pat, string) MATCH_BEG and MATCH_END anchor the match at the beginning and end of the string, respectively. The longest match is returned. */ static int -match_pattern (string, pat, mtype, sp, ep) +match_upattern (string, pat, mtype, sp, ep) char *string, *pat; int mtype; char **sp, **ep; { - int c; - register char *p, *p1; + int c, len; + register char *p, *p1, *npat; char *end; - if (string == 0 || *string == 0 || pat == 0 || *pat == 0) + /* 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] == '(' && extended_glob) || pat[len - 1] != '*') /*)*/ + { + p = npat = (char *)xmalloc (len + 3); + p1 = pat; + if (*p1 != '*' || (*p1 == '*' && p1[1] == '(' && extended_glob)) /*)*/ + *p++ = '*'; + while (*p1) + *p++ = *p1++; + if (p1[-1] != '*' || p[-2] == '\\') + *p++ = '*'; + *p = '\0'; + } + else + npat = pat; + c = strmatch (npat, string, FNMATCH_EXTFLAG); + if (npat != pat) + free (npat); + if (c == FNM_NOMATCH) return (0); - end = string + STRLEN (string); + len = STRLEN (string); + end = string + len; switch (mtype) { @@ -2951,11 +3728,13 @@ match_pattern (string, pat, mtype, sp, ep) } } } + return (0); case MATCH_BEG: if (match_pattern_char (pat, string) == 0) return (0); + for (p = end; p >= string; p--) { c = *p; *p = '\0'; @@ -2968,22 +3747,209 @@ match_pattern (string, pat, mtype, sp, ep) } *p = c; } + return (0); case MATCH_END: for (p = string; p <= end; p++) - if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0) - { - *sp = p; - *ep = end; - return 1; - } + { + if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0) + { + *sp = p; + *ep = end; + return 1; + } + + } + return (0); } return (0); } +#if defined (HANDLE_MULTIBYTE) +/* Return 1 of the first character of WSTRING could match the first + character of pattern WPAT. Wide character version. */ +static int +match_pattern_wchar (wpat, wstring) + wchar_t *wpat, *wstring; +{ + wchar_t wc; + + if (*wstring == 0) + return (0); + + switch (wc = *wpat++) + { + default: + return (*wstring == wc); + case L'\\': + return (*wstring == *wpat); + case L'?': + return (*wpat == LPAREN ? 1 : (*wstring != L'\0')); + case L'*': + return (1); + case L'+': + case L'!': + case L'@': + return (*wpat == LPAREN ? 1 : (*wstring == wc)); + case L'[': + return (*wstring != L'\0'); + } +} + +/* 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; + int len; +#if 0 + size_t n, n1; /* Apple's gcc seems to miscompile this badly */ +#else + int n, n1; +#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. */ + /* XXX - check this later if I ever implement `**' with special meaning, + since this will potentially result in `**' at the beginning or end */ + len = wcslen (wpat); + if (wpat[0] != L'*' || (wpat[0] == L'*' && wpat[1] == L'(' && extended_glob) || wpat[len - 1] != L'*') /*)*/ + { + wp = nwpat = (wchar_t *)xmalloc ((len + 3) * sizeof (wchar_t)); + wp1 = wpat; + if (*wp1 != L'*' || (*wp1 == '*' && wp1[1] == '(' && extended_glob)) /*)*/ + *wp++ = L'*'; + while (*wp1 != L'\0') + *wp++ = *wp1++; + if (wp1[-1] != L'*' || wp1[-2] == L'\\') + *wp++ = L'*'; + *wp = '\0'; + } + else + nwpat = wpat; + len = wcsmatch (nwpat, wstring, FNMATCH_EXTFLAG); + if (nwpat != wpat) + free (nwpat); + if (len == FNM_NOMATCH) + return (0); + + switch (mtype) + { + case MATCH_ANY: + for (n = 0; n <= wstrlen; n++) + { + if (match_pattern_wchar (wpat, wstring + n)) + { + for (n1 = wstrlen; n1 >= n; n1--) + { + wc = wstring[n1]; wstring[n1] = L'\0'; + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0) + { + wstring[n1] = wc; + *sp = indices[n]; + *ep = indices[n1]; + return 1; + } + wstring[n1] = wc; + } + } + } + + return (0); + + case MATCH_BEG: + if (match_pattern_wchar (wpat, wstring) == 0) + return (0); + + for (n = wstrlen; n >= 0; n--) + { + wc = wstring[n]; wstring[n] = L'\0'; + if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG) == 0) + { + wstring[n] = wc; + *sp = indices[0]; + *ep = indices[n]; + return 1; + } + wstring[n] = wc; + } + + return (0); + + case MATCH_END: + for (n = 0; n <= wstrlen; n++) + { + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0) + { + *sp = indices[n]; + *ep = indices[wstrlen]; + return 1; + } + } + + return (0); + } + + return (0); +} +#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 || *string == 0 || pat == 0 || *pat == 0) + return (0); + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + 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; @@ -3010,10 +3976,9 @@ getpattern (value, quoted, expandpat) { char *pat, *tword; WORD_LIST *l; +#if 0 int i; - - tword = xstrchr (value, '~') ? bash_tilde_expand (value, 0) : savestring (value); - +#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 @@ -3031,11 +3996,10 @@ getpattern (value, quoted, expandpat) /* expand_string_for_rhs () leaves WORD quoted and does not perform word splitting. */ - l = *tword ? expand_string_for_rhs (tword, + l = *value ? expand_string_for_rhs (value, (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted, (int *)NULL, (int *)NULL) : (WORD_LIST *)0; - free (tword); pat = string_list (l); dispose_words (l); if (pat) @@ -3076,18 +4040,15 @@ list_remove_pattern (list, pattern, patspec, itype, quoted) for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) { tword = remove_pattern (l->word->word, pattern, patspec); - w = make_bare_word (tword); - free (tword); + w = alloc_word_desc (); + w->word = tword ? tword : savestring (""); new = make_word_list (w, new); } l = REVERSE_LIST (new, WORD_LIST *); - if (itype == '*') - tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l); - else - tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l); - + tword = string_list_pos_params (itype, l, quoted); dispose_words (l); + return (tword); } @@ -3110,13 +4071,15 @@ parameter_list_remove_pattern (itype, pattern, patspec, quoted) #if defined (ARRAY_VARS) static char * -array_remove_pattern (a, pattern, patspec, varname, quoted) - ARRAY *a; +array_remove_pattern (var, pattern, patspec, varname, quoted) + SHELL_VAR *var; char *pattern; int patspec; char *varname; /* so we can figure out how it's indexed */ int quoted; { + ARRAY *a; + HASH_TABLE *h; int itype; char *ret; WORD_LIST *list; @@ -3126,7 +4089,10 @@ array_remove_pattern (a, pattern, patspec, varname, quoted) v = array_variable_part (varname, &ret, 0); itype = ret[0]; - list = array_to_word_list (a); + 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); @@ -3141,7 +4107,7 @@ parameter_brace_remove_pattern (varname, value, patstr, rtype, quoted) char *varname, *value, *patstr; int rtype, quoted; { - int vtype, patspec; + int vtype, patspec, starsub; char *temp1, *val, *pattern; SHELL_VAR *v; @@ -3150,15 +4116,22 @@ parameter_brace_remove_pattern (varname, value, patstr, rtype, quoted) this_command_name = varname; - vtype = get_var_and_type (varname, value, &v, &val); + vtype = get_var_and_type (varname, value, quoted, &v, &val); if (vtype == -1) return ((char *)NULL); + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + patspec = getpatspec (rtype, patstr); if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT) patstr++; - pattern = getpattern (patstr, quoted, 1); + /* 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) @@ -3170,14 +4143,16 @@ parameter_brace_remove_pattern (varname, value, patstr, rtype, quoted) FREE (val); if (temp1) { - val = quote_escapes (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 (array_cell (v), pattern, patspec, varname, quoted); + temp1 = array_remove_pattern (v, pattern, patspec, varname, quoted); if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) { val = quote_escapes (temp1); @@ -3327,12 +4302,18 @@ unlink_fifo_list () nfifo = 0; } +int +fifos_pending () +{ + return nfifo; +} + static char * make_named_pipe () { char *tname; - tname = sh_mktmpname ("sh-np", MT_USERANDOM); + tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); if (mkfifo (tname, 0600) < 0) { free (tname); @@ -3365,7 +4346,7 @@ add_fifo_list (fd) totfds = getdtablesize (); if (totfds < 0 || totfds > 256) totfds = 256; - if (fd > totfds) + if (fd >= totfds) totfds = fd + 2; dev_fd_list = (char *)xrealloc (dev_fd_list, totfds); @@ -3376,6 +4357,12 @@ add_fifo_list (fd) nfds++; } +int +fifos_pending () +{ + return 0; /* used for cleanup; not needed with /dev/fd */ +} + void unlink_fifo_list () { @@ -3418,7 +4405,7 @@ make_dev_fd_filename (fd) { char *ret, intbuf[INT_STRLEN_BOUND (int) + 1], *p; - ret = (char *)xmalloc (sizeof (DEV_FD_PREFIX) + 4); + ret = (char *)xmalloc (sizeof (DEV_FD_PREFIX) + 8); strcpy (ret, DEV_FD_PREFIX); p = inttostr (fd, intbuf, sizeof (intbuf)); @@ -3466,7 +4453,7 @@ process_substitute (string, open_for_read_in_child) #else /* HAVE_DEV_FD */ if (pipe (fildes) < 0) { - sys_error ("cannot make pipe for process substitution"); + sys_error (_("cannot make pipe for process substitution")); return ((char *)NULL); } /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of @@ -3480,9 +4467,9 @@ process_substitute (string, open_for_read_in_child) pathname = make_dev_fd_filename (parent_pipe_fd); #endif /* HAVE_DEV_FD */ - if (!pathname) + if (pathname == 0) { - sys_error ("cannot make pipe for process substitution"); + sys_error (_("cannot make pipe for process substitution")); return ((char *)NULL); } @@ -3498,21 +4485,23 @@ process_substitute (string, open_for_read_in_child) if (pid == 0) { reset_terminating_signals (); /* XXX */ + free_pushed_string_input (); /* Cancel traps, in trap.c. */ restore_original_signals (); setup_async_signals (); - subshell_environment |= SUBSHELL_COMSUB; + subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB; } #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; #endif /* JOB_CONTROL */ if (pid < 0) { - sys_error ("cannot make child for process substitution"); + sys_error (_("cannot make child for process substitution")); free (pathname); #if defined (HAVE_DEV_FD) close (parent_pipe_fd); @@ -3555,15 +4544,19 @@ process_substitute (string, open_for_read_in_child) fd = open (pathname, open_for_read_in_child ? O_RDONLY|O_NONBLOCK : O_WRONLY); if (fd < 0) { - sys_error ("cannot open named pipe %s for %s", pathname, - open_for_read_in_child ? "reading" : "writing"); + /* 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 ("cannout reset nodelay mode for fd %d", fd); + sys_error (_("cannot reset nodelay mode for fd %d"), fd); exit (127); } } @@ -3573,7 +4566,7 @@ process_substitute (string, open_for_read_in_child) if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0) { - sys_error ("cannot duplicate named pipe %s as fd %d", pathname, + sys_error (_("cannot duplicate named pipe %s as fd %d"), pathname, open_for_read_in_child ? 0 : 1); exit (127); } @@ -3616,21 +4609,26 @@ process_substitute (string, open_for_read_in_child) /***********************************/ static char * -read_comsub (fd, quoted) +read_comsub (fd, quoted, rflag) int fd, quoted; + int *rflag; { - char *istring, buf[128], *bufp; - int istring_index, istring_size, c; + char *istring, buf[128], *bufp, *s; + int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul; ssize_t bufn; istring = (char *)NULL; - istring_index = istring_size = bufn = 0; + istring_index = istring_size = bufn = tflag = 0; + + for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) + skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; #ifdef __CYGWIN__ setmode (fd, O_TEXT); /* we don't want CR/LF, we want Unix-style */ #endif - /* Read the output of the command through the pipe. */ + /* Read the output of the command through the pipe. This may need to be + changed to understand multibyte characters in the future. */ while (1) { if (fd < 0) @@ -3655,7 +4653,18 @@ read_comsub (fd, quoted) /* Add the character to ISTRING, possibly after resizing it. */ RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); - if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL) + /* This is essentially quote_string inline */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) + 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) + { + tflag |= W_HASCTLESC; + istring[istring_index++] = CTLESC; + } + else if ((skip_ctlnul == 0 && c == CTLNUL) || (c == ' ' && (ifs_value && *ifs_value == 0))) istring[istring_index++] = CTLESC; istring[istring_index++] = c; @@ -3679,6 +4688,8 @@ read_comsub (fd, quoted) if (istring_index == 0) { FREE (istring); + if (rflag) + *rflag = tflag; return (char *)NULL; } @@ -3703,26 +4714,29 @@ read_comsub (fd, quoted) else strip_trailing (istring, istring_index - 1, 1); + if (rflag) + *rflag = tflag; return istring; } -/* Perform command substitution on STRING. This returns a string, - possibly quoted. */ -char * +/* Perform command substitution on STRING. This returns a WORD_DESC * with the + contained string possibly quoted. */ +WORD_DESC * command_substitute (string, quoted) char *string; int quoted; { - pid_t pid, old_pid, old_pipeline_pgrp; + pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid; char *istring; - int result, fildes[2], function_value; + int result, fildes[2], function_value, pflags, rc, tflag; + WORD_DESC *ret; istring = (char *)NULL; /* Don't fork () if there is no need to. In the case of no command to run, just return NULL. */ if (!string || !*string || (string[0] == '\n' && !string[1])) - return ((char *)NULL); + return ((WORD_DESC *)NULL); if (wordexp_only && read_but_dont_execute) { @@ -3742,10 +4756,13 @@ command_substitute (string, quoted) if (subst_assign_varlist == 0 || garglist == 0) maybe_make_export_env (); /* XXX */ + /* Flags to pass to parse_and_execute() */ + pflags = interactive ? SEVAL_RESETLINE : 0; + /* Pipe the output of executing STRING into the current shell. */ if (pipe (fildes) < 0) { - sys_error ("cannot make pipe for command substitution"); + sys_error (_("cannot make pipe for command substitution")); goto error_exit; } @@ -3756,40 +4773,47 @@ command_substitute (string, quoted) if ((subshell_environment & SUBSHELL_PIPE) == 0) pipeline_pgrp = shell_pgrp; cleanup_the_pipeline (); -#endif +#endif /* JOB_CONTROL */ + + old_async_pid = last_asynchronous_pid; + pid = make_child ((char *)NULL, subshell_environment&SUBSHELL_ASYNC); + last_asynchronous_pid = old_async_pid; - pid = make_child ((char *)NULL, 0); if (pid == 0) /* Reset the signal handlers in the child, but don't free the trap strings. */ reset_signal_handlers (); #if defined (JOB_CONTROL) + /* XXX DO THIS ONLY IN PARENT ? XXX */ set_sigchld_handler (); stop_making_children (); - pipeline_pgrp = old_pipeline_pgrp; + 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"); + sys_error (_("cannot make child for command substitution")); error_exit: FREE (istring); close (fildes[0]); close (fildes[1]); - return ((char *)NULL); + return ((WORD_DESC *)NULL); } if (pid == 0) { set_sigint_handler (); /* XXX */ + free_pushed_string_input (); + if (dup2 (fildes[1], 1) < 0) { - sys_error ("command_substitute: cannot duplicate pipe as fd 1"); + sys_error (_("command_substitute: cannot duplicate pipe as fd 1")); exit (EXECUTION_FAILURE); } @@ -3835,14 +4859,27 @@ command_substitute (string, quoted) else function_value = 0; - if (result == EXITPROG) - exit (last_command_exit_value); + if (result == ERREXIT) + rc = last_command_exit_value; + else if (result == EXITPROG) + rc = last_command_exit_value; else if (result) - exit (EXECUTION_FAILURE); + rc = EXECUTION_FAILURE; else if (function_value) - exit (return_catch_value); + rc = return_catch_value; else - exit (parse_and_execute (string, "command substitution", SEVAL_NOHIST)); + { + subshell_level++; + rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST); + subshell_level--; + } + + last_command_exit_value = rc; + rc = run_exit_trap (); +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif + exit (rc); } else { @@ -3852,7 +4889,8 @@ command_substitute (string, quoted) close (fildes[1]); - istring = read_comsub (fildes[0], quoted); + tflag = 0; + istring = read_comsub (fildes[0], quoted, &tflag); close (fildes[0]); @@ -3865,7 +4903,7 @@ command_substitute (string, quoted) /* 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)) + if (last_command_exit_value == (128 + SIGINT) && last_command_exit_signal == SIGINT) kill (getpid (), SIGINT); /* wait_for gives the terminal back to shell_pgrp. If some other @@ -3882,7 +4920,11 @@ command_substitute (string, quoted) give_terminal_to (pipeline_pgrp, 0); #endif /* JOB_CONTROL */ - return (istring); + ret = alloc_word_desc (); + ret->word = istring; + ret->flags = tflag; + + return ret; } } @@ -3900,6 +4942,7 @@ array_length_reference (s) { int len; arrayind_t ind; + char *akey; char *t, c; ARRAY *array; SHELL_VAR *var; @@ -3908,7 +4951,7 @@ array_length_reference (s) /* If unbound variables should generate an error, report one and return failure. */ - if ((var == 0 || array_p (var) == 0) && unbound_vars_is_error) + if ((var == 0 || (assoc_p (var) == 0 && array_p (var) == 0)) && unbound_vars_is_error) { c = *--t; *t = '\0'; @@ -3926,21 +4969,42 @@ array_length_reference (s) array = array_p (var) ? array_cell (var) : (ARRAY *)NULL; if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') - return (array_p (var) ? array_num_elements (array) : 1); - - ind = array_expand_index (t, len); - if (ind < 0) { - err_badarraysub (t); - return (-1); + if (assoc_p (var)) + return (assoc_num_elements (assoc_cell (var))); + else if (array_p (var)) + return (array_num_elements (array)); + else + return 1; } - if (array_p (var)) - t = array_reference (array, ind); + if (assoc_p (var)) + { + t[len - 1] = '\0'; + akey = expand_assignment_string_to_string (t, 0); /* [ */ + t[len - 1] = ']'; + if (akey == 0 || *akey == 0) + { + err_badarraysub (t); + return (-1); + } + t = assoc_reference (assoc_cell (var), akey); + } else - t = (ind == 0) ? value_cell (var) : (char *)NULL; + { + ind = array_expand_index (t, len); + 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 = STRLEN (t); + len = MB_STRLEN (t); return (len); } #endif /* ARRAY_VARS */ @@ -3964,27 +5028,95 @@ valid_brace_expansion_word (name, var_is_special) return 0; } +static int +chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) + char *name; + int quoted; + 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) + { + if (contains_dollar_at) + *contains_dollar_at = 1; + return 1; + } + + /* Now check for ${array[@]} and ${array[*]} */ +#if defined (ARRAY_VARS) + else if (valid_array_reference (name)) + { + temp1 = xstrchr (name, '['); + if (temp1 && temp1[1] == '@' && temp1[2] == ']') + { + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + 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] == ']' && 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. VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that NAME was found inside of a double-quoted expression. */ -static char * +static WORD_DESC * parameter_brace_expand_word (name, var_is_special, quoted) char *name; int var_is_special, quoted; { + WORD_DESC *ret; char *temp, *tt; intmax_t arg_index; SHELL_VAR *var; - int atype; + int atype, rflags; - /* Handle multiple digit arguments, as in ${11}. */ - + ret = 0; + temp = 0; + rflags = 0; + + /* Handle multiple digit arguments, as in ${11}. */ if (legal_number (name, &arg_index)) { tt = get_dollar_var_value (arg_index); - temp = tt ? quote_escapes (tt) : (char *)NULL; + 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) /* ${@} */ @@ -3994,8 +5126,8 @@ parameter_brace_expand_word (name, var_is_special, quoted) tt[sindex = 0] = '$'; strcpy (tt + 1, name); - temp = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, - (int *)NULL, (int *)NULL, 0); + ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, + (int *)NULL, (int *)NULL, 0); free (tt); } #if defined (ARRAY_VARS) @@ -4003,7 +5135,11 @@ parameter_brace_expand_word (name, var_is_special, quoted) { temp = array_value (name, quoted, &atype); if (atype == 0 && temp) - temp = quote_escapes (temp); + temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ? quote_string (temp) + : quote_escapes (temp); + 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)) @@ -4011,13 +5147,20 @@ parameter_brace_expand_word (name, var_is_special, quoted) if (var_isset (var) && invisible_p (var) == 0) { #if defined (ARRAY_VARS) - temp = array_p (var) ? array_reference (array_cell (var), 0) : value_cell (var); + 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 = quote_escapes (temp); + temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ? quote_string (temp) + : quote_escapes (temp); } else temp = (char *)NULL; @@ -4025,73 +5168,96 @@ parameter_brace_expand_word (name, var_is_special, quoted) else temp = (char *)NULL; - return (temp); + if (ret == 0) + { + ret = alloc_word_desc (); + ret->word = temp; + ret->flags |= rflags; + } + return ret; } /* Expand an indirect reference to a variable: ${!NAME} expands to the value of the variable whose name is the value of NAME. */ -static char * -parameter_brace_expand_indir (name, var_is_special, quoted) +static WORD_DESC * +parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at) char *name; int var_is_special, quoted; + int *quoted_dollar_atp, *contains_dollar_at; { char *temp, *t; + WORD_DESC *w; - t = parameter_brace_expand_word (name, var_is_special, quoted); + w = parameter_brace_expand_word (name, var_is_special, quoted); + t = w->word; + /* Have to dequote here if necessary */ + if (t) + { + temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + ? dequote_string (t) + : dequote_escapes (t); + free (t); + t = temp; + } + dispose_word_desc (w); + + chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at); if (t == 0) - return (t); - temp = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted); + return (WORD_DESC *)NULL; + + w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted); free (t); - return temp; + + 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 char * +static WORD_DESC * parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) char *name, *value; int c, quoted, *qdollaratp, *hasdollarat; { + WORD_DESC *w; WORD_LIST *l; char *t, *t1, *temp; int hasdol; - /* XXX - Should we tilde expand in an assignment context if C is `='? */ - if (*value == '~') - temp = bash_tilde_expand (value, 0); - else if (xstrchr (value, '~') && unquoted_substring ("=~", value)) - temp = bash_tilde_expand (value, 1); - else - temp = savestring (value); - /* If the entire expression is between double quotes, we want to treat the value as a double-quoted string, with the exception that we strip - embedded unescaped double quotes. */ - if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp) + embedded unescaped double quotes (for sh backwards compatibility). */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *value) { hasdol = 0; - t = string_extract_double_quoted (temp, &hasdol, 1); - free (temp); - temp = t; + temp = string_extract_double_quoted (value, &hasdol, 1); } + else + temp = value; + w = alloc_word_desc (); hasdol = 0; /* XXX was 0 not quoted */ l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL) : (WORD_LIST *)0; if (hasdollarat) *hasdollarat = hasdol || (l && l->next); - free (temp); + if (temp != value) + free (temp); if (l) { /* The expansion of TEMP returned something. We need to treat things - slightly differently if HASDOL is non-zero. */ - temp = string_list (l); + slightly differently if HASDOL 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. We use string_list_dollar_star instead. */ + temp = (hasdol || l->next) ? string_list_dollar_star (l) : string_list (l); + /* If l->next is not null, we know that TEMP contained "$@", since that is the only expansion that creates more than one word. */ - if ((hasdol && quoted) || l->next) + if (qdollaratp && ((hasdol && quoted) || l->next)) *qdollaratp = 1; dispose_words (l); } @@ -4101,23 +5267,32 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) a $@ in TEMP. It does not matter if the $@ is quoted, as long as it does not expand to anything. In this case, we want to return a quoted empty string. */ - temp = (char *)xmalloc (2); - temp[0] = CTLNUL; - temp[1] = '\0'; + temp = make_quoted_char ('\0'); + w->flags |= W_HASQUOTEDNULL; } else temp = (char *)NULL; if (c == '-' || c == '+') - return (temp); + { + w->word = temp; + return w; + } /* c == '=' */ t = temp ? savestring (temp) : savestring (""); t1 = dequote_string (t); free (t); - bind_variable (name, t1); +#if defined (ARRAY_VARS) + if (valid_array_reference (name)) + assign_array_element (name, t1, 0); + else +#endif /* ARRAY_VARS */ + bind_variable (name, t1, 0); free (t1); - return (temp); + + w->word = temp; + return w; } /* Deal with the right hand side of a ${name:?value} expansion in the case @@ -4133,22 +5308,14 @@ parameter_brace_expand_error (name, value) if (value && *value) { - if (*value == '~') - temp = bash_tilde_expand (value, 0); - else if (xstrchr (value, '~') && unquoted_substring ("=~", value)) - temp = bash_tilde_expand (value, 1); - else - temp = savestring (value); - - l = expand_string (temp, 0); - FREE (temp); + 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 - report_error ("%s: parameter null or not set", name); + 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. */ @@ -4171,6 +5338,34 @@ valid_length_expression (name) legal_identifier (name + 1)); /* ${#PS1} */ } +#if defined (HANDLE_MULTIBYTE) +size_t +mbstrlen (s) + const char *s; +{ + size_t clen, nc; + mbstate_t mbs, mbsbak; + + nc = 0; + memset (&mbs, 0, sizeof (mbs)); + mbsbak = mbs; + while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0) + { + if (MB_INVALIDCH(clen)) + { + clen = 1; /* assume single byte */ + mbs = mbsbak; + } + + s += clen; + nc++; + mbsbak = mbs; + } + return nc; +} +#endif + + /* Handle the parameter brace expansion that requires us to return the length of a parameter. */ static intmax_t @@ -4226,14 +5421,17 @@ parameter_brace_expand_length (name) if (legal_number (name + 1, &arg_index)) /* ${#1} */ { t = get_dollar_var_value (arg_index); - number = STRLEN (t); + number = MB_STRLEN (t); FREE (t); } #if defined (ARRAY_VARS) - else if ((var = find_variable (name + 1)) && array_p (var)) + else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && (array_p (var) || assoc_p (var))) { - t = array_reference (array_cell (var), 0); - number = STRLEN (t); + if (assoc_p (var)) + t = assoc_reference (assoc_cell (var), "0"); + else + t = array_reference (array_cell (var), 0); + number = MB_STRLEN (t); } #endif else /* ${#PS1} */ @@ -4246,7 +5444,7 @@ parameter_brace_expand_length (name) if (list) dispose_words (list); - number = STRLEN (t); + number = MB_STRLEN (t); FREE (t); } } @@ -4321,7 +5519,8 @@ skiparith (substr, delim) 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 (value, substr, vtype, e1p, e2p) +verify_substring_values (v, value, substr, vtype, e1p, e2p) + SHELL_VAR *v; char *value, *substr; int vtype; intmax_t *e1p, *e2p; @@ -4331,6 +5530,7 @@ verify_substring_values (value, substr, vtype, e1p, e2p) int expok; #if defined (ARRAY_VARS) ARRAY *a; + HASH_TABLE *h; #endif /* duplicate behavior of strchr(3) */ @@ -4340,7 +5540,7 @@ verify_substring_values (value, substr, vtype, e1p, e2p) else t = (char *)0; - temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string); + temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); *e1p = evalexp (temp1, &expok); free (temp1); if (expok == 0) @@ -4351,15 +5551,28 @@ verify_substring_values (value, substr, vtype, e1p, e2p) { case VT_VARIABLE: case VT_ARRAYMEMBER: - len = strlen (value); + 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: - a = (ARRAY *)value; - len = array_num_elements (a) + 1; + /* 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 } @@ -4370,14 +5583,20 @@ verify_substring_values (value, substr, vtype, e1p, e2p) if (*e1p < 0) /* negative offsets count from end */ *e1p += len; - if (*e1p >= len || *e1p < 0) + 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_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); t[-1] = ':'; *e2p = evalexp (temp1, &expok); @@ -4386,12 +5605,20 @@ verify_substring_values (value, substr, vtype, e1p, e2p) return (0); if (*e2p < 0) { - internal_error ("%s: substring expression < 0", t); + internal_error (_("%s: substring expression < 0"), t); return (0); } - *e2p += *e1p; /* want E2 chars starting at E1 */ - if (*e2p > len) - *e2p = len; +#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 + { + *e2p += *e1p; /* want E2 chars starting at E1 */ + if (*e2p > len) + *e2p = len; + } } else *e2p = len; @@ -4406,8 +5633,9 @@ verify_substring_values (value, substr, vtype, e1p, e2p) 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, varp, valp) +get_var_and_type (varname, value, quoted, varp, valp) char *varname, *value; + int quoted; SHELL_VAR **varp; char **valp; { @@ -4419,18 +5647,23 @@ get_var_and_type (varname, value, varp, valp) /* This sets vtype to VT_VARIABLE or VT_POSPARMS */ vtype = (varname[0] == '@' || varname[0] == '*') && varname[1] == '\0'; + if (vtype == VT_POSPARMS && varname[0] == '*') + vtype |= VT_STARSUB; *varp = (SHELL_VAR *)NULL; #if defined (ARRAY_VARS) if (valid_array_reference (varname)) { v = array_variable_part (varname, &temp, (int *)0); - if (v && array_p (v)) + if (v && (array_p (v) || assoc_p (v))) { /* [ */ if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']') { + /* Callers have to differentiate betwen indexed and associative */ vtype = VT_ARRAYVAR; - *valp = (char *)array_cell (v); + if (temp[0] == '*') + vtype |= VT_STARSUB; + *valp = array_p (v) ? (char *)array_cell (v) : (char *)assoc_cell (v); } else { @@ -4439,18 +5672,41 @@ get_var_and_type (varname, value, varp, valp) } *varp = v; } + else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')) + { + vtype = VT_VARIABLE; + *varp = v; + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } else - return -1; + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = array_value (varname, 1, (int *)NULL); + } } - else if ((v = find_variable (varname)) && array_p (v)) + else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) { vtype = VT_ARRAYMEMBER; *varp = v; - *valp = array_reference (array_cell (v), 0); + *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); } else #endif - *valp = (value && vtype == VT_VARIABLE) ? dequote_escapes (value) : value; + { + if (value && vtype == VT_VARIABLE) + { + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } + else + *valp = value; + } return vtype; } @@ -4461,6 +5717,36 @@ get_var_and_type (varname, value, varp, valp) /* */ /******************************************************/ +#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, 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. */ @@ -4471,20 +5757,28 @@ parameter_brace_substring (varname, value, substr, quoted) int quoted; { intmax_t e1, e2; - int vtype, r; - char *temp, *val, *tt; + int vtype, r, starsub; + char *temp, *val, *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, &v, &val); + vtype = get_var_and_type (varname, value, quoted, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } - r = verify_substring_values (val, substr, vtype, &e1, &e2); + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + r = verify_substring_values (v, val, substr, vtype, &e1, &e2); + this_command_name = oname; if (r <= 0) return ((r == 0) ? &expand_param_error : (char *)NULL); @@ -4492,7 +5786,13 @@ parameter_brace_substring (varname, value, substr, quoted) { 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)) @@ -4513,14 +5813,17 @@ parameter_brace_substring (varname, value, substr, quoted) break; #if defined (ARRAY_VARS) case VT_ARRAYVAR: - tt = array_subrange (array_cell (v), e1, e2, quoted); - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) - { - temp = tt ? quote_escapes (tt) : (char *)NULL; - FREE (tt); - } + if (assoc_p (v)) + /* we convert to list and take first e2 elements starting at e1th + element -- officially undefined for now */ + temp = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted); else - temp = tt; + /* 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). */ + temp = array_subrange (array_cell (v), e1, e2, starsub, quoted); + /* array_subrange now calls array_quote_escapes as appropriate, so the + caller no longer needs to. */ break; #endif default: @@ -4596,11 +5899,13 @@ pat_subst (string, pat, rep, mflags) strncpy (ret + rptr, rep, replen); rptr += replen; } - if (s == e) - e++; /* avoid infinite recursion on zero-length match */ str = e; /* e == end of match */ + if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY) break; + + if (s == e) + e++, str++; /* avoid infinite recursion on zero-length match */ } /* Now copy the unmatched portion of the input string */ @@ -4623,7 +5928,8 @@ pos_params_pat_subst (string, pat, rep, mflags) { WORD_LIST *save, *params; WORD_DESC *w; - char *ret, *tt; + char *ret; + int pchar, qflags; save = params = list_rest_of_args (); if (save == 0) @@ -4632,13 +5938,28 @@ pos_params_pat_subst (string, pat, rep, mflags) for ( ; params; params = params->next) { ret = pat_subst (params->word->word, pat, rep, mflags); - w = make_bare_word (ret); + w = alloc_word_desc (); + w->word = ret ? ret : savestring (""); dispose_word (params->word); params->word = w; - FREE (ret); } - ret = string_list ((mflags & MATCH_QUOTED) ? quote_list (save) : save); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + +#if 0 + if ((mflags & (MATCH_QUOTED|MATCH_STARSUB)) == (MATCH_QUOTED|MATCH_STARSUB)) + ret = string_list_dollar_star (quote_list (save)); + else if ((mflags & MATCH_STARSUB) == MATCH_STARSUB) + ret = string_list_dollar_star (save); + else if ((mflags & MATCH_QUOTED) == MATCH_QUOTED) + ret = string_list_dollar_at (save, qflags); + else + ret = string_list_dollar_star (save); +#else + ret = string_list_pos_params (pchar, save, qflags); +#endif + dispose_words (save); return (ret); @@ -4653,7 +5974,7 @@ parameter_brace_patsub (varname, value, patsub, quoted) char *varname, *value, *patsub; int quoted; { - int vtype, mflags; + int vtype, mflags, starsub, delim; char *val, *temp, *pat, *rep, *p, *lpatsub, *tt; SHELL_VAR *v; @@ -4662,12 +5983,15 @@ parameter_brace_patsub (varname, value, patsub, quoted) this_command_name = varname; - vtype = get_var_and_type (varname, value, &v, &val); + vtype = get_var_and_type (varname, value, quoted, &v, &val); if (vtype == -1) return ((char *)NULL); + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + mflags = 0; - if (*patsub == '/') + if (patsub && *patsub == '/') { mflags |= MATCH_GLOBREP; patsub++; @@ -4680,18 +6004,33 @@ parameter_brace_patsub (varname, value, patsub, quoted) if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) mflags |= MATCH_QUOTED; - if (rep = quoted_strchr (lpatsub, '/', ST_BACKSL)) + if (starsub) + mflags |= MATCH_STARSUB; + + /* If the pattern starts with a `/', make sure we skip over it when looking + for the replacement delimiter. */ +#if 0 + if (rep = quoted_strchr ((*patsub == '/') ? lpatsub+1 : lpatsub, '/', ST_BACKSL)) *rep++ = '\0'; else rep = (char *)NULL; +#else + delim = skip_to_delim (lpatsub, ((*patsub == '/') ? 1 : 0), "/", 0); + if (lpatsub[delim] == '/') + { + lpatsub[delim] = 0; + rep = lpatsub + delim + 1; + } + else + rep = (char *)NULL; +#endif if (rep && *rep == '\0') rep = (char *)NULL; - /* Expand PAT and REP for command, variable and parameter, arithmetic, - and process substitution. Also perform quote removal. Do not - perform word splitting or filename generation. */ - pat = expand_string_if_necessary (lpatsub, (quoted & ~Q_DOUBLE_QUOTES), expand_string_unsplit); + /* Perform the same expansions on the pattern as performed by the + pattern removal expansions. */ + pat = getpattern (lpatsub, quoted, 1); if (rep) { @@ -4701,8 +6040,14 @@ parameter_brace_patsub (varname, value, patsub, quoted) 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 (pat && pat[0] == '#') + if (mflags & MATCH_GLOBREP) + mflags |= MATCH_ANY; + else if (pat && pat[0] == '#') { mflags |= MATCH_BEG; p++; @@ -4735,7 +6080,7 @@ parameter_brace_patsub (varname, value, patsub, quoted) FREE (val); if (temp) { - tt = quote_escapes (temp); + tt = (mflags & MATCH_QUOTED) ? quote_string (temp) : quote_escapes (temp); free (temp); temp = tt; } @@ -4751,13 +6096,11 @@ parameter_brace_patsub (varname, value, patsub, quoted) break; #if defined (ARRAY_VARS) case VT_ARRAYVAR: - temp = array_patsub (array_cell (v), p, rep, mflags); - if (temp && (mflags & MATCH_QUOTED) == 0) - { - tt = quote_escapes (temp); - free (temp); - temp = tt; - } + temp = assoc_p (v) ? assoc_patsub (assoc_cell (v), p, rep, mflags) + : array_patsub (array_cell (v), p, rep, mflags); + /* Don't call quote_escapes anymore; array_patsub calls + array_quote_escapes as appropriate before adding the + space separators; ditto for assoc_patsub. */ break; #endif } @@ -4769,31 +6112,243 @@ parameter_brace_patsub (varname, value, patsub, quoted) 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; + + 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; + + ret = string_list_pos_params (pchar, save, qflags); + 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, modspec, patspec, quoted) + char *varname, *value; + int modspec; + char *patspec; + int quoted; +{ + int vtype, starsub, modop, mflags, x; + char *val, *temp, *pat, *p, *lpat, *tt; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + this_command_name = varname; + + vtype = get_var_and_type (varname, value, quoted, &v, &val); + if (vtype == -1) + 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; + + 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. FOR LATER */ + 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 && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + break; + +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp = assoc_p (v) ? assoc_modcase (assoc_cell (v), pat, modop, mflags) + : array_modcase (array_cell (v), pat, modop, mflags); + /* Don't call quote_escapes; array_modcase calls array_quote_escapes + as appropriate before adding the space separators; ditto for + assoc_modcase. */ + break; +#endif + } + + FREE (pat); + free (lpat); + + 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] == '(') + count++; + else if (s[i] == ')') + { + 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); + break; + + case '"': + i = skip_double_quoted ((char *)s, len, ++i); + break; + } + } + + return (count == 0); +} + /****************************************************************/ /* */ /* Functions to perform parameter expansion on a string */ /* */ /****************************************************************/ -/* ${[#][!]name[[:]#[#]%[%]-=?+[word][:e1[:e2]]]} */ -static char * +/* ${[#][!]name[[:][^[^]][,[,]]#[#]%[%]-=?+[word][:e1[:e2]]]} */ +static WORD_DESC * parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_dollar_at) char *string; int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at; { int check_nullness, var_is_set, var_is_null, var_is_special; - int want_substring, want_indir, want_patsub; + int want_substring, want_indir, want_patsub, want_casemod; char *name, *value, *temp, *temp1; - int t_index, sindex, c; + WORD_DESC *tdesc, *ret; + int t_index, sindex, c, tflag, modspec; intmax_t number; - value = (char *)NULL; + temp = temp1 = value = (char *)NULL; var_is_set = var_is_null = var_is_special = check_nullness = 0; - want_substring = want_indir = want_patsub = 0; + want_substring = want_indir = want_patsub = want_casemod = 0; sindex = *indexp; t_index = ++sindex; - name = string_extract (string, &t_index, "#%:-=?+/}", EX_VARNAME); + /* ${#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 + change the 1 to 0. */ +# if defined (CASEMOD_CAPCASE) + name = string_extract (string, &t_index, "#%^,~:-=?+/}", SX_VARNAME); +# else + name = string_extract (string, &t_index, "#%^,:-=?+/}", SX_VARNAME); +# endif /* CASEMOD_CAPCASE */ +#else + name = string_extract (string, &t_index, "#%:-=?+/}", SX_VARNAME); +#endif /* CASEMOD_EXPANSIONS */ + + ret = 0; + tflag = 0; /* If the name really consists of a special variable, then make sure that we have the entire name. We don't allow indirect references @@ -4844,6 +6399,13 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll want_substring = 1; else if (c == '/' && string[sindex] != RBRACE) want_patsub = 1; +#if defined (CASEMOD_EXPANSIONS) + else if (c == '^' || c == ',' || c == '~') + { + modspec = c; + want_casemod = 1; + } +#endif /* Catch the valid and invalid brace expressions that made it through the tests above. */ @@ -4897,7 +6459,14 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll free (name); *indexp = sindex; - return ((number < 0) ? &expand_param_error : itos (number)); + if (number < 0) + return (&expand_wdesc_error); + else + { + ret = alloc_word_desc (); + ret->word = itos (number); + return ret; + } } /* ${@} is identical to $@. */ @@ -4910,7 +6479,7 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll *contains_dollar_at = 1; } - /* Process ${PREFIX*} expansion. */ + /* Process ${!PREFIX*} expansion. */ if (want_indir && string[sindex - 1] == RBRACE && (string[sindex - 2] == '*' || string[sindex - 2] == '@') && legal_variable_starter ((unsigned char) name[1])) @@ -4937,8 +6506,44 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll free (xlist); free (temp1); *indexp = sindex; - return (temp); + + ret = alloc_word_desc (); + ret->word = temp; + return ret; } + +#if defined (ARRAY_VARS) + /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */ + if (want_indir && string[sindex - 1] == RBRACE && + string[sindex - 2] == ']' && valid_array_reference (name+1)) + { + char *x, *x1; + + temp1 = savestring (name + 1); + x = array_variable_name (temp1, &x1, (int *)0); /* [ */ + FREE (x); + if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']') + { + temp = array_keys (temp1, quoted); /* 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; + } + + free (temp1); + *indexp = sindex; + + ret = alloc_word_desc (); + ret->word = temp; + 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, @@ -4949,29 +6554,22 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll } if (want_indir) - temp = parameter_brace_expand_indir (name + 1, var_is_special, quoted); + tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); else - temp = parameter_brace_expand_word (name, var_is_special, quoted); + tdesc = parameter_brace_expand_word (name, var_is_special, quoted); + + if (tdesc) + { + temp = tdesc->word; + tflag = tdesc->flags; + dispose_word_desc (tdesc); + } + else + temp = (char *)0; #if defined (ARRAY_VARS) if (valid_array_reference (name)) - { - temp1 = xstrchr (name, '['); - if (temp1 && temp1[1] == '@' && temp1[2] == ']') - { - if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) - *quoted_dollar_atp = 1; - if (contains_dollar_at) - *contains_dollar_at = 1; - } /* [ */ - /* ${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] == ']' && quoted == 0) - { - if (contains_dollar_at) - *contains_dollar_at = 1; - } - } + chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at); #endif var_is_set = temp != (char *)0; @@ -5000,7 +6598,17 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll FREE (name); FREE (value); FREE (temp); - return (temp1); + + if (temp1 == &expand_param_error) + return (&expand_wdesc_error); + else if (temp1 == &expand_param_fatal) + return (&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; + return ret; } else if (want_patsub) { @@ -5008,8 +6616,40 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll FREE (name); FREE (value); FREE (temp); - return (temp1); + + if (temp1 == &expand_param_error) + return (&expand_wdesc_error); + else if (temp1 == &expand_param_fatal) + return (&expand_wdesc_fatal); + + ret = alloc_word_desc (); + ret->word = temp1; + 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; + return ret; } +#if defined (CASEMOD_EXPANSIONS) + else if (want_casemod) + { + temp1 = parameter_brace_casemod (name, temp, modspec, value, quoted); + FREE (name); + FREE (value); + FREE (temp); + + if (temp1 == &expand_param_error) + return (&expand_wdesc_error); + else if (temp1 == &expand_param_fatal) + return (&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; + return ret; + } +#endif /* Do the right thing based on which character ended the variable name. */ switch (c) @@ -5017,11 +6657,11 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll default: case '\0': bad_substitution: - report_error ("%s: bad substitution", string ? string : "??"); + report_error (_("%s: bad substitution"), string ? string : "??"); FREE (value); FREE (temp); free (name); - return &expand_param_error; + return &expand_wdesc_error; case RBRACE: if (var_is_set == 0 && unbound_vars_is_error) @@ -5031,7 +6671,7 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll FREE (temp); free (name); last_command_exit_value = EXECUTION_FAILURE; - return (interactive_shell ? &expand_param_error : &expand_param_fatal); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } break; @@ -5045,8 +6685,12 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll temp1 = parameter_brace_remove_pattern (name, temp, value, c, quoted); free (temp); free (value); - temp = temp1; - break; + + 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; + return ret; case '-': case '=': @@ -5070,10 +6714,12 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll FREE (temp); if (value) { - temp = parameter_brace_expand_rhs (name, value, c, - quoted, - quoted_dollar_atp, - contains_dollar_at); + ret = parameter_brace_expand_rhs (name, value, c, + quoted, + quoted_dollar_atp, + contains_dollar_at); + /* XXX - fix up later, esp. noting presence of + W_HASQUOTEDNULL in ret->flags */ free (value); } else @@ -5091,15 +6737,15 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll temp = (char *)NULL; if (c == '=' && var_is_special) { - report_error ("$%s: cannot assign in this way", name); + report_error (_("$%s: cannot assign in this way"), name); free (name); free (value); - return &expand_param_error; + return &expand_wdesc_error; } else if (c == '?') { parameter_brace_expand_error (name, value); - return (interactive_shell ? &expand_param_error : &expand_param_fatal); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } else if (c != '+') { @@ -5111,9 +6757,11 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll if (contains_dollar_at) *contains_dollar_at = 0; - temp = parameter_brace_expand_rhs (name, value, c, quoted, - quoted_dollar_atp, - contains_dollar_at); + ret = parameter_brace_expand_rhs (name, value, c, quoted, + quoted_dollar_atp, + contains_dollar_at); + /* XXX - fix up later, esp. noting presence of + W_HASQUOTEDNULL in tdesc->flags */ } free (value); } @@ -5121,13 +6769,20 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll break; } free (name); - return (temp); + + 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 char * +static WORD_DESC * param_expand (string, sindex, quoted, expanded_something, contains_dollar_at, quoted_dollar_at_p, had_quoted_null_p, pflags) @@ -5141,11 +6796,15 @@ param_expand (string, sindex, quoted, expanded_something, intmax_t number; SHELL_VAR *var; WORD_LIST *list; + WORD_DESC *tdesc, *ret; + int tflag; 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) @@ -5169,9 +6828,15 @@ param_expand (string, sindex, quoted, expanded_something, uerror[2] = '\0'; err_unboundvar (uerror); last_command_exit_value = EXECUTION_FAILURE; - return (interactive_shell ? &expand_param_error : &expand_param_fatal); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } - temp = temp1 ? quote_escapes (temp1) : (char *)NULL; + 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. */ @@ -5211,7 +6876,7 @@ param_expand (string, sindex, quoted, expanded_something, uerror[2] = '\0'; err_unboundvar (uerror); last_command_exit_value = EXECUTION_FAILURE; - return (interactive_shell ? &expand_param_error : &expand_param_fatal); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } } else @@ -5222,6 +6887,16 @@ param_expand (string, sindex, quoted, expanded_something, case '*': /* `$*' */ list = list_rest_of_args (); + if (list == 0 && unbound_vars_is_error) + { + uerror[0] = '$'; + uerror[1] = '*'; + uerror[2] = '\0'; + err_unboundvar (uerror); + last_command_exit_value = EXECUTION_FAILURE; + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + /* If there are no command-line arguments, this should just disappear if there are other characters in the expansion, even if it's quoted. */ @@ -5234,15 +6909,32 @@ param_expand (string, sindex, quoted, expanded_something, 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 = string_list_dollar_star (list); + temp = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (list) : string_list (list); temp1 = quote_string (temp); + if (*temp == 0) + tflag |= W_HASQUOTEDNULL; free (temp); temp = temp1; } else { - /* If the $* is not quoted it is identical to $@ */ + /* 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 1 +# if defined (HANDLE_MULTIBYTE) + if (expand_no_split_dollar_star && ifs_firstc[0] == 0) +# else + if (expand_no_split_dollar_star && ifs_firstc == 0) +# endif + temp = string_list_dollar_star (list); + else + temp = string_list_dollar_at (list, quoted); +#else temp = string_list_dollar_at (list, quoted); +#endif if (expand_no_split_dollar_star == 0 && contains_dollar_at) *contains_dollar_at = 1; } @@ -5257,6 +6949,16 @@ param_expand (string, sindex, quoted, expanded_something, case '@': /* `$@' */ list = list_rest_of_args (); + if (list == 0 && unbound_vars_is_error) + { + uerror[0] = '$'; + uerror[1] = '@'; + uerror[2] = '\0'; + err_unboundvar (uerror); + last_command_exit_value = EXECUTION_FAILURE; + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + /* 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 @@ -5278,11 +6980,13 @@ param_expand (string, sindex, quoted, expanded_something, break; case LBRACE: - temp = parameter_brace_expand (string, &zindex, quoted, - quoted_dollar_at_p, - contains_dollar_at); - if (temp == &expand_param_error || temp == &expand_param_fatal) - return (temp); + tdesc = parameter_brace_expand (string, &zindex, quoted, + 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 @@ -5292,25 +6996,26 @@ param_expand (string, sindex, quoted, expanded_something, in the string, discard TEMP, and go on. The exception to this is when we have "${@}" and $1 is '', since $@ needs special handling. */ - if (temp && QUOTED_NULL (temp)) + 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); - temp = (char *)NULL; + 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; - temp = extract_command_subst (string, &t_index); + temp = extract_command_subst (string, &t_index, 0); zindex = t_index; /* For Posix.2-style `$(( ))' arithmetic substitution, @@ -5331,8 +7036,14 @@ param_expand (string, sindex, quoted, expanded_something, /* Cut off ending `)' */ temp2[t_index] = '\0'; + if (chk_arithsub (temp2, t_index) == 0) + { + free (temp2); + goto comsub; + } + /* Expand variables found inside the expression. */ - temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); arithsub: @@ -5346,17 +7057,26 @@ arithsub: if (interactive_shell == 0 && posixly_correct) { last_command_exit_value = EXECUTION_FAILURE; - return (&expand_param_fatal); + return (&expand_wdesc_fatal); } else - return (&expand_param_error); + return (&expand_wdesc_error); } temp = itos (number); break; } comsub: - temp1 = command_substitute (temp, quoted); + if (pflags & PF_NOCOMSUB) + /* we need zindex+1 because string[zindex] == RPAREN */ + temp1 = substring (string, *sindex, zindex+1); + else + { + tdesc = command_substitute (temp, quoted); + temp1 = tdesc ? tdesc->word : (char *)NULL; + if (tdesc) + dispose_word_desc (tdesc); + } FREE (temp); temp = temp1; break; @@ -5368,9 +7088,16 @@ comsub: 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_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string); + temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); goto arithsub; @@ -5400,15 +7127,27 @@ comsub: if (var && invisible_p (var) == 0 && var_isset (var)) { #if defined (ARRAY_VARS) - if (array_p (var)) + if (assoc_p (var) || array_p (var)) { - temp = array_reference (array_cell (var), 0); + temp = array_p (var) ? array_reference (array_cell (var), 0) + : assoc_reference (assoc_cell (var), "0"); if (temp) - temp = quote_escapes (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 = quote_escapes (value_cell (var)); + { + temp = value_cell (var); + + temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ? quote_string (temp) + : quote_escapes (temp); + } + free (temp1); goto return0; @@ -5416,6 +7155,7 @@ comsub: temp = (char *)NULL; +unbound_variable: if (unbound_vars_is_error) err_unboundvar (temp1); else @@ -5427,8 +7167,8 @@ comsub: free (temp1); last_command_exit_value = EXECUTION_FAILURE; return ((unbound_vars_is_error && interactive_shell == 0) - ? &expand_param_fatal - : &expand_param_error); + ? &expand_wdesc_fatal + : &expand_wdesc_error); } if (string[zindex]) @@ -5436,7 +7176,14 @@ comsub: return0: *sindex = zindex; - return (temp); + + if (ret == 0) + { + ret = alloc_word_desc (); + ret->flags = tflag; /* XXX */ + ret->word = temp; + } + return ret; } /* Make a word list which is the result of parameter and variable @@ -5504,10 +7251,13 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */ int quoted_state; + /* State flags */ int had_quoted_null; int has_dollar_at; int tflag; + int assignoff; /* If assignment, offset of `=' */ + register unsigned char c; /* Current character. */ int t_index; /* For calls to string_extract_xxx. */ @@ -5523,11 +7273,15 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin string = word->word; if (string == 0) goto finished_with_string; - string_size = strlen (string); + /* Don't need the string length for the SADD... and COPY_ macros unless + multibyte characters are possible. */ + 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; ;) @@ -5545,26 +7299,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin #if HANDLE_MULTIBYTE if (MB_CUR_MAX > 1 && string[sindex]) { - int i; - mbstate_t state_bak; - size_t mblength; - - state_bak = state; - mblength = mbrlen (string + sindex, string_size - sindex, &state); - if (mblength == (size_t)-1 || mblength == (size_t)-2) - { - state = state_bak; - mblength = 1; - } - if (mblength < 1) - mblength = 1; - temp = (char *)xmalloc (mblength + 2); - temp[0] = CTLESC; - for (i = 0; i < mblength; i++) - temp[i+1] = string[sindex++]; - temp[mblength + 1] = '\0'; - - goto add_string; + SADD_MBQCHAR_BODY(temp, string, sindex, string_size); } else #endif @@ -5593,7 +7328,7 @@ add_string: case '<': case '>': { - if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || posixly_correct) + if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)) || posixly_correct) { sindex--; /* add_character: label increments sindex */ goto add_character; @@ -5616,37 +7351,172 @@ 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 && 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 `=' appears in the word and prepare to + do tilde expansion following the first `='. */ + 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 0 + else if ((word->flags & W_ASSIGNMENT) && + (posixly_correct == 0 || (word->flags & W_TILDEEXP)) && + string[sindex+1] == '~') + word->flags |= W_ITILDE; +#endif + if (isexp == 0 && isifs (c)) + goto add_ifs_character; + else + goto add_character; + + case ':': + if (word->flags & W_NOTILDE) + { + if (isexp == 0 && isifs (c)) + goto add_ifs_character; + else + goto add_character; + } + + if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS|W_TILDEEXP)) && + string[sindex+1] == '~') + word->flags |= W_ITILDE; + + if (isexp == 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. */ + 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 && 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; has_dollar_at = 0; - temp = param_expand (string, &sindex, quoted, expanded_something, + tword = param_expand (string, &sindex, quoted, expanded_something, &has_dollar_at, "ed_dollar_at, - &had_quoted_null, 0); + &had_quoted_null, + (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0); - if (temp == &expand_param_error || temp == &expand_param_fatal) + if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal) { free (string); free (istring); - return ((temp == &expand_param_error) ? &expand_word_error - : &expand_word_fatal); + 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; + + temp = tword->word; + dispose_word_desc (tword); + goto add_string; break; case '`': /* Backquoted command substitution. */ { - sindex++; + 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; + } + 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; - temp = string_extract (string, &sindex, "`", 0); - de_backslash (temp); - temp1 = command_substitute (temp, quoted); + 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); + temp1 = tword ? tword->word : (char *)NULL; + if (tword) + dispose_word_desc (tword); + } FREE (temp); temp = temp1; goto dollar_add_string; @@ -5696,9 +7566,9 @@ add_twochars: case '"': #if 0 - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE)) + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (word->flags & W_DQUOTE)) #else - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) #endif goto add_character; @@ -5713,11 +7583,13 @@ add_twochars: if (temp && *temp) { - tword = make_word (temp); /* XXX */ - free (temp); + tword = alloc_word_desc (); + tword->word = temp; + temp = (char *)NULL; has_dollar_at = 0; + /* Need to get W_HASQUOTEDNULL flag through this function. */ list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL); if (list == &expand_word_error || list == &expand_word_fatal) @@ -5753,6 +7625,9 @@ add_twochars: if (list) dequote_list (list); + if (list && list->word && (list->word->flags & W_HASQUOTEDNULL)) + had_quoted_null = 1; + if (has_dollar_at) { quoted_dollar_at++; @@ -5792,8 +7667,9 @@ add_twochars: else { temp = savestring (list->word->word); + tflag = list->word->flags; dispose_words (list); -#if 1 + /* 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 @@ -5802,13 +7678,13 @@ add_twochars: contain other characters. For example, if we have x"$*"y or "x$*y" and there are no positional parameters, the $* should expand into nothing. */ - /* HOWEVER, this fails if the string contains a literal - CTLNUL or CTLNUL is contained in the (non-null) expansion - of some variable. I'm not sure what to do about this - yet. */ - if (QUOTED_NULL (temp) == 0) + /* 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 */ -#endif } } else @@ -5840,9 +7716,9 @@ add_twochars: case '\'': #if 0 - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE)) + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (word->flags & W_DQUOTE)) #else - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) #endif goto add_character; @@ -5883,6 +7759,7 @@ add_twochars: default: /* This is the fix for " $@ " */ + add_ifs_character: if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c))) { if (string[sindex]) /* from old goto dollar_add_string */ @@ -5895,31 +7772,12 @@ add_twochars: else { #if HANDLE_MULTIBYTE - /* XXX - I'd like to use SCOPY_CHAR_I here. */ + if (MB_CUR_MAX > 1) + sindex--; + if (MB_CUR_MAX > 1) { - int i; - mbstate_t state_bak; - size_t mblength; - - sindex--; - state_bak = state; - mblength = mbrlen (string + sindex, string_size - sindex, &state); - if (mblength == (size_t)-1 || mblength == (size_t)-2) - { - state = state_bak; - mblength = 1; - } - if (mblength < 1) - mblength = 1; - - temp = (char *)xmalloc (mblength + 2); - temp[0] = CTLESC; - for (i = 0; i < mblength; i++) - temp[i + 1] = string[sindex++]; - temp[mblength + 1] = '\0'; - - goto add_string; + SADD_MBQCHAR_BODY(temp, string, sindex, string_size); } else #endif @@ -5978,6 +7836,7 @@ finished_with_string: istring[0] = CTLNUL; istring[1] = '\0'; tword = make_bare_word (istring); + 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; @@ -5991,9 +7850,9 @@ finished_with_string: else { tword = make_bare_word (istring); - list = make_word_list (tword, (WORD_LIST *)NULL); if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) tword->flags |= W_QUOTED; + list = make_word_list (tword, (WORD_LIST *)NULL); } #else else @@ -6003,13 +7862,19 @@ finished_with_string: else if (word->flags & W_NOSPLIT) { tword = make_bare_word (istring); - list = make_word_list (tword, (WORD_LIST *)NULL); 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_NOEXPAND) + tword->flags |= W_NOEXPAND; /* XXX */ if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) tword->flags |= W_QUOTED; + if (had_quoted_null) + tword->flags |= W_HASQUOTEDNULL; + list = make_word_list (tword, (WORD_LIST *)NULL); } else { @@ -6028,13 +7893,19 @@ finished_with_string: else { tword = make_bare_word (istring); - list = make_word_list (tword, (WORD_LIST *)NULL); if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) tword->flags |= W_QUOTED; if (word->flags & W_ASSIGNMENT) tword->flags |= W_ASSIGNMENT; + if (word->flags & W_COMPASSIGN) + tword->flags |= W_COMPASSIGN; if (word->flags & W_NOGLOB) tword->flags |= W_NOGLOB; + if (word->flags & W_NOEXPAND) + tword->flags |= W_NOEXPAND; + if (had_quoted_null) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + list = make_word_list (tword, (WORD_LIST *)NULL); } } @@ -6073,6 +7944,11 @@ string_quote_removal (string, quoted) { 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 */ @@ -6122,8 +7998,8 @@ word_quote_removal (word, quoted) char *t; t = string_quote_removal (word->word, quoted); - w = make_bare_word (t); - free (t); + w = alloc_word_desc (); + w->word = t ? t : savestring (""); return (w); } @@ -6135,12 +8011,23 @@ word_list_quote_removal (list, quoted) WORD_LIST *list; int quoted; { - WORD_LIST *result, *t, *tresult; + 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); } @@ -6160,9 +8047,10 @@ setifs (v) unsigned char uc; ifs_var = v; - ifs_value = v ? value_cell (v) : " \t\n"; + ifs_value = (v && value_cell (v)) ? value_cell (v) : " \t\n"; - /* Should really merge ifs_cmap with sh_syntaxtab. */ + /* 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++) { @@ -6170,7 +8058,29 @@ setifs (v) ifs_cmap[uc] = 1; } +#if defined (HANDLE_MULTIBYTE) + if (ifs_value == 0) + { + ifs_firstc[0] = '\0'; + ifs_firstc_len = 1; + } + 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 * @@ -6208,12 +8118,19 @@ static WORD_LIST * word_list_split (list) WORD_LIST *list; { - WORD_LIST *result, *t, *tresult; + WORD_LIST *result, *t, *tresult, *e; for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) { tresult = word_split (t->word, ifs_value); - result = (WORD_LIST *) list_append (result, tresult); + if (result == 0) + result = e = tresult; + else + { + e->next = tresult; + while (e->next) + e = e->next; + } } return (result); } @@ -6224,6 +8141,24 @@ word_list_split (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 */ + 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) \ @@ -6407,7 +8342,7 @@ glob_expand_word_list (tlist, eflags) or directory". However, I would like to report errors like "Read failed". */ - if (GLOB_FAILED (glob_array)) + if (glob_array == 0 || GLOB_FAILED (glob_array)) { glob_array = (char **)xmalloc (sizeof (char *)); glob_array[0] = (char *)NULL; @@ -6435,6 +8370,11 @@ glob_expand_word_list (tlist, eflags) output_list = (WORD_LIST *)list_append (glob_list, output_list); PREPEND_LIST (tlist, disposables); } + else if (fail_glob_expansion != 0) + { + 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. */ @@ -6528,6 +8468,30 @@ brace_expand_word_list (tlist, eflags) } #endif +#if defined (ARRAY_VARS) +/* Take WORD, a compound associative array assignment, and internally run + 'declare -A w', where W is the variable name portion of WORD. */ +static int +make_internal_declare (word, option) + char *word; + char *option; +{ + int t; + WORD_LIST *wl; + WORD_DESC *w; + + w = make_word (word); + + t = assignment (w->word, 0); + w->word[t] = '\0'; + + wl = make_word_list (w, (WORD_LIST *)NULL); + wl = make_word_list (make_word (option), wl); + + return (declare_builtin (wl)); +} +#endif + static WORD_LIST * shell_expand_word_list (tlist, eflags) WORD_LIST *tlist; @@ -6545,28 +8509,33 @@ shell_expand_word_list (tlist, eflags) next = tlist->next; - /* 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 (((tlist->word->flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT) && - (posixly_correct == 0 || (tlist->word->flags & W_TILDEEXP)) && - (unquoted_substring ("=~", temp_string) || unquoted_substring (":~", temp_string))) +#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)) { - tlist->word->word = bash_tilde_expand (temp_string, 1); - free (temp_string); - } - else if (temp_string[0] == '~') - { - tlist->word->word = bash_tilde_expand (temp_string, 0); - free (temp_string); + int t; + + if (tlist->word->flags & W_ASSIGNASSOC) + make_internal_declare (tlist->word->word, "-A"); + + t = do_word_assignment (tlist->word); + 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'; + tlist->word->flags &= ~(W_ASSIGNMENT|W_NOSPLIT|W_COMPASSIGN|W_ASSIGNARG|W_ASSIGNASSOC); } +#endif expanded_something = 0; expanded = expand_word_internal @@ -6585,9 +8554,9 @@ shell_expand_word_list (tlist, eflags) last_command_exit_value = EXECUTION_FAILURE; if (expanded == &expand_word_error) - jump_to_top_level (DISCARD); + exp_jump_to_top_level (DISCARD); else - jump_to_top_level (FORCE_EOF); + exp_jump_to_top_level (FORCE_EOF); } /* Don't split words marked W_NOSPLIT. */ @@ -6654,16 +8623,16 @@ expand_word_list_internal (list, eflags) for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) { this_command_name = (char *)NULL; /* no arithmetic errors */ - tint = do_assignment (temp_list->word->word); + tint = do_word_assignment (temp_list->word); /* Variable assignment errors in non-interactive shells running in Posix.2 mode cause the shell to exit. */ if (tint == 0) { last_command_exit_value = EXECUTION_FAILURE; if (interactive_shell == 0 && posixly_correct) - jump_to_top_level (FORCE_EOF); + exp_jump_to_top_level (FORCE_EOF); else - jump_to_top_level (DISCARD); + exp_jump_to_top_level (DISCARD); } } dispose_words (subst_assign_varlist); @@ -6702,26 +8671,34 @@ expand_word_list_internal (list, eflags) if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist) { - sh_assign_func_t *assign_func; + sh_wassign_func_t *assign_func; /* If the remainder of the words expand to nothing, Posix.2 requires that the variable and environment assignments affect the shell's environment. */ - assign_func = new_list ? assign_in_env : do_assignment; + assign_func = new_list ? assign_in_env : do_word_assignment; + tempenv_assign_error = 0; for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) { this_command_name = (char *)NULL; - tint = (*assign_func) (temp_list->word->word); + assigning_in_environment = (assign_func == assign_in_env); + tint = (*assign_func) (temp_list->word); + assigning_in_environment = 0; /* Variable assignment errors in non-interactive shells running in Posix.2 mode cause the shell to exit. */ - if (tint == 0 && assign_func == do_assignment) + if (tint == 0) { - last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) - jump_to_top_level (FORCE_EOF); + 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 - jump_to_top_level (DISCARD); + tempenv_assign_error++; } } diff --git a/src/bin/bash/subst.h b/src/bin/bash/subst.h index 0acfdd7c6a..b0149cc12c 100644 --- a/src/bin/bash/subst.h +++ b/src/bin/bash/subst.h @@ -1,22 +1,22 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_ @@ -31,14 +31,28 @@ to unconditionally retain the backslash. Q_PATQUOTE means that we're expanding a pattern ${var%#[#%]pattern} in an expansion surrounded by double quotes. */ -#define Q_DOUBLE_QUOTES 0x1 -#define Q_HERE_DOCUMENT 0x2 -#define Q_KEEP_BACKSLASH 0x4 -#define Q_PATQUOTE 0x8 +#define Q_DOUBLE_QUOTES 0x01 +#define Q_HERE_DOCUMENT 0x02 +#define Q_KEEP_BACKSLASH 0x04 +#define Q_PATQUOTE 0x08 #define Q_QUOTED 0x10 #define Q_ADDEDQUOTES 0x20 #define Q_QUOTEDNULL 0x40 +/* Flag values controlling how assignment statements are treated. */ +#define ASS_APPEND 0x01 +#define ASS_MKLOCAL 0x02 +#define ASS_MKASSOC 0x04 + +/* Flags for the string extraction functions. */ +#define SX_NOALLOC 0x01 /* just skip; don't return substring */ +#define SX_VARNAME 0x02 /* variable name; for string_extract () */ +#define SX_REQMATCH 0x04 /* closing/matching delimiter required */ +#define SX_COMMAND 0x08 /* extracting a shell script/command */ +#define SX_NOCTLESC 0x10 /* don't honor CTLESC quoting */ +#define SX_NOESCCTLNUL 0x20 /* don't let CTLESC quote CTLNUL */ +#define SX_NOLONGJMP 0x40 /* don't longjmp on fatal error */ + /* Remove backslashes which are quoting backquotes from STRING. Modifies STRING, and returns a pointer to it. */ extern char * de_backslash __P((char *)); @@ -48,8 +62,9 @@ extern void unquote_bang __P((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 ")". */ -extern char *extract_command_subst __P((char *, int *)); + Make (SINDEX) get the position just after the matching ")". + XFLAGS is additional flags to pass to other extraction functions, */ +extern char *extract_command_subst __P((char *, int *, int)); /* Extract the $[ construct in STRING, and return a new string. Start extracting at (SINDEX) as if we had just seen "$[". @@ -80,6 +95,12 @@ extern char *string_list_dollar_star __P((WORD_LIST *)); /* Expand $@ into a single string, obeying POSIX rules. */ extern char *string_list_dollar_at __P((WORD_LIST *, int)); +/* Turn the positional paramters 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 __P((int, WORD_LIST *, int)); + /* Perform quoted null character removal on each element of LIST. This modifies LIST. */ extern void word_list_remove_quoted_nulls __P((WORD_LIST *)); @@ -88,16 +109,18 @@ extern void word_list_remove_quoted_nulls __P((WORD_LIST *)); STRING. */ extern WORD_LIST *list_string __P((char *, char *, int)); +extern char *ifs_firstchar __P((int *)); extern char *get_word_from_string __P((char **, char *, char **)); extern char *strip_trailing_ifs_whitespace __P((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 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. */ -extern int do_assignment __P((const char *)); -extern int do_assignment_no_expand __P((const char *)); + 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 __P((char *)); +extern int do_assignment_no_expand __P((char *)); +extern int do_word_assignment __P((WORD_DESC *)); /* Append SOURCE to TARGET at INDEX. SIZE is the current amount of space allocated to TARGET. SOURCE can be NULL, in which @@ -126,8 +149,11 @@ extern int number_of_args __P((void)); takes care of quote removal. */ extern WORD_LIST *expand_string_unsplit __P((char *, int)); +/* Expand the rhs of an assignment statement. */ +extern WORD_LIST *expand_string_assignment __P((char *, int)); + /* Expand a prompt string. */ -extern WORD_LIST *expand_prompt_string __P((char *, int)); +extern WORD_LIST *expand_prompt_string __P((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 @@ -141,10 +167,20 @@ extern WORD_LIST *expand_string __P((char *, int)); to a string and deallocating the WORD_LIST *. */ extern char *expand_string_to_string __P((char *, int)); extern char *expand_string_unsplit_to_string __P((char *, int)); +extern char *expand_assignment_string_to_string __P((char *, int)); -/* De-quoted quoted characters in STRING. */ +/* Expand an arithmetic expression string */ +extern char *expand_arith_string __P((char *, int)); + +/* De-quote quoted characters in STRING. */ extern char *dequote_string __P((char *)); +/* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */ +extern char *dequote_escapes __P((char *)); + +/* De-quote quoted characters in each word in LIST. */ +extern WORD_LIST *dequote_list __P((WORD_LIST *)); + /* Expand WORD, performing word splitting on the result. This does parameter expansion, command substitution, arithmetic expansion, word splitting, and quote removal. */ @@ -166,6 +202,12 @@ extern char *quote_string __P((char *)); in a string. */ extern char *quote_escapes __P((char *)); +/* And remove such quoted special characters. */ +extern char *remove_quoted_escapes __P((char *)); + +/* Remove CTLNUL characters from STRING unless they are quoted with CTLESC. */ +extern char *remove_quoted_nulls __P((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 __P((char *, int)); @@ -204,9 +246,10 @@ extern WORD_LIST *expand_words_no_vars __P((WORD_LIST *)); command substitution, arithmetic expansion, and word splitting. */ extern WORD_LIST *expand_words_shellexp __P((WORD_LIST *)); -extern char *command_substitute __P((char *, int)); +extern WORD_DESC *command_substitute __P((char *, int)); extern char *pat_subst __P((char *, char *, char *, int)); +extern int fifos_pending __P((void)); extern void unlink_fifo_list __P((void)); extern WORD_LIST *list_string_with_quotes __P((char *)); @@ -220,10 +263,15 @@ extern char *remove_backslashes __P((char *)); extern char *cond_expand_word __P((WORD_DESC *, int)); #endif +/* Flags for skip_to_delim */ +#define SD_NOJMP 0x01 /* don't longjmp on fatal error. */ +#define SD_INVERT 0x02 /* look for chars NOT in passed set */ + +extern int skip_to_delim __P((char *, int, char *, int)); + #if defined (READLINE) extern int char_is_quoted __P((char *, int)); extern int unclosed_pair __P((char *, int, char *)); -extern int skip_to_delim __P((char *, int, char *)); extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int *, int *)); #endif @@ -231,7 +279,13 @@ extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int *, int *)); extern SHELL_VAR *ifs_var; extern char *ifs_value; extern unsigned char ifs_cmap[]; + +#if defined (HANDLE_MULTIBYTE) +extern unsigned char ifs_firstc[]; +extern size_t ifs_firstc_len; +#else extern unsigned char ifs_firstc; +#endif /* Evaluates to 1 if C is a character in $IFS. */ #define isifs(c) (ifs_cmap[(unsigned char)(c)] != 0) diff --git a/src/bin/bash/support/Makefile.in b/src/bin/bash/support/Makefile.in index e437c69594..1ff3f1a913 100644 --- a/src/bin/bash/support/Makefile.in +++ b/src/bin/bash/support/Makefile.in @@ -2,28 +2,26 @@ # Simple Makefile for the support programs. # # documentation support: man2html -# testing support: printenv recho zecho +# testing support: printenv recho zecho xcase # # bashbug lives here but is created by the top-level makefile # # Currently only man2html is built # -# -# Copyright (C) 1998 Free Software Foundation, Inc. +# Copyright (C) 1998-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 2, or (at your option) -# any later version. +# 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # # Boilerplate @@ -36,6 +34,7 @@ BUILD_DIR = @BUILD_DIR@ RM = rm -f SHELL = @MAKE_SHELL@ CC = @CC@ +CC_FOR_BUILD = @CC_FOR_BUILD@ EXEEXT = @EXEEXT@ @@ -52,10 +51,12 @@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ -LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ LIBS = @LIBS@ +LIBS_FOR_BUILD = ${LIBS} # XXX + +LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) -LDFLAGS_FOR_BUILD = $(LDFLAGS) +LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) INCLUDES = -I${BUILD_DIR} -I${topdir} @@ -75,9 +76,12 @@ OBJ1 = man2html.o all: man2html$(EXEEXT) man2html$(EXEEXT): $(OBJ1) - $(CC) $(CCFLAGS) $(OBJ1) -o $@ ${LIBS} + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} clean: - rm man2html + $(RM) man2html$(EXEEXT) + +distclean maintainer-clean mostlyclean: clean + $(RM) $(OBJ1) man2html.o: man2html.c diff --git a/src/bin/bash/support/bash.xbm b/src/bin/bash/support/bash.xbm index 5c32613e08..14bbe6aac4 100644 --- a/src/bin/bash/support/bash.xbm +++ b/src/bin/bash/support/bash.xbm @@ -21,6 +21,7 @@ Icons { Simon. +Copyright (C) 1992 Simon Marshall ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #define bash_width 64 #define bash_height 48 diff --git a/src/bin/bash/support/bashbug.sh b/src/bin/bash/support/bashbug.sh index ceb4afaf60..b00a55be90 100644 --- a/src/bin/bash/support/bashbug.sh +++ b/src/bin/bash/support/bashbug.sh @@ -4,24 +4,23 @@ # # The bug address depends on the release status of the shell. Versions # with status `devel', `alpha', `beta', or `rc' mail bug reports to -# chet@po.cwru.edu and, optionally, to bash-testers@po.cwru.edu. +# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. # Other versions send mail to bug-bash@gnu.org. # -# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# Copyright (C) 1996-2004 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # # configuration section: @@ -39,35 +38,19 @@ MACHTYPE="!MACHTYPE!" PATH=/bin:/usr/bin:/usr/local/bin:$PATH export PATH -# If the OS supplies a program to make temp files with semi-random names, -# use it. +# Check if TMPDIR is set, default to /tmp : ${TMPDIR:=/tmp} -rm_tmp1=false -rm_tmp2=false -# if we don't have mktemp or tempfile, we don't want to see error messages -# like `mktemp: not found', so temporarily redirect stderr using {...} while -# trying to run them. this may fail using old versions of the bourne shell -# that run {...} blocks with redirections in subshells; in that case we're -# no worse off than previous versions - -{ TEMPFILE1=`mktemp "$TMPDIR/bbug.XXXXXX" 2>/dev/null` ; } 2>/dev/null -if [ -z "$TEMPFILE1" ]; then - { TEMPFILE1=`tempfile --prefix bbug --mode 600 2>/dev/null`; } 2>/dev/null -fi -if [ -z "$TEMPFILE1" ]; then - TEMPFILE1=$TMPDIR/bbug.$$ - rm_tmp1=true -fi -{ TEMPFILE2=`mktemp "$TMPDIR/bbug.XXXXXX" 2>/dev/null`; } 2>/dev/null -if [ -z "$TEMPFILE2" ]; then - { TEMPFILE2=`tempfile --prefix bbug --mode 600 2>/dev/null`; } 2>/dev/null -fi -if [ -z "$TEMPFILE2" ]; then - TEMPFILE2="$TMPDIR/bbug.$$.x" - rm_tmp2=true -fi +#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}" @@ -116,10 +99,10 @@ case "$N" in *) n= c='\c' ;; esac -BASHTESTERS="bash-testers@po.cwru.edu" +BASHTESTERS="bash-testers@cwru.edu" case "$RELSTATUS" in -alpha*|beta*|devel*|rc*) BUGBASH=chet@po.cwru.edu ;; +alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; *) BUGBASH=bug-bash@gnu.org ;; esac @@ -166,8 +149,8 @@ fi : ${USER=${LOGNAME-`whoami`}} -trap 'rm -f "$TEMPFILE1" "$TEMPFILE2"; exit 1' 1 2 3 13 15 -trap 'rm -f "$TEMPFILE1" "$TEMPFILE2"' 0 +trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15 +trap 'rm -rf "$TEMPDIR"' 0 UN= if (uname) >/dev/null 2>&1; then @@ -187,9 +170,6 @@ fi INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' -# this is raceable unless (hopefully) we used mktemp(1) or tempfile(1) -$rm_tmp1 && rm -f "$TEMPFILE1" - cat > "$TEMPFILE1" <. +*/ #include "config.h" @@ -47,6 +47,9 @@ extern char *optarg; extern char *dist_version; extern int patch_level; +extern char *shell_version_string __P((void)); +extern void show_shell_version __P((int)); + char *shell_name = "bash"; char *progname; diff --git a/src/bin/bash/support/checkbashisms b/src/bin/bash/support/checkbashisms new file mode 100755 index 0000000000..ea6cc14ffb --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/support/config.guess b/src/bin/bash/support/config.guess index 56681081e2..994d98a466 100644 --- a/src/bin/bash/support/config.guess +++ b/src/bin/bash/support/config.guess @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. -timestamp='2002-03-20' +timestamp='2008-03-12' # 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 @@ -17,13 +18,15 @@ timestamp='2002-03-20' # # 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. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # 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. + # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. @@ -53,8 +56,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008,2009 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." @@ -66,11 +69,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -88,40 +91,49 @@ if test $# != 0; then exit 1 fi +trap 'exit 1' 1 2 15 -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 +# 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. -# CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. -set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c ; +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { 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) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; - if test $? = 0 ; then + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; - rm -f $dummy.c $dummy.o $dummy.rel ; 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' +esac ; set_cc_for_build= ;' # 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) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH -elif (test -f /usr/5bin/uname) >/dev/null 2>&1 ; then # bash - PATH=$PATH:/usr/5bin fi -UNAME=`(uname) 2>/dev/null` || UNAME=unknown # bash 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 @@ -130,61 +142,6 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - # NOTE -- begin cases added for bash (mostly legacy) -- NOTE - mac68k:machten:*:*) - echo mac68k-apple-machten${UNAME_RELEASE} - exit 0 ;; - concurrent*:*:*:*) - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo concurrent-concurrent-sysv3 - else - echo concurrent-concurrent-bsd - fi - exit 0 ;; - ppc*:SunOS:5.*:*) - echo ppc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sparc:UNIX_SV:4.*:*) - echo sparc-unknown-sysv${UNAME_RELEASE} - exit 0 ;; - mips:UNIX_SV:4.*:*) - echo mips-mips-sysv${UNAME_RELEASE} - exit 0 ;; - mips:OSF*1:*:*) - echo mips-mips-osf1 - exit 0 ;; - mips:4.4BSD:*:*) - echo mips-mips-bsd4.4 - exit 0 ;; - MIS*:SMP_DC.OSx:*:dcosx) # not the same as below - echo pyramid-pyramid-sysv4 - exit 0 ;; - news*:NEWS*:*:*) - echo mips-sony-newsos${UNAME_RELEASE} - exit 0 ;; - *370:AIX:*:*) - echo ibm370-ibm-aix${UNAME_RELEASE} - exit 0 ;; - ksr1:OSF*1:*:*) - echo ksr1-ksr-osf1 - exit 0 ;; - esa:OSF*1:*:* | ESA:OSF*:*:*) - echo esa-ibm-osf1 - exit 0 ;; - DNP*:DNIX:*:*) - echo m68k-dnix-sysv - exit 0 ;; - *3b2*:*:*:*) - echo we32k-att-sysv3 - exit 0 ;; - Alpha*:Windows_NT:*:SP*) - echo alpha-pc-opennt - exit 0 ;; - *:Windows_NT:*:SP*) - echo i386-pc-opennt - exit 0 ;; - - # NOTE -- end legacy cases added for bash -- NOTE *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -200,9 +157,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -225,144 +184,128 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # 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/[-_].*/\./'` + ;; + 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}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - vax:OpenBSD:*:*) # bash - echo vax-dec-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then + case $UNAME_RELEASE in + *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi + ;; + *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. - cat <$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - eval $set_cc_for_build - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix - exit 0 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + 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 0;; + 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 0;; + 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 @@ -370,25 +313,32 @@ EOF else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; + 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 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + 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 0 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -397,10 +347,10 @@ EOF esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + 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 @@ -412,10 +362,10 @@ EOF echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + 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 @@ -426,37 +376,40 @@ EOF # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -480,27 +433,33 @@ EOF exit (-1); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $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 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; + 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 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -516,29 +475,29 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -546,7 +505,7 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -561,16 +520,19 @@ EOF exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 + 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 0 ;; - *:AIX:*:[45]) + exit ;; + *:AIX:*:[456]) 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 @@ -583,28 +545,28 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -660,17 +622,37 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $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 __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -698,134 +680,192 @@ EOF exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + 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 0 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + 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 0 ;; + 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 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) + exit ;; + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i386-pc-interix3 - exit 0 ;; + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; + echo i586-pc-interix + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; arm*:Linux:*:*) + eval $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-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -842,16 +882,45 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c - test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu - exit 0 ;; + exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu - exit 0 ;; + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -865,7 +934,7 @@ EOF objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -873,22 +942,31 @@ EOF PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu - exit 0 ;; + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent @@ -906,15 +984,15 @@ EOF ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; + exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; + exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; + exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -931,24 +1009,33 @@ EOF LIBC=gnulibc1 # endif #else - #ifdef __INTEL_COMPILER + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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 0 ;; + 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... @@ -956,7 +1043,27 @@ EOF # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + 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.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -964,99 +1071,100 @@ EOF else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + 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 0 ;; + 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|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + 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|egrep '^Machine.*Pent ?II' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + (/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 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + 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 i386. echo i386-pc-msdosdjgpp - exit 0 ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 - exit 0 ;; + exit ;; paragon:*:*:*) echo i860-intel-osf1 - exit 0 ;; + 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 0 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + 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 0 + && { 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 0 ;; + && { 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 0 ;; + && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1064,61 +1172,84 @@ EOF else echo ns32k-sni-sysv fi - exit 0 ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 - exit 0 ;; + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 - exit 0 ;; + 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 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi - exit 0 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + 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 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1126,22 +1257,25 @@ EOF UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; - NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1152,36 +1286,47 @@ EOF UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - 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 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; + 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 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1213,7 +1358,7 @@ main () #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1302,12 +1447,12 @@ main () } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy +$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 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1316,36 +1461,25 @@ then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi -# NOTE -- Begin fallback cases added for bash -- NOTE -case "$UNAME" in -uts) echo uts-amdahl-sysv${UNAME_RELEASE}; exit 0 ;; -esac - -if [ -f /bin/fxc.info ]; then - echo fxc-alliant-concentrix - exit 0 -fi -# NOTE -- End fallback cases added for bash -- NOTE - cat >&2 <, 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 . +# +# 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. +# +# 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 M$VC, +# 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 AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux*) + case $CC in + icc|ecc) + wl='-Wl,' + ;; + ccc) + wl='-Wl,' + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + sco3.2v5*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # 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 + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # 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 + ;; + netbsd*) + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + # 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' + 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 + ;; + aix4* | aix5*) + 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].*|aix5*) + 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 + hardcode_direct=yes + 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*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi4*) + ;; + cygwin* | mingw* | pw32*) + # 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*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + hardcode_direct=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd*) + 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* | hpux11*) + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + 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 + ;; + 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=: + ;; + openbsd*) + 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 + ;; + 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=: + ;; + sco3.2v5*) + ;; + 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.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +libname_spec='lib$name' +case "$host_os" in + aix3*) + ;; + aix4* | aix5*) + ;; + amigaos*) + ;; + beos*) + ;; + bsdi4*) + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + ;; + darwin* | rhapsody*) + shrext=.dylib + ;; + dgux*) + ;; + freebsd1*) + ;; + freebsd*) + ;; + gnu*) + ;; + hpux9* | hpux10* | hpux11*) + case "$host_cpu" in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + 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*) + ;; + netbsd*) + ;; + newsos6) + ;; + nto-qnx) + ;; + openbsd*) + ;; + os2*) + libname_spec='$name' + shrext=.dll + ;; + osf3* | osf4* | osf5*) + ;; + sco3.2v5*) + ;; + solaris*) + ;; + sunos4*) + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + ;; + sysv4*MP*) + ;; + uts4*) + ;; +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_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context # diff and a properly formatted ChangeLog entry. # @@ -70,8 +72,8 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008,2009 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." @@ -83,11 +85,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +101,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,7 +120,9 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -144,7 +148,7 @@ case $os in -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) + -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; @@ -169,6 +173,10 @@ case $os in -hiux*) os=-hiuxwe2 ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -185,6 +193,10 @@ case $os in # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -228,31 +240,54 @@ case $basic_machine in | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ | c4x | clipper \ - | d10v | d30v | dsp16xx \ - | fr30 \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el | mips64vr4300 \ - | mips64vr4300el | mips64vr5000 | mips64vr5000el \ - | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 | mipsisa64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ | ns16k | ns32k \ - | openrisc | or32 \ + | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic80 | tron \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ - | x86 | xscale | xstormy16 | xtensa \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; @@ -263,6 +298,9 @@ case $basic_machine in ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; + ms1) + basic_machine=mt-unknown + ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and @@ -281,49 +319,68 @@ case $basic_machine in | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c54x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | fx80-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ - | m32r-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ - | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-*) ;; - - # NOTE -- BEGIN cases added for Bash -- NOTE - butterfly-bbn* | cadmus-* | ews*-nec | masscomp-masscomp \ - | tandem-* | symmetric-* | drs6000-icl | *-*ardent | concurrent-* \ - | ksr1-* | esa-ibm | fxc-alliant | *370-amdahl | sx[45]*-nec ) + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown ;; - # NOTE -- END cases added for Bash -- NOTE - # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) @@ -340,6 +397,9 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; + abacus) + basic_machine=abacus-unknown + ;; adobe68k) basic_machine=m68010-adobe os=-scout @@ -354,6 +414,12 @@ case $basic_machine in basic_machine=a29k-none os=-bsd ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; amdahl) basic_machine=580-amdahl os=-sysv @@ -385,6 +451,14 @@ case $basic_machine in basic_machine=ns32k-sequent os=-dynix ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; c90) basic_machine=c90-cray os=-unicos @@ -413,12 +487,27 @@ case $basic_machine in basic_machine=j90-cray os=-unicos ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; crds | unos) basic_machine=m68k-crds ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -441,6 +530,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx @@ -457,7 +550,7 @@ case $basic_machine in basic_machine=elxsi-elxsi os=-bsd ;; - encore | umax | mmax | multimax) # bash + encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) @@ -498,9 +591,6 @@ case $basic_machine in basic_machine=m88k-harris os=-sysv3 ;; - hbullx20-bull) - basic_machine=m68k-bull # bash - ;; hp300-*) basic_machine=m68k-hp ;; @@ -552,9 +642,6 @@ case $basic_machine in basic_machine=hppa1.1-hp os=-proelf ;; - ibm032-*) - basic_machine=ibmrt-ibm # bash - ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; @@ -575,14 +662,6 @@ case $basic_machine in basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; - i386-go32) - basic_machine=i386-pc # bash - os=-go32 - ;; - i386-mingw32) - basic_machine=i386-pc # bash - os=-mingw32 - ;; i386mach) basic_machine=i386-mach os=-mach @@ -605,11 +684,16 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; - luna88k-omron* | m88k-omron*) # bash - basic_machine=m88k-omron + m68knommu) + basic_machine=m68k-unknown + os=-linux ;; - magicstation*) - basic_machine=magicstation-unknown # bash + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips @@ -623,6 +707,10 @@ case $basic_machine in basic_machine=i386-pc os=-mingw32 ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) basic_machine=m68000-convergent ;; @@ -636,10 +724,6 @@ case $basic_machine in mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; monitor) basic_machine=m68k-rom68k os=-coff @@ -652,6 +736,9 @@ case $basic_machine in basic_machine=i386-pc os=-msdos ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; mvs) basic_machine=i370-ibm os=-mvs @@ -723,26 +810,21 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; - odt | odt3 | odt4) # SCO Open Desktop - basic_machine=i386-pc # bash - os=-sco3.2v4 - ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; - or32 | or32-*) + openrisc | openrisc-*) basic_machine=or32-unknown - os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; - osr5 | sco5) # SCO Open Server - basic_machine=i386-pc # bash - os=-sco3.2v5 - ;; os68k) basic_machine=m68k-none os=-os68k @@ -755,55 +837,75 @@ case $basic_machine in basic_machine=i860-intel os=-osf ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; - pc532 | pc532-*) + pc532 | pc532-*) basic_machine=ns32k-pc532 ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; - pentiumpro | p6 | 6x86 | athlon) + pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; - pentiumii | pentium2) + pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; + pentium4) + basic_machine=i786-pc + ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumii-* | pentium2-*) + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown - ;; + ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown - ;; + ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown - ;; + ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown - ;; + ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; @@ -814,6 +916,10 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -834,6 +940,20 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; sequent) basic_machine=i386-sequent ;; @@ -841,6 +961,12 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks @@ -899,7 +1025,7 @@ case $basic_machine in sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; - sv1) + sv1) basic_machine=sv1-cray os=-unicos ;; @@ -907,10 +1033,6 @@ case $basic_machine in basic_machine=i386-sequent os=-dynix ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; t3e) basic_machine=alphaev5-cray os=-unicos @@ -923,6 +1045,18 @@ case $basic_machine in basic_machine=tic54x-unknown os=-coff ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -936,6 +1070,10 @@ case $basic_machine in tower | tower-32) basic_machine=m68k-ncr ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; udi29k) basic_machine=a29k-amd os=-udi @@ -944,14 +1082,6 @@ case $basic_machine in basic_machine=a29k-nyu os=-sym1 ;; - uw2 | unixware | unixware2) # bash - basic_machine=i386-pc - os=-sysv4.2uw2.1 - ;; - uw7 | unixware7) # bash - basic_machine=i386-pc - os=-sysv5uw7 - ;; v810 | necv810) basic_machine=v810-nec os=-none @@ -965,8 +1095,8 @@ case $basic_machine in os=-vms ;; vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; + basic_machine=f301-fujitsu + ;; vxworks960) basic_machine=i960-wrs os=-vxworks @@ -987,11 +1117,11 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt + xbox) + basic_machine=i686-pc + os=-mingw32 ;; - xps | xps100) + xps | xps100) basic_machine=xps100-honeywell ;; ymp) @@ -1021,6 +1151,9 @@ case $basic_machine in romp) basic_machine=romp-ibm ;; + mmix) + basic_machine=mmix-knuth + ;; rs6000) basic_machine=rs6000-ibm ;; @@ -1037,16 +1170,13 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh3eb | sh4eb) + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; - cydra) + cydra) basic_machine=cydra-cydrome ;; orion) @@ -1061,10 +1191,6 @@ case $basic_machine in pmac | pmac-mpw) basic_machine=powerpc-apple ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; @@ -1103,9 +1229,6 @@ case $os in -svr4*) os=-sysv4 ;; - -unixware7*) # bash - os=-sysv5uw7 - ;; -unixware*) os=-sysv4.2uw ;; @@ -1123,24 +1246,25 @@ case $os in | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova*) + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; - # NOTE -- BEGIN CASES ADDED FOR Bash -- NOTE - -powerux* | -superux*) - ;; - # NOTE -- END CASES ADDED FOR Bash -- NOTE -qnx*) case $basic_machine in x86-* | i*86-*) @@ -1150,16 +1274,21 @@ case $os in ;; esac ;; + -nto-qnx*) + ;; -nto*) - os=-nto-qnx + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -1172,6 +1301,9 @@ case $os in -opened*) os=-openedition ;; + -os400*) + os=-os400 + ;; -wince*) os=-wince ;; @@ -1193,6 +1325,9 @@ case $os in -atheos*) os=-atheos ;; + -syllable*) + os=-syllable + ;; -386bsd) os=-bsd ;; @@ -1203,7 +1338,7 @@ case $os in os=-rtmk-nova ;; -ns2 ) - os=-nextstep2 + os=-nextstep2 ;; -nsk*) os=-nsk @@ -1215,6 +1350,9 @@ case $os in -sinix*) os=-sysv4 ;; + -tpf*) + os=-tpf + ;; -triton*) os=-sysv3 ;; @@ -1230,9 +1368,6 @@ case $os in -sysvr4) os=-sysv4 ;; - -sysvr5) # bash - os=-sysv5 - ;; # This must come after -sysvr4. -sysv*) ;; @@ -1245,8 +1380,17 @@ case $os in -xenix) os=-xenix ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe ;; -none) ;; @@ -1270,6 +1414,12 @@ else # system, and we'll never get to this point. case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; *-acorn) os=-riscix1.2 ;; @@ -1279,11 +1429,14 @@ case $basic_machine in arm*-semi) os=-aout ;; + c4x-* | tic4x-*) + os=-coff + ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; - pdp11-*) + pdp11-*) os=-none ;; *-dec | vax-*) @@ -1304,6 +1457,9 @@ case $basic_machine in m68*-cisco) os=-aout ;; + mep-*) + os=-elf + ;; mips*-cisco) os=-elf ;; @@ -1322,9 +1478,15 @@ case $basic_machine in *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; + *-knuth) + os=-mmixware + ;; *-wec) os=-proelf ;; @@ -1376,19 +1538,19 @@ case $basic_machine in *-next) os=-nextstep3 ;; - *-gould) + *-gould) os=-sysv ;; - *-highlevel) + *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; - *-sgi) + *-sgi) os=-irix ;; - *-siemens) + *-siemens) os=-sysv4 ;; *-masscomp) @@ -1427,9 +1589,6 @@ case $basic_machine in -sunos*) vendor=sun ;; - -lynxos*) # bash - vendor=lynx - ;; -aix*) vendor=ibm ;; @@ -1460,10 +1619,16 @@ case $basic_machine in -mvs* | -opened*) vendor=ibm ;; + -os400*) + vendor=ibm + ;; -ptx*) vendor=sequent ;; - -vxsim* | -vxworks*) + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) @@ -1487,7 +1652,7 @@ case $basic_machine in esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/src/bin/bash/support/fixlinks b/src/bin/bash/support/fixlinks index 13a86c8ec0..73b0fa3abb 100644 --- a/src/bin/bash/support/fixlinks +++ b/src/bin/bash/support/fixlinks @@ -5,19 +5,19 @@ # # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. SRCDIR=. while [ $# -gt 0 ]; do diff --git a/src/bin/bash/support/man2html.c b/src/bin/bash/support/man2html.c index d1ed8bc545..2432c13f2c 100644 --- a/src/bin/bash/support/man2html.c +++ b/src/bin/bash/support/man2html.c @@ -102,6 +102,10 @@ 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 */ @@ -2148,6 +2152,26 @@ skip_till_newline(char *c) 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 * @@ -2836,15 +2860,15 @@ scan_request(char *c) out_html(label); /*   for mosaic users */ if (mode) - out_html("\"> \n

    "); + out_html("\"> \n

    "); else - out_html("\"> \n

    "); + 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"); + out_html("\n"); else - out_html("\n"); + out_html("\n"); curpos = 0; break; case V('T', 'S'): @@ -2856,25 +2880,31 @@ scan_request(char *c) if (!output_possible) { sl = fill_words(c + j, wordlist, &words); if (words > 1) { - char page_and_sec[128]; - + char *t; for (i = 1; i < words; i++) wordlist[i][-1] = '\0'; *sl = '\0'; output_possible = 1; - sprintf(page_and_sec, "%s(%s)", wordlist[0], wordlist[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(page_and_sec); + out_html(th_page_and_sec); out_html(" Manual Page"); out_html("\n\n"); - out_html("\n"); - out_html("
    "); - out_html(page_and_sec); - out_html(""); - out_html(unescape(wordlist[2])); - out_html(""); - out_html(page_and_sec); - out_html("\n
    \n"); + + outputPageHeader(th_page_and_sec, th_datestr, th_page_and_sec); + out_html("
    Index\n"); *sl = '\n'; out_html("
    \n"); @@ -4023,6 +4053,7 @@ main(int argc, char **argv) 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; diff --git a/src/bin/bash/support/missing b/src/bin/bash/support/missing index cbe2b0ef0e..31977a1ed7 100644 --- a/src/bin/bash/support/missing +++ b/src/bin/bash/support/missing @@ -3,20 +3,19 @@ # 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 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. +# 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" diff --git a/src/bin/bash/support/mkclone b/src/bin/bash/support/mkclone index 10b08c0ed7..1840b03fe5 100644 --- a/src/bin/bash/support/mkclone +++ b/src/bin/bash/support/mkclone @@ -6,19 +6,18 @@ # # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # prog=`basename $0` diff --git a/src/bin/bash/support/mkconffiles b/src/bin/bash/support/mkconffiles index ec52614d79..9eb223187f 100644 --- a/src/bin/bash/support/mkconffiles +++ b/src/bin/bash/support/mkconffiles @@ -15,19 +15,18 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . PROG=`basename $0` diff --git a/src/bin/bash/support/mkdirs b/src/bin/bash/support/mkdirs index ce4fb235db..46f656eaff 100644 --- a/src/bin/bash/support/mkdirs +++ b/src/bin/bash/support/mkdirs @@ -7,19 +7,18 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . for dir do diff --git a/src/bin/bash/support/mkinstalldirs b/src/bin/bash/support/mkinstalldirs new file mode 100755 index 0000000000..d2d5f21b61 --- /dev/null +++ b/src/bin/bash/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/src/bin/bash/support/mksignames.c b/src/bin/bash/support/mksignames.c index 798a9a4016..a308310bca 100644 --- a/src/bin/bash/support/mksignames.c +++ b/src/bin/bash/support/mksignames.c @@ -1,376 +1,49 @@ -/* signames.c -- Create and write `signames.h', which contains an array of +/* mksignames.c -- Create and write `signames.h', which contains an array of signal names. */ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* Copyright (C) 1992-2006 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ +/* Duplicated from signames.c */ #if !defined (NSIG) # define NSIG 64 #endif -/* - * Special traps: - * EXIT == 0 - * DEBUG == NSIG - * ERR == NSIG+1 - */ -#define LASTSIG NSIG+1 +#define LASTSIG NSIG+2 -char *signal_names[2 * NSIG + 3]; - -#define signal_names_size (sizeof(signal_names)/sizeof(signal_names[0])) +/* Imported from signames.c */ +extern void initialize_signames (); +extern char *signal_names[]; char *progname; -/* 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 - -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 stricly 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; - fprintf(stderr, "%s: error: more than %i real time signals, fix `%s'\n", - progname, RTLIM, progname); - } - - 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 */ - -/* AIX */ -#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */ - signal_names[SIGLOST] = "SIGLOST"; -#endif - -#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 (SIGVIRT) /* AIX virtual time alarm */ - signal_names[SIGVIRT] = "SIGVIRT"; -#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 - -/* SunOS5 */ -#if defined (SIGLWP) /* special signal used by thread library */ - signal_names[SIGLWP] = "SIGLWP"; -#endif - -#if defined (SIGFREEZE) /* special signal used by CPR */ - signal_names[SIGFREEZE] = "SIGFREEZE"; -#endif - -#if defined (SIGTHAW) /* special signal used by CPR */ - signal_names[SIGTHAW] = "SIGTHAW"; -#endif - -#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */ - signal_names[SIGCANCEL] = "SIGCANCEL"; -#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 - -/* 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"; -} - void write_signames (stream) FILE *stream; @@ -379,16 +52,22 @@ write_signames (stream) 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, " Do not edit. Edit support/signames.c instead. */\n\n"); fprintf (stream, "/* A translation list so we can be polite to our users. */\n"); - fprintf (stream, "char *signal_names[NSIG + 3] = {\n"); +#if defined (CROSS_COMPILING) + fprintf (stream, "extern char *signal_names[];\n\n"); + fprintf (stream, "extern void initialize_signames __P((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"); + fprintf (stream, "};\n\n"); + fprintf (stream, "#define initialize_signames()\n\n"); +#endif } int @@ -424,7 +103,9 @@ main (argc, argv) exit (2); } +#if !defined (CROSS_COMPILING) initialize_signames (); +#endif write_signames (stream); exit (0); } diff --git a/src/bin/bash/support/mkversion.sh b/src/bin/bash/support/mkversion.sh index 509a454835..08a5d9812b 100644 --- a/src/bin/bash/support/mkversion.sh +++ b/src/bin/bash/support/mkversion.sh @@ -7,19 +7,19 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. PROGNAME=`basename $0` USAGE="$PROGNAME [-b] [-S srcdir] -d version -p patchlevel [-s status] [-o outfile]" @@ -67,7 +67,7 @@ fi # increment the build version if that's what's required if [ -n "$inc_build" ]; then - build_ver=`expr $build_ver + 1` + build_ver=`expr 1 + $build_ver` fi # what's the patch level? @@ -96,11 +96,11 @@ 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:][:digit:][:alpha:]' for -# intermediate versions (e.g., `2.05a'). +# 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][0-9][a-z]) ;; # special case +[0-9].[0-9][a-z]) ;; # special case *[!0-9.]*) echo "mkversion.sh: ${dist_version}: bad distribution version" >&2 exit 1 ;; *.*) ;; @@ -112,9 +112,9 @@ dist_major=`echo $dist_version | sed 's:\..*$::'` dist_minor=`echo $dist_version | sed 's:^.*\.::'` case "$dist_minor" in -"") dist_minor=00 ;; -[a-z]) dist_minor=00${dist_minor} ;; -?) dist_minor=0${dist_minor} ;; +"") dist_minor=0 ;; +[a-z]) dist_minor=0${dist_minor} ;; +?) dist_minor=${dist_minor} ;; *) ;; esac @@ -140,6 +140,10 @@ 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 @@ -147,10 +151,10 @@ 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 __P((void));' -echo 'extern void show_shell_version __P((int));' +#echo +#echo '/* Functions from version.c. */' +#echo 'extern char *shell_version_string __P((void));' +#echo 'extern void show_shell_version __P((int));' if [ -n "$inc_build" ]; then # Make sure we can write to .build diff --git a/src/bin/bash/support/printenv.c b/src/bin/bash/support/printenv.c index 29629b345a..b45e4c7b9f 100644 --- a/src/bin/bash/support/printenv.c +++ b/src/bin/bash/support/printenv.c @@ -10,19 +10,25 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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" extern char **environ; diff --git a/src/bin/bash/support/printenv.sh b/src/bin/bash/support/printenv.sh index b3a716c7ce..32b7ee845e 100644 --- a/src/bin/bash/support/printenv.sh +++ b/src/bin/bash/support/printenv.sh @@ -2,19 +2,19 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. if [ $# -eq 0 ]; then env diff --git a/src/bin/bash/support/recho.c b/src/bin/bash/support/recho.c index c622582e8c..7e3c6bc653 100644 --- a/src/bin/bash/support/recho.c +++ b/src/bin/bash/support/recho.c @@ -6,24 +6,29 @@ chet@po.cwru.edu */ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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(); diff --git a/src/bin/bash/support/rlvers.sh b/src/bin/bash/support/rlvers.sh index b3de8feb0e..64cadc776f 100644 --- a/src/bin/bash/support/rlvers.sh +++ b/src/bin/bash/support/rlvers.sh @@ -6,19 +6,19 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. PROGNAME=`basename $0` diff --git a/src/bin/bash/support/shobj-conf b/src/bin/bash/support/shobj-conf index 6bd7fb120c..bcc9dc7ffd 100644 --- a/src/bin/bash/support/shobj-conf +++ b/src/bin/bash/support/shobj-conf @@ -10,21 +10,23 @@ # Chet Ramey # chet@po.cwru.edu -# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This file is part of GNU Bash, the Bourne Again SHell. # -# 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. # # defaults @@ -41,9 +43,13 @@ 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" @@ -76,12 +82,18 @@ sunos4*) ;; sunos5*-*gcc*|solaris2*-*gcc*) - SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' - # This line works for the Solaris linker in /usr/ccs/bin/ld - SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' - # This line works for the GNU ld -# SHOBJ_LDFLAGS='-shared -Wl,-h,$@' + 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)' @@ -97,7 +109,7 @@ sunos5*|solaris2*) ;; # All versions of Linux or the semi-mythical GNU Hurd. -linux*|gnu*) +linux*-*|gnu*-*|k*bsd*-gnu-*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' @@ -106,7 +118,7 @@ linux*|gnu*) SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; -freebsd2* | netbsd*) +freebsd2*) SHOBJ_CFLAGS=-fpic SHOBJ_LD=ld SHOBJ_LDFLAGS='-x -Bshareable' @@ -116,8 +128,8 @@ freebsd2* | netbsd*) ;; # FreeBSD-3.x ELF -freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) - SHOBJ_CFLAGS=-fpic +freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) + SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then @@ -134,24 +146,47 @@ freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) ;; # Darwin/MacOS X -darwin*|macosx*) - SHOBJ_STATUS=unsupported +darwin[89]*|darwin10*) + SHOBJ_STATUS=supported SHLIB_STATUS=supported + + SHOBJ_CFLAGS='-fno-common' - SHOBJ_CFLAGS='-dynamic -fno-common' - - SHOBJ_LD=/usr/bin/libtool + SHOBJ_LD='MACOSX_DEPLOYMENT_TARGET=10.3 ${CC}' SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' SHLIB_LIBSUFF='dylib' - SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' - SHLIB_LIBS='-lSystem' + SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 ;; -openbsd*) +darwin*|macosx*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=supported + + SHOBJ_CFLAGS='-fno-common' + + SHOBJ_LD='${CC}' + + SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' + SHLIB_LIBSUFF='dylib' + + case "${host_os}" in + darwin[789]*|darwin10*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; + *) SHOBJ_LDFLAGS='-dynamic' + SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; + esac + + SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 + ;; + +openbsd*|netbsd*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' @@ -216,7 +251,7 @@ osf*) SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; -aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com +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' @@ -227,7 +262,7 @@ aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; -aix4.[2-9]*) +aix4.[2-9]*|aix[5-9].*) SHOBJ_CFLAGS=-K SHOBJ_LD='ld' SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' @@ -296,7 +331,9 @@ hpux10*-*gcc*) # must use gcc; the bundled cc cannot compile PIC code SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' - SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' + # 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' @@ -400,7 +437,39 @@ sysv5uw7*) 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}' @@ -422,6 +491,41 @@ msdos*) 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 # @@ -449,8 +553,14 @@ 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"\' diff --git a/src/bin/bash/support/signames.c b/src/bin/bash/support/signames.c new file mode 100644 index 0000000000..137826f68c --- /dev/null +++ b/src/bin/bash/support/signames.c @@ -0,0 +1,393 @@ +/* signames.c -- Create an array of signal names. */ + +/* 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 + +#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 stricly 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 (SIGVIRT) /* AIX virtual time alarm */ + signal_names[SIGVIRT] = "SIGVIRT"; +#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 + +/* SunOS5 */ +#if defined (SIGLWP) /* special signal used by thread library */ + signal_names[SIGLWP] = "SIGLWP"; +#endif + +#if defined (SIGFREEZE) /* special signal used by CPR */ + signal_names[SIGFREEZE] = "SIGFREEZE"; +#endif + +#if defined (SIGTHAW) /* special signal used by CPR */ + signal_names[SIGTHAW] = "SIGTHAW"; +#endif + +#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */ + signal_names[SIGCANCEL] = "SIGCANCEL"; +#endif + +#if defined (SIGXRES) /* resource control exceeded */ + signal_names[SIGXRES] = "SIGXRES"; +#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/src/bin/bash/support/texi2dvi b/src/bin/bash/support/texi2dvi index 2325ba846a..83c08425da 100644 --- a/src/bin/bash/support/texi2dvi +++ b/src/bin/bash/support/texi2dvi @@ -1,23 +1,22 @@ #! /bin/sh # texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources. -# $Id: texi2dvi 7792 2004-06-07 09:07:27Z korli $ +# $Id: texi2dvi,v 1.14 2003/02/05 00:42:33 karl Exp $ # -# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, +# 2002, 2003 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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, you can either send email to this -# program's maintainer or write to: The Free Software Foundation, -# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # # Original author: Noah Friedman . # @@ -26,12 +25,12 @@ # the `--debug' option when making a bug report. # This string is expanded by rcs automatically when this file is checked out. -rcs_revision='$Revision: 1.1 $' +rcs_revision='$Revision: 1.14 $' rcs_version=`set - $rcs_revision; echo $2` program=`echo $0 | sed -e 's!.*/!!'` -version="texi2dvi (GNU Texinfo 4.0) $rcs_version +version="texi2dvi (GNU Texinfo 4.5) $rcs_version -Copyright (C) 1999 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING." @@ -46,46 +45,52 @@ is used to determine its language (LaTeX or Texinfo). Makeinfo is used to perform Texinfo macro expansion before running TeX when needed. -Options: - -@ Use @input instead of \input; for preloaded Texinfo. - -b, --batch No interaction. - -c, --clean Remove all auxiliary files. - -D, --debug Turn on shell debugging (set -x). - -e, --expand Force macro expansion using makeinfo. - -I DIR Search DIR for Texinfo files. - -h, --help Display this help and exit successfully. - -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo. - -p, --pdf Use pdftex or pdflatex for processing. - -q, --quiet No output unless errors (implies --batch). - -s, --silent Same as --quiet. - -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file. - Multiple values accumulate. - -v, --version Display version information and exit successfully. - -V, --verbose Report on what is done. +Operation modes: + -b, --batch no interaction + -c, --clean remove all auxiliary files + -D, --debug turn on shell debugging (set -x) + -h, --help display this help and exit successfully + -o, --output=OFILE leave output in OFILE (implies --clean); + Only one input FILE may be specified in this case + -q, --quiet no output unless errors (implies --batch) + -s, --silent same as --quiet + -v, --version display version information and exit successfully + -V, --verbose report on what is done + +TeX tuning: + -@ use @input instead of \input; for preloaded Texinfo + -e, -E, --expand force macro expansion using makeinfo + -I DIR search DIR for Texinfo files + -l, --language=LANG specify the LANG of FILE (LaTeX or Texinfo) + -p, --pdf use pdftex or pdflatex for processing + -t, --texinfo=CMD insert CMD after @setfilename in copy of input file + multiple values accumulate The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO, TEX (or PDFTEX), and TEXINDEX environment variables are used to run those commands, if they are set. Email bug reports to , -general questions and discussion to ." +general questions and discussion to . +Texinfo home page: http://www.gnu.org/software/texinfo/" # 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. -escape='\' batch=false # eval for batch mode clean= debug= +escape='\' expand= # t for expansion via makeinfo -oformat=dvi -set_language= miincludes= # makeinfo include path +oformat=dvi +oname= # --output +quiet= # by default let the tools' message be displayed +set_language= textra= tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems. -txincludes= # TEXINPUTS extensions +txincludes= # TEXINPUTS extensions, with trailing colon txiprereq=19990129 # minimum texinfo.tex version to have macro expansion -quiet= # by default let the tools' message be displayed verbose=false # echo for verbose mode orig_pwd=`pwd` @@ -98,6 +103,12 @@ else path_sep=":" fi +# Pacify verbose cds. +CDPATH=${ZSH_VERSION+.}$path_sep + +# In case someone crazy insists on using grep -E. +: ${EGREP=egrep} + # Save this so we can construct a new TEXINPUTS path for each file. TEXINPUTS_orig="$TEXINPUTS" # Unfortunately makeindex does not read TEXINPUTS. @@ -136,14 +147,21 @@ while test x"$1" != x"$arg_sep"; do -q | -s | --q* | --s*) quiet=t; batch=eval;; -c | --c*) clean=t;; -D | --d*) debug=t;; - -e | --e*) expand=t;; + -e | -E | --e*) expand=t;; -h | --h*) echo "$usage"; exit 0;; -I | --I*) shift miincludes="$miincludes -I $1" - txincludes="$txincludes$path_sep$1" + txincludes="$txincludes$1$path_sep" ;; -l | --l*) shift; set_language=$1;; + -o | --o*) + shift + clean=t + case "$1" in + /* | ?:/*) oname=$1;; + *) oname="$orig_pwd/$1";; + esac;; -p | --p*) oformat=pdf;; -t | --t*) shift; textra="$textra\\ $1";; @@ -168,11 +186,20 @@ done shift # Interpret remaining command line args as filenames. -if test $# = 0; then +case $# in + 0) echo "$0: Missing file arguments." >&2 echo "$0: Try \`--help' for more information." >&2 exit 2 -fi + ;; + 1) ;; + *) + if test -n "$oname"; then + echo "$0: Can't use option \`--output' with more than one argument." >&2 + exit 2 + fi + ;; +esac # Prepare the temporary directory. Remove it at exit, unless debugging. if test -z "$debug"; then @@ -205,14 +232,23 @@ cat <$comment_iftex_sed s/^@c texi2dvi// } } -/^@html/,/^@end html/d -/^@ifhtml/,/^@end ifhtml/d -/^@ifnottex/,/^@end ifnottex/d +/^@html/,/^@end html/{ + s/^/@c (texi2dvi)/ +} +/^@ifhtml/,/^@end ifhtml/{ + s/^/@c (texi2dvi)/ +} +/^@ifnottex/,/^@end ifnottex/{ + s/^/@c (texi2dvi)/ +} /^@ifinfo/,/^@end ifinfo/{ /^@node/p /^@menu/,/^@end menu/p - d + t + s/^/@c (texi2dvi)/ } +s/^@ifnotinfo/@c texi2dvi@ifnotinfo/ +s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/ EOF # Uncommenting is simple: Remove any leading `@c texi2dvi'. uncomment_iftex_sed=$utildir/uncomment.sed @@ -230,7 +266,7 @@ cat <<\EOF >$get_xref_files # Get list of xref files (indexes, tables and lists). # Find all files having root filename with a two-letter extension, # saves the ones that are really Texinfo-related files. .?o? catches -# LaTeX tables and lists. +# many files: .toc, .log, LaTeX tables and lists, FiXme's .lox, maybe more. for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do # If file is empty, skip it. test -s "$this_file" || continue @@ -273,7 +309,7 @@ for command_line_filename in ${1+"$@"}; do # 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" | egrep '^(/|[A-z]:/)' >/dev/null \ + echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >/dev/null \ || command_line_filename="./$command_line_filename" # See if the file exists. If it doesn't we're in trouble since, even @@ -314,22 +350,67 @@ for command_line_filename in ${1+"$@"}; do # Make all those directories and give up if we can't succeed. mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1 - # Source file might include additional sources. Put `.' and - # directory where source file(s) reside in TEXINPUTS before anything - # else. `.' goes first to ensure that any old .aux, .cps, + # Source file might include additional sources. + # We want `.:$orig_pwd' before anything else. (We'll add `.:' later + # after all other directories have been turned into absolute paths.) + # `.' goes first to ensure that any old .aux, .cps, # etc. files in ${directory} don't get used in preference to fresher # files in `.'. Include orig_pwd in case we are in clean mode, where # we've cd'd to a temp directory. - common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep" + common="$orig_pwd$path_sep$filename_dir$path_sep$txincludes" TEXINPUTS="$common$TEXINPUTS_orig" INDEXSTYLE="$common$INDEXSTYLE_orig" + # Convert relative paths to absolute paths, so we can run in another + # directory (e.g., in --clean mode, or during the macro-support + # detection.) + # + # Empty path components are meaningful to tex. We rewrite them + # as `EMPTY' so they don't get lost when we split on $path_sep. + TEXINPUTS=`echo $TEXINPUTS |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` + INDEXSTYLE=`echo $INDEXSTYLE |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` + save_IFS=$IFS + IFS=$path_sep + set x $TEXINPUTS; shift + TEXINPUTS=. + for dir + do + case $dir in + EMPTY) + TEXINPUTS=$TEXINPUTS$path_sep + ;; + [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. + TEXINPUTS=$TEXINPUTS$path_sep$dir + ;; + *) + abs=`cd "$dir" && pwd` && TEXINPUTS=$TEXINPUTS$path_sep$abs + ;; + esac + done + set x $INDEXSTYLE; shift + INDEXSTYLE=. + for dir + do + case $dir in + EMPTY) + INDEXSTYLE=$INDEXSTYLE$path_sep + ;; + [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. + INDEXSTYLE=$INDEXSTYLE$path_sep$dir + ;; + *) + abs=`cd "$dir" && pwd` && INDEXSTYLE=$INDEXSTYLE$path_sep$abs + ;; + esac + done + IFS=$save_IFS + # 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 language=$set_language - elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then + elif sed 1q "$command_line_filename" | grep 'input texinfo' >/dev/null; then language=texinfo else language= @@ -373,9 +454,9 @@ for command_line_filename in ${1+"$@"}; do txiversion_tex=txiversion.tex echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex # Run in the tmpdir to avoid leaving files. - eval `cd $tmpdir >/dev/null \ - && $tex $txiversion_tex 2>/dev/null \ -| sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'` + eval `cd $tmpdir >/dev/null && + $tex $txiversion_tex 2>/dev/null | + sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'` $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then makeinfo= @@ -467,10 +548,14 @@ for command_line_filename in ${1+"$@"}; do # What we'll run texindex on -- exclude non-index files. # Since we know index files are last, it is correct to remove everything - # before .aux and .?o?. + # before .aux and .?o?. But don't really do o + # -- don't match whitespace as . + # Otherwise, if orig_xref_files contains something like + # foo.xo foo.whatever + # the space after the o will get matched. index_files=`echo "$orig_xref_files" \ | sed "s!.*\.aux!!g; - s!./$filename_noext\..o.!!g; + s!./$filename_noext\.[^ ]o[^ ]!!g; s/^[ ]*//;s/[ ]*$//"` # Run texindex (or makeindex) on current index files. If they # already exist, and after running TeX a first time the index @@ -489,8 +574,8 @@ for command_line_filename in ${1+"$@"}; do # Prevent $ESCAPE from being interpreted by the shell if it happens # to be `/'. $batch tex_args="\\${escape}nonstopmode\ \\${escape}input" - $verbose "Running $cmd ..." cmd="$tex $tex_args $filename_input" + $verbose "Running $cmd ..." if $cmd >&5; then :; else echo "$0: $tex exited with bad status, quitting." >&2 echo "$0: see $filename_noext.log for errors." >&2 @@ -508,7 +593,7 @@ for command_line_filename in ${1+"$@"}; do # 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 fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then + if grep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then finished= fi @@ -550,8 +635,13 @@ for command_line_filename in ${1+"$@"}; do # - the next file is processed in correct conditions # - the temporary file can be removed if test -n "$clean"; then - $verbose "Copying $oformat file from `pwd` to $orig_pwd" - cp -p "./$filename_noext.$oformat" "$orig_pwd" + if test -n "$oname"; then + dest=$oname + else + dest=$orig_pwd + fi + $verbose "Copying $oformat file from `pwd` to $dest" + cp -p "./$filename_noext.$oformat" "$dest" cd / # in case $orig_pwd is on a different drive (for DOS) cd $orig_pwd || exit 1 fi diff --git a/src/bin/bash/support/texi2html b/src/bin/bash/support/texi2html index f979e7ad17..7d71feab8f 100644 --- a/src/bin/bash/support/texi2html +++ b/src/bin/bash/support/texi2html @@ -7,20 +7,19 @@ # # 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 2 of the License, or -# (at your option) any later version. +# 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. +# 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 . # -# 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 requires perl version 5 or higher @@ -3564,7 +3563,7 @@ INPUT_LINE: while ($_ = &next_line) { $name = &normalise_node($name); $level = $sec2level{$tag}; # check for index - $first_index_chapter = $name + $first_index_chapter = $node if ($level == 1 && !$first_index_chapter && $name =~ /index/i); if ($in_top && /heading/){ diff --git a/src/bin/bash/support/xcase.c b/src/bin/bash/support/xcase.c new file mode 100644 index 0000000000..efd11befb6 --- /dev/null +++ b/src/bin/bash/support/xcase.c @@ -0,0 +1,95 @@ +/* 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 + +#define LOWER 1 +#define UPPER 2 + +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/src/bin/bash/support/xenix-link.sh b/src/bin/bash/support/xenix-link.sh index 58e84194f0..4d82e009ac 100644 --- a/src/bin/bash/support/xenix-link.sh +++ b/src/bin/bash/support/xenix-link.sh @@ -16,19 +16,19 @@ # Copyright (C) 1989-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the 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. +# 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 . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. set -x @@ -36,7 +36,7 @@ rm -f bash if [ -z "$CC" ] then - if [ -f /unix -a ! -f /xenix ] + if [ -f /unix ] && [ ! -f /xenix ] then CC="cc -xenix" else diff --git a/src/bin/bash/support/zecho.c b/src/bin/bash/support/zecho.c index 3bc1fbab54..f3a4fe03e5 100644 --- a/src/bin/bash/support/zecho.c +++ b/src/bin/bash/support/zecho.c @@ -4,20 +4,25 @@ This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + 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 diff --git a/src/bin/bash/syntax.h b/src/bin/bash/syntax.h index b14427a32f..e01110e707 100644 --- a/src/bin/bash/syntax.h +++ b/src/bin/bash/syntax.h @@ -1,22 +1,22 @@ /* syntax.h -- Syntax definitions for the shell */ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifndef _SYNTAX_H_ #define _SYNTAX_H_ @@ -62,13 +62,18 @@ #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 const int sh_syntaxtab[]; +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 issyntype(c, t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) != 0) #define notsyntype(c,t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) == 0) @@ -92,4 +97,8 @@ extern const int sh_syntaxtab[]; #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/src/bin/bash/test.c b/src/bin/bash/test.c index b0d4de819e..ad634f9ab2 100644 --- a/src/bin/bash/test.c +++ b/src/bin/bash/test.c @@ -1,24 +1,24 @@ -/* GNU test program (ksb and mjb) */ +/* test.c - GNU test program (ksb and mjb) */ /* Modified to run with the GNU shell Apr 25, 1988 by bfox. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ /* Define PATTERN_MATCHING to get the csh-like =~ and !~ pattern-matching binary operators. */ @@ -45,12 +45,14 @@ extern int errno; #endif /* !errno */ -#ifdef HAVE_SYS_FILE_H +#if !defined (_POSIX_VERSION) && defined (HAVE_SYS_FILE_H) # include -#endif +#endif /* !_POSIX_VERSION */ #include "posixstat.h" #include "filecntl.h" +#include "bashintl.h" + #include "shell.h" #include "pathexp.h" #include "test.h" @@ -99,14 +101,7 @@ static int test_error_return; #define test_exit(val) \ do { test_error_return = val; longjmp (test_exit_buf, 1); } while (0) -/* We have to use access(2) for machines running AFS, because it's - not a Unix file system. This may produce incorrect answers for - non-AFS files. I hate AFS. */ -#if defined (AFS) -# define EACCESS(path, mode) access(path, mode) -#else -# define EACCESS(path, mode) test_eaccess(path, mode) -#endif /* AFS */ +extern int sh_stat __P((const char *, struct stat *)); static int pos; /* The offset of the current argument in ARGV. */ static int argc; /* The number of arguments present in ARGV. */ @@ -117,8 +112,6 @@ static void test_syntax_error __P((char *, char *)) __attribute__((__noreturn__) static void beyond __P((void)) __attribute__((__noreturn__)); static void integer_expected_error __P((char *)) __attribute__((__noreturn__)); -static int test_stat __P((char *, struct stat *)); - static int unary_operator __P((void)); static int binary_operator __P((void)); static int two_arguments __P((void)); @@ -149,7 +142,7 @@ test_syntax_error (format, arg) static void beyond () { - test_syntax_error ("argument expected", (char *)NULL); + test_syntax_error (_("argument expected"), (char *)NULL); } /* Syntax error for when an integer argument was expected, but @@ -158,97 +151,7 @@ static void integer_expected_error (pch) char *pch; { - test_syntax_error ("%s: integer expression expected", pch); -} - -/* A wrapper for stat () which disallows pathnames that are empty strings - and handles /dev/fd emulation on systems that don't have it. */ -static int -test_stat (path, finfo) - char *path; - struct stat *finfo; -{ - if (*path == '\0') - { - errno = ENOENT; - return (-1); - } - if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) - { -#if !defined (HAVE_DEV_FD) - 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. */ - char pbuf[32]; - 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. */ -int -test_eaccess (path, mode) - char *path; - int mode; -{ - struct stat st; - - if (test_stat (path, &st) < 0) - return (-1); - - if (current_user.euid == 0) - { - /* Root can read or write any file. */ - if (mode != X_OK) - 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); + test_syntax_error (_("%s: integer expression expected"), pch); } /* Increment our position in the argument list. Check that we're not @@ -351,14 +254,14 @@ term () } /* A paren-bracketed argument. */ - if (argv[pos][0] == '(' && argv[pos][1] == '\0') + if (argv[pos][0] == '(' && argv[pos][1] == '\0') /* ) */ { advance (1); value = expr (); - if (argv[pos] == 0) - test_syntax_error ("`)' expected", (char *)NULL); - else if (argv[pos][0] != ')' || argv[pos][1]) - test_syntax_error ("`)' expected, found %s", argv[pos]); + if (argv[pos] == 0) /* ( */ + test_syntax_error (_("`)' expected"), (char *)NULL); + else if (argv[pos][0] != ')' || argv[pos][1]) /* ( */ + test_syntax_error (_("`)' expected, found %s"), argv[pos]); advance (0); return (value); } @@ -373,7 +276,7 @@ term () if (test_unop (argv[pos])) value = unary_operator (); else - test_syntax_error ("%s: unary operator expected", argv[pos]); + test_syntax_error (_("%s: unary operator expected"), argv[pos]); } else { @@ -392,12 +295,12 @@ filecomp (s, t, op) struct stat st1, st2; int r1, r2; - if ((r1 = test_stat (s, &st1)) < 0) + if ((r1 = sh_stat (s, &st1)) < 0) { if (op == EF) return (FALSE); } - if ((r2 = test_stat (t, &st2)) < 0) + if ((r2 = sh_stat (t, &st2)) < 0) { if (op == EF) return (FALSE); @@ -407,7 +310,7 @@ filecomp (s, t, op) { case OT: return (r1 < r2 || (r2 == 0 && st1.st_mtime < st2.st_mtime)); case NT: return (r1 > r2 || (r1 == 0 && st1.st_mtime > st2.st_mtime)); - case EF: return ((st1.st_dev == st2.st_dev) && (st1.st_ino == st2.st_ino)); + case EF: return (same_file (s, t, &st1, &st2)); } return (FALSE); } @@ -457,7 +360,7 @@ patcomp (string, pat, op) { int m; - m = strmatch (pat, string, FNMATCH_EXTFLAG); + m = strmatch (pat, string, FNMATCH_EXTFLAG|FNMATCH_IGNCASE); return ((op == EQ) ? (m == 0) : (m != 0)); } @@ -538,7 +441,7 @@ binary_operator () if ((w[0] != '-' || w[3] != '\0') || test_binop (w) == 0) { - test_syntax_error ("%s: binary operator expected", w); + test_syntax_error (_("%s: binary operator expected"), w); /* NOTREACHED */ return (FALSE); } @@ -595,31 +498,31 @@ unary_test (op, arg) { case 'a': /* file exists in the file system? */ case 'e': - return (test_stat (arg, &stat_buf) == 0); + return (sh_stat (arg, &stat_buf) == 0); case 'r': /* file is readable? */ - return (EACCESS (arg, R_OK) == 0); + return (sh_eaccess (arg, R_OK) == 0); case 'w': /* File is writeable? */ - return (EACCESS (arg, W_OK) == 0); + return (sh_eaccess (arg, W_OK) == 0); case 'x': /* File is executable? */ - return (EACCESS (arg, X_OK) == 0); + return (sh_eaccess (arg, X_OK) == 0); case 'O': /* File is owned by you? */ - return (test_stat (arg, &stat_buf) == 0 && + return (sh_stat (arg, &stat_buf) == 0 && (uid_t) current_user.euid == (uid_t) stat_buf.st_uid); case 'G': /* File is owned by your group? */ - return (test_stat (arg, &stat_buf) == 0 && + return (sh_stat (arg, &stat_buf) == 0 && (gid_t) current_user.egid == (gid_t) stat_buf.st_gid); case 'N': - return (test_stat (arg, &stat_buf) == 0 && + return (sh_stat (arg, &stat_buf) == 0 && stat_buf.st_atime <= stat_buf.st_mtime); case 'f': /* File is a file? */ - if (test_stat (arg, &stat_buf) < 0) + if (sh_stat (arg, &stat_buf) < 0) return (FALSE); /* -f is true if the given file exists and is a regular file. */ @@ -630,29 +533,29 @@ unary_test (op, arg) #endif /* !S_IFMT */ case 'd': /* File is a directory? */ - return (test_stat (arg, &stat_buf) == 0 && (S_ISDIR (stat_buf.st_mode))); + return (sh_stat (arg, &stat_buf) == 0 && (S_ISDIR (stat_buf.st_mode))); case 's': /* File has something in it? */ - return (test_stat (arg, &stat_buf) == 0 && stat_buf.st_size > (off_t) 0); + return (sh_stat (arg, &stat_buf) == 0 && stat_buf.st_size > (off_t) 0); case 'S': /* File is a socket? */ #if !defined (S_ISSOCK) return (FALSE); #else - return (test_stat (arg, &stat_buf) == 0 && S_ISSOCK (stat_buf.st_mode)); + return (sh_stat (arg, &stat_buf) == 0 && S_ISSOCK (stat_buf.st_mode)); #endif /* S_ISSOCK */ case 'c': /* File is character special? */ - return (test_stat (arg, &stat_buf) == 0 && S_ISCHR (stat_buf.st_mode)); + return (sh_stat (arg, &stat_buf) == 0 && S_ISCHR (stat_buf.st_mode)); case 'b': /* File is block special? */ - return (test_stat (arg, &stat_buf) == 0 && S_ISBLK (stat_buf.st_mode)); + return (sh_stat (arg, &stat_buf) == 0 && S_ISBLK (stat_buf.st_mode)); case 'p': /* File is a named pipe? */ #ifndef S_ISFIFO return (FALSE); #else - return (test_stat (arg, &stat_buf) == 0 && S_ISFIFO (stat_buf.st_mode)); + return (sh_stat (arg, &stat_buf) == 0 && S_ISFIFO (stat_buf.st_mode)); #endif /* S_ISFIFO */ case 'L': /* Same as -h */ @@ -665,17 +568,17 @@ unary_test (op, arg) #endif /* S_IFLNK && HAVE_LSTAT */ case 'u': /* File is setuid? */ - return (test_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISUID) != 0); + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISUID) != 0); case 'g': /* File is setgid? */ - return (test_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISGID) != 0); + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISGID) != 0); case 'k': /* File has sticky bit set? */ #if !defined (S_ISVTX) /* This is not Posix, and is not defined on some Posix systems. */ return (FALSE); #else - return (test_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISVTX) != 0); + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISVTX) != 0); #endif case 't': /* File fd is a terminal? */ @@ -756,7 +659,7 @@ int test_unop (op) char *op; { - if (op[0] != '-') + if (op[0] != '-' || op[2] != 0) return (0); switch (op[1]) @@ -782,10 +685,10 @@ two_arguments () if (test_unop (argv[pos])) return (unary_operator ()); else - test_syntax_error ("%s: unary operator expected", argv[pos]); + test_syntax_error (_("%s: unary operator expected"), argv[pos]); } else - test_syntax_error ("%s: unary operator expected", argv[pos]); + test_syntax_error (_("%s: unary operator expected"), argv[pos]); return (0); } @@ -825,7 +728,7 @@ three_arguments () pos = argc; } else - test_syntax_error ("%s: binary operator expected", argv[pos+1]); + test_syntax_error (_("%s: binary operator expected"), argv[pos+1]); return (value); } @@ -900,7 +803,7 @@ test_command (margc, margv) --margc; if (margv[margc] && (margv[margc][0] != ']' || margv[margc][1])) - test_syntax_error ("missing `]'", (char *)NULL); + test_syntax_error (_("missing `]'"), (char *)NULL); if (margc < 2) test_exit (SHELL_BOOLEAN (FALSE)); @@ -916,7 +819,7 @@ test_command (margc, margv) value = posixtest (); if (pos != argc) - test_syntax_error ("too many arguments", (char *)NULL); + test_syntax_error (_("too many arguments"), (char *)NULL); test_exit (SHELL_BOOLEAN (value)); } diff --git a/src/bin/bash/test.h b/src/bin/bash/test.h index 3aef8913f9..9188b5b5a0 100644 --- a/src/bin/bash/test.h +++ b/src/bin/bash/test.h @@ -1,22 +1,22 @@ /* test.h -- external interface to the conditional command code. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #ifndef _TEST_H_ #define _TEST_H_ @@ -27,8 +27,6 @@ #define TEST_PATMATCH 0x01 #define TEST_ARITHEXP 0x02 -extern int test_eaccess __P((char *, int)); - extern int test_unop __P((char *)); extern int test_binop __P((char *)); diff --git a/src/bin/bash/trap.c b/src/bin/bash/trap.c index 606797b1e4..4b5eeb7e73 100644 --- a/src/bin/bash/trap.c +++ b/src/bin/bash/trap.c @@ -1,23 +1,23 @@ /* trap.c -- Not the trap command, but useful functions for manipulating those objects. The trap command is in builtins/trap.def. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include "config.h" @@ -31,10 +31,14 @@ #include #include +#include "bashintl.h" + #include "trap.h" #include "shell.h" +#include "flags.h" #include "input.h" /* for save_token_state, restore_token_state */ +#include "jobs.h" #include "signames.h" #include "builtins.h" #include "builtins/common.h" @@ -54,7 +58,7 @@ extern int errno; #define SIG_CHANGED 0x20 /* Trap value changed in trap handler. */ #define SIG_IGNORED 0x40 /* The signal is currently being ignored. */ -#define SPECIAL_TRAP(s) ((s) == EXIT_TRAP || (s) == DEBUG_TRAP || (s) == ERROR_TRAP) +#define SPECIAL_TRAP(s) ((s) == EXIT_TRAP || (s) == DEBUG_TRAP || (s) == ERROR_TRAP || (s) == RETURN_TRAP) /* An array of such flags, one for each signal, describing what the shell will do with a signal. DEBUG_TRAP == NSIG; some code below @@ -66,19 +70,21 @@ static void change_signal __P((int, char *)); static void get_original_signal __P((int)); -static void _run_trap_internal __P((int, char *)); +static int _run_trap_internal __P((int, char *)); static void reset_signal __P((int)); static void restore_signal __P((int)); static void reset_or_restore_signal_handlers __P((sh_resetsig_func_t *)); /* Variables used here but defined in other files. */ -extern int interrupt_immediately; extern int last_command_exit_value; extern int line_number; +extern char *this_command_name; extern sh_builtin_func_t *this_shell_builtin; extern procenv_t wait_intr_buf; +extern int return_catch_flag, return_catch_value; +extern int subshell_level; /* The list of things to do originally, before we started trapping. */ SigHandler *original_signals[NSIG]; @@ -99,10 +105,8 @@ int pending_traps[NSIG]; trap command (e.g., when `return' is executed in the trap command). */ int running_trap; -/* The value of line_number when the trap started executing, since - parse_and_execute resets it to 1 and the trap command might want - it. */ -int trap_line_number; +/* Set to last_command_exit_value before running a trap. */ +int trap_saved_exit_value; /* The (trapped) signal received while executing in the `wait' builtin */ int wait_signal_received; @@ -110,13 +114,27 @@ int wait_signal_received; /* A value which can never be the target of a trap handler. */ #define IMPOSSIBLE_TRAP_HANDLER (SigHandler *)initialize_traps +#define GETORIGSIG(sig) \ + do { \ + original_signals[sig] = (SigHandler *)set_signal_handler (sig, SIG_DFL); \ + set_signal_handler (sig, original_signals[sig]); \ + if (original_signals[sig] == SIG_IGN) \ + sigmodes[sig] |= SIG_HARD_IGNORE; \ + } while (0) + +#define GET_ORIGINAL_SIGNAL(sig) \ + if (sig && sig < NSIG && original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) \ + GETORIGSIG(sig) + void initialize_traps () { register int i; - trap_list[EXIT_TRAP] = trap_list[DEBUG_TRAP] = trap_list[ERROR_TRAP] = (char *)NULL; - sigmodes[EXIT_TRAP] = sigmodes[DEBUG_TRAP] = sigmodes[ERROR_TRAP] = SIG_INHERITED; + initialize_signames(); + + trap_list[EXIT_TRAP] = trap_list[DEBUG_TRAP] = trap_list[ERROR_TRAP] = trap_list[RETURN_TRAP] = (char *)NULL; + sigmodes[EXIT_TRAP] = sigmodes[DEBUG_TRAP] = sigmodes[ERROR_TRAP] = sigmodes[RETURN_TRAP] = SIG_INHERITED; original_signals[EXIT_TRAP] = IMPOSSIBLE_TRAP_HANDLER; for (i = 1; i < NSIG; i++) @@ -129,32 +147,25 @@ initialize_traps () /* Show which signals are treated specially by the shell. */ #if defined (SIGCHLD) - original_signals[SIGCHLD] = - (SigHandler *) set_signal_handler (SIGCHLD, SIG_DFL); - set_signal_handler (SIGCHLD, original_signals[SIGCHLD]); + GETORIGSIG (SIGCHLD); sigmodes[SIGCHLD] |= (SIG_SPECIAL | SIG_NO_TRAP); #endif /* SIGCHLD */ - original_signals[SIGINT] = - (SigHandler *) set_signal_handler (SIGINT, SIG_DFL); - set_signal_handler (SIGINT, original_signals[SIGINT]); + GETORIGSIG (SIGINT); sigmodes[SIGINT] |= SIG_SPECIAL; #if defined (__BEOS__) && !defined (__HAIKU__) /* BeOS sets SIGINT to SIG_IGN! */ original_signals[SIGINT] = SIG_DFL; + sigmodes[SIGINT] &= ~SIG_HARD_IGNORE; #endif - original_signals[SIGQUIT] = - (SigHandler *) set_signal_handler (SIGQUIT, SIG_DFL); - set_signal_handler (SIGQUIT, original_signals[SIGQUIT]); + GETORIGSIG (SIGQUIT); sigmodes[SIGQUIT] |= SIG_SPECIAL; if (interactive) { - original_signals[SIGTERM] = - (SigHandler *)set_signal_handler (SIGTERM, SIG_DFL); - set_signal_handler (SIGTERM, original_signals[SIGTERM]); + GETORIGSIG (SIGTERM); sigmodes[SIGTERM] |= SIG_SPECIAL; } } @@ -186,9 +197,10 @@ signal_name (sig) char *ret; /* on cygwin32, signal_names[sig] could be null */ - ret = (sig >= BASH_NSIG || sig < 0) ? "bad signal number" : signal_names[sig]; - if (ret == NULL) - ret = "unrecognized signal number"; + ret = (sig >= BASH_NSIG || sig < 0 || signal_names[sig] == NULL) + ? _("invalid signal number") + : signal_names[sig]; + return ret; } @@ -197,10 +209,12 @@ signal_name (sig) then (int)2 is returned. Return NO_SIG if STRING doesn't contain a valid signal descriptor. */ int -decode_signal (string) +decode_signal (string, flags) char *string; + int flags; { intmax_t sig; + char *name; if (legal_number (string, &sig)) return ((sig >= 0 && sig < NSIG) ? (int)sig : NO_SIG); @@ -208,11 +222,32 @@ decode_signal (string) /* A leading `SIG' may be omitted. */ for (sig = 0; sig < BASH_NSIG; sig++) { - if (signal_names[sig] == 0 || signal_names[sig][0] == '\0') + name = signal_names[sig]; + if (name == 0 || name[0] == '\0') continue; - if (strcasecmp (string, signal_names[sig]) == 0 || - (STREQN (signal_names[sig], "SIG", 3) && - strcasecmp (string, &(signal_names[sig])[3]) == 0)) + + /* Check name without the SIG prefix first case sensitivly or + insensitively depending on whether flags includes DSIG_NOCASE */ + if (STREQN (name, "SIG", 3)) + { + name += 3; + + if ((flags & DSIG_NOCASE) && strcasecmp (string, name) == 0) + return ((int)sig); + else if ((flags & DSIG_NOCASE) == 0 && strcmp (string, name) == 0) + return ((int)sig); + /* If we can't use the `SIG' prefix to match, punt on this + name now. */ + else if ((flags & DSIG_SIGPREFIX) == 0) + continue; + } + + /* Check name with SIG prefix case sensitively or insensitively + depending on whether flags includes DSIG_NOCASE */ + name = signal_names[sig]; + if ((flags & DSIG_NOCASE) && strcasecmp (string, name) == 0) + return ((int)sig); + else if ((flags & DSIG_NOCASE) == 0 && strcmp (string, name) == 0) return ((int)sig); } @@ -261,6 +296,14 @@ run_pending_traps () run_interrupt_trap (); CLRINTERRUPT; } +#if defined (JOB_CONTROL) && defined (SIGCHLD) + else if (sig == SIGCHLD && + trap_list[SIGCHLD] != (char *)IMPOSSIBLE_TRAP_HANDLER && + (sigmodes[SIGCHLD] & SIG_INPROGRESS) == 0) + { + run_sigchld_trap (pending_traps[sig]); /* use as counter */ + } +#endif else if (trap_list[sig] == (char *)DEFAULT_SIG || trap_list[sig] == (char *)IGNORE_SIG || trap_list[sig] == (char *)IMPOSSIBLE_TRAP_HANDLER) @@ -278,18 +321,18 @@ run_pending_traps () Unless we catch this, the subshell will dump core when trap_list[SIGTERM] == DEFAULT_SIG, because DEFAULT_SIG is usually 0x0. */ - internal_warning ("run_pending_traps: bad value in trap_list[%d]: %p", + internal_warning (_("run_pending_traps: bad value in trap_list[%d]: %p"), sig, trap_list[sig]); if (trap_list[sig] == (char *)DEFAULT_SIG) { - internal_warning ("run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself", sig, signal_name (sig)); + internal_warning (_("run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"), sig, signal_name (sig)); kill (getpid (), sig); } } else { token_state = save_token_state (); - parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST); + parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); restore_token_state (token_state); free (token_state); } @@ -315,14 +358,25 @@ trap_handler (sig) { int oerrno; + if ((sigmodes[sig] & SIG_TRAPPED) == 0) + { +#if defined (DEBUG) + internal_warning ("trap_handler: signal %d: signal not trapped", sig); +#endif + SIGRETURN (0); + } + if ((sig >= NSIG) || (trap_list[sig] == (char *)DEFAULT_SIG) || (trap_list[sig] == (char *)IGNORE_SIG)) - programming_error ("trap_handler: bad signal %d", sig); + programming_error (_("trap_handler: bad signal %d"), sig); else { oerrno = errno; #if defined (MUST_REINSTALL_SIGHANDLERS) +# if defined (JOB_CONTROL) && defined (SIGCHLD) + if (sig != SIGCHLD) +# endif /* JOB_CONTROL && SIGCHLD */ set_signal_handler (sig, trap_handler); #endif /* MUST_REINSTALL_SIGHANDLERS */ @@ -356,15 +410,29 @@ set_sigchld_trap (command_string) } #endif -/* Make COMMAND_STRING be executed when SIGCHLD is caught iff the current - SIGCHLD trap handler is DEFAULT_SIG. */ +/* Make COMMAND_STRING be executed when SIGCHLD is caught iff SIGCHLD + is not already trapped. IMPOSSIBLE_TRAP_HANDLER is used as a sentinel + to make sure that a SIGCHLD trap handler run via run_sigchld_trap can + reset the disposition to the default and not have the original signal + accidentally restored, undoing the user's command. */ void maybe_set_sigchld_trap (command_string) char *command_string; { - if ((sigmodes[SIGCHLD] & SIG_TRAPPED) == 0) + if ((sigmodes[SIGCHLD] & SIG_TRAPPED) == 0 && trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) set_signal (SIGCHLD, command_string); } + +/* Temporarily set the SIGCHLD trap string to IMPOSSIBLE_TRAP_HANDLER. Used + as a sentinel in run_sigchld_trap and maybe_set_sigchld_trap to see whether + or not a SIGCHLD trap handler reset SIGCHLD disposition to the default. */ +void +set_impossible_sigchld_trap () +{ + restore_default_signal (SIGCHLD); + change_signal (SIGCHLD, (char *)IMPOSSIBLE_TRAP_HANDLER); + sigmodes[SIGCHLD] &= ~SIG_TRAPPED; /* maybe_set_sigchld_trap checks this */ +} #endif /* JOB_CONTROL && SIGCHLD */ void @@ -381,6 +449,13 @@ set_error_trap (command) set_signal (ERROR_TRAP, command); } +void +set_return_trap (command) + char *command; +{ + set_signal (RETURN_TRAP, command); +} + #ifdef INCLUDE_UNUSED void set_sigint_trap (command) @@ -410,7 +485,7 @@ set_sigint_handler () else if (interactive) /* XXX - was interactive_shell */ return (set_signal_handler (SIGINT, sigint_sighandler)); else - return (set_signal_handler (SIGINT, termination_unwind_protect)); + return (set_signal_handler (SIGINT, termsig_sighandler)); } /* Return the correct handler for signal SIG according to the values in @@ -452,17 +527,9 @@ set_signal (sig, string) { /* If we aren't sure of the original value, check it. */ if (original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) - { - original_signals[sig] = (SigHandler *)set_signal_handler (sig, SIG_DFL); - set_signal_handler (sig, original_signals[sig]); - } - - /* Signals ignored on entry to the shell cannot be trapped or reset. */ + GETORIGSIG (sig); if (original_signals[sig] == SIG_IGN) - { - sigmodes[sig] |= SIG_HARD_IGNORE; - return; - } + return; } /* Only change the system signal handler if SIG_NO_TRAP is not set. @@ -510,25 +577,13 @@ change_signal (sig, value) sigmodes[sig] |= SIG_CHANGED; } -#define GET_ORIGINAL_SIGNAL(sig) \ - if (sig && sig < NSIG && original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) \ - get_original_signal (sig) - static void get_original_signal (sig) int sig; { /* If we aren't sure the of the original value, then get it. */ if (original_signals[sig] == (SigHandler *)IMPOSSIBLE_TRAP_HANDLER) - { - original_signals[sig] = - (SigHandler *) set_signal_handler (sig, SIG_DFL); - set_signal_handler (sig, original_signals[sig]); - - /* Signals ignored on entry to the shell cannot be trapped. */ - if (original_signals[sig] == SIG_IGN) - sigmodes[sig] |= SIG_HARD_IGNORE; - } + GETORIGSIG (sig); } /* Restore the default action for SIG; i.e., the action the shell @@ -541,7 +596,8 @@ restore_default_signal (sig) { if (SPECIAL_TRAP (sig)) { - if ((sig != DEBUG_TRAP && sig != ERROR_TRAP) || (sigmodes[sig] & SIG_INPROGRESS) == 0) + if ((sig != DEBUG_TRAP && sig != ERROR_TRAP && sig != RETURN_TRAP) || + (sigmodes[sig] & SIG_INPROGRESS) == 0) free_trap_command (sig); trap_list[sig] = (char *)NULL; sigmodes[sig] &= ~SIG_TRAPPED; @@ -609,9 +665,10 @@ int run_exit_trap () { char *trap_command; - int code, old_exit_value; + int code, function_code, retval; - old_exit_value = last_command_exit_value; + trap_saved_exit_value = last_command_exit_value; + function_code = 0; /* Run the trap only if signal 0 is trapped and not ignored, and we are not currently running in the trap handler (call to exit in the list of @@ -623,20 +680,34 @@ run_exit_trap () sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; sigmodes[EXIT_TRAP] |= SIG_INPROGRESS; + retval = trap_saved_exit_value; + running_trap = 1; + code = setjmp (top_level); - if (code == 0) + /* If we're in a function, make sure return longjmps come here, too. */ + if (return_catch_flag) + function_code = setjmp (return_catch); + + if (code == 0 && function_code == 0) { reset_parser (); - parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST); + parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); } + else if (code == ERREXIT) + retval = last_command_exit_value; else if (code == EXITPROG) - return (last_command_exit_value); + retval = last_command_exit_value; + else if (function_code != 0) + retval = return_catch_value; else - return (old_exit_value); + retval = trap_saved_exit_value; + + running_trap = 0; + return retval; } - return (old_exit_value); + return (trap_saved_exit_value); } void @@ -647,15 +718,18 @@ run_trap_cleanup (sig) } /* Run a trap command for SIG. SIG is one of the signals the shell treats - specially. */ -static void + specially. Returns the exit status of the executed trap command list. */ +static int _run_trap_internal (sig, tag) int sig; char *tag; { char *trap_command, *old_trap; - int old_exit_value, *token_state; + int trap_exit_value, *token_state; + int save_return_catch_flag, function_code, flags; + procenv_t save_return_catch; + trap_exit_value = function_code = 0; /* Run the trap only if SIG is trapped and not ignored, and we are not currently executing in the trap handler. */ if ((sigmodes[sig] & SIG_TRAPPED) && ((sigmodes[sig] & SIG_IGNORED) == 0) && @@ -668,43 +742,107 @@ _run_trap_internal (sig, tag) trap_command = savestring (old_trap); running_trap = sig + 1; - old_exit_value = last_command_exit_value; - /* Need to copy the value of line_number because parse_and_execute - resets it to 1, and the trap command might want it. */ - trap_line_number = line_number; + trap_saved_exit_value = last_command_exit_value; token_state = save_token_state (); - parse_and_execute (trap_command, tag, SEVAL_NONINT|SEVAL_NOHIST); + + /* If we're in a function, make sure return longjmps come here, too. */ + save_return_catch_flag = return_catch_flag; + if (return_catch_flag) + { + COPY_PROCENV (return_catch, save_return_catch); + function_code = setjmp (return_catch); + } + + flags = SEVAL_NONINT|SEVAL_NOHIST; + if (sig != DEBUG_TRAP && sig != RETURN_TRAP) + flags |= SEVAL_RESETLINE; + if (function_code == 0) + parse_and_execute (trap_command, tag, flags); + restore_token_state (token_state); free (token_state); - last_command_exit_value = old_exit_value; + trap_exit_value = last_command_exit_value; + last_command_exit_value = trap_saved_exit_value; running_trap = 0; sigmodes[sig] &= ~SIG_INPROGRESS; if (sigmodes[sig] & SIG_CHANGED) { - free (old_trap); +#if 0 + /* Special traps like EXIT, DEBUG, RETURN are handled explicitly in + the places where they can be changed using unwind-protects. For + example, look at execute_cmd.c:execute_function(). */ + if (SPECIAL_TRAP (sig) == 0) +#endif + free (old_trap); sigmodes[sig] &= ~SIG_CHANGED; } + + if (save_return_catch_flag) + { + return_catch_flag = save_return_catch_flag; + return_catch_value = trap_exit_value; + COPY_PROCENV (save_return_catch, return_catch); + if (function_code) + longjmp (return_catch, 1); + } } + + return trap_exit_value; } -void +int run_debug_trap () { - if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && ((sigmodes[DEBUG_TRAP] & SIG_INPROGRESS) == 0)) - _run_trap_internal (DEBUG_TRAP, "debug trap"); + int trap_exit_value; + + /* XXX - question: should the DEBUG trap inherit the RETURN trap? */ + trap_exit_value = 0; + if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && ((sigmodes[DEBUG_TRAP] & SIG_IGNORED) == 0) && ((sigmodes[DEBUG_TRAP] & SIG_INPROGRESS) == 0)) + { + trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap"); + +#if defined (DEBUGGER) + /* If we're in the debugger and the DEBUG trap returns 2 while we're in + a function or sourced script, we force a `return'. */ + if (debugging_mode && trap_exit_value == 2 && return_catch_flag) + { + return_catch_value = trap_exit_value; + longjmp (return_catch, 1); + } +#endif + } + return trap_exit_value; } void run_error_trap () { - if ((sigmodes[ERROR_TRAP] & SIG_TRAPPED) && (sigmodes[ERROR_TRAP] & SIG_INPROGRESS) == 0) + if ((sigmodes[ERROR_TRAP] & SIG_TRAPPED) && ((sigmodes[ERROR_TRAP] & SIG_IGNORED) == 0) && (sigmodes[ERROR_TRAP] & SIG_INPROGRESS) == 0) _run_trap_internal (ERROR_TRAP, "error trap"); } +void +run_return_trap () +{ + int old_exit_value; + +#if 0 + if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && (sigmodes[DEBUG_TRAP] & SIG_INPROGRESS)) + return; +#endif + + if ((sigmodes[RETURN_TRAP] & SIG_TRAPPED) && ((sigmodes[RETURN_TRAP] & SIG_IGNORED) == 0) && (sigmodes[RETURN_TRAP] & SIG_INPROGRESS) == 0) + { + old_exit_value = last_command_exit_value; + _run_trap_internal (RETURN_TRAP, "return trap"); + last_command_exit_value = old_exit_value; + } +} + /* Run a trap set on SIGINT. This is called from throw_to_top_level (), and declared here to localize the trap functions. */ void @@ -727,7 +865,7 @@ free_trap_strings () trap_list[i] = (char *)DEFAULT_SIG; sigmodes[i] &= ~SIG_TRAPPED; } - trap_list[DEBUG_TRAP] = trap_list[EXIT_TRAP] = trap_list[ERROR_TRAP] = (char *)NULL; + trap_list[DEBUG_TRAP] = trap_list[EXIT_TRAP] = trap_list[ERROR_TRAP] = trap_list[RETURN_TRAP] = (char *)NULL; } #endif @@ -760,10 +898,14 @@ reset_or_restore_signal_handlers (reset) /* Take care of the exit trap first */ if (sigmodes[EXIT_TRAP] & SIG_TRAPPED) { - free_trap_command (EXIT_TRAP); - trap_list[EXIT_TRAP] = (char *)NULL; sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; + if (reset != reset_signal) + { + free_trap_command (EXIT_TRAP); + trap_list[EXIT_TRAP] = (char *)NULL; + } } + for (i = 1; i < NSIG; i++) { if (sigmodes[i] & SIG_TRAPPED) @@ -778,9 +920,17 @@ reset_or_restore_signal_handlers (reset) } /* Command substitution and other child processes don't inherit the - debug or error traps. */ - sigmodes[DEBUG_TRAP] &= ~SIG_TRAPPED; - sigmodes[ERROR_TRAP] &= ~SIG_TRAPPED; + debug, error, or return traps. If we're in the debugger, and the + `functrace' or `errtrace' options have been set, then let command + substitutions inherit them. Let command substitution inherit the + RETURN trap if we're in the debugger and tracing functions. */ + if (function_trace_mode == 0) + { + sigmodes[DEBUG_TRAP] &= ~SIG_TRAPPED; + sigmodes[RETURN_TRAP] &= ~SIG_TRAPPED; + } + if (error_trace_mode == 0) + sigmodes[ERROR_TRAP] &= ~SIG_TRAPPED; } /* Reset trapped signals to their original values, but don't free the @@ -861,3 +1011,10 @@ set_signal_ignored (sig) sigmodes[sig] |= SIG_HARD_IGNORE; original_signals[sig] = SIG_IGN; } + +int +signal_in_progress (sig) + int sig; +{ + return (sigmodes[sig] & SIG_INPROGRESS); +} diff --git a/src/bin/bash/trap.h b/src/bin/bash/trap.h index 3380e0a6a1..c34b7eb5d1 100644 --- a/src/bin/bash/trap.h +++ b/src/bin/bash/trap.h @@ -1,22 +1,22 @@ /* trap.h -- data structures used in the trap mechanism. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #if !defined (_TRAP_H_) #define _TRAP_H_ @@ -33,18 +33,23 @@ #endif /* !NSIG */ #define NO_SIG -1 -#define DEFAULT_SIG SIG_DFL -#define IGNORE_SIG SIG_IGN +#define DEFAULT_SIG SIG_DFL +#define IGNORE_SIG SIG_IGN /* Special shell trap names. */ -#define DEBUG_TRAP NSIG -#define ERROR_TRAP NSIG+1 -#define EXIT_TRAP 0 +#define DEBUG_TRAP NSIG +#define ERROR_TRAP NSIG+1 +#define RETURN_TRAP NSIG+2 +#define EXIT_TRAP 0 /* system signals plus special bash traps */ -#define BASH_NSIG NSIG+2 +#define BASH_NSIG NSIG+3 -#define signal_object_p(x) (decode_signal (x) != NO_SIG) +/* Flags values for decode_signal() */ +#define DSIG_SIGPREFIX 0x01 /* don't alllow `SIG' PREFIX */ +#define DSIG_NOCASE 0x02 /* case-insensitive comparison */ + +#define signal_object_p(x,f) (decode_signal (x,f) != NO_SIG) #define TRAP_STRING(s) \ (signal_is_trapped (s) && signal_is_ignored (s) == 0) ? trap_list[s] \ @@ -54,31 +59,41 @@ extern char *trap_list[]; /* Externally-visible functions declared in trap.c. */ extern void initialize_traps __P((void)); + extern void run_pending_traps __P((void)); + extern void maybe_set_sigchld_trap __P((char *)); +extern void set_impossible_sigchld_trap __P((void)); extern void set_sigchld_trap __P((char *)); + extern void set_debug_trap __P((char *)); extern void set_error_trap __P((char *)); +extern void set_return_trap __P((char *)); + extern void set_sigint_trap __P((char *)); extern void set_signal __P((int, char *)); + extern void restore_default_signal __P((int)); extern void ignore_signal __P((int)); extern int run_exit_trap __P((void)); extern void run_trap_cleanup __P((int)); -extern void run_debug_trap __P((void)); +extern int run_debug_trap __P((void)); extern void run_error_trap __P((void)); +extern void run_return_trap __P((void)); + extern void free_trap_strings __P((void)); extern void reset_signal_handlers __P((void)); extern void restore_original_signals __P((void)); extern char *signal_name __P((int)); -extern int decode_signal __P((char *)); +extern int decode_signal __P((char *, int)); extern void run_interrupt_trap __P((void)); extern int maybe_call_trap_handler __P((int)); extern int signal_is_trapped __P((int)); extern int signal_is_ignored __P((int)); extern int signal_is_special __P((int)); extern void set_signal_ignored __P((int)); +extern int signal_in_progress __P((int)); #endif /* _TRAP_H_ */ diff --git a/src/bin/bash/unwind_prot.c b/src/bin/bash/unwind_prot.c index 4bb7a78f01..9e150a662a 100644 --- a/src/bin/bash/unwind_prot.c +++ b/src/bin/bash/unwind_prot.c @@ -1,23 +1,25 @@ +/* unwind_prot.c - a simple unwind-protect system for internal variables */ + /* I can't stand it anymore! Please can't we just write the whole Unix system in lisp or something? */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. -This file is part of GNU Bash, the Bourne Again SHell. + This file is part of GNU Bash, the Bourne Again SHell. -Bash is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -Bash is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with Bash; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ /* **************************************************************** */ /* */ @@ -73,8 +75,6 @@ typedef union uwp { } UNWIND_ELT; -extern int interrupt_immediately; - static void without_interrupts __P((VFunction *, char *, char *)); static void unwind_frame_discard_internal __P((char *, char *)); static void unwind_frame_run_internal __P((char *, char *)); @@ -176,6 +176,12 @@ clear_unwind_protect_list (flags) } } +int +have_unwind_protects () +{ + return (unwind_protect_list != 0); +} + /* **************************************************************** */ /* */ /* The Actual Functions */ diff --git a/src/bin/bash/unwind_prot.h b/src/bin/bash/unwind_prot.h index 8033a0500b..cc556f746f 100644 --- a/src/bin/bash/unwind_prot.h +++ b/src/bin/bash/unwind_prot.h @@ -1,22 +1,22 @@ /* unwind_prot.h - Macros and functions for hacking unwind protection. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #if !defined (_UNWIND_PROT_H) #define _UNWIND_PROT_H @@ -29,6 +29,7 @@ extern void add_unwind_protect (); /* Not portable to arbitrary C99 hosts. */ extern void remove_unwind_protect __P((void)); extern void run_unwind_protects __P((void)); extern void clear_unwind_protect_list __P((int)); +extern int have_unwind_protects __P((void)); extern void uwp_init __P((void)); /* Define for people who like their code to look a certain way. */ diff --git a/src/bin/bash/variables.c b/src/bin/bash/variables.c index 1f9180e839..8920bad1dd 100644 --- a/src/bin/bash/variables.c +++ b/src/bin/bash/variables.c @@ -1,22 +1,22 @@ /* variables.c -- Functions for hacking shell variables. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #include "config.h" @@ -24,9 +24,13 @@ #include "posixstat.h" #include "posixtime.h" -#if defined (qnx) -# include -#endif +#if defined (__QNX__) +# if defined (__QNXNTO__) +# include +# else +# include +# endif /* !__QNXNTO__ */ +#endif /* __QNX__ */ #if defined (HAVE_UNISTD_H) # include @@ -34,8 +38,11 @@ #include #include "chartypes.h" -#include +#if defined (HAVE_PWD_H) +# include +#endif #include "bashansi.h" +#include "bashintl.h" #include "shell.h" #include "flags.h" @@ -45,6 +52,7 @@ #include "input.h" #include "hashcmd.h" #include "pathexp.h" +#include "alias.h" #include "builtins/getopt.h" #include "builtins/common.h" @@ -69,19 +77,31 @@ #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') +extern char **environ; + /* Variables used here and defined in other files. */ extern int posixly_correct; extern int line_number; -extern int subshell_environment, indirection_level; +extern int subshell_environment, indirection_level, subshell_level; extern int build_version, patch_level; +extern int expanding_redir; extern char *dist_version, *release_status; extern char *shell_name; extern char *primary_prompt, *secondary_prompt; extern char *current_host_name; extern sh_builtin_func_t *this_shell_builtin; extern SHELL_VAR *this_shell_function; +extern char *the_printed_command_except_trap; extern char *this_command_name; +extern char *command_execution_string; extern time_t shell_start_time; +extern int assigning_in_environment; +extern int executing_builtin; + +#if defined (READLINE) +extern int no_line_editing; +extern int perform_hostname_completion; +#endif /* The list of shell variables that the user has created at the global scope, or that came from the environment. */ @@ -94,6 +114,12 @@ VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL; the environment. */ HASH_TABLE *shell_functions = (HASH_TABLE *)NULL; +#if defined (DEBUGGER) +/* The table of shell function definitions that the user defined or that + came from the environment. */ +HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL; +#endif + /* The current variable context. This is really a count of how deep into executing functions we are. */ int variable_context = 0; @@ -102,6 +128,10 @@ int variable_context = 0; for a single command. */ HASH_TABLE *temporary_env = (HASH_TABLE *)NULL; +/* Set to non-zero if an assignment error occurs while putting variables + into the temporary environment. */ +int tempenv_assign_error; + /* Some funky variables which are known about specially. Here is where "$*", "$1", and all the cruft is kept. */ char *dollar_vars[10]; @@ -110,13 +140,6 @@ WORD_LIST *rest_of_args = (WORD_LIST *)NULL; /* The value of $$. */ pid_t dollar_dollar_pid; -/* An array which is passed to commands as their environment. It is - manufactured from the union of the initial environment and the - shell variables that are marked for export. */ -char **export_env = (char **)NULL; -static int export_env_index; -static int export_env_size; - /* Non-zero means that we have to remake EXPORT_ENV. */ int array_needs_making = 1; @@ -124,7 +147,21 @@ int array_needs_making = 1; by initialize_variables (). */ int shell_level = 0; +/* An array which is passed to commands as their environment. It is + manufactured from the union of the initial environment and the + shell variables that are marked for export. */ +char **export_env = (char **)NULL; +static int export_env_index; +static int export_env_size; + +#if defined (READLINE) +static int winsize_assignment; /* currently assigning to LINES or COLUMNS */ +static int winsize_assigned; /* assigned to LINES or COLUMNS */ +#endif + /* Some forward declarations. */ +static void create_variable_tables __P((void)); + static void set_machine_vars __P((void)); static void set_home_var __P((void)); static void set_shell_var __P((void)); @@ -135,36 +172,58 @@ static void uidset __P((void)); static void make_vers_array __P((void)); #endif -static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *)); #if defined (ARRAY_VARS) -static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *)); +#endif +static SHELL_VAR *get_self __P((SHELL_VAR *)); + +#if defined (ARRAY_VARS) +static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int)); +static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int)); #endif -static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_seconds __P((SHELL_VAR *)); static SHELL_VAR *init_seconds_var __P((void)); static int brand __P((void)); static void sbrand __P((unsigned long)); /* set bash random number generator. */ -static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t)); +static void seedrand __P((void)); /* seed generator randomly */ +static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_random __P((SHELL_VAR *)); -static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_lineno __P((SHELL_VAR *)); +static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *)); +static SHELL_VAR *get_subshell __P((SHELL_VAR *)); + +static SHELL_VAR *get_bashpid __P((SHELL_VAR *)); + #if defined (HISTORY) static SHELL_VAR *get_histcmd __P((SHELL_VAR *)); #endif +#if defined (READLINE) +static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *)); +static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *)); +#endif + #if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) -static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_dirstack __P((SHELL_VAR *)); -static SHELL_VAR *init_dirstack_var __P((void)); #endif #if defined (ARRAY_VARS) static SHELL_VAR *get_groupset __P((SHELL_VAR *)); -static SHELL_VAR *init_groups_var __P((void)); + +static SHELL_VAR *build_hashcmd __P((SHELL_VAR *)); +static SHELL_VAR *get_hashcmd __P((SHELL_VAR *)); +static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *, char *, arrayind_t, char *)); +static SHELL_VAR *build_aliasvar __P((SHELL_VAR *)); +static SHELL_VAR *get_aliasvar __P((SHELL_VAR *)); +static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *, char *, arrayind_t, char *)); #endif static SHELL_VAR *get_funcname __P((SHELL_VAR *)); @@ -175,8 +234,9 @@ static void initialize_dynamic_variables __P((void)); static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *)); static SHELL_VAR *new_shell_variable __P((const char *)); static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *)); -static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int)); +static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int)); +static void dispose_variable_value __P((SHELL_VAR *)); static void free_variable_hash_data __P((PTR_T)); static VARLIST *vlist_alloc __P((int)); @@ -216,7 +276,26 @@ static void push_func_var __P((PTR_T)); static void push_exported_var __P((PTR_T)); static inline int find_special_var __P((const char *)); - + +static void +create_variable_tables () +{ + if (shell_variables == 0) + { + shell_variables = global_variables = new_var_context ((char *)NULL, 0); + shell_variables->scope = 0; + shell_variables->table = hash_create (0); + } + + if (shell_functions == 0) + shell_functions = hash_create (0); + +#if defined (DEBUGGER) + if (shell_function_defs == 0) + shell_function_defs = hash_create (0); +#endif +} + /* Initialize the shell variables from the current environment. If PRIVMODE is nonzero, don't import functions from ENV or parse $SHELLOPTS. */ @@ -229,15 +308,7 @@ initialize_shell_variables (env, privmode) int c, char_index, string_index, string_length; SHELL_VAR *temp_var; - if (shell_variables == 0) - { - shell_variables = global_variables = new_var_context ((char *)NULL, 0); - shell_variables->scope = 0; - shell_variables->table = hash_create (0); - } - - if (shell_functions == 0) - shell_functions = hash_create (0); + create_variable_tables (); for (string_index = 0; string = env[string_index++]; ) { @@ -258,6 +329,8 @@ initialize_shell_variables (env, privmode) /* Now, name = env variable name, string = env variable value, and char_index == strlen (name) */ + temp_var = (SHELL_VAR *)NULL; + /* If exported function, define it now. Don't import functions from the environment in privileged mode. */ if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4)) @@ -282,7 +355,7 @@ initialize_shell_variables (env, privmode) array_needs_making = 1; } else - report_error ("error importing function definition for `%s'", name); + report_error (_("error importing function definition for `%s'"), name); /* ( */ if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') @@ -291,7 +364,7 @@ initialize_shell_variables (env, privmode) #if defined (ARRAY_VARS) # if 0 /* Array variables may not yet be exported. */ - else if (*string == '(' && string[1] == '[' && xstrchr (string, ')')) + else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') { string_length = 1; temp_string = extract_array_assignment_list (string, &string_length); @@ -302,9 +375,9 @@ initialize_shell_variables (env, privmode) } # endif #endif - else + else if (legal_identifier (name)) { - temp_var = bind_variable (name, string); + temp_var = bind_variable (name, string, 0); VSETATTR (temp_var, (att_exported | att_imported)); array_needs_making = 1; } @@ -321,7 +394,7 @@ initialize_shell_variables (env, privmode) set_pwd (); /* Set up initial value of $_ */ - temp_var = bind_variable ("_", dollar_vars[0]); + temp_var = set_if_not ("_", dollar_vars[0]); /* Remember this pid. */ dollar_dollar_pid = getpid (); @@ -338,12 +411,16 @@ initialize_shell_variables (env, privmode) set_auto_export (temp_var); /* XXX */ #endif -#if defined (qnx) +#if defined (__QNX__) /* set node id -- don't import it from the environment */ { char node_name[22]; +# if defined (__QNXNTO__) + netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name)); +# else qnx_nidtostr (getnid (), node_name, sizeof (node_name)); - temp_var = bind_variable ("NODE", node_name); +# endif + temp_var = bind_variable ("NODE", node_name, 0); set_auto_export (temp_var); } #endif @@ -363,7 +440,7 @@ initialize_shell_variables (env, privmode) set_if_not ("PS4", "+ "); /* Don't allow IFS to be imported from the environment. */ - temp_var = bind_variable ("IFS", " \t\n"); + temp_var = bind_variable ("IFS", " \t\n", 0); setifs (temp_var); /* Magic machine types. Pretty convenient. */ @@ -374,7 +451,10 @@ initialize_shell_variables (env, privmode) names a mail file if MAILPATH is not set, and we should provide a default only if neither is set. */ if (interactive_shell) - set_if_not ("MAILCHECK", posixly_correct ? "600" : "60"); + { + temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60"); + VSETATTR (temp_var, att_integer); + } /* Do some things with shell level. */ initialize_shell_level (); @@ -382,18 +462,19 @@ initialize_shell_variables (env, privmode) set_ppid (); /* Initialize the `getopts' stuff. */ - bind_variable ("OPTIND", "1"); + temp_var = bind_variable ("OPTIND", "1", 0); + VSETATTR (temp_var, att_integer); getopts_reset (0); - bind_variable ("OPTERR", "1"); + bind_variable ("OPTERR", "1", 0); sh_opterr = 1; - if (login_shell == 1) + if (login_shell == 1 && posixly_correct == 0) set_home_var (); /* Get the full pathname to THIS shell, and set the BASH variable to it. */ name = get_bash_name (); - temp_var = bind_variable ("BASH", name); + temp_var = bind_variable ("BASH", name, 0); free (name); /* Make the exported environment variable SHELL be the user's login @@ -403,11 +484,14 @@ initialize_shell_variables (env, privmode) set_shell_var (); /* Make a variable called BASH_VERSION which contains the version info. */ - bind_variable ("BASH_VERSION", shell_version_string ()); + bind_variable ("BASH_VERSION", shell_version_string (), 0); #if defined (ARRAY_VARS) make_vers_array (); #endif + if (command_execution_string) + bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0); + /* Find out if we're supposed to be in Posix.2 mode via an environment variable. */ temp_var = find_variable ("POSIXLY_CORRECT"); @@ -427,13 +511,15 @@ initialize_shell_variables (env, privmode) set_if_not ("HISTFILE", name); free (name); +#if 0 set_if_not ("HISTSIZE", "500"); sv_histsize ("HISTSIZE"); +#endif } #endif /* HISTORY */ /* Seed the random number generator. */ - sbrand (dollar_dollar_pid + shell_start_time); + seedrand (); /* Handle some "special" variables that we may have inherited from a parent shell. */ @@ -451,9 +537,17 @@ initialize_shell_variables (env, privmode) { sv_history_control ("HISTCONTROL"); sv_histignore ("HISTIGNORE"); + sv_histtimefmt ("HISTTIMEFORMAT"); } #endif /* HISTORY */ +#if defined (READLINE) && defined (STRICT_POSIX) + /* POSIXLY_CORRECT will only be 1 here if the shell was compiled + -DSTRICT_POSIX */ + if (interactive_shell && posixly_correct && no_line_editing == 0) + rl_prefer_env_winsize = 1; +#endif /* READLINE && STRICT_POSIX */ + /* * 24 October 2001 * @@ -524,7 +618,7 @@ set_home_var () temp_var = find_variable ("HOME"); if (temp_var == 0) - temp_var = bind_variable ("HOME", sh_get_home_dir ()); + temp_var = bind_variable ("HOME", sh_get_home_dir (), 0); #if 0 VSETATTR (temp_var, att_exported); #endif @@ -542,7 +636,7 @@ set_shell_var () { if (current_user.shell == 0) get_current_user_info (); - temp_var = bind_variable ("SHELL", current_user.shell); + temp_var = bind_variable ("SHELL", current_user.shell, 0); } #if 0 VSETATTR (temp_var, att_exported); @@ -639,7 +733,7 @@ adjust_shell_level (change) shell_level = 0; else if (shell_level > 1000) { - internal_warning ("shell level (%d) too high, resetting to 1", shell_level); + internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level); shell_level = 1; } @@ -664,7 +758,7 @@ adjust_shell_level (change) new_level[3] = '\0'; } - temp_var = bind_variable ("SHLVL", new_level); + temp_var = bind_variable ("SHLVL", new_level, 0); set_auto_export (temp_var); } @@ -699,7 +793,7 @@ set_pwd () same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL)) { set_working_directory (home_string); - temp_var = bind_variable ("PWD", home_string); + temp_var = bind_variable ("PWD", home_string, 0); set_auto_export (temp_var); } else @@ -707,7 +801,7 @@ set_pwd () temp_string = get_working_directory ("shell-init"); if (temp_string) { - temp_var = bind_variable ("PWD", temp_string); + temp_var = bind_variable ("PWD", temp_string, 0); set_auto_export (temp_var); free (temp_string); } @@ -716,7 +810,7 @@ set_pwd () /* According to the Single Unix Specification, v2, $OLDPWD is an `environment variable' and therefore should be auto-exported. Make a dummy invisible variable for OLDPWD, and mark it as exported. */ - temp_var = bind_variable ("OLDPWD", (char *)NULL); + temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); VSETATTR (temp_var, (att_exported | att_invisible)); } @@ -731,7 +825,7 @@ set_ppid () temp_var = find_variable ("PPID"); if (temp_var) VUNSETATTR (temp_var, (att_readonly | att_exported)); - temp_var = bind_variable ("PPID", name); + temp_var = bind_variable ("PPID", name, 0); VSETATTR (temp_var, (att_readonly | att_integer)); } @@ -745,7 +839,7 @@ uidset () v = find_variable ("UID"); if (v == 0) { - v = bind_variable ("UID", b); + v = bind_variable ("UID", b, 0); VSETATTR (v, (att_readonly | att_integer)); } @@ -755,7 +849,7 @@ uidset () v = find_variable ("EUID"); if (v == 0) { - v = bind_variable ("EUID", b); + v = bind_variable ("EUID", b, 0); VSETATTR (v, (att_readonly | att_integer)); } } @@ -797,11 +891,17 @@ sh_set_lines_and_columns (lines, cols) { char val[INT_STRLEN_BOUND(int) + 1], *v; +#if defined (READLINE) + /* If we are currently assigning to LINES or COLUMNS, don't do anything. */ + if (winsize_assignment) + return; +#endif + v = inttostr (lines, val, sizeof (val)); - bind_variable ("LINES", v); + bind_variable ("LINES", v, 0); v = inttostr (cols, val, sizeof (val)); - bind_variable ("COLUMNS", v); + bind_variable ("COLUMNS", v, 0); } /* **************************************************************** */ @@ -860,6 +960,8 @@ print_assignment (var) #if defined (ARRAY_VARS) else if (array_p (var)) print_array_assignment (var, 0); + else if (assoc_p (var)) + print_assoc_assignment (var, 0); #endif /* ARRAY_VARS */ else { @@ -905,8 +1007,13 @@ void print_var_function (var) SHELL_VAR *var; { + char *x; + if (function_p (var) && var_isset (var)) - printf ("%s", named_function_string ((char *)NULL, function_cell(var), 1)); + { + x = named_function_string ((char *)NULL, function_cell(var), FUNC_MULTILINE|FUNC_EXTERNAL); + printf ("%s", x); + } } /* **************************************************************** */ @@ -951,7 +1058,7 @@ print_var_function (var) #define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \ do \ { \ - v = bind_variable (var, (val)); \ + v = bind_variable (var, (val), 0); \ v->dynamic_value = gfunc; \ v->assign_func = afunc; \ } \ @@ -966,36 +1073,97 @@ print_var_function (var) } \ while (0) +#define INIT_DYNAMIC_ASSOC_VAR(var, gfunc, afunc) \ + do \ + { \ + v = make_new_assoc_variable (var); \ + v->dynamic_value = gfunc; \ + v->assign_func = afunc; \ + } \ + while (0) + static SHELL_VAR * -null_assign (self, value, unused) +null_assign (self, value, unused, key) SHELL_VAR *self; char *value; arrayind_t unused; + char *key; { return (self); } #if defined (ARRAY_VARS) static SHELL_VAR * -null_array_assign (self, value, ind) +null_array_assign (self, value, ind, key) SHELL_VAR *self; char *value; arrayind_t ind; + char *key; { return (self); } #endif +/* Degenerate `dynamic_value' function; just returns what's passed without + manipulation. */ +static SHELL_VAR * +get_self (self) + SHELL_VAR *self; +{ + return (self); +} + +#if defined (ARRAY_VARS) +/* A generic dynamic array variable initializer. Intialize array variable + NAME with dynamic value function GETFUNC and assignment function SETFUNC. */ +static SHELL_VAR * +init_dynamic_array_var (name, getfunc, setfunc, attrs) + char *name; + sh_var_value_func_t *getfunc; + sh_var_assign_func_t *setfunc; + int attrs; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v) + return (v); + INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc); + if (attrs) + VSETATTR (v, attrs); + return v; +} + +static SHELL_VAR * +init_dynamic_assoc_var (name, getfunc, setfunc, attrs) + char *name; + sh_var_value_func_t *getfunc; + sh_var_assign_func_t *setfunc; + int attrs; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v) + return (v); + INIT_DYNAMIC_ASSOC_VAR (name, getfunc, setfunc); + if (attrs) + VSETATTR (v, attrs); + return v; +} +#endif + /* The value of $SECONDS. This is the number of seconds since shell invocation, or, the number of seconds since the last assignment + the value of the last assignment. */ static intmax_t seconds_value_assigned; static SHELL_VAR * -assign_seconds (self, value, unused) +assign_seconds (self, value, unused, key) SHELL_VAR *self; char *value; arrayind_t unused; + char *key; { if (legal_number (value, &seconds_value_assigned) == 0) seconds_value_assigned = 0; @@ -1038,6 +1206,7 @@ init_seconds_var () /* The random number seed. You can change this by setting RANDOM. */ static unsigned long rseed = 1; static int last_random_value; +static int seeded_subshell = 0; /* A linear congruential random number generator based on the example one in the ANSI C standard. This one isn't very good, but a more @@ -1047,8 +1216,26 @@ static int last_random_value; static int brand () { +#if 0 rseed = rseed * 1103515245 + 12345; return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */ +#else + /* 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 */ + long h, l; + + if (rseed == 0) + seedrand (); + h = rseed / 127773; + l = rseed % 127773; + rseed = 16807 * l - 2836 * h; +#if 0 + if (rseed < 0) + rseed += 0x7fffffff; +#endif + return ((unsigned int)(rseed & 32767)); /* was % 32768 */ +#endif } /* Set the random number generator seed to SEED. */ @@ -1060,24 +1247,40 @@ sbrand (seed) last_random_value = 0; } +static void +seedrand () +{ + struct timeval tv; + + gettimeofday (&tv, NULL); + sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); +} + static SHELL_VAR * -assign_random (self, value, unused) +assign_random (self, value, unused, key) SHELL_VAR *self; char *value; arrayind_t unused; + char *key; { sbrand (strtoul (value, (char **)NULL, 10)); + if (subshell_environment) + seeded_subshell = getpid (); return (self); } int get_random_number () { - int rv; + int rv, pid; /* Reset for command and process substitution. */ - if (subshell_environment) - sbrand (rseed + getpid() + NOW); + pid = getpid (); + if (subshell_environment && seeded_subshell != pid) + { + seedrand (); + seeded_subshell = pid; + } do rv = brand (); @@ -1104,10 +1307,11 @@ get_random (var) } static SHELL_VAR * -assign_lineno (var, value, unused) +assign_lineno (var, value, unused, key) SHELL_VAR *var; char *value; arrayind_t unused; + char *key; { intmax_t new_value; @@ -1132,6 +1336,67 @@ get_lineno (var) return (var); } +static SHELL_VAR * +assign_subshell (var, value, unused, key) + SHELL_VAR *var; + char *value; + arrayind_t unused; + char *key; +{ + intmax_t new_value; + + if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0) + new_value = 0; + subshell_level = new_value; + return var; +} + +static SHELL_VAR * +get_subshell (var) + SHELL_VAR *var; +{ + char *p; + + p = itos (subshell_level); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +get_bashpid (var) + SHELL_VAR *var; +{ + int pid; + char *p; + + pid = getpid (); + p = itos (pid); + + FREE (value_cell (var)); + VSETATTR (var, att_integer|att_readonly); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +get_bash_command (var) + SHELL_VAR *var; +{ + char *p; + + if (the_printed_command_except_trap) + p = savestring (the_printed_command_except_trap); + else + { + p = (char *)xmalloc (1); + p[0] = '\0'; + } + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + #if defined (HISTORY) static SHELL_VAR * get_histcmd (var) @@ -1146,12 +1411,47 @@ get_histcmd (var) } #endif +#if defined (READLINE) +/* When this function returns, VAR->value points to malloced memory. */ +static SHELL_VAR * +get_comp_wordbreaks (var) + SHELL_VAR *var; +{ + /* If we don't have anything yet, assign a default value. */ + if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0) + enable_hostname_completion (perform_hostname_completion); + + FREE (value_cell (var)); + var_setvalue (var, savestring (rl_completer_word_break_characters)); + + return (var); +} + +/* When this function returns, rl_completer_word_break_characters points to + malloced memory. */ +static SHELL_VAR * +assign_comp_wordbreaks (self, value, unused, key) + SHELL_VAR *self; + char *value; + arrayind_t unused; + char *key; +{ + if (rl_completer_word_break_characters && + rl_completer_word_break_characters != rl_basic_word_break_characters) + free (rl_completer_word_break_characters); + + rl_completer_word_break_characters = savestring (value); + return self; +} +#endif /* READLINE */ + #if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) -static SHELL_VAR * -assign_dirstack (self, value, ind) +static SHELL_VAR * +assign_dirstack (self, value, ind, key) SHELL_VAR *self; char *value; arrayind_t ind; + char *key; { set_dirstack_element (ind, 1, value); return self; @@ -1164,25 +1464,13 @@ get_dirstack (self) ARRAY *a; WORD_LIST *l; - l = get_directory_stack (); + l = get_directory_stack (0); a = array_from_word_list (l); array_dispose (array_cell (self)); dispose_words (l); var_setarray (self, a); return self; } - -static SHELL_VAR * -init_dirstack_var () -{ - SHELL_VAR *v; - - v = find_variable ("DIRSTACK"); - if (v) - return v; - INIT_DYNAMIC_ARRAY_VAR ("DIRSTACK", get_dirstack, assign_dirstack); - return v; -} #endif /* PUSHD AND POPD && ARRAY_VARS */ #if defined (ARRAY_VARS) @@ -1208,23 +1496,119 @@ get_groupset (self) } static SHELL_VAR * -init_groups_var () +build_hashcmd (self) + SHELL_VAR *self; { - SHELL_VAR *v; + HASH_TABLE *h; + int i; + char *k, *v; + BUCKET_CONTENTS *item; - v = find_variable ("GROUPS"); - if (v) - return (v); - INIT_DYNAMIC_ARRAY_VAR ("GROUPS", get_groupset, null_array_assign); - VSETATTR (v, att_noassign); - return v; + h = assoc_cell (self); + if (h) + assoc_dispose (h); + + if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0) + { + var_setvalue (self, (char *)NULL); + return self; + } + + h = assoc_create (hashed_filenames->nbuckets); + for (i = 0; i < hashed_filenames->nbuckets; i++) + { + for (item = hash_items (i, hashed_filenames); item; item = item->next) + { + k = savestring (item->key); + v = pathdata(item)->path; + assoc_insert (h, k, v); + } + } + + var_setvalue (self, (char *)h); + return self; +} + +static SHELL_VAR * +get_hashcmd (self) + SHELL_VAR *self; +{ + build_hashcmd (self); + return (self); +} + +static SHELL_VAR * +assign_hashcmd (self, value, ind, key) + SHELL_VAR *self; + char *value; + arrayind_t ind; + char *key; +{ + phash_insert (key, value, 0, 0); + return (build_hashcmd (self)); +} + +static SHELL_VAR * +build_aliasvar (self) + SHELL_VAR *self; +{ + HASH_TABLE *h; + int i; + char *k, *v; + BUCKET_CONTENTS *item; + + h = assoc_cell (self); + if (h) + assoc_dispose (h); + + if (aliases == 0 || HASH_ENTRIES (aliases) == 0) + { + var_setvalue (self, (char *)NULL); + return self; + } + + h = assoc_create (aliases->nbuckets); + for (i = 0; i < aliases->nbuckets; i++) + { + for (item = hash_items (i, aliases); item; item = item->next) + { + k = savestring (item->key); + v = ((alias_t *)(item->data))->value; + assoc_insert (h, k, v); + } + } + + var_setvalue (self, (char *)h); + return self; +} + +static SHELL_VAR * +get_aliasvar (self) + SHELL_VAR *self; +{ + build_aliasvar (self); + return (self); +} + +static SHELL_VAR * +assign_aliasvar (self, value, ind, key) + SHELL_VAR *self; + char *value; + arrayind_t ind; + char *key; +{ + add_alias (key, value); + return (build_aliasvar (self)); } #endif /* ARRAY_VARS */ +/* If ARRAY_VARS is not defined, this just returns the name of any + currently-executing function. If we have arrays, it's a call stack. */ static SHELL_VAR * get_funcname (self) SHELL_VAR *self; { +#if ! defined (ARRAY_VARS) char *t; if (variable_context && this_shell_function) { @@ -1232,6 +1616,7 @@ get_funcname (self) t = savestring (this_shell_function->name); var_setvalue (self, t); } +#endif return (self); } @@ -1259,7 +1644,11 @@ init_funcname_var () v = find_variable ("FUNCNAME"); if (v) return v; +#if defined (ARRAY_VARS) + INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign); +#else INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign); +#endif VSETATTR (v, att_invisible|att_noassign); return v; } @@ -1271,19 +1660,42 @@ initialize_dynamic_variables () v = init_seconds_var (); + INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL); + INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell); + INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random); + VSETATTR (v, att_integer); INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno); + VSETATTR (v, att_integer); + + INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign); + VSETATTR (v, att_integer|att_readonly); #if defined (HISTORY) INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL); + VSETATTR (v, att_integer); +#endif + +#if defined (READLINE) + INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks); #endif #if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) - v = init_dirstack_var (); + v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0); #endif /* PUSHD_AND_POPD && ARRAY_VARS */ #if defined (ARRAY_VARS) - v = init_groups_var (); + v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign); + +# if defined (DEBUGGER) + v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset); +# endif /* DEBUGGER */ + v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset); + + v = init_dynamic_assoc_var ("BASH_CMDS", get_hashcmd, assign_hashcmd, att_nofree); + v = init_dynamic_assoc_var ("BASH_ALIASES", get_aliasvar, assign_aliasvar, att_nofree); #endif v = init_funcname_var (); @@ -1330,15 +1742,16 @@ var_lookup (name, vcontext) then also search the temporarily built list of exported variables. The lookup order is: temporary_env - shell_variables list + shell_variables list */ SHELL_VAR * -find_variable_internal (name, search_tempenv) +find_variable_internal (name, force_tempenv) const char *name; - int search_tempenv; + int force_tempenv; { SHELL_VAR *var; + int search_tempenv; var = (SHELL_VAR *)NULL; @@ -1347,7 +1760,9 @@ find_variable_internal (name, search_tempenv) to get the `exported' value of $foo. This happens if we are executing a function or builtin, or if we are looking up a variable in a "subshell environment". */ - if ((search_tempenv || subshell_environment) && temporary_env) + search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment); + + if (search_tempenv && temporary_env) var = hash_lookup (name, temporary_env); if (var == 0) @@ -1364,7 +1779,7 @@ SHELL_VAR * find_variable (name) const char *name; { - return (find_variable_internal (name, this_shell_builtin != 0)); + return (find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)))); } /* Look up the function entry whose name matches STRING. @@ -1376,6 +1791,19 @@ find_function (name) return (hash_lookup (name, shell_functions)); } +/* Find the function definition for the shell function named NAME. Returns + the entry or NULL. */ +FUNCTION_DEF * +find_function_def (name) + const char *name; +{ +#if defined (DEBUGGER) + return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs)); +#else + return ((FUNCTION_DEF *)0); +#endif +} + /* Return the value of VAR. VAR is assumed to have been the result of a lookup without any subscript, if arrays are compiled into the shell. */ char * @@ -1387,6 +1815,8 @@ get_variable_value (var) #if defined (ARRAY_VARS) else if (array_p (var)) return (array_reference (array_cell (var), 0)); + else if (assoc_p (var)) + return (assoc_reference (assoc_cell (var), "0")); #endif else return (value_cell (var)); @@ -1428,9 +1858,12 @@ set_if_not (name, value) { SHELL_VAR *v; + if (shell_variables == 0) + create_variable_tables (); + v = find_variable (name); if (v == 0) - v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH); + v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0); return (v); } @@ -1447,7 +1880,10 @@ make_local_variable (name) /* local foo; local foo; is a no-op. */ old_var = find_variable (name); if (old_var && local_p (old_var) && old_var->context == variable_context) - return (old_var); + { + VUNSETATTR (old_var, att_invisible); + return (old_var); + } was_tmpvar = old_var && tempvar_p (old_var); if (was_tmpvar) @@ -1459,7 +1895,7 @@ make_local_variable (name) if (vc == 0) { - internal_error ("make_local_variable: no function context at current scope found"); + internal_error (_("make_local_variable: no function context at current scope")); return ((SHELL_VAR *)NULL); } else if (vc->table == 0) @@ -1481,7 +1917,7 @@ make_local_variable (name) } if (old_var == 0) - new_var = bind_variable_internal (name, "", vc->table, HASH_NOSRCH); + new_var = make_new_variable (name, vc->table); else { new_var = make_new_variable (name, vc->table); @@ -1490,7 +1926,7 @@ make_local_variable (name) inherit its value. Watch to see if this causes problems with things like `x=4 local x'. */ if (was_tmpvar) - var_setvalue (new_var, savestring (tmp_value)); + var_setvalue (new_var, savestring (tmp_value)); new_var->attributes = exported_p (old_var) ? att_exported : 0; } @@ -1506,26 +1942,6 @@ make_local_variable (name) return (new_var); } -#if defined (ARRAY_VARS) -SHELL_VAR * -make_local_array_variable (name) - char *name; -{ - SHELL_VAR *var; - ARRAY *array; - - var = make_local_variable (name); - if (var == 0) - return var; - array = array_create (); - - FREE (value_cell(var)); - var_setarray (var, array); - VSETATTR (var, att_array); - return var; -} -#endif /* ARRAY_VARS */ - /* Create a new shell variable with name NAME. */ static SHELL_VAR * new_shell_variable (name) @@ -1566,11 +1982,7 @@ make_new_variable (name, table) /* Make sure we have a shell_variables hash table to add to. */ if (shell_variables == 0) - { - shell_variables = global_variables = new_var_context ((char *)NULL, 0); - shell_variables->scope = 0; - shell_variables->table = hash_create (0); - } + create_variable_tables (); elt = hash_insert (savestring (name), table, HASH_NOSRCH); elt->data = (PTR_T)entry; @@ -1588,20 +2000,75 @@ make_new_array_variable (name) entry = make_new_variable (name, global_variables->table); array = array_create (); + var_setarray (entry, array); VSETATTR (entry, att_array); return entry; } + +SHELL_VAR * +make_local_array_variable (name) + char *name; +{ + SHELL_VAR *var; + ARRAY *array; + + var = make_local_variable (name); + if (var == 0 || array_p (var)) + return var; + + array = array_create (); + + dispose_variable_value (var); + var_setarray (var, array); + VSETATTR (var, att_array); + return var; +} + +SHELL_VAR * +make_new_assoc_variable (name) + char *name; +{ + SHELL_VAR *entry; + HASH_TABLE *hash; + + entry = make_new_variable (name, global_variables->table); + hash = assoc_create (0); + + var_setassoc (entry, hash); + VSETATTR (entry, att_assoc); + return entry; +} + +SHELL_VAR * +make_local_assoc_variable (name) + char *name; +{ + SHELL_VAR *var; + HASH_TABLE *hash; + + var = make_local_variable (name); + if (var == 0 || assoc_p (var)) + return var; + + dispose_variable_value (var); + hash = assoc_create (0); + + var_setassoc (var, hash); + VSETATTR (var, att_assoc); + return var; +} #endif char * -make_variable_value (var, value) +make_variable_value (var, value, flags) SHELL_VAR *var; char *value; + int flags; { - char *retval; - intmax_t lval; - int expok; + char *retval, *oval; + intmax_t lval, rval; + int expok, olen, op; /* If this variable has had its type set to integer (via `declare -i'), then do expression evaluation on it and store the result. The @@ -1610,14 +2077,68 @@ make_variable_value (var, value) evaluation done. */ if (integer_p (var)) { - lval = evalexp (value, &expok); + if (flags & ASS_APPEND) + { + oval = value_cell (var); + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } + } + rval = evalexp (value, &expok); if (expok == 0) - jump_to_top_level (DISCARD); - retval = itos (lval); + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } + if (flags & ASS_APPEND) + rval += lval; + retval = itos (rval); } +#if defined (CASEMOD_ATTRS) + else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var)) + { + if (flags & ASS_APPEND) + { + oval = get_variable_value (var); + if (oval == 0) /* paranoia */ + oval = ""; + olen = STRLEN (oval); + retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1); + strcpy (retval, oval); + if (value) + strcpy (retval+olen, value); + } + else if (*value) + retval = savestring (value); + else + { + retval = (char *)xmalloc (1); + retval[0] = '\0'; + } + op = capcase_p (var) ? CASE_CAPITALIZE + : (uppercase_p (var) ? CASE_UPPER : CASE_LOWER); + oval = sh_modcase (retval, (char *)0, op); + free (retval); + retval = oval; + } +#endif /* CASEMOD_ATTRS */ else if (value) { - if (*value) + if (flags & ASS_APPEND) + { + oval = get_variable_value (var); + if (oval == 0) /* paranoia */ + oval = ""; + olen = STRLEN (oval); + retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1); + strcpy (retval, oval); + if (value) + strcpy (retval+olen, value); + } + else if (*value) retval = savestring (value); else { @@ -1634,11 +2155,11 @@ make_variable_value (var, value) /* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the temporary environment (but usually is not). */ static SHELL_VAR * -bind_variable_internal (name, value, table, hflags) +bind_variable_internal (name, value, table, hflags, aflags) const char *name; char *value; HASH_TABLE *table; - int hflags; + int hflags, aflags; { char *newval; SHELL_VAR *entry; @@ -1648,12 +2169,16 @@ bind_variable_internal (name, value, table, hflags) if (entry == 0) { entry = make_new_variable (name, table); - var_setvalue (entry, make_variable_value (entry, value)); + var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */ } else if (entry->assign_func) /* array vars have assign functions now */ { INVALIDATE_EXPORTSTR (entry); - return ((*(entry->assign_func)) (entry, value, -1)); + newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value; + entry = (*(entry->assign_func)) (entry, newval, -1, 0); + if (newval != value) + free (newval); + return (entry); } else { @@ -1667,7 +2192,7 @@ bind_variable_internal (name, value, table, hflags) /* Variables which are bound are visible. */ VUNSETATTR (entry, att_invisible); - newval = make_variable_value (entry, value); + newval = make_variable_value (entry, value, aflags); /* XXX */ /* Invalidate any cached export string */ INVALIDATE_EXPORTSTR (entry); @@ -1682,6 +2207,11 @@ bind_variable_internal (name, value, table, hflags) array_insert (array_cell (entry), 0, newval); free (newval); } + else if (assoc_p (entry)) + { + assoc_insert (assoc_cell (entry), "0", newval); + free (newval); + } else #endif { @@ -1704,19 +2234,16 @@ bind_variable_internal (name, value, table, hflags) first, then we bind into shell_variables. */ SHELL_VAR * -bind_variable (name, value) +bind_variable (name, value, flags) const char *name; char *value; + int flags; { SHELL_VAR *v; VAR_CONTEXT *vc; if (shell_variables == 0) - { - shell_variables = global_variables = new_var_context ((char *)NULL, 0); - shell_variables->scope = 0; - shell_variables->table = hash_create (0); - } + create_variable_tables (); /* If we have a temporary environment, look there first for the variable, and, if found, modify the value there before modifying it in the @@ -1730,13 +2257,13 @@ bind_variable (name, value) for (vc = shell_variables; vc; vc = vc->down) { if (vc_isfuncenv (vc) || vc_isbltnenv (vc)) - { - v = hash_lookup (name, vc->table); - if (v) - return (bind_variable_internal (name, value, vc->table, 0)); - } + { + v = hash_lookup (name, vc->table); + if (v) + return (bind_variable_internal (name, value, vc->table, 0, flags)); + } } - return (bind_variable_internal (name, value, global_variables->table, 0)); + return (bind_variable_internal (name, value, global_variables->table, 0, flags)); } /* Make VAR, a simple shell variable, have value VALUE. Once assigned a @@ -1745,17 +2272,30 @@ bind_variable (name, value) all modified variables should be exported, mark the variable for export and note that the export environment needs to be recreated. */ SHELL_VAR * -bind_variable_value (var, value) +bind_variable_value (var, value, aflags) SHELL_VAR *var; char *value; + int aflags; { char *t; VUNSETATTR (var, att_invisible); - t = make_variable_value (var, value); - FREE (value_cell (var)); - var_setvalue (var, t); + if (var->assign_func) + { + /* If we're appending, we need the old value, so use + make_variable_value */ + t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value; + (*(var->assign_func)) (var, t, -1, 0); + if (t != value && t) + free (t); + } + else + { + t = make_variable_value (var, value, aflags); + FREE (value_cell (var)); + var_setvalue (var, t); + } INVALIDATE_EXPORTSTR (var); @@ -1783,12 +2323,11 @@ bind_int_variable (lhs, rhs) char *lhs, *rhs; { register SHELL_VAR *v; - char *t; int isint, isarr; isint = isarr = 0; #if defined (ARRAY_VARS) - if (t = xstrchr (lhs, '[')) /*]*/ + if (valid_array_reference (lhs)) { isarr = 1; v = array_variable_part (lhs, (char **)0, (int *)0); @@ -1805,10 +2344,10 @@ bind_int_variable (lhs, rhs) #if defined (ARRAY_VARS) if (isarr) - v = assign_array_element (lhs, rhs); + v = assign_array_element (lhs, rhs, 0); else #endif - v = bind_variable (lhs, rhs); + v = bind_variable (lhs, rhs, 0); if (isint) VSETATTR (v, att_integer); @@ -1873,19 +2412,53 @@ bind_function (name, value) return (entry); } +#if defined (DEBUGGER) +/* Bind a function definition, which includes source file and line number + information in addition to the command, into the FUNCTION_DEF hash table.*/ +void +bind_function_def (name, value) + const char *name; + FUNCTION_DEF *value; +{ + FUNCTION_DEF *entry; + BUCKET_CONTENTS *elt; + COMMAND *cmd; + + entry = find_function_def (name); + if (entry) + { + dispose_function_def_contents (entry); + entry = copy_function_def_contents (value, entry); + } + else + { + cmd = value->command; + value->command = 0; + entry = copy_function_def (value); + value->command = cmd; + + elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH); + elt->data = (PTR_T *)entry; + } +} +#endif /* DEBUGGER */ + /* Add STRING, which is of the form foo=bar, to the temporary environment HASH_TABLE (temporary_env). The functions in execute_cmd.c are responsible for moving the main temporary env to one of the other temporary environments. The expansion code in subst.c calls this. */ int -assign_in_env (string) - const char *string; +assign_in_env (word) + WORD_DESC *word; { int offset; char *name, *temp, *value; SHELL_VAR *var; + const char *string; - offset = assignment (string); + string = word->word; + + offset = assignment (string, 0); name = savestring (string); value = (char *)NULL; @@ -1893,6 +2466,10 @@ assign_in_env (string) { name[offset] = 0; + /* ignore the `+' when assigning temporary environment */ + if (name[offset - 1] == '+') + name[offset - 1] = '\0'; + var = find_variable (name); if (var && (readonly_p (var) || noassign_p (var))) { @@ -1903,10 +2480,7 @@ assign_in_env (string) } temp = name + offset + 1; - temp = (xstrchr (temp, '~') != 0) ? bash_tilde_expand (temp, 1) : savestring (temp); - - value = expand_string_unsplit_to_string (temp, 0); - free (temp); + value = expand_assignment_string_to_string (temp, 0); } if (temporary_env == 0) @@ -1937,13 +2511,11 @@ assign_in_env (string) setifs (var); if (echo_command_at_execute) - { - /* The Korn shell prints the `+ ' in front of assignment statements, - so we do too. */ - fprintf (stderr, "%s%s=%s\n", indirection_level_string (), name, value); - fflush (stderr); - } + /* The Korn shell prints the `+ ' in front of assignment statements, + so we do too. */ + xtrace_print_assignment (name, value, 0, 1); + free (name); return 1; } @@ -1972,7 +2544,9 @@ copy_variable (var) var_setfunc (copy, copy_command (function_cell (var))); #if defined (ARRAY_VARS) else if (array_p (var)) - var_setarray (copy, dup_array (array_cell (var))); + var_setarray (copy, array_copy (array_cell (var))); + else if (assoc_p (var)) + var_setassoc (copy, assoc_copy (assoc_cell (var))); #endif else if (value_cell (var)) var_setvalue (copy, savestring (value_cell (var))); @@ -1997,6 +2571,22 @@ copy_variable (var) /* **************************************************************** */ /* Dispose of the information attached to VAR. */ +static void +dispose_variable_value (var) + SHELL_VAR *var; +{ + if (function_p (var)) + dispose_command (function_cell (var)); +#if defined (ARRAY_VARS) + else if (array_p (var)) + array_dispose (array_cell (var)); + else if (assoc_p (var)) + assoc_dispose (assoc_cell (var)); +#endif + else + FREE (value_cell (var)); +} + void dispose_variable (var) SHELL_VAR *var; @@ -2004,14 +2594,8 @@ dispose_variable (var) if (var == 0) return; - if (function_p (var)) - dispose_command (function_cell (var)); -#if defined (ARRAY_VARS) - else if (array_p (var)) - array_dispose (array_cell (var)); -#endif - else - FREE (value_cell (var)); + if (nofree_p (var) == 0) + dispose_variable_value (var); FREE_EXPORTSTR (var); @@ -2062,6 +2646,30 @@ unbind_func (name) return 0; } +#if defined (DEBUGGER) +int +unbind_function_def (name) + const char *name; +{ + BUCKET_CONTENTS *elt; + FUNCTION_DEF *funcdef; + + elt = hash_remove (name, shell_function_defs, 0); + + if (elt == 0) + return -1; + + funcdef = (FUNCTION_DEF *)elt->data; + if (funcdef) + dispose_function_def (funcdef); + + free (elt->key); + free (elt); + + return 0; +} +#endif /* DEBUGGER */ + /* Make the variable associated with NAME go away. HASH_LIST is the hash table from which this variable should be deleted (either shell_variables or shell_functions). @@ -2096,8 +2704,22 @@ makunbound (name, vc) We also need to add it back into the correct hash table. */ if (old_var && local_p (old_var) && variable_context == old_var->context) { + if (nofree_p (old_var)) + var_setvalue (old_var, (char *)NULL); +#if defined (ARRAY_VARS) + else if (array_p (old_var)) + array_dispose (array_cell (old_var)); + else if (assoc_p (old_var)) + assoc_dispose (assoc_cell (old_var)); +#endif + else + FREE (value_cell (old_var)); + /* Reset the attributes. Preserve the export attribute if the variable + came from a temporary environment. Make sure it stays local, and + make it invisible. */ + old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0; + VSETATTR (old_var, att_local); VSETATTR (old_var, att_invisible); - FREE (value_cell (old_var)); var_setvalue (old_var, (char *)NULL); INVALIDATE_EXPORTSTR (old_var); @@ -2175,7 +2797,7 @@ delete_all_variables (hashed_vars) entry = find_variable (name); \ if (!entry) \ { \ - entry = bind_variable (name, ""); \ + entry = bind_variable (name, "", 0); \ if (!no_invisible_vars) entry->attributes |= att_invisible; \ } \ } \ @@ -2502,7 +3124,7 @@ all_local_variables () if (vc == 0) { - internal_error ("all_local_variables: no function context at current scope found"); + internal_error (_("all_local_variables: no function context at current scope")); return (SHELL_VAR **)NULL; } if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0) @@ -2617,7 +3239,7 @@ push_temp_var (data) binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS); } - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0); + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0); /* XXX - should we set the context here? It shouldn't matter because of how assign_in_env works, but might want to check. */ @@ -2657,7 +3279,7 @@ dispose_temporary_env (pushf) { hash_flush (temporary_env, pushf); hash_dispose (temporary_env); - temporary_env = (HASH_TABLE *)NULL; + temporary_env = (HASH_TABLE *)NULL; array_needs_making = 1; @@ -2668,7 +3290,10 @@ void dispose_used_env_vars () { if (temporary_env) - dispose_temporary_env (propagate_temp_var); + { + dispose_temporary_env (propagate_temp_var); + maybe_make_export_env (); + } } /* Take all of the shell variables in the temporary environment HASH_TABLE @@ -2716,7 +3341,7 @@ valid_exportstr (v) s = v->exportstr; if (legal_variable_starter ((unsigned char)*s) == 0) { - internal_error ("invalid character %d in exportstr for %s", *s, v->name); + internal_error (_("invalid character %d in exportstr for %s"), *s, v->name); return (0); } for (s = v->exportstr + 1; s && *s; s++) @@ -2725,13 +3350,13 @@ valid_exportstr (v) break; if (legal_variable_char ((unsigned char)*s) == 0) { - internal_error ("invalid character %d in exportstr for %s", *s, v->name); + internal_error (_("invalid character %d in exportstr for %s"), *s, v->name); return (0); } } if (*s != '=') { - internal_error ("no `=' in exportstr for %s", v->name); + internal_error (_("no `=' in exportstr for %s"), v->name); return (0); } return (1); @@ -2766,6 +3391,12 @@ make_env_array_from_var_list (vars) value = array_to_assignment_string (array_cell (var)); # else continue; /* XXX array vars cannot yet be exported */ +# endif + else if (assoc_p (var)) +# if 0 + value = assoc_to_assignment_string (assoc_cell (var)); +# else + continue; /* XXX associative array vars cannot yet be exported */ # endif #endif else @@ -2786,7 +3417,7 @@ make_env_array_from_var_list (vars) #if 0 /* not yet */ #if defined (ARRAY_VARS) - if (array_p (var)) + if (array_p (var) || assoc_p (var)) free (value); #endif #endif @@ -2842,6 +3473,7 @@ do \ { \ export_env_size += 16; \ export_env = strvec_resize (export_env, export_env_size); \ + environ = export_env; \ } \ export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \ export_env[export_env_index] = (char *)NULL; \ @@ -2857,7 +3489,7 @@ add_or_supercede_exported_var (assign, do_alloc) register int i; int equal_offset; - equal_offset = assignment (assign); + equal_offset = assignment (assign, 0); if (equal_offset == 0) return (export_env); @@ -2939,7 +3571,7 @@ maybe_make_export_env () if (array_needs_making) { if (export_env) - strvec_flush (export_env); + strvec_flush (export_env); /* Make a guess based on how many shell variables and functions we have. Since there will always be array variables, and array @@ -2951,28 +3583,29 @@ maybe_make_export_env () { export_env_size = new_size; export_env = strvec_resize (export_env, export_env_size); + environ = export_env; } export_env[export_env_index = 0] = (char *)NULL; /* Make a dummy variable context from the temporary_env, stick it on - the front of shell_variables, call make_var_export_array on the - whole thing to flatten it, and convert the list of SHELL_VAR *s - to the form needed by the environment. */ + the front of shell_variables, call make_var_export_array on the + whole thing to flatten it, and convert the list of SHELL_VAR *s + to the form needed by the environment. */ if (temporary_env) - { - tcxt = new_var_context ((char *)NULL, 0); - tcxt->table = temporary_env; - tcxt->down = shell_variables; - } + { + tcxt = new_var_context ((char *)NULL, 0); + tcxt->table = temporary_env; + tcxt->down = shell_variables; + } else - tcxt = shell_variables; + tcxt = shell_variables; temp_array = make_var_export_array (tcxt); if (temp_array) add_temp_array_to_env (temp_array, 0, 0); if (tcxt != shell_variables) - free (tcxt); + free (tcxt); #if defined (RESTRICTED_SHELL) /* Restricted shells may not export shell functions. */ @@ -3135,13 +3768,15 @@ push_func_var (data) if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) { /* XXX - should we set v->context here? */ - v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0); + v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); if (shell_variables == global_variables) var->attributes &= ~(att_tempvar|att_propagate); else - shell_variables->flags |= VC_HASTMPVAR; + shell_variables->flags |= VC_HASTMPVAR; v->attributes |= var->attributes; } + else + stupidly_hack_special_variables (var->name); /* XXX */ dispose_variable (var); } @@ -3156,7 +3791,7 @@ pop_var_context () vcxt = shell_variables; if (vc_isfuncenv (vcxt) == 0) { - internal_error ("pop_var_context: head of shell_variables not a function context"); + internal_error (_("pop_var_context: head of shell_variables not a function context")); return; } @@ -3169,7 +3804,7 @@ pop_var_context () dispose_var_context (vcxt); } else - internal_error ("pop_var_context: no global_variables context"); + internal_error (_("pop_var_context: no global_variables context")); } /* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and @@ -3184,7 +3819,7 @@ delete_all_contexts (vcxt) { t = v->down; dispose_var_context (v); - } + } delete_all_variables (global_variables->table); shell_variables = global_variables; @@ -3214,14 +3849,22 @@ push_exported_var (data) /* If a temp var had its export attribute set, or it's marked to be propagated, bind it in the previous scope before disposing it. */ + /* XXX - This isn't exactly right, because all tempenv variables have the + export attribute set. */ +#if 0 if (exported_p (var) || (var->attributes & att_propagate)) +#else + if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate)) +#endif { var->attributes &= ~att_tempvar; /* XXX */ - v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0); + v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); if (shell_variables == global_variables) var->attributes &= ~att_propagate; v->attributes |= var->attributes; } + else + stupidly_hack_special_variables (var->name); /* XXX */ dispose_variable (var); } @@ -3235,7 +3878,7 @@ pop_scope (is_special) vcxt = shell_variables; if (vc_istempscope (vcxt) == 0) { - internal_error ("pop_scope: head of shell_variables not a temporary environment scope"); + internal_error (_("pop_scope: head of shell_variables not a temporary environment scope")); return; } @@ -3334,6 +3977,56 @@ dispose_saved_dollar_vars () dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; } +/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */ + +void +push_args (list) + WORD_LIST *list; +{ +#if defined (ARRAY_VARS) && defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; + WORD_LIST *l; + arrayind_t i; + char *t; + + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); + + for (l = list, i = 0; l; l = l->next, i++) + array_push (bash_argv_a, l->word->word); + + t = itos (i); + array_push (bash_argc_a, t); + free (t); +#endif /* ARRAY_VARS && DEBUGGER */ +} + +/* Remove arguments from BASH_ARGV array. Pop top element off BASH_ARGC + array and use that value as the count of elements to remove from + BASH_ARGV. */ +void +pop_args () +{ +#if defined (ARRAY_VARS) && defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; + ARRAY_ELEMENT *ce; + intmax_t i; + + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); + + ce = array_shift (bash_argc_a, 1, 0); + if (ce == 0 || legal_number (element_value (ce), &i) == 0) + i = 0; + + for ( ; i > 0; i--) + array_pop (bash_argv_a); + array_dispose_element (ce); +#endif /* ARRAY_VARS && DEBUGGER */ +} + /************************************************* * * * Functions to manage special variables * @@ -3344,7 +4037,6 @@ dispose_saved_dollar_vars () extern int eof_encountered, eof_encountered_limit, ignoreeof; #if defined (READLINE) -extern int no_line_editing; extern int hostname_list_initialized; #endif @@ -3362,6 +4054,13 @@ struct name_and_function { }; static struct name_and_function special_vars[] = { +#if defined (READLINE) +# if defined (STRICT_POSIX) + { "COLUMNS", sv_winsize }, +# endif + { "COMP_WORDBREAKS", sv_comp_wordbreaks }, +#endif + { "GLOBIGNORE", sv_globignore }, #if defined (HISTORY) @@ -3369,6 +4068,11 @@ static struct name_and_function special_vars[] = { { "HISTFILESIZE", sv_histsize }, { "HISTIGNORE", sv_histignore }, { "HISTSIZE", sv_histsize }, + { "HISTTIMEFORMAT", sv_histtimefmt }, +#endif + +#if defined (__CYGWIN__) + { "HOME", sv_home }, #endif #if defined (READLINE) @@ -3384,6 +4088,11 @@ static struct name_and_function special_vars[] = { { "LC_CTYPE", sv_locale }, { "LC_MESSAGES", sv_locale }, { "LC_NUMERIC", sv_locale }, + { "LC_TIME", sv_locale }, + +#if defined (READLINE) && defined (STRICT_POSIX) + { "LINES", sv_winsize }, +#endif { "MAIL", sv_mail }, { "MAILCHECK", sv_mail }, @@ -3446,7 +4155,7 @@ find_special_var (name) else if (r > 0) /* Can't match any of rest of elements in sorted list. Take this out if it causes problems in certain environments. */ - break; + break; } return -1; } @@ -3472,6 +4181,18 @@ stupidly_hack_special_variables (name) (*(special_vars[i].function)) (name); } +/* Special variables that need hooks to be run when they are unset as part + of shell reinitialization should have their sv_ functions run here. */ +void +reinit_special_variables () +{ +#if defined (READLINE) + sv_comp_wordbreaks ("COMP_WORDBREAKS"); +#endif + sv_globignore ("GLOBIGNORE"); + sv_opterr ("OPTERR"); +} + void sv_ifs (name) char *name; @@ -3516,10 +4237,22 @@ void sv_globignore (name) char *name; { - setup_glob_ignore (name); + if (privileged_mode == 0) + setup_glob_ignore (name); } #if defined (READLINE) +void +sv_comp_wordbreaks (name) + char *name; +{ + SHELL_VAR *sv; + + sv = find_variable (name); + if (sv == 0) + reset_completer_word_break_chars (); +} + /* What to do just after one of the TERMxxx variables has changed. If we are an interactive shell, then try to reset the terminal information in readline. */ @@ -3543,8 +4276,52 @@ sv_hostfile (name) else hostname_list_initialized = 0; } + +#if defined (STRICT_POSIX) +/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values + found in the initial environment) to override the terminal size reported by + the kernel. */ +void +sv_winsize (name) + char *name; +{ + SHELL_VAR *v; + intmax_t xd; + int d; + + if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing) + return; + + v = find_variable (name); + if (v == 0 || var_isnull (v)) + rl_reset_screen_size (); + else + { + if (legal_number (value_cell (v), &xd) == 0) + return; + winsize_assignment = winsize_assigned = 1; + d = xd; /* truncate */ + if (name[0] == 'L') /* LINES */ + rl_set_screen_size (d, -1); + else /* COLUMNS */ + rl_set_screen_size (-1, d); + winsize_assignment = 0; + } +} +#endif /* STRICT_POSIX */ #endif /* READLINE */ +/* Update the value of HOME in the export environment so tilde expansion will + work on cygwin. */ +#if defined (__CYGWIN__) +sv_home (name) + char *name; +{ + array_needs_making = 1; + maybe_make_export_env (); +} +#endif + #if defined (HISTORY) /* What to do after the HISTSIZE or HISTFILESIZE variables change. If there is a value for this HISTSIZE (and it is numeric), then stifle @@ -3558,6 +4335,7 @@ sv_histsize (name) { char *temp; intmax_t num; + int hmax; temp = get_string_value (name); @@ -3565,18 +4343,19 @@ sv_histsize (name) { if (legal_number (temp, &num)) { + hmax = num; if (name[4] == 'S') { - stifle_history (num); - num = where_history (); - if (history_lines_this_session > num) - history_lines_this_session = num; + stifle_history (hmax); + hmax = where_history (); + if (history_lines_this_session > hmax) + history_lines_this_session = hmax; } else { - history_truncate_file (get_string_value ("HISTFILE"), (int)num); - if (num <= history_lines_in_file) - history_lines_in_file = num; + history_truncate_file (get_string_value ("HISTFILE"), hmax); + if (hmax <= history_lines_in_file) + history_lines_in_file = hmax; } } } @@ -3598,18 +4377,28 @@ sv_history_control (name) char *name; { char *temp; + char *val; + int tptr; history_control = 0; temp = get_string_value (name); - if (temp && *temp && STREQN (temp, "ignore", 6)) + if (temp == 0 || *temp == 0) + return; + + tptr = 0; + while (val = extract_colon_unit (temp, &tptr)) { - if (temp[6] == 's') /* ignorespace */ - history_control = 1; - else if (temp[6] == 'd') /* ignoredups */ - history_control = 2; - else if (temp[6] == 'b') /* ignoreboth */ - history_control = 3; + if (STREQ (val, "ignorespace")) + history_control |= HC_IGNSPACE; + else if (STREQ (val, "ignoredups")) + history_control |= HC_IGNDUPS; + else if (STREQ (val, "ignoreboth")) + history_control |= HC_IGNBOTH; + else if (STREQ (val, "erasedups")) + history_control |= HC_ERASEDUPS; + + free (val); } } @@ -3640,6 +4429,16 @@ sv_histchars (name) } } #endif /* BANG_HISTORY */ + +void +sv_histtimefmt (name) + char *name; +{ + SHELL_VAR *v; + + v = find_variable (name); + history_write_timestamps = (v != 0); +} #endif /* HISTORY */ #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) diff --git a/src/bin/bash/variables.h b/src/bin/bash/variables.h index 213f6ff766..dbc81fbeab 100644 --- a/src/bin/bash/variables.h +++ b/src/bin/bash/variables.h @@ -1,28 +1,29 @@ /* variables.h -- data structures for shell variables. */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* 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 2, or (at your option) - any later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bash; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if !defined (_VARIABLES_H_) #define _VARIABLES_H_ #include "stdc.h" #include "array.h" +#include "assoc.h" /* Shell variables and functions are stored in hash tables. */ #include "hashlib.h" @@ -61,7 +62,7 @@ typedef struct var_context { /* What a shell variable looks like. */ typedef struct variable *sh_var_value_func_t __P((struct variable *)); -typedef struct variable *sh_var_assign_func_t __P((struct variable *, char *, arrayind_t)); +typedef struct variable *sh_var_assign_func_t __P((struct variable *, char *, arrayind_t, char *)); /* For the future */ union _value { @@ -71,7 +72,11 @@ union _value { ARRAY *a; /* array */ HASH_TABLE *h; /* associative array */ double d; /* floating point number */ - void *v; /* opaque data for future use */ +#if defined (HAVE_LONG_DOUBLE) + long double ld; /* long double */ +#endif + struct variable *v; /* possible indirect variable use */ + void *opaque; /* opaque data for future use */ }; typedef struct variable { @@ -104,6 +109,11 @@ typedef struct _vlist { #define att_local 0x0000020 /* variable is local to a function */ #define att_assoc 0x0000040 /* variable is an associative array */ #define att_trace 0x0000080 /* function is traced with DEBUG trap */ +#define att_uppercase 0x0000100 /* word converted to uppercase on assignment */ +#define att_lowercase 0x0000200 /* word converted to lowercase on assignment */ +#define att_capcase 0x0000400 /* word capitalized on assignment */ + +#define user_attrs (att_exported|att_readonly|att_integer|att_local|att_trace|att_uppercase|att_lowercase|att_capcase) #define attmask_user 0x0000fff @@ -113,6 +123,7 @@ typedef struct _vlist { #define att_noassign 0x0004000 /* assignment not allowed */ #define att_imported 0x0008000 /* came from environment */ #define att_special 0x0010000 /* requires special handling */ +#define att_nofree 0x0020000 /* do not free value on unset */ #define attmask_int 0x00ff000 @@ -130,12 +141,16 @@ typedef struct _vlist { #define local_p(var) ((((var)->attributes) & (att_local))) #define assoc_p(var) ((((var)->attributes) & (att_assoc))) #define trace_p(var) ((((var)->attributes) & (att_trace))) +#define uppercase_p(var) ((((var)->attributes) & (att_uppercase))) +#define lowercase_p(var) ((((var)->attributes) & (att_lowercase))) +#define capcase_p(var) ((((var)->attributes) & (att_capcase))) #define invisible_p(var) ((((var)->attributes) & (att_invisible))) #define non_unsettable_p(var) ((((var)->attributes) & (att_nounset))) #define noassign_p(var) ((((var)->attributes) & (att_noassign))) #define imported_p(var) ((((var)->attributes) & (att_imported))) #define specialvar_p(var) ((((var)->attributes) & (att_special))) +#define nofree_p(var) ((((var)->attributes) & (att_nofree))) #define tempvar_p(var) ((((var)->attributes) & (att_tempvar))) @@ -143,6 +158,7 @@ typedef struct _vlist { #define value_cell(var) ((var)->value) #define function_cell(var) (COMMAND *)((var)->value) #define array_cell(var) (ARRAY *)((var)->value) +#define assoc_cell(var) (HASH_TABLE *)((var)->value) #define var_isnull(var) ((var)->value == 0) #define var_isset(var) ((var)->value != 0) @@ -151,6 +167,7 @@ typedef struct _vlist { #define var_setvalue(var, str) ((var)->value = (str)) #define var_setfunc(var, func) ((var)->value = (char *)(func)) #define var_setarray(var, arr) ((var)->value = (char *)(arr)) +#define var_setassoc(var, arr) ((var)->value = (char *)(arr)) /* Make VAR be auto-exported. */ #define set_auto_export(var) \ @@ -214,14 +231,17 @@ extern void make_funcname_visible __P((int)); extern SHELL_VAR *var_lookup __P((const char *, VAR_CONTEXT *)); extern SHELL_VAR *find_function __P((const char *)); +extern FUNCTION_DEF *find_function_def __P((const char *)); extern SHELL_VAR *find_variable __P((const char *)); extern SHELL_VAR *find_variable_internal __P((const char *, int)); extern SHELL_VAR *find_tempenv_variable __P((const char *)); extern SHELL_VAR *copy_variable __P((SHELL_VAR *)); extern SHELL_VAR *make_local_variable __P((const char *)); -extern SHELL_VAR *bind_variable __P((const char *, char *)); +extern SHELL_VAR *bind_variable __P((const char *, char *, int)); extern SHELL_VAR *bind_function __P((const char *, COMMAND *)); +extern void bind_function_def __P((const char *, FUNCTION_DEF *)); + extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *)); SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *)); @@ -243,15 +263,17 @@ extern char **add_or_supercede_exported_var __P((char *, int)); extern char *get_variable_value __P((SHELL_VAR *)); extern char *get_string_value __P((const char *)); extern char *sh_get_env_value __P((const char *)); -extern char *make_variable_value __P((SHELL_VAR *, char *)); +extern char *make_variable_value __P((SHELL_VAR *, char *, int)); -extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *)); +extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int)); extern SHELL_VAR *bind_int_variable __P((char *, char *)); extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t)); -extern int assign_in_env __P((const char *)); +extern int assign_in_env __P((WORD_DESC *)); + extern int unbind_variable __P((const char *)); extern int unbind_func __P((const char *)); +extern int unbind_function_def __P((const char *)); extern int makunbound __P((const char *, VAR_CONTEXT *)); extern int kill_local_variable __P((const char *)); extern void delete_all_variables __P((HASH_TABLE *)); @@ -270,6 +292,9 @@ extern void push_dollar_vars __P((void)); extern void pop_dollar_vars __P((void)); extern void dispose_saved_dollar_vars __P((void)); +extern void push_args __P((WORD_LIST *)); +extern void pop_args __P((void)); + extern void adjust_shell_level __P((int)); extern void non_unsettable __P((char *)); extern void dispose_variable __P((SHELL_VAR *)); @@ -302,6 +327,9 @@ extern void print_var_function __P((SHELL_VAR *)); extern SHELL_VAR *make_new_array_variable __P((char *)); extern SHELL_VAR *make_local_array_variable __P((char *)); +extern SHELL_VAR *make_new_assoc_variable __P((char *)); +extern SHELL_VAR *make_local_assoc_variable __P((char *)); + extern void set_pipestatus_array __P((int *, int)); #endif @@ -311,6 +339,10 @@ extern void set_pipestatus_from_exit __P((int)); is one of the special ones where something special happens. */ extern void stupidly_hack_special_variables __P((char *)); +/* Reinitialize some special variables that have external effects upon unset + when the shell reinitializes itself. */ +extern void reinit_special_variables __P((void)); + extern int get_random_number __P((void)); /* The `special variable' functions that get called when a particular @@ -326,12 +358,14 @@ extern void sv_opterr __P((char *)); extern void sv_locale __P((char *)); #if defined (READLINE) +extern void sv_comp_wordbreaks __P((char *)); extern void sv_terminal __P((char *)); extern void sv_hostfile __P((char *)); +extern void sv_winsize __P((char *)); #endif -#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) -extern void sv_tz __P((char *)); +#if defined (__CYGWIN__) +extern void sv_home __P((char *)); #endif #if defined (HISTORY) @@ -341,6 +375,11 @@ extern void sv_history_control __P((char *)); # if defined (BANG_HISTORY) extern void sv_histchars __P((char *)); # endif +extern void sv_histtimefmt __P((char *)); #endif /* HISTORY */ +#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) +extern void sv_tz __P((char *)); +#endif + #endif /* !_VARIABLES_H_ */ diff --git a/src/bin/bash/version.c b/src/bin/bash/version.c index 9ff00e5df7..b97fa06973 100644 --- a/src/bin/bash/version.c +++ b/src/bin/bash/version.c @@ -1,22 +1,22 @@ /* version.c -- distribution and version numbers. */ -/* Copyright (C) 1989 Free Software Foundation, Inc. +/* 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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include @@ -28,21 +28,33 @@ #include "patchlevel.h" #include "conftypes.h" +#include "bashintl.h" + extern char *shell_name; /* Defines from version.h */ -const char *dist_version = DISTVERSION; -int patch_level = PATCHLEVEL; -int build_version = BUILDVERSION; +const char * const dist_version = DISTVERSION; +const int patch_level = PATCHLEVEL; +const int build_version = BUILDVERSION; #ifdef RELSTATUS -const char *release_status = RELSTATUS; +const char * const release_status = RELSTATUS; #else -const char *release_status = (char *)0; +const char * const release_status = (char *)0; #endif -const char *sccs_version = SCCSVERSION; +const char * const sccs_version = SCCSVERSION; + +const char * const bash_copyright = N_("Copyright (C) 2009 Free Software Foundation, Inc."); +const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later \n"); + +/* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ +int shell_compatibility_level = DEFAULT_COMPAT_LEVEL; /* Functions for getting, setting, and displaying the shell version. */ +/* Forward declarations so we don't have to include externs.h */ +extern char *shell_version_string __P((void)); +extern void show_shell_version __P((int)); + /* Give version information about this shell. */ char * shell_version_string () @@ -52,9 +64,17 @@ shell_version_string () if (tt[0] == '\0') { if (release_status) +#if defined (HAVE_SNPRINTF) + snprintf (tt, sizeof (tt), "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); +#else sprintf (tt, "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); +#endif else +#if defined (HAVE_SNPRINTF) + snprintf (tt, sizeof (tt), "%s.%d(%d)", dist_version, patch_level, build_version); +#else sprintf (tt, "%s.%d(%d)", dist_version, patch_level, build_version); +#endif } return tt; } @@ -63,7 +83,12 @@ void show_shell_version (extended) int extended; { - printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + printf (_("GNU bash, version %s (%s)\n"), shell_version_string (), MACHTYPE); if (extended) - printf ("Copyright (C) 2002 Free Software Foundation, Inc.\n"); + { + printf ("%s\n", _(bash_copyright)); + printf ("%s\n", _(bash_license)); + printf (_("This is free software; you are free to change and redistribute it.\n")); + printf (_("There is NO WARRANTY, to the extent permitted by law.\n")); + } } diff --git a/src/bin/bash/version.h b/src/bin/bash/version.h new file mode 100644 index 0000000000..f056dd8922 --- /dev/null +++ b/src/bin/bash/version.h @@ -0,0 +1,17 @@ +/* Version control for the shell. This file gets changed when you say + `make version.h' to the Makefile. It is created by mkversion. */ + +/* The distribution version number of this shell. */ +#define DISTVERSION "4.0" + +/* The last built version of this shell. */ +#define BUILDVERSION 1 + +/* The release status of this shell. */ +#define RELSTATUS "release" + +/* The default shell compatibility-level (the current version) */ +#define DEFAULT_COMPAT_LEVEL 40 + +/* A version string for use by sccs and the what command. */ +#define SCCSVERSION "@(#)Bash version 4.0.0(1) release GNU" diff --git a/src/bin/bash/xmalloc.c b/src/bin/bash/xmalloc.c index c2011f9cc9..58c337e99e 100644 --- a/src/bin/bash/xmalloc.c +++ b/src/bin/bash/xmalloc.c @@ -1,23 +1,22 @@ /* xmalloc.c -- safe versions of malloc and realloc */ -/* Copyright (C) 1991 Free Software Foundation, Inc. +/* Copyright (C) 1991-2009 Free Software Foundation, Inc. - This file is part of GNU Readline, a library for reading lines - of text with interactive input and history editing. + This file is part of GNU Bash, the GNU Bourne Again SHell. - Readline is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the 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. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Readline; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + along with Bash. If not, see . +*/ #if defined (HAVE_CONFIG_H) #include @@ -38,6 +37,8 @@ #include "error.h" +#include "bashintl.h" + #if !defined (PTR_T) # if defined (__STDC__) # define PTR_T void * @@ -88,9 +89,9 @@ xmalloc (bytes) { #if defined (HAVE_SBRK) allocated = findbrk (); - fatal_error ("xmalloc: cannot allocate %lu bytes (%lu bytes allocated)", (unsigned long)bytes, (unsigned long)allocated); + fatal_error (_("xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"), (unsigned long)bytes, (unsigned long)allocated); #else - fatal_error ("xmalloc: cannot allocate %lu bytes", (unsigned long)bytes); + fatal_error (_("xmalloc: cannot allocate %lu bytes"), (unsigned long)bytes); #endif /* !HAVE_SBRK */ } @@ -110,9 +111,9 @@ xrealloc (pointer, bytes) { #if defined (HAVE_SBRK) allocated = findbrk (); - fatal_error ("xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)", (unsigned long)bytes, (unsigned long)allocated); + fatal_error (_("xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"), (unsigned long)bytes, (unsigned long)allocated); #else - fatal_error ("xrealloc: cannot allocate %lu bytes", (unsigned long)bytes); + fatal_error (_("xrealloc: cannot allocate %lu bytes"), (unsigned long)bytes); #endif /* !HAVE_SBRK */ } @@ -146,9 +147,9 @@ sh_xmalloc (bytes, file, line) { #if defined (HAVE_SBRK) allocated = findbrk (); - fatal_error ("xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)", file, line, (unsigned long)bytes, (unsigned long)allocated); + fatal_error (_("xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"), file, line, (unsigned long)bytes, (unsigned long)allocated); #else - fatal_error ("xmalloc: %s:%d: cannot allocate %lu bytes", file, line, (unsigned long)bytes); + fatal_error (_("xmalloc: %s:%d: cannot allocate %lu bytes"), file, line, (unsigned long)bytes); #endif /* !HAVE_SBRK */ } @@ -170,9 +171,9 @@ sh_xrealloc (pointer, bytes, file, line) { #if defined (HAVE_SBRK) allocated = findbrk (); - fatal_error ("xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)", file, line, (unsigned long)bytes, (unsigned long)allocated); + fatal_error (_("xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"), file, line, (unsigned long)bytes, (unsigned long)allocated); #else - fatal_error ("xrealloc: %s:%d: cannot allocate %lu bytes", file, line, (unsigned long)bytes); + fatal_error (_("xrealloc: %s:%d: cannot allocate %lu bytes"), file, line, (unsigned long)bytes); #endif /* !HAVE_SBRK */ } diff --git a/src/bin/bash/xmalloc.h b/src/bin/bash/xmalloc.h index 5ae8294cee..bea71fdd63 100644 --- a/src/bin/bash/xmalloc.h +++ b/src/bin/bash/xmalloc.h @@ -1,22 +1,22 @@ /* xmalloc.h -- defines for the `x' memory allocation functions */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-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 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #if !defined (_XMALLOC_H_) #define _XMALLOC_H_ diff --git a/src/bin/bash/y.tab.h b/src/bin/bash/y.tab.h new file mode 100644 index 0000000000..552d7adb5a --- /dev/null +++ b/src/bin/bash/y.tab.h @@ -0,0 +1,160 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* 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. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IF = 258, + THEN = 259, + ELSE = 260, + ELIF = 261, + FI = 262, + CASE = 263, + ESAC = 264, + FOR = 265, + SELECT = 266, + WHILE = 267, + UNTIL = 268, + DO = 269, + DONE = 270, + FUNCTION = 271, + COPROC = 272, + COND_START = 273, + COND_END = 274, + COND_ERROR = 275, + IN = 276, + BANG = 277, + TIME = 278, + TIMEOPT = 279, + WORD = 280, + ASSIGNMENT_WORD = 281, + NUMBER = 282, + ARITH_CMD = 283, + ARITH_FOR_EXPRS = 284, + COND_CMD = 285, + AND_AND = 286, + OR_OR = 287, + GREATER_GREATER = 288, + LESS_LESS = 289, + LESS_AND = 290, + LESS_LESS_LESS = 291, + GREATER_AND = 292, + SEMI_SEMI = 293, + SEMI_AND = 294, + SEMI_SEMI_AND = 295, + LESS_LESS_MINUS = 296, + AND_GREATER = 297, + AND_GREATER_GREATER = 298, + LESS_GREATER = 299, + GREATER_BAR = 300, + BAR_AND = 301, + yacc_EOF = 302 + }; +#endif +/* Tokens. */ +#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 WORD 280 +#define ASSIGNMENT_WORD 281 +#define NUMBER 282 +#define ARITH_CMD 283 +#define ARITH_FOR_EXPRS 284 +#define COND_CMD 285 +#define AND_AND 286 +#define OR_OR 287 +#define GREATER_GREATER 288 +#define LESS_LESS 289 +#define LESS_AND 290 +#define LESS_LESS_LESS 291 +#define GREATER_AND 292 +#define SEMI_SEMI 293 +#define SEMI_AND 294 +#define SEMI_SEMI_AND 295 +#define LESS_LESS_MINUS 296 +#define AND_GREATER 297 +#define AND_GREATER_GREATER 298 +#define LESS_GREATER 299 +#define GREATER_BAR 300 +#define BAR_AND 301 +#define yacc_EOF 302 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 316 "/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 1489 of yacc.c. */ +#line 153 "y.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; +