From 301e21427ea6190bace0656e25fa070a469dc05b Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Sat, 3 Dec 2011 13:36:10 -0500 Subject: [PATCH] commit bash-20040909 snapshot --- CWRU/CWRU.chlog | 63 + CWRU/CWRU.chlog~ | 67 + MANIFEST | 1 + MANIFEST~ | 957 ++++++ Makefile.in | 7 +- Makefile.in~ | 1436 +++++++++ autom4te.cache/output.0 | 27 +- autom4te.cache/requests | 144 +- autom4te.cache/traces.0 | 7 +- builtins/cd.def | 2 +- builtins/common.c | 6 + builtins/common.h | 1 + builtins/echo.def | 1 + builtins/printf.def | 36 +- config.h.in | 3 + config.h.in~ | 976 ++++++ configure | 27 +- configure.in | 8 +- configure.in~ | 12 +- doc/FAQ | 15 +- doc/FAQ~ | 1785 +++++++++++ doc/bash.1 | 5 + doc/bash.1~ | 13 +- doc/version.texi | 6 +- doc/version.texi~ | 4 +- execute_cmd.c | 5 + lib/readline/complete.c | 13 +- lib/readline/doc/rluser.texi | 6 + lib/readline/doc/rluser.texi~ | 1824 +++++++++++ lib/sh/Makefile.in | 8 +- lib/sh/Makefile.in~ | 451 +++ lib/sh/strnlen.c | 39 + lib/sh/strnlen.c~ | 44 + parse.y | 17 +- parse.y~ | 4874 ++++++++++++++++++++++++++++ patchlevel.h | 2 +- patchlevel.h~ | 30 + po.orig/LINGUAS | 2 + po.orig/Makefile.in.in | 357 +++ po.orig/Makevars | 41 + po.orig/Makevars.template | 41 + po.orig/POTFILES.in | 76 + po.orig/README | 1 + po.orig/Rules-builtins | 19 + po.orig/Rules-quot | 42 + po.orig/bash.po.orig | 5623 +++++++++++++++++++++++++++++++++ po.orig/bash.pot | 4174 ++++++++++++++++++++++++ po.orig/boldquot.sed | 10 + po.orig/builtins.pot | 2845 +++++++++++++++++ po.orig/en@boldquot.gmo | Bin 0 -> 120143 bytes po.orig/en@boldquot.header | 25 + po.orig/en@boldquot.po | 4349 +++++++++++++++++++++++++ po.orig/en@quot.gmo | Bin 0 -> 118583 bytes po.orig/en@quot.header | 22 + po.orig/en@quot.po | 4283 +++++++++++++++++++++++++ po.orig/insert-header.sin | 23 + po.orig/quot.sed | 6 + po.orig/readline.po | 133 + po.orig/remove-potcdate.sin | 19 + po.tar | Bin 0 -> 1218560 bytes po/bash.pot | 696 ++-- po/diffs | 2938 +++++++++++++++++ subst.c | 5 +- support/mkversion.sh | 12 +- support/mkversion.sh.save1 | 164 + support/mkversion.sh~ | 164 + tests/RUN-ONE-TEST | 2 +- tests/array.right | 4 +- tests/array.tests | 2 +- 69 files changed, 38499 insertions(+), 501 deletions(-) create mode 100644 MANIFEST~ create mode 100644 Makefile.in~ create mode 100644 config.h.in~ create mode 100644 doc/FAQ~ create mode 100644 lib/readline/doc/rluser.texi~ create mode 100644 lib/sh/Makefile.in~ create mode 100644 lib/sh/strnlen.c create mode 100644 lib/sh/strnlen.c~ create mode 100644 parse.y~ create mode 100644 patchlevel.h~ create mode 100644 po.orig/LINGUAS create mode 100644 po.orig/Makefile.in.in create mode 100644 po.orig/Makevars create mode 100644 po.orig/Makevars.template create mode 100644 po.orig/POTFILES.in create mode 100644 po.orig/README create mode 100644 po.orig/Rules-builtins create mode 100644 po.orig/Rules-quot create mode 100644 po.orig/bash.po.orig create mode 100644 po.orig/bash.pot create mode 100644 po.orig/boldquot.sed create mode 100644 po.orig/builtins.pot create mode 100644 po.orig/en@boldquot.gmo create mode 100644 po.orig/en@boldquot.header create mode 100644 po.orig/en@boldquot.po create mode 100644 po.orig/en@quot.gmo create mode 100644 po.orig/en@quot.header create mode 100644 po.orig/en@quot.po create mode 100644 po.orig/insert-header.sin create mode 100644 po.orig/quot.sed create mode 100644 po.orig/readline.po create mode 100644 po.orig/remove-potcdate.sin create mode 100644 po.tar create mode 100644 po/diffs create mode 100644 support/mkversion.sh.save1 create mode 100644 support/mkversion.sh~ diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 40d94b6ac..0e715d22b 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -9965,3 +9965,66 @@ subst.c list_append for each split word -- as the list gets long, you have to traverse it every time. Keep a pointer to the end of the list and and just tack onto it + + 9/8 + --- +lib/readline/complete.c + - change fnprint to calculate the displayed width of a filename in + the same way as fnwidth + +subst.c + - in verify_substring_values, when expanding ${array[@]:offset}, make + sure negative offsets count from one greater than the array's + maximum index so things like ${x[@}: -1} work to give the last element + (requires fixing array tests) + +builtins/common.c + - new error function, sh_wrerror(), for builtins to call when a write + error occurs + +builtins/common.h + - extern declaration for sh_wrerror() + +builtins/cd.def + - change builtin_error call to use sh_wrerror() + +builtins/echo.def + - report write errors with sh_wrerror() instead of just returning + failure + +builtins/printf.def + - change printstr to return failure (-1) or success (0) indication + rather than void + - report write errors when printstr() fails, return failure + - if any of the PF/printf calls fail, report write error and return + failure + +execute_cmd.c + - change execute_in_subshell so the subshell command inherits the + command timing flags from the enclosing COMMAND * + + 9/11 + ---- +[prayers for the victims of 9/11/2001] + +lib/sh/strnlen.c + - new file, implementation of GNU libc extension function strnlen + +lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST + - changes for strnlen + +configure.in + - version changed to 3.1-devel + +doc/bash.1, lib/readline/doc/rluser.texi + - added description of `-o plusdirs' to complete/compgen (thanks, + Arnold) + +parse.y + - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing + arguments to a builtin that accepts assignment statement arguments + - turn on PST_ASSIGNOK in read_token_word when appropriate + - turn off PST_ASSIGNOK in read_token when appropriate + - don't attempt to parse a compound assignment specially unless we're + in a position where an assignment statement is acceptable, or + PST_ASSIGNOK is set diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ index e058bf10d..443fc3aa1 100644 --- a/CWRU/CWRU.chlog~ +++ b/CWRU/CWRU.chlog~ @@ -9958,3 +9958,70 @@ lib/readline/display.c that might contain double-width multibyte characters. Fixes from Tomohiro Kubota + 9/6 + --- +subst.c + - change word_list_split to avoid really bad behavior caused by calling + list_append for each split word -- as the list gets long, you have + to traverse it every time. Keep a pointer to the end of the list and + and just tack onto it + + 9/8 + --- +lib/readline/complete.c + - change fnprint to calculate the displayed width of a filename in + the same way as fnwidth + +subst.c + - in verify_substring_values, when expanding ${array[@]:offset}, make + sure negative offsets count from one greater than the array's + maximum index so things like ${x[@}: -1} work to give the last element + (requires fixing array tests) + +builtins/common.c + - new error function, sh_wrerror(), for builtins to call when a write + error occurs + +builtins/common.h + - extern declaration for sh_wrerror() + +builtins/cd.def + - change builtin_error call to use sh_wrerror() + +builtins/echo.def + - report write errors with sh_wrerror() instead of just returning + failure + +builtins/printf.def + - change printstr to return failure (-1) or success (0) indication + rather than void + - report write errors when printstr() fails, return failure + - if any of the PF/printf calls fail, report write error and return + failure + +execute_cmd.c + - change execute_in_subshell so the subshell command inherits the + command timing flags from the enclosing COMMAND * + + 9/11 + ---- +[prayers for the victims of 9/11/2001] + +lib/sh/strnlen.c + - new file, implementation of GNU libc extension function strnlen + +lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST + - changes for strnlen + +configure.in + - version changed to 3.1-devel + +doc/bash.1, lib/readline/doc/rluser.texi + - added description of `-o plusdirs' to complete/compgen (thanks, + Arnold) + +parse.y + - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing + arguments to a builtin that accepts assignment statement arguments + - turn on PST_ASSIGNOK in read_token_word when appropriate + - turn off PST_ASSIGNOK in read_token when appropriate diff --git a/MANIFEST b/MANIFEST index a7b7be3eb..398d522df 100644 --- a/MANIFEST +++ b/MANIFEST @@ -408,6 +408,7 @@ 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 diff --git a/MANIFEST~ b/MANIFEST~ new file mode 100644 index 000000000..a7b7be3eb --- /dev/null +++ b/MANIFEST~ @@ -0,0 +1,957 @@ +# +# Master distribution manifest for bash +# +# +# Filename type +# +CWRU d +CWRU/misc d +builtins d +cross-build d +doc d +examples d +examples/bashdb d +examples/obashdb d +examples/complete d +examples/functions d +examples/scripts d +examples/scripts.v2 d +examples/scripts.noah d +examples/startup-files d +examples/startup-files/apple d +examples/misc d +examples/loadables d +examples/loadables/perl d +include d +lib d +lib/glob d +lib/glob/doc d +lib/intl d +lib/malloc d +lib/readline d +lib/readline/doc d +lib/readline/examples d +lib/sh d +lib/termcap d +lib/termcap/grot d +lib/tilde d +po d +support d +tests d +tests/misc d +ABOUT-NLS f +CHANGES f +COMPAT f +COPYING f +INSTALL f +MANIFEST f +NEWS f +NOTES f +POSIX f +README f +RBASH f +AUTHORS f +Y2K f +configure.in f +configure f +Makefile.in f +config-top.h f +config-bot.h f +config.h.in f +aclocal.m4 f +array.c f +arrayfunc.c f +eval.c f +print_cmd.c f +general.c f +list.c f +locale.c f +stringlib.c f +variables.c f +make_cmd.c f +copy_cmd.c f +unwind_prot.c f +dispose_cmd.c f +bashhist.c f +hashcmd.c f +hashlib.c f +parse.y f +pathexp.c f +subst.c f +shell.c f +trap.c f +sig.c f +siglist.c f +version.c f +flags.c f +jobs.c f +input.c f +mailcheck.c f +test.c f +expr.c f +alias.c f +execute_cmd.c f +findcmd.c f +redir.c f +bashline.c f +braces.c f +bracecomp.c f +nojobs.c f +error.c f +xmalloc.c f +pcomplete.c f +pcomplib.c f +mksyntax.c f +alias.h f +builtins.h f +bashhist.h f +bashline.h f +conftypes.h f +patchlevel.h f +variables.h f +array.h f +arrayfunc.h f +jobs.h f +findcmd.h f +hashlib.h f +quit.h f +flags.h f +shell.h f +syntax.h f +pathexp.h f +parser.h f +pcomplete.h f +sig.h f +test.h f +trap.h f +general.h f +unwind_prot.h f +input.h f +error.h f +command.h f +externs.h f +siglist.h f +subst.h f +dispose_cmd.h f +hashcmd.h f +bashansi.h f +bashjmp.h f +bashintl.h f +make_cmd.h f +execute_cmd.h f +redir.h f +bashtypes.h f +mailcheck.h f +xmalloc.h f +y.tab.c f +y.tab.h f +parser-built f +pathnames.h.in f +builtins/Makefile.in f +builtins/alias.def f +builtins/bind.def f +builtins/break.def f +builtins/builtin.def f +builtins/caller.def f +builtins/cd.def f +builtins/colon.def f +builtins/command.def f +builtins/complete.def f +builtins/common.c f +builtins/declare.def f +builtins/echo.def f +builtins/enable.def f +builtins/eval.def f +builtins/evalfile.c f +builtins/evalstring.c f +builtins/exec.def f +builtins/exit.def f +builtins/fc.def f +builtins/fg_bg.def f +builtins/getopt.c f +builtins/getopt.h f +builtins/getopts.def f +builtins/hash.def f +builtins/help.def f +builtins/let.def f +builtins/history.def f +builtins/jobs.def f +builtins/kill.def f +builtins/mkbuiltins.c f +builtins/printf.def f +builtins/pushd.def f +builtins/read.def f +builtins/reserved.def f +builtins/return.def f +builtins/set.def f +builtins/setattr.def f +builtins/shift.def f +builtins/shopt.def f +builtins/source.def f +builtins/suspend.def f +builtins/test.def f +builtins/times.def f +builtins/trap.def f +builtins/type.def f +builtins/ulimit.def f +builtins/umask.def f +builtins/wait.def f +builtins/psize.c f +builtins/psize.sh f +builtins/inlib.def f +builtins/bashgetopt.c f +builtins/common.h f +builtins/bashgetopt.h f +cross-build/cygwin32.cache f +cross-build/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 +include/posixdir.h f +include/posixjmp.h f +include/posixstat.h f +include/posixtime.h f +include/posixwait.h f +include/shmbutil.h f +include/shtty.h f +include/stdc.h f +include/systimes.h f +include/typemax.h f +include/unionwait.h f +lib/glob/Makefile.in f +lib/glob/sm_loop.c f +lib/glob/smatch.c f +lib/glob/strmatch.c f +lib/glob/strmatch.h f +lib/glob/glob.c f +lib/glob/glob.h f +lib/glob/glob_loop.c f +lib/glob/xmbsrtowcs.c f +lib/glob/collsyms.h f +lib/glob/doc/Makefile f +lib/glob/doc/glob.texi f +lib/glob/ndir.h f +lib/intl/ChangeLog f +lib/intl/Makefile.in f +lib/intl/VERSION f +lib/intl/bindtextdom.c f +lib/intl/config.charset f +lib/intl/dcgettext.c f +lib/intl/dcigettext.c f +lib/intl/dcngettext.c f +lib/intl/dgettext.c f +lib/intl/dngettext.c f +lib/intl/eval-plural.h f +lib/intl/explodename.c f +lib/intl/finddomain.c f +lib/intl/gettext.c f +lib/intl/gettextP.h f +lib/intl/gmo.h f +lib/intl/hash-string.h f +lib/intl/intl-compat.c f +lib/intl/l10nflist.c f +lib/intl/libgnuintl.h.in f +lib/intl/loadinfo.h f +lib/intl/loadmsgcat.c f +lib/intl/localcharset.c f +lib/intl/localcharset.h f +lib/intl/locale.alias f +lib/intl/localealias.c f +lib/intl/localename.c f +lib/intl/log.c f +lib/intl/ngettext.c f +lib/intl/os2compat.c f +lib/intl/os2compat.h f +lib/intl/osdep.c f +lib/intl/plural-exp.c f +lib/intl/plural-exp.h f +lib/intl/plural.c f +lib/intl/plural.y f +lib/intl/ref-add.sin f +lib/intl/ref-del.sin f +lib/intl/relocatable.c f +lib/intl/relocatable.h f +lib/intl/textdomain.c f +lib/malloc/Makefile.in f +lib/malloc/getpagesize.h f +lib/malloc/imalloc.h f +lib/malloc/mstats.h f +lib/malloc/shmalloc.h f +lib/malloc/table.h f +lib/malloc/watch.h f +lib/malloc/alloca.c f +lib/malloc/malloc.c f +lib/malloc/stats.c f +lib/malloc/table.c f +lib/malloc/trace.c f +lib/malloc/watch.c f +lib/malloc/xmalloc.c f +lib/malloc/xleaktrace f 755 +lib/malloc/stub.c f +lib/malloc/i386-alloca.s f +lib/malloc/x386-alloca.s f +lib/readline/COPYING f +lib/readline/Makefile.in f +lib/readline/ChangeLog f +lib/readline/README f +lib/readline/STANDALONE f +lib/readline/readline.c f +lib/readline/vi_mode.c f +lib/readline/emacs_keymap.c f +lib/readline/vi_keymap.c f +lib/readline/history.c f +lib/readline/histexpand.c f +lib/readline/histsearch.c f +lib/readline/histfile.c f +lib/readline/funmap.c f +lib/readline/keymaps.c f +lib/readline/util.c f +lib/readline/terminal.c f +lib/readline/xmalloc.c f +lib/readline/search.c f +lib/readline/isearch.c f +lib/readline/parens.c f +lib/readline/rltty.c f +lib/readline/compat.c f +lib/readline/complete.c f +lib/readline/bind.c f +lib/readline/display.c f +lib/readline/signals.c f +lib/readline/kill.c f +lib/readline/text.c f +lib/readline/undo.c f +lib/readline/macro.c f +lib/readline/input.c f +lib/readline/callback.c f +lib/readline/mbutil.c f +lib/readline/misc.c f +lib/readline/nls.c f +lib/readline/shell.c f +lib/readline/savestring.c f +lib/readline/tilde.c f +lib/readline/tilde.h f +lib/readline/rldefs.h f +lib/readline/rlconf.h f +lib/readline/rlmbutil.h f +lib/readline/rlshell.h f +lib/readline/rltty.h f +lib/readline/rltypedefs.h f +lib/readline/rlwinsize.h f +lib/readline/readline.h f +lib/readline/tcap.h f +lib/readline/keymaps.h f +lib/readline/history.h f +lib/readline/histlib.h f +lib/readline/chardefs.h f +lib/readline/posixdir.h f +lib/readline/posixjmp.h f +lib/readline/posixstat.h f +lib/readline/ansi_stdlib.h f +lib/readline/rlstdc.h f +lib/readline/rlprivate.h f +lib/readline/xmalloc.h f +lib/readline/doc/Makefile f +lib/readline/doc/version.texi f +lib/readline/doc/rlman.texi f +lib/readline/doc/rltech.texi f +lib/readline/doc/rluser.texi f +lib/readline/doc/rluserman.texi f +lib/readline/doc/history.texi f +lib/readline/doc/hstech.texi f +lib/readline/doc/hsuser.texi f +lib/readline/doc/fdl.texi f +lib/readline/examples/Makefile f +lib/readline/examples/excallback.c f +lib/readline/examples/fileman.c f +lib/readline/examples/manexamp.c f +lib/readline/examples/histexamp.c f +lib/readline/examples/rltest.c f +lib/readline/examples/rl.c f +lib/readline/examples/rlcat.c f +lib/readline/examples/Inputrc f +lib/sh/Makefile.in f +lib/sh/clktck.c f +lib/sh/clock.c f +lib/sh/fmtullong.c f +lib/sh/fmtulong.c f +lib/sh/fmtumax.c f +lib/sh/getcwd.c f +lib/sh/getenv.c f +lib/sh/inet_aton.c f +lib/sh/itos.c f +lib/sh/mailstat.c f +lib/sh/makepath.c f +lib/sh/memset.c f +lib/sh/mktime.c f +lib/sh/netconn.c f +lib/sh/netopen.c f +lib/sh/oslib.c f +lib/sh/pathcanon.c f +lib/sh/pathphys.c f +lib/sh/rename.c f +lib/sh/setlinebuf.c f +lib/sh/shmatch.c f +lib/sh/shquote.c f +lib/sh/shtty.c f +lib/sh/snprintf.c f +lib/sh/spell.c f +lib/sh/strcasecmp.c f +lib/sh/strerror.c f +lib/sh/strftime.c f +lib/sh/strindex.c f +lib/sh/stringlist.c f +lib/sh/stringvec.c f +lib/sh/strpbrk.c f +lib/sh/strstr.c f +lib/sh/strtod.c f +lib/sh/strtoimax.c f +lib/sh/strtol.c f +lib/sh/strtoll.c f +lib/sh/strtoul.c f +lib/sh/strtoull.c f +lib/sh/strtoumax.c f +lib/sh/strtrans.c f +lib/sh/times.c f +lib/sh/timeval.c f +lib/sh/tmpfile.c f +lib/sh/vprint.c f +lib/sh/xstrchr.c f +lib/sh/zcatfd.c f +lib/sh/zread.c f +lib/sh/zwrite.c f +lib/termcap/Makefile.in f +lib/termcap/ltcap.h f +lib/termcap/termcap.c f +lib/termcap/termcap.h f +lib/termcap/tparam.c f +lib/termcap/version.c f +lib/termcap/grot/termcap.info f +lib/termcap/grot/termcap.info-1 f +lib/termcap/grot/termcap.info-2 f +lib/termcap/grot/termcap.info-3 f +lib/termcap/grot/termcap.info-4 f +lib/termcap/grot/NEWS f +lib/termcap/grot/INSTALL f +lib/termcap/grot/ChangeLog f +lib/termcap/grot/texinfo.tex f +lib/termcap/grot/termcap.texi f +lib/termcap/grot/Makefile.in f +lib/termcap/grot/configure f +lib/termcap/grot/configure.in f +lib/termcap/grot/COPYING f +lib/termcap/grot/README f +lib/tilde/README f +lib/tilde/Makefile.in f +lib/tilde/tilde.c f +lib/tilde/tilde.h f +lib/tilde/shell.c f +po/LINGUAS f +po/Makefile.in.in f +po/Makevars f +po/POTFILES.in f +po/Rules-builtins f +po/Rules-quot f +po/bash.pot f +po/boldquot.sed f +po/en@quot.header f +po/en@boldquot.header f +po/en@quot.po f +po/en@boldquot.po f +po/en@quot.gmo f +po/en@boldquot.gmo f +po/insert-header.sin f +po/quot.sed f +po/remove-potcdate.sin f +CWRU/misc/open-files.c f +CWRU/misc/sigs.c f +CWRU/misc/sigstat.c f +CWRU/misc/bison f +CWRU/misc/errlist.c f +CWRU/misc/hpux10-dlfcn.h f +CWRU/PLATFORMS f +CWRU/README f +CWRU/changelog f +CWRU/sh-redir-hack f +CWRU/mh-folder-comp f +doc/FAQ f +doc/Makefile.in f +doc/bash.1 f +doc/bashbug.1 f +doc/builtins.1 f +doc/rbash.1 f +doc/README f +doc/INTRO f +doc/texinfo.tex f +doc/bashref.texi f +doc/version.texi f +doc/bashref.info f +doc/article.ms f +doc/htmlpost.sh f 755 +doc/infopost.sh f 755 +doc/fdl.texi f +doc/fdl.txt f +support/Makefile.in f +support/bashversion.c f +support/config.guess f +support/config.rpath f 755 +support/config.sub f +support/printenv.sh f 755 +support/printenv.c f +support/bash.xbm f +support/missing f 755 +support/mkclone f 755 +support/mkconffiles f 755 +support/mkdirs f 755 +support/mkinstalldirs f 755 +support/mkversion.sh f 755 +support/mksignames.c f +support/bashbug.sh f +support/man2html.c f +support/recho.c f +support/zecho.c f +support/SYMLINKS f +support/fixlinks f 755 +support/install.sh f 755 +support/texi2dvi f 755 +support/texi2html f 755 +support/xenix-link.sh f 755 +support/shobj-conf f 755 +support/rlvers.sh f 755 +examples/bashdb/PERMISSION f +examples/bashdb/bashdb f +examples/bashdb/bashdb.el f +examples/obashdb/PERMISSION f +examples/obashdb/README f +examples/obashdb/bashdb f +examples/obashdb/bashdb.fns f +examples/obashdb/bashdb.pre f +examples/complete/complete-examples f +examples/complete/complete.ianmac f +examples/complete/complete2.ianmac f +examples/complete/complete.freebsd f +examples/complete/complete.gnu-longopt f +examples/complete/bashcc-1.0.1.tar.gz f +examples/loadables/README f +examples/loadables/template.c f +examples/loadables/Makefile.in f +examples/loadables/necho.c f +examples/loadables/hello.c f +examples/loadables/print.c f +examples/loadables/realpath.c f +examples/loadables/sleep.c f +examples/loadables/strftime.c f +examples/loadables/truefalse.c f +examples/loadables/getconf.h f +examples/loadables/getconf.c f +examples/loadables/finfo.c f +examples/loadables/cat.c f +examples/loadables/cut.c f +examples/loadables/logname.c f +examples/loadables/basename.c f +examples/loadables/dirname.c f +examples/loadables/tty.c f +examples/loadables/pathchk.c f +examples/loadables/tee.c f +examples/loadables/rmdir.c f +examples/loadables/head.c f +examples/loadables/printenv.c f +examples/loadables/push.c f +examples/loadables/id.c f +examples/loadables/whoami.c f +examples/loadables/uname.c f +examples/loadables/sync.c f +examples/loadables/mkdir.c f +examples/loadables/ln.c f +examples/loadables/unlink.c f +examples/loadables/perl/Makefile.in f +examples/loadables/perl/README f +examples/loadables/perl/bperl.c f +examples/loadables/perl/iperl.c f +examples/functions/array-stuff f +examples/functions/array-to-string f +examples/functions/autoload f +examples/functions/autoload.v2 f +examples/functions/autoload.v3 f +examples/functions/basename f +examples/functions/basename2 f +examples/functions/coproc.bash f +examples/functions/coshell.README f +examples/functions/coshell.bash f +examples/functions/csh-compat f +examples/functions/dirfuncs f +examples/functions/dirname f +examples/functions/emptydir f +examples/functions/exitstat f +examples/functions/external f +examples/functions/fact f +examples/functions/fstty f +examples/functions/func f +examples/functions/gethtml f +examples/functions/getoptx.bash f +examples/functions/inetaddr f +examples/functions/inpath f +examples/functions/isnum.bash f +examples/functions/isnum2 f +examples/functions/isvalidip f +examples/functions/jdate.bash f +examples/functions/jj.bash f +examples/functions/keep f +examples/functions/ksh-cd f +examples/functions/ksh-compat-test f +examples/functions/kshenv f +examples/functions/login f +examples/functions/lowercase f +examples/functions/manpage f +examples/functions/mhfold f +examples/functions/notify.bash f +examples/functions/pathfuncs f +examples/functions/recurse f +examples/functions/repeat2 f +examples/functions/repeat3 f +examples/functions/seq f +examples/functions/seq2 f +examples/functions/shcat f +examples/functions/shcat2 f +examples/functions/sort-pos-params f +examples/functions/substr f +examples/functions/substr2 f +examples/functions/term f +examples/functions/whatis f +examples/functions/whence f +examples/functions/which f +examples/functions/xalias.bash f +examples/functions/xfind.bash f +examples/scripts/adventure.sh f +examples/scripts/bcsh.sh f +examples/scripts/cat.sh f +examples/scripts/center f +examples/scripts/dd-ex.sh f +examples/scripts/fixfiles.bash f +examples/scripts/hanoi.bash f +examples/scripts/inpath f +examples/scripts/krand.bash f +examples/scripts/line-input.bash f +examples/scripts/nohup.bash f +examples/scripts/precedence f +examples/scripts/randomcard.bash f +examples/scripts/scrollbar f +examples/scripts/scrollbar2 f +examples/scripts/self-repro f +examples/scripts/showperm.bash f +examples/scripts/shprompt f +examples/scripts/spin.bash f +examples/scripts/timeout f +examples/scripts/vtree2 f +examples/scripts/vtree3 f +examples/scripts/vtree3a f +examples/scripts/websrv.sh f +examples/scripts/xterm_title f +examples/scripts/zprintf f +examples/startup-files/README f +examples/startup-files/Bashrc.bfox f +examples/startup-files/Bash_aliases f +examples/startup-files/Bash_profile f +examples/startup-files/bash-profile f +examples/startup-files/bashrc f +examples/startup-files/apple/README f +examples/startup-files/apple/aliases f +examples/startup-files/apple/bash.defaults f +examples/startup-files/apple/environment f +examples/startup-files/apple/login f +examples/startup-files/apple/logout f +examples/startup-files/apple/rc f +examples/misc/suncmd.termcap f +examples/misc/aliasconv.sh f +examples/misc/aliasconv.bash f +examples/misc/cshtobash f +tests/README f +tests/alias.tests f +tests/alias.right f +tests/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/array-at-star f +tests/array2.right f +tests/braces.tests f +tests/braces.right f +tests/builtins.tests f +tests/builtins.right f +tests/builtins1.sub f +tests/builtins2.sub f +tests/source1.sub f +tests/source2.sub f +tests/source3.sub f +tests/source4.sub f +tests/source5.sub f +tests/cond.tests f +tests/cond.right f +tests/cprint.tests f +tests/cprint.right f +tests/dbg-support.right f +tests/dbg-support.sub f +tests/dbg-support.tests f +tests/dbg-support2.right f +tests/dbg-support2.tests f +tests/dollar-at-star f +tests/dollar-at1.sub f +tests/dollar-at2.sub f +tests/dollar-star1.sub f +tests/dollar.right f +tests/dstack.tests f +tests/dstack.right f +tests/dstack2.tests f +tests/dstack2.right f +tests/errors.tests f +tests/errors.right f +tests/execscript f +tests/exec.right f +tests/exec1.sub f 755 +tests/exec2.sub f +tests/exec3.sub f +tests/exec4.sub f +tests/exec5.sub f +tests/exec6.sub f +tests/exec7.sub f +tests/exp-tests f +tests/exp.right f +tests/extglob.tests f +tests/extglob.right f +tests/extglob2.tests f +tests/extglob2.right f +tests/func.tests f +tests/func.right f +tests/func1.sub f +tests/func2.sub f +tests/func3.sub f +tests/getopts.tests f +tests/getopts.right f +tests/getopts1.sub f +tests/getopts2.sub f +tests/getopts3.sub f +tests/getopts4.sub f +tests/getopts5.sub f +tests/getopts6.sub f +tests/getopts7.sub f +tests/glob-test f +tests/glob1.sub f +tests/glob.right f +tests/heredoc.tests f +tests/heredoc.right f +tests/herestr.tests f +tests/herestr.right f +tests/histexp.tests f +tests/histexp.right f +tests/history.tests f +tests/history.right f +tests/history.list f 444 +tests/ifs.tests f +tests/ifs.right f +tests/input-line.sh f +tests/input-line.sub f +tests/input.right f +tests/invert.tests f +tests/invert.right f +tests/jobs.tests f +tests/jobs1.sub f +tests/jobs2.sub f +tests/jobs3.sub f +tests/jobs4.sub f +tests/jobs.right f +tests/more-exp.tests f +tests/more-exp.right f +tests/new-exp.tests f +tests/new-exp1.sub f +tests/new-exp2.sub f +tests/new-exp3.sub f +tests/new-exp4.sub f +tests/new-exp.right f +tests/nquote.tests f +tests/nquote.right f +tests/nquote1.tests f +tests/nquote1.right f +tests/nquote2.tests f +tests/nquote2.right f +tests/nquote3.tests f +tests/nquote3.right f +tests/nquote4.tests f +tests/nquote4.right f +tests/posix2.tests f +tests/posix2.right f +tests/posixpat.tests f +tests/posixpat.right f +tests/prec.right f +tests/precedence f +tests/printf.tests f +tests/printf.right f +tests/quote.tests f +tests/quote.right f +tests/read.tests f +tests/read.right f +tests/read1.sub f +tests/read2.sub f +tests/read3.sub f +tests/read4.sub f +tests/read5.sub f +tests/redir.tests f +tests/redir.right f +tests/redir1.sub f +tests/redir2.sub f +tests/redir3.sub f +tests/redir3.in1 f +tests/redir3.in2 f +tests/redir4.sub f +tests/redir4.in1 f +tests/redir5.sub f +tests/redir6.sub f +tests/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-arith-for f +tests/run-arith f +tests/run-array f +tests/run-array2 f +tests/run-braces f +tests/run-builtins f +tests/run-cond f +tests/run-cprint f +tests/run-dbg-support f +tests/run-dbg-support2 f +tests/run-dirstack f +tests/run-dollars f +tests/run-errors f +tests/run-execscript f +tests/run-exp-tests f +tests/run-extglob f +tests/run-extglob2 f +tests/run-func f +tests/run-getopts f +tests/run-glob-test f +tests/run-heredoc f +tests/run-herestr f +tests/run-histexpand f +tests/run-history f +tests/run-ifs f +tests/run-input-test f +tests/run-invert f +tests/run-jobs f +tests/run-more-exp f +tests/run-new-exp f +tests/run-nquote f +tests/run-nquote1 f +tests/run-nquote2 f +tests/run-nquote3 f +tests/run-nquote4 f +tests/run-posix2 f +tests/run-posixpat f +tests/run-precedence f +tests/run-printf f +tests/run-quote f +tests/run-read f +tests/run-redir f +tests/run-rhs-exp f +tests/run-rsh f +tests/run-set-e f +tests/run-set-x f +tests/run-shopt f +tests/run-strip f +tests/run-test f +tests/run-tilde f +tests/run-trap f +tests/run-type f +tests/run-varenv f +tests/set-e-test f +tests/set-e.right f +tests/set-x.tests f +tests/set-x.right f +tests/shopt.tests f +tests/shopt.right f +tests/strip.tests f +tests/strip.right f +tests/test.tests f +tests/test.right f +tests/tilde-tests f +tests/tilde.right f +tests/trap.tests f +tests/trap.right f +tests/trap1.sub f 755 +tests/trap2.sub f 755 +tests/trap2a.sub f 755 +tests/type.tests f +tests/type.right f +tests/varenv.right f +tests/varenv.sh f +tests/varenv1.sub f +tests/varenv2.sub f +tests/version f +tests/version.mini f +tests/misc/dev-tcp.tests f +tests/misc/perf-script f +tests/misc/perftest f +tests/misc/read-nchars.tests f +tests/misc/redir-t2.sh f +tests/misc/run-r2.sh f +tests/misc/sigint-1.sh f +tests/misc/sigint-2.sh f +tests/misc/sigint-3.sh f +tests/misc/sigint-4.sh f +tests/misc/test-minus-e.1 f +tests/misc/test-minus-e.2 f +tests/misc/wait-bg.tests f +examples/scripts.v2/PERMISSION f +examples/scripts.v2/README f +examples/scripts.v2/arc2tarz f +examples/scripts.v2/bashrand f +examples/scripts.v2/cal2day.bash f +examples/scripts.v2/cdhist.bash f +examples/scripts.v2/corename f +examples/scripts.v2/fman f +examples/scripts.v2/frcp f +examples/scripts.v2/lowercase f +examples/scripts.v2/ncp f +examples/scripts.v2/newext f +examples/scripts.v2/nmv f +examples/scripts.v2/pages f +examples/scripts.v2/pf f +examples/scripts.v2/ren f +examples/scripts.v2/rename f +examples/scripts.v2/repeat f +examples/scripts.v2/untar f +examples/scripts.v2/uudec f +examples/scripts.v2/uuenc f +examples/scripts.v2/vtree f +examples/scripts.v2/where f +examples/scripts.v2/pmtop f +examples/scripts.v2/shprof f +examples/scripts.noah/PERMISSION f +examples/scripts.noah/README f +examples/scripts.noah/aref.bash f +examples/scripts.noah/bash.sub.bash f +examples/scripts.noah/bash_version.bash f +examples/scripts.noah/meta.bash f +examples/scripts.noah/mktmp.bash f +examples/scripts.noah/number.bash f +examples/scripts.noah/prompt.bash f +examples/scripts.noah/remap_keys.bash f +examples/scripts.noah/require.bash f +examples/scripts.noah/send_mail.bash f +examples/scripts.noah/shcat.bash f +examples/scripts.noah/source.bash f +examples/scripts.noah/string.bash f +examples/scripts.noah/stty.bash f +examples/scripts.noah/y_or_n_p.bash f diff --git a/Makefile.in b/Makefile.in index 56bc2b4b0..4e28496ee 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile for bash-3.0, version 2.152 +# Makefile for bash-3.0, version 2.153 # # Copyright (C) 1996-2004 Free Software Foundation, Inc. @@ -196,7 +196,8 @@ 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}/shmatch.c + ${SH_LIBSRC}/zcatfd.c ${SH_LIBSRC}/shmatch.c \ + ${SH_LIBSRC}/strnlen.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -668,7 +669,7 @@ $(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/confi # for chet reconfig: force - sh $(srcdir)/configure + sh $(srcdir)/configure -C #newversion: mkversion # $(RM) .build diff --git a/Makefile.in~ b/Makefile.in~ new file mode 100644 index 000000000..fb6a2eaac --- /dev/null +++ b/Makefile.in~ @@ -0,0 +1,1436 @@ +# Makefile for bash-3.0, version 2.152 +# +# 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 distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +# Make sure the first target in the makefile is the right one +all: .made + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale + +mandir = @mandir@ +manpfx = man + +man1ext = .1 +man1dir = $(mandir)/$(manpfx)1 +man3ext = .3 +man3dir = $(mandir)/$(manpfx)3 + +htmldir = @htmldir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +top_builddir = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = .:@srcdir@ + +@SET_MAKE@ +CC = @CC@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +YACC = @YACC@ +SHELL = @MAKE_SHELL@ +CP = cp +RM = rm -f +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RANLIB = @RANLIB@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 +INSTALLMODE2 = -m 0555 + +TESTSCRIPT = @TESTSCRIPT@ + +#If you have purify, and want to use it, uncomment this definition or +# run the make as `make PURIFY=purify' +# or run configure with the --with-purify argument. +PURIFY = @PURIFY@ + +# Here is a rule for making .o files from .c files that does not +# force the type of the machine (like -M_MACHINE) into the flags. +.c.o: + $(RM) $@ + $(CC) $(CCFLAGS) -c $< + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ + +# The name of this program and some version information. +VERSPROG = bashversion$(EXEEXT) +VERSOBJ = bashversion.$(OBJEXT) + +Program = bash$(EXEEXT) +Version = @BASHVERS@ +PatchLevel = `$(BUILD_DIR)/$(VERSPROG) -p` +RELSTATUS = @RELSTATUS@ + +Machine = @host_cpu@ +OS = @host_os@ +VENDOR = @host_vendor@ +MACHTYPE = @host@ + +# comment out for release +DEBUG = @DEBUG@ +MALLOC_DEBUG = @MALLOC_DEBUG@ + +THIS_SH = $(BUILD_DIR)/$(Program) + +# PROFILE_FLAGS is either -pg, to generate profiling info for use +# with gprof, or nothing (the default). +PROFILE_FLAGS= @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ +CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +LOCALE_DEFS = -DLOCALEDIR='"$(localedir)"' -DPACKAGE='"$(PACKAGE)"' + +LOCAL_LIBS = @LOCAL_LIBS@ +LIBS = $(BUILTINS_LIB) $(LIBRARIES) @LIBS@ +STATIC_LD = @STATIC_LD@ +LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ + +SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) + +BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ + $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) + +CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) + +CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) + +LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS) +LDFLAGS_FOR_BUILD = $(LDFLAGS) + +INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) + +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ + -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + +GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS) + +# +# Support libraries +# + +dot = . + +LIBSUBDIR = lib +LIBSRC = $(srcdir)/$(LIBSUBDIR) + +LIBBUILD = ${BUILD_DIR}/${LIBSUBDIR} + +SUBDIR_INCLUDES = -I. @RL_INCLUDE@ -I$(topdir) -I$(topdir)/$(LIBSUBDIR) + +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ + +# the bash library +# the library is a mix of functions that the C library does not provide on +# some platforms and general shell utility functions +SH_LIBSRC = $(LIBSRC)/sh +SH_LIBDIR = $(dot)/${LIBSUBDIR}/sh +SH_ABSSRC = ${topdir}/${SH_LIBSRC} + +SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ + ${SH_LIBSRC}/getenv.c ${SH_LIBSRC}/oslib.c \ + ${SH_LIBSRC}/setlinebuf.c \ + ${SH_LIBSRC}/strcasecmp.c ${SH_LIBSRC}/strerror.c \ + ${SH_LIBSRC}/strtod.c ${SH_LIBSRC}/strtol.c \ + ${SH_LIBSRC}/strtoul.c ${SH_LIBSRC}/vprint.c \ + ${SH_LIBSRC}/itos.c ${SH_LIBSRC}/rename.c \ + ${SH_LIBSRC}/zread.c ${SH_LIBSRC}/zwrite.c \ + ${SH_LIBSRC}/shtty.c ${SH_LIBSRC}/inet_aton.c \ + ${SH_LIBSRC}/netopen.c ${SH_LIBSRC}/strpbrk.c \ + ${SH_LIBSRC}/timeval.c ${SH_LIBSRC}/clock.c \ + ${SH_LIBSRC}/makepath.c ${SH_LIBSRC}/pathcanon.c \ + ${SH_LIBSRC}/pathphys.c ${SH_LIBSRC}/stringlist.c \ + ${SH_LIBSRC}/stringvec.c ${SH_LIBSRC}/tmpfile.c \ + ${SH_LIBSRC}/spell.c ${SH_LIBSRC}/strtrans.c \ + ${SH_LIBSRC}/strindex.c ${SH_LIBSRC}/shquote.c \ + ${SH_LIBSRC}/snprintf.c ${SH_LIBSRC}/mailstat.c \ + ${SH_LIBSRC}/fmtulong.c ${SH_LIBSRC}/fmtullong.c \ + ${SH_LIBSRC}/strtoll.c ${SH_LIBSRC}/strtoull.c \ + ${SH_LIBSRC}/strtoimax.c ${SH_LIBSRC}/strtoumax.c \ + ${SH_LIBSRC}/fmtumax.c ${SH_LIBSRC}/netconn.c \ + ${SH_LIBSRC}/mktime.c ${SH_LIBSRC}/strftime.c \ + ${SH_LIBSRC}/memset.c ${SH_LIBSRC}/xstrchr.c \ + ${SH_LIBSRC}/zcatfd.c ${SH_LIBSRC}/shmatch.c \ + ${SH_LIBSRC}/strnlen.c + +SHLIB_LIB = -lsh +SHLIB_LIBNAME = libsh.a +SHLIB_LIBRARY = ${SH_LIBDIR}/${SHLIB_LIBNAME} +SHLIB_LDFLAGS = -L${SH_LIBDIR} +SHLIB_DEP = ${SHLIB_LIBRARY} + +# we assume for now that readline source is being shipped with bash +RL_LIBSRC = $(LIBSRC)/readline +RL_LIBDOC = $(RL_LIBSRC)/doc +RL_LIBDIR = @RL_LIBDIR@ +RL_ABSSRC = ${topdir}/$(RL_LIBDIR) + +RL_INCLUDEDIR = @RL_INCLUDEDIR@ + +READLINE_LIB = @READLINE_LIB@ +READLINE_LIBRARY = $(RL_LIBDIR)/libreadline.a +READLINE_LDFLAGS = -L${RL_LIBDIR} +READLINE_DEP = @READLINE_DEP@ + +# The source, object and documentation of the GNU Readline library. +READLINE_SOURCE = $(RL_LIBSRC)/rldefs.h $(RL_LIBSRC)/rlconf.h \ + $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/tcap.h \ + $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/keymaps.h \ + $(RL_LIBSRC)/history.h $(RL_LIBSRC)/histlib.h \ + $(RL_LIBSRC)/posixstat.h $(RL_LIBSRC)/tilde.h \ + $(RL_LIBSRC)/rlstdc.h ${RL_LIBSRC}/xmalloc.h \ + $(RL_LIBSRC)/rlshell.h ${RL_LIBSRC}/rlprivate.h \ + $(RL_LIBSRC)/funmap.c $(RL_LIBSRC)/emacs_keymap.c \ + $(RL_LIBSRC)/search.c $(RL_LIBSRC)/vi_keymap.c \ + $(RL_LIBSRC)/keymaps.c $(RL_LIBSRC)/parens.c \ + $(RL_LIBSRC)/vi_mode.c $(RL_LIBSRC)/callback.c \ + $(RL_LIBSRC)/readline.c $(RL_LIBSRC)/tilde.c \ + $(RL_LIBSRC)/rltty.c $(RL_LIBSRC)/complete.c \ + $(RL_LIBSRC)/bind.c $(RL_LIBSRC)/isearch.c \ + $(RL_LIBSRC)/display.c $(RL_LIBSRC)/signals.c \ + $(RL_LIBSRC)/util.c $(RL_LIBSRC)/kill.c $(RL_LIBSRC)/text.c \ + $(RL_LIBSRC)/undo.c $(RL_LIBSRC)/macro.c \ + $(RL_LIBSRC)/terminal.c $(RL_LIBSRC)/nls.c \ + $(RL_LIBSRC)/input.c $(RL_LIBSRC)/xmalloc.c \ + $(RL_LIBSRC)/shell.c $(RL_LIBSRC)/savestring.c \ + $(RL_LIBSRC)/misc.c $(RL_LIBSRC)/mbutil.c $(RL_LIBSRC)/compat.c \ + $(RL_LIBSRC)/histexpand.c $(RL_LIBSRC)/history.c \ + $(RL_LIBSRC)/histsearch.c $(RL_LIBSRC)/histfile.c + +READLINE_OBJ = $(RL_LIBDIR)/readline.o $(RL_LIBDIR)/funmap.o \ + $(RL_LIBDIR)/parens.o $(RL_LIBDIR)/search.o \ + $(RL_LIBDIR)/keymaps.o $(RL_LIBDIR)/xmalloc.o \ + $(RL_LIBDIR)/rltty.o $(RL_LIBDIR)/complete.o \ + $(RL_LIBDIR)/bind.o $(RL_LIBDIR)/isearch.o \ + $(RL_LIBDIR)/display.o $(RL_LIBDIR)/signals.o \ + $(RL_LIBDIR)/tilde.o $(RL_LIBDIR)/util.o \ + $(RL_LIBDIR)/kill.o $(RL_LIBDIR)/undo.o $(RL_LIBDIR)/nls.o \ + $(RL_LIBDIR)/macro.o $(RL_LIBDIR)/input.o \ + $(RL_LIBDIR)/terminal.o $(RL_LIBDIR)/callback.o \ + $(RL_LIBDIR)/shell.o $(RL_LIBDIR)/savestring.o \ + $(RL_LIBDIR)/mbutil.o $(RL_LIBDIR)/compat.o \ + $(RL_LIBDIR)/history.o $(RL_LIBDIR)/histexpand.o \ + $(RL_LIBDIR)/histsearch.o $(RL_LIBDIR)/histfile.o + +HIST_LIBSRC = $(LIBSRC)/readline +HIST_LIBDIR = @HIST_LIBDIR@ +HIST_ABSSRC = ${topdir}/$(HIST_LIBDIR) + +HISTORY_LIB = @HISTORY_LIB@ +HISTORY_LIBRARY = $(HIST_LIBDIR)/libhistory.a +HISTORY_LDFLAGS = -L$(HIST_LIBDIR) +HISTORY_DEP = @HISTORY_DEP@ + +# The source, object and documentation of the history library. +HISTORY_SOURCE = $(HIST_LIBSRC)/history.c $(HIST_LIBSRC)/histexpand.c \ + $(HIST_LIBSRC)/histsearch.c $(HIST_LIBSRC)/histfile.c \ + $(HIST_LIBSRC)/shell.c \ + $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/histlib.h +HISTORY_OBJ = $(HIST_LIBDIR)/history.o $(HIST_LIBDIR)/histexpand.o \ + $(HIST_LIBDIR)/histsearch.o $(HIST_LIBDIR)/histfile.o \ + $(HIST_LIBDIR)/shell.o + +# You only need termcap (or curses) if you are linking with GNU Readline. +TERM_LIBSRC = $(LIBSRC)/termcap +TERM_LIBDIR = $(dot)/$(LIBSUBDIR)/termcap +TERM_ABSSRC = ${topdir}/$(TERM_LIBDIR) + +TERMCAP_LIB = @TERMCAP_LIB@ +TERMCAP_LIBRARY = $(TERM_LIBDIR)/libtermcap.a +TERMCAP_LDFLAGS = -L$(TERM_LIBDIR) +TERMCAP_DEP = @TERMCAP_DEP@ + +TERMCAP_SOURCE = $(TERM_LIBSRC)/termcap.c $(TERM_LIBSRC)/tparam.c +TERMCAP_OBJ = $(TERM_LIBDIR)/termcap.o $(TERM_LIBDIR)/tparam.o + +GLOB_LIBSRC = $(LIBSRC)/glob +GLOB_LIBDIR = $(dot)/$(LIBSUBDIR)/glob +GLOB_ABSSRC = ${topdir}/$(GLOB_LIBDIR) + +GLOB_LIB = -lglob +GLOB_LIBRARY = $(GLOB_LIBDIR)/libglob.a +GLOB_LDFLAGS = -L$(GLOB_LIBDIR) +GLOB_DEP = $(GLOB_LIBRARY) + +GLOB_SOURCE = $(GLOB_LIBSRC)/glob.c $(GLOB_LIBSRC)/strmatch.c \ + $(GLOB_LIBSRC)/smatch.c $(GLOB_LIBSRC)/xmbsrtowcs.c \ + $(GLOB_LIBSRC)/glob_loop.c $(GLOB_LIBSRC)/sm_loop.c \ + $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h +GLOB_OBJ = $(GLOB_LIBDIR)/glob.o $(GLOB_LIBDIR)/strmatch.o \ + $(GLOB_LIBDIR)/smatch.o $(GLOB_LIBDIR)/xmbsrtowcs.o + +# The source, object and documentation for the GNU Tilde library. +TILDE_LIBSRC = $(LIBSRC)/tilde +TILDE_LIBDIR = $(dot)/$(LIBSUBDIR)/tilde +TILDE_ABSSRC = ${topdir}/$(TILDE_LIBDIR) + +TILDE_LIB = -ltilde +TILDE_LIBRARY = $(TILDE_LIBDIR)/libtilde.a +TILDE_LDFLAGS = -L$(TILDE_LIBDIR) +TILDE_DEP = $(TILDE_LIBRARY) + +TILDE_SOURCE = $(TILDE_LIBSRC)/tilde.c $(TILDE_LIBSRC)/tilde.h +TILDE_OBJ = $(TILDE_LIBDIR)/tilde.o + +# libintl +INTL_LIBSRC = $(LIBSRC)/intl +INTL_LIBDIR = $(dot)/$(LIBSUBDIR)/intl +INTL_ABSSRC = ${topdir}/$(INTL_LIB) +INTL_BUILDDIR = ${LIBBUILD}/intl + +INTL_LIB = @LIBINTL@ +INTL_LIBRARY = $(INTL_LIBDIR)/libintl.a +INTL_DEP = @INTL_DEP@ +INTL_INC = @INTL_INC@ + +LIBINTL_H = @LIBINTL_H@ + +# tests +LIBINTL = @LIBINTL@ +LTLIBINTL = @LTLIBINTL@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ + +# Our malloc. +MALLOC_TARGET = @MALLOC_TARGET@ + +# set to alloca.o if we are using the C alloca in lib/malloc +ALLOCA = @ALLOCA@ + +ALLOC_LIBSRC = $(LIBSRC)/malloc +ALLOC_LIBDIR = $(dot)/$(LIBSUBDIR)/malloc +ALLOC_ABSSRC = ${topdir}/$(ALLOC_LIBDIR) + +MALLOC_SRC = @MALLOC_SRC@ +MALLOC_OTHERSRC = ${ALLOC_LIBSRC}/trace.c ${ALLOC_LIBSRC}/stats.c \ + ${ALLOC_LIBSRC}/table.c ${ALLOC_LIBSRC}/watch.c +MALLOC_SOURCE = ${ALLOC_LIBSRC}/${MALLOC_SRC} ${MALLOC_OTHERSRC} +MALLOC_CFLAGS = -DRCHECK -Dbotch=programming_error ${MALLOC_DEBUG} + +MALLOC_LIB = @MALLOC_LIB@ +MALLOC_LIBRARY = @MALLOC_LIBRARY@ +MALLOC_LDFLAGS = @MALLOC_LDFLAGS@ +MALLOC_DEP = @MALLOC_DEP@ + +ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h $(ALLOC_LIBSRC)/shmalloc.h \ + $(ALLOC_LIBSRC)/imalloc.h $(ALLOC_LIBSRC)/mstats.h \ + $(ALLOC_LIBSRC)/table.h $(ALLOC_LIBSRC)/watch.h + +$(MALLOC_LIBRARY): ${MALLOC_SOURCE} ${ALLOC_HEADERS} config.h + @(cd $(ALLOC_LIBDIR) && \ + $(MAKE) $(MFLAGS) \ + MALLOC_CFLAGS="$(MALLOC_CFLAGS)" ${MALLOC_TARGET} ) || exit 1 + +BASHINCDIR = ${srcdir}/include +BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \ + $(BASHINCDIR)/filecntl.h $(BASHINCDIR)/posixdir.h \ + $(BASHINCDIR)/memalloc.h $(BASHINCDIR)/stdc.h \ + $(BASHINCDIR)/posixjmp.h $(BASHINCDIR)/posixwait.h \ + $(BASHINCDIR)/posixtime.h $(BASHINCDIR)/systimes.h \ + $(BASHINCDIR)/unionwait.h $(BASHINCDIR)/maxpath.h \ + $(BASHINCDIR)/shtty.h $(BASHINCDIR)/typemax.h \ + $(BASHINCDIR)/ocache.h + +LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ + $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) + +LIBDEP = $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \ + $(TILDE_DEP) $(MALLOC_DEP) + +LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \ + $(TILDE_LDFLAGS) $(MALLOC_LDFLAGS) $(SHLIB_LDFLAGS) + +# +# The shell itself +# + +# The main source code for the Bourne Again SHell. +CSOURCES = shell.c eval.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \ + dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \ + expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c \ + test.c trap.c alias.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ + input.c bashhist.c array.c arrayfunc.c sig.c pathexp.c \ + unwind_prot.c siglist.c bashline.c bracecomp.c error.c \ + list.c stringlib.c locale.c findcmd.c redir.c \ + pcomplete.c pcomplib.c syntax.c xmalloc.c + +HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \ + general.h variables.h config.h $(ALLOC_HEADERS) alias.h \ + quit.h unwind_prot.h syntax.h ${GRAM_H} \ + command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \ + subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \ + array.h arrayfunc.h sig.h mailcheck.h bashintl.h bashjmp.h \ + execute_cmd.h parser.h pathexp.h pathnames.h pcomplete.h \ + $(BASHINCFILES) + +SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) + +# header files chosen based on running of configure +SIGNAMES_H = @SIGNAMES_H@ + +# object files chosen based on running of configure +JOBS_O = @JOBS_O@ +SIGLIST_O = @SIGLIST_O@ + +# Matching object files. +OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \ + dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \ + expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ + trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ + alias.o array.o arrayfunc.o braces.o bracecomp.o bashhist.o \ + bashline.o $(SIGLIST_O) list.o stringlib.o locale.o findcmd.o redir.o \ + pcomplete.o pcomplib.o syntax.o xmalloc.o + +# Where the source code of the shell builtins resides. +BUILTIN_SRCDIR=$(srcdir)/builtins +DEFSRC=$(BUILTIN_SRCDIR) +BUILTIN_ABSSRC=${topdir}/builtins +DEFDIR = $(dot)/builtins +DEBUGGER_DIR = $(dot)/debugger + +BUILTIN_DEFS = $(DEFSRC)/alias.def $(DEFSRC)/bind.def $(DEFSRC)/break.def \ + $(DEFSRC)/builtin.def $(DEFSRC)/cd.def $(DEFSRC)/colon.def \ + $(DEFSRC)/command.def ${DEFSRC}/complete.def \ + $(DEFSRC)/caller.def $(DEFSRC)/declare.def \ + $(DEFSRC)/echo.def $(DEFSRC)/enable.def $(DEFSRC)/eval.def \ + $(DEFSRC)/exec.def $(DEFSRC)/exit.def $(DEFSRC)/fc.def \ + $(DEFSRC)/fg_bg.def $(DEFSRC)/hash.def $(DEFSRC)/help.def \ + $(DEFSRC)/history.def $(DEFSRC)/jobs.def $(DEFSRC)/kill.def \ + $(DEFSRC)/let.def $(DEFSRC)/read.def $(DEFSRC)/return.def \ + $(DEFSRC)/set.def $(DEFSRC)/setattr.def $(DEFSRC)/shift.def \ + $(DEFSRC)/source.def $(DEFSRC)/suspend.def $(DEFSRC)/test.def \ + $(DEFSRC)/times.def $(DEFSRC)/trap.def $(DEFSRC)/type.def \ + $(DEFSRC)/ulimit.def $(DEFSRC)/umask.def $(DEFSRC)/wait.def \ + $(DEFSRC)/getopts.def $(DEFSRC)/reserved.def \ + $(DEFSRC)/pushd.def $(DEFSRC)/shopt.def $(DEFSRC)/printf.def +BUILTIN_C_SRC = $(DEFSRC)/mkbuiltins.c $(DEFSRC)/common.c \ + $(DEFSRC)/evalstring.c $(DEFSRC)/evalfile.c \ + $(DEFSRC)/bashgetopt.c $(GETOPT_SOURCE) +BUILTIN_C_OBJ = $(DEFDIR)/common.o $(DEFDIR)/evalstring.o \ + $(DEFDIR)/evalfile.o $(DEFDIR)/bashgetopt.o +BUILTIN_OBJS = $(DEFDIR)/alias.o $(DEFDIR)/bind.o $(DEFDIR)/break.o \ + $(DEFDIR)/builtin.o $(DEFDIR)/cd.o $(DEFDIR)/colon.o \ + $(DEFDIR)/command.o $(DEFDIR)/caller.o $(DEFDIR)/declare.o \ + $(DEFDIR)/echo.o $(DEFDIR)/enable.o $(DEFDIR)/eval.o \ + $(DEFDIR)/exec.o $(DEFDIR)/exit.o $(DEFDIR)/fc.o \ + $(DEFDIR)/fg_bg.o $(DEFDIR)/hash.o $(DEFDIR)/help.o \ + $(DEFDIR)/history.o $(DEFDIR)/jobs.o $(DEFDIR)/kill.o \ + $(DEFDIR)/let.o $(DEFDIR)/pushd.o $(DEFDIR)/read.o \ + $(DEFDIR)/return.o $(DEFDIR)/shopt.o $(DEFDIR)/printf.o \ + $(DEFDIR)/set.o $(DEFDIR)/setattr.o $(DEFDIR)/shift.o \ + $(DEFDIR)/source.o $(DEFDIR)/suspend.o $(DEFDIR)/test.o \ + $(DEFDIR)/times.o $(DEFDIR)/trap.o $(DEFDIR)/type.o \ + $(DEFDIR)/ulimit.o $(DEFDIR)/umask.o $(DEFDIR)/wait.o \ + $(DEFDIR)/getopts.o $(BUILTIN_C_OBJ) +GETOPT_SOURCE = $(DEFSRC)/getopt.c $(DEFSRC)/getopt.h +PSIZE_SOURCE = $(DEFSRC)/psize.sh $(DEFSRC)/psize.c + +BUILTINS_LIBRARY = $(DEFDIR)/libbuiltins.a +BUILTINS_LIB = -lbuiltins +BUILTINS_LDFLAGS = -L$(DEFDIR) +BUILTINS_DEP = $(BUILTINS_LIBRARY) + +# Documentation for the shell. +DOCSRC = $(srcdir)/doc +DOCDIR = $(dot)/doc + +# Translations and other i18n support files +PO_SRC = $(srcdir)/po/ +PO_DIR = $(dot)/po/ + +SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c + +SUPPORT_SRC = $(srcdir)/support/ +SDIR = $(dot)/support/ + +TESTS_SUPPORT = recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) +CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ + tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ + tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ + mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ + buildversion.o +CREATED_CONFIGURE = config.h config.cache config.status config.log \ + stamp-h po/POTFILES +CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ + lib/readline/Makefile lib/glob/Makefile \ + lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \ + lib/termcap/Makefile examples/loadables/Makefile \ + examples/loadables/perl/Makefile support/Makefile \ + lib/intl/Makefile po/Makefile po/Makefile.in + +# Keep GNU Make from exporting the entire environment for small machines. +.NOEXPORT: + +.made: $(Program) bashbug + @echo "$(Program) last made for a $(Machine) running $(OS)" >.made + +$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) + $(RM) $@ + $(PURIFY) $(CC) $(BUILTINS_LDFLAGS) $(LIBRARY_LDFLAGS) $(LDFLAGS) -o $(Program) $(OBJECTS) $(LIBS) + ls -l $(Program) + size $(Program) + +.build: $(SOURCES) config.h Makefile version.h $(VERSPROG) + @echo + @echo " ***********************************************************" + @echo " * *" + @echo " * `$(BUILD_DIR)/$(VERSPROG) -l`" + @echo " * *" + @echo " ***********************************************************" + @echo + +bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) + @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ + -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ + -e "s%!RELEASE!%$(Version)%" -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ + -e "s%!MACHTYPE!%$(MACHTYPE)%" -e "s%!RELSTATUS!%$(RELSTATUS)%" \ + $(SUPPORT_SRC)bashbug.sh > $@ + @chmod a+rx bashbug + +strip: $(Program) .made + strip $(Program) + ls -l $(Program) + size $(Program) + +lint: + ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made + +version.h: $(SOURCES) config.h Makefile + $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \ + && mv newversion.h version.h + +bashversion$(EXEEXT): patchlevel.h conftypes.h version.h buildversion.o $(SUPPORT_SRC)bashversion.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o + +buildversion.o: version.h conftypes.h patchlevel.h $(srcdir)/version.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c -o $@ $(srcdir)/version.c + +# old rules +GRAM_H = parser-built +y.tab.o: y.tab.c ${GRAM_H} command.h ${BASHINCDIR}/stdc.h input.h +${GRAM_H}: y.tab.h + @-if test -f y.tab.h ; then \ + cmp -s $@ y.tab.h 2>/dev/null || cp -p y.tab.h $@; \ + fi +y.tab.c y.tab.h: parse.y +# -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi + $(YACC) -d $(srcdir)/parse.y + touch parser-built +# -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; else cp -p y.tab.h ${GRAM_H}; fi + +# experimental new rules - work with GNU make but not BSD (or OSF) make +#y.tab.o: y.tab.c y.tab.h +#y.tab.c y.tab.h: parse.y command.h ${BASHINCDIR}/stdc.h input.h +# -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi +# $(YACC) -d $(srcdir)/parse.y +# -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; fi + +$(READLINE_LIBRARY): config.h $(READLINE_SOURCE) + @echo making $@ in ${RL_LIBDIR} + @( { test "${RL_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${RL_LIBDIR} && $(MAKE) $(MFLAGS) libreadline.a) || exit 1 + +$(HISTORY_LIBRARY): config.h $(HISTORY_SOURCE) + @echo making $@ in ${HIST_LIBDIR} + @( { test "${HIST_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${HIST_LIBDIR} && $(MAKE) $(MFLAGS) libhistory.a) || exit 1 + +$(GLOB_LIBRARY): config.h $(GLOB_SOURCE) + @echo making $@ in ${GLOB_LIBDIR} + @(cd ${GLOB_LIBDIR} && \ + $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libglob.a) || exit 1 + +$(TILDE_LIBRARY): config.h $(TILDE_SOURCE) + @echo making $@ in ${TILDE_LIBDIR} + @(cd ${TILDE_LIBDIR} && \ + $(MAKE) $(MFLAGS) libtilde.a) || exit 1 + +$(TERMCAP_LIBRARY): config.h ${TERMCAP_SOURCE} + @echo making $@ in ${TERM_LIBDIR} + @(cd ${TERM_LIBDIR} && \ + $(MAKE) $(MFLAGS) libtermcap.a) || exit 1 + +$(SHLIB_LIBRARY): config.h ${SHLIB_SOURCE} + @echo making $@ in ${SH_LIBDIR} + @(cd ${SH_LIBDIR} && \ + $(MAKE) $(MFLAGS) DEBUG=${DEBUG} ${SHLIB_LIBNAME}) || exit 1 + +${INTL_LIBRARY}: config.h ${INTL_LIBDIR}/Makefile + @echo making $@ in ${INTL_LIBDIR} + @(cd ${INTL_LIBDIR} && \ + $(MAKE) $(MFLAGS) all) || exit 1 + +${LIBINTL_H}: ${INTL_LIBRARY} + +mksignames$(EXEEXT): $(SUPPORT_SRC)mksignames.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)mksignames.c + +mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h + ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c + +# make a list of signals for the local system -- this is done when we're +# *not* cross-compiling +lsignames.h: mksignames$(EXEEXT) + $(RM) $@ + ./mksignames $@ + +# copy the correct signames header file to signames.h +signames.h: $(SIGNAMES_H) + -if cmp -s $(SIGNAMES_H) $@ ; then :; else $(RM) $@ ; $(CP) $(SIGNAMES_H) $@ ; fi + +syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h + $(RM) $@ + ./mksyntax -o $@ + +$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h version.h + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libbuiltins.a ) || exit 1 + +# these require special rules to circumvent make builtin rules +${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} common.o) || exit 1 + +${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} bashgetopt.o) || exit 1 + +${DEFDIR}/builtext.h: $(BUILTIN_DEFS) + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1 + +# For the justification of the following Makefile rules, see node +# `Automatic Remaking' in GNU Autoconf documentation. + +Makefile makefile: config.status $(srcdir)/Makefile.in + CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status + +pathnames.h: config.status $(srcdir)/Makefile.in + CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles makefiles: config.status $(srcdir)/Makefile.in + @for mf in $(CREATED_MAKEFILES); do \ + CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ + done + +config.h: stamp-h + +stamp-h: config.status $(srcdir)/config.h.in $(srcdir)/config-top.h $(srcdir)/config-bot.h + CONFIG_FILES= CONFIG_HEADERS=config.h $(SHELL) ./config.status + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck + +# comment out for distribution +$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in + cd $(srcdir) && autoconf + +# for chet +reconfig: force + sh $(srcdir)/configure + +#newversion: mkversion +# $(RM) .build +# ./mkversion -dir $(srcdir) -dist +# mv -f newversion.h version.h +# $(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir) + +doc documentation: force + @(cd $(DOCDIR) ; $(MAKE) $(MFLAGS) ) + +info dvi ps: force + @(cd $(DOCDIR) ; $(MAKE) $(MFLAGS) CFLAGS='$(CCFLAGS)' $@ ) + +force: + +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ + +# Targets that actually do things not part of the build + +installdirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(bindir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(man1dir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(infodir) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +install: .made installdirs + $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) + $(INSTALL_SCRIPT) $(INSTALLMODE2) bashbug $(DESTDIR)$(bindir)/bashbug + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +install-strip: + $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + prefix=${prefix} exec_prefix=${exec_prefix} \ + DESTDIR=$(DESTDIR) install + +uninstall: .made + $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +.PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean maybe-clean + +LIB_SUBDIRS = ${RL_LIBDIR} ${HIST_LIBDIR} ${TERM_LIBDIR} ${GLOB_LIBDIR} \ + ${INTL_LIBDIR} ${TILDE_LIBDIR} ${ALLOC_LIBDIR} ${SH_LIBDIR} + +basic-clean: + $(RM) $(OBJECTS) $(Program) bashbug + $(RM) .build .made version.h pathnames.h + +clean: basic-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_SUPPORT) + +mostlyclean: basic-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +distclean: basic-clean maybe-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_CONFIGURE) tags TAGS + $(RM) $(CREATED_SUPPORT) Makefile $(CREATED_MAKEFILES) + +maintainer-clean: basic-clean + @echo This command is intended for maintainers to use. + @echo It deletes files that may require special tools to rebuild. + $(RM) y.tab.c y.tab.h parser-built tags TAGS + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + ( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_CONFIGURE) $(CREATED_MAKEFILES) + $(RM) $(CREATED_SUPPORT) Makefile + +maybe-clean: + -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \ + $(RM) parser-built y.tab.c y.tab.h ; \ + fi + +recho$(EXEEXT): $(SUPPORT_SRC)recho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c + +zecho$(EXEEXT): $(SUPPORT_SRC)zecho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c + +printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c + +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} ) + +symlinks: + $(SHELL) $(SUPPORT_SRC)fixlinks -s $(srcdir) + +dist: force + @echo Bash distributions are created using $(srcdir)/support/mkdist. + @echo Here is a sample of the necessary commands: + @echo $(Program) $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r ${PACKAGE} $(PACKAGE_VERSION) + @echo tar cf $(PACKAGE)-${PACKAGE_VERSION}.tar ${PACKAGE}-$(PACKAGE_VERSION) + @echo gzip $(PACKAGE)-$(PACKAGE_VERSION).tar + +depend: depends + +depends: force + $(Program) $(SUPPORT_SRC)mkdep -c ${CC} -- ${CCFLAGS} ${CSOURCES} + +#### PRIVATE TARGETS #### +hashtest: hashlib.c + $(CC) -DTEST_HASHING $(CCFLAGS) -o $@ $(srcdir)/hashlib.c + +############################ DEPENDENCIES ############################### + +# Files that depend on the definitions in config-top.h, which are not meant +# to be changed +shell.o: config-top.h +input.o: config-top.h +y.tab.o: config-top.h +jobs.o: config-top.h +nojobs.o: config-top.h +execute_cmd.o: config-top.h +variables.o: config-top.h +builtins/command.o: config-top.h +builtins/common.o: config-top.h +builtins/break.o: config-top.h +builtins/echo.o: config-top.h +builtins/evalstring.o: config-top.h +builtins/exit.o: config-top.h +builtins/kill.o: config-top.h + +# shell basics +copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +copy_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +copy_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +dispose_cmd.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h +dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h +dispose_cmd.o: error.h general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +dispose_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +dispose_cmd.o: ${BASHINCDIR}/ocache.h +error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h +error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h +error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +error.o: make_cmd.h subst.h sig.h pathnames.h externs.h +error.o: input.h execute_cmd.h +eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h +eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h +eval.o: input.h execute_cmd.h +execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h +execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h +execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h +execute_cmd.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/chartypes.h +expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h +expr.o: ${BASHINCDIR}/chartypes.h +findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h +findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h +findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h +findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h +findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h +findcmd.o: ${BASHINCDIR}/chartypes.h +flags.o: config.h flags.h +flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h +general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +general.o: make_cmd.h subst.h sig.h pathnames.h externs.h +general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h +general.o: ${BASHINCDIR}/chartypes.h +hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h +hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h hashlib.h +hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h +input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h +list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +list.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: config.h bashtypes.h bashintl.h ${LIBINTL_H} bashansi.h ${BASHINCDIR}/ansi_stdlib.h +locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: ${BASHINCDIR}/chartypes.h +mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +mailcheck.o: ${BASHINCDIR}/posixtime.h +mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +mailcheck.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +mailcheck.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h +mailcheck.o: execute_cmd.h mailcheck.h +make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h +make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h +make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h +make_cmd.o: jobs.h quit.h siglist.h syntax.h dispose_cmd.h +make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/ocache.h +y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h +y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h +y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h +pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +pathexp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +pathexp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +pathexp.o: pathexp.h flags.h +pathexp.o: $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h +pathexp.o: ${BASHINCDIR}/shmbutil.h +print_cmd.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +print_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +print_cmd.o: ${GRAM_H} $(DEFSRC)/common.h +redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h +redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h +redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h +redir.o: flags.h execute_cmd.h redir.h input.h +shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h +shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h +shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h +shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h +shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h +sig.o: config.h bashtypes.h +sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h +sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h +siglist.o: config.h bashtypes.h siglist.h trap.h +stringlib.o: bashtypes.h ${BASHINCDIR}/chartypes.h +stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h +stringlib.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h +subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h +subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +subst.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +subst.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h +subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}/filecntl.h trap.h pathexp.h +subst.o: mailcheck.h input.h $(DEFSRC)/getopt.h $(DEFSRC)/common.h +subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}/strmatch.h +subst.o: ${BASHINCDIR}/chartypes.h +subst.o: ${BASHINCDIR}/shmbutil.h +test.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +test.o: ${DEFSRC}/common.h +trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h +trap.o: signames.h $(DEFSRC)/common.h +trap.o: ${DEFDIR}/builtext.h +unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h +unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h +variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h +variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h +variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h +variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h +variables.o: ${BASHINCDIR}/posixtime.h +version.o: conftypes.h patchlevel.h version.h +xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h + +# job control + +jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDIR}/shtty.h +jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h +jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h +jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h +jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h +jobs.o: ${BASHINCDIR}/posixtime.h +nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h +nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h +nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h + +# shell features that may be compiled in + +array.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +array.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +array.o: make_cmd.h subst.h sig.h pathnames.h externs.h +array.o: $(DEFSRC)/common.h +arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h +arrayfunc.o: $(DEFSRC)/common.h +arrayfunc.o: ${BASHINCDIR}/shmbutil.h +braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h +braces.o: ${BASHINCDIR}/shmbutil.h +alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h +alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h +alias.o: pcomplete.h +alias.o: ${BASHINCDIR}/chartypes.h + +pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h +pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h +pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h +pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h +pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h + +pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h +pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h +pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h +pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h +pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h + +# library support files + +bashhist.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h +bashhist.o: ${BASHINCDIR}/filecntl.h +bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h +bashhist.o: $(GLOB_LIBSRC)/strmatch.h +bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h +bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h +bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h +bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bracecomp.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h hashlib.h builtins.h general.h xmalloc.h +bracecomp.o: quit.h alias.h config.h variables.h arrayfunc.h conftypes.h +bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h + +# library dependencies + +bashline.o: $(RL_LIBSRC)/rlconf.h +bashline.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h +bashline.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h +bracecomp.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +bracecomp.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +y.tab.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +y.tab.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +subst.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +subst.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h + +shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +subst.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +bashline.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +bashhist.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +y.tab.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h + +execute_cmd.o: $(TILDE_LIBSRC)/tilde.h +general.o: $(TILDE_LIBSRC)/tilde.h +mailcheck.o: $(TILDE_LIBSRC)/tilde.h +shell.o: $(TILDE_LIBSRC)/tilde.h +subst.o: $(TILDE_LIBSRC)/tilde.h +variables.o: $(TILDE_LIBSRC)/tilde.h + +# libintl dependencies +arrayfunc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashhist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashline.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +braces.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +error.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +eval.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +execute_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +expr.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +general.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +input.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +jobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +parse.y: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +redir.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +shell.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +sig.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +siglist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +subst.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +test.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +trap.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +# XXX - dependencies checked through here + +# builtin c sources +builtins/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/bashgetopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/bashgetopt.o: $(DEFSRC)/common.h +builtins/bashgetopt.o: ${BASHINCDIR}/chartypes.h +builtins/common.o: bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/common.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h +builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h siglist.h +builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h +builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h +builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h +builtins/common.o: ${DEFDIR}/builtext.h +builtins/common.o: ${BASHINCDIR}/chartypes.h +builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h +builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h +builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/evalstring.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h siglist.h +builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h +builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h +builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h +builtins/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h +builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h +builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h +builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/getopt.o: $(DEFSRC)/getopt.h +builtins/mkbuiltins.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +builtins/mkbuiltins.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h + +# builtin def files +builtins/alias.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/alias.o: quit.h $(DEFSRC)/common.h +builtins/alias.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ${BASHINCDIR}/stdc.h unwind_prot.h +builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h variables.h arrayfunc.h conftypes.h +builtins/bind.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/bind.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/bind.o: $(DEFSRC)/bashgetopt.h +builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h +builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: $(DEFSRC)/common.h quit.h +builtins/caller.o: ${BASHINCDIR}/chartypes.h bashtypes.h +builtins/caller.o: ${DEFDIR}/builtext.h +builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/cd.o: $(DEFSRC)/common.h quit.h +builtins/command.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/command.o: quit.h $(DEFSRC)/bashgetopt.h +builtins/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/declare.o: $(DEFSRC)/bashgetopt.h +builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/enable.o: pcomplete.h +builtins/eval.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/exec.o: bashtypes.h +builtins/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h +builtins/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h +builtins/exit.o: bashtypes.h +builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h +builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h +builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h +builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h +builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h +builtins/fc.o: ${BASHINCDIR}/chartypes.h +builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h +builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/hash.o: bashtypes.h +builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h +builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: $(GLOB_LIBSRC)/glob.h +builtins/history.o: bashtypes.h +builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h +builtins/history.o: bashhist.h variables.h arrayfunc.h conftypes.h +builtins/inlib.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/inlib.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/jobs.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/jobs.o: quit.h $(DEFSRC)/bashgetopt.h +builtins/jobs.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/kill.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/kill.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h trap.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/let.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/let.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/printf.o: config.h ${BASHINCDIR}/memalloc.h bashjmp.h command.h error.h +builtins/printf.o: general.h xmalloc.h quit.h dispose_cmd.h make_cmd.h subst.h +builtins/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h +builtins/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/stdc.h $(DEFSRC)/bashgetopt.h +builtins/printf.o: ${BASHINCDIR}/chartypes.h +builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/pushd.o: $(DEFSRC)/common.h +builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h +builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h +builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shopt.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h +builtins/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h +builtins/shopt.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h unwind_prot.h variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/maxpath.h +builtins/shopt.o: $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h +builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h +builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/test.o: test.h +builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/trap.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/trap.o: quit.h $(DEFSRC)/common.h +builtins/trap.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h +builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/umask.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/umask.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/umask.o: ${BASHINCDIR}/chartypes.h +builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/wait.o: ${BASHINCDIR}/chartypes.h + +builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h +builtins/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/complete.o: builtins.h +builtins/complete.o: pcomplete.h +builtins/complete.o: ${DEFSRC}/common.h ${DEFSRC}/bashgetopt.h + +# libintl dependencies +builtins/bind.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/break.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/caller.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/cd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/common.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/complete.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/declare.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/enable.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/evalfile.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/exec.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/exit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/fc.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/fg_bg.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/getopt.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/hash.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/help.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/history.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/inlib.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/jobs.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/kill.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/let.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/mkbuiltins.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/printf.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/pushd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/read.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/return.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/set.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/setattr.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/shift.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/shopt.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/source.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/suspend.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/type.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/ulimit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/umask.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +# builtin library dependencies +builtins/bind.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h +builtins/bind.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h + +builtins/bind.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h +builtins/fc.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h +builtins/history.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h + +builtins/common.o: $(TILDE_LIBSRC)/tilde.h +builtins/cd.o: $(TILDE_LIBSRC)/tilde.h + +builtins/alias.o: $(DEFSRC)/alias.def +builtins/bind.o: $(DEFSRC)/bind.def +builtins/break.o: $(DEFSRC)/break.def +builtins/builtin.o: $(DEFSRC)/builtin.def +builtins/caller.o: $(DEFSRC)/caller.def +builtins/cd.o: $(DEFSRC)/cd.def +builtins/colon.o: $(DEFSRC)/colon.def +builtins/command.o: $(DEFSRC)/command.def +builtins/complete.o: $(DEFSRC)/complete.def +builtins/declare.o: $(DEFSRC)/declare.def +builtins/echo.o: $(DEFSRC)/echo.def +builtins/enable.o: $(DEFSRC)/enable.def +builtins/eval.o: $(DEFSRC)/eval.def +builtins/exec.o: $(DEFSRC)/exec.def +builtins/exit.o: $(DEFSRC)/exit.def +builtins/fc.o: $(DEFSRC)/fc.def +builtins/fg_bg.o: $(DEFSRC)/fg_bg.def +builtins/getopts.o: $(DEFSRC)/getopts.def +builtins/hash.o: $(DEFSRC)/hash.def +builtins/help.o: $(DEFSRC)/help.def +builtins/history.o: $(DEFSRC)/history.def +builtins/inlib.o: $(DEFSRC)/inlib.def +builtins/jobs.o: $(DEFSRC)/jobs.def +builtins/kill.o: $(DEFSRC)/kill.def +builtins/let.o: $(DEFSRC)/let.def +builtins/pushd.o: $(DEFSRC)/pushd.def +builtins/read.o: $(DEFSRC)/read.def +builtins/reserved.o: $(DEFSRC)/reserved.def +builtins/return.o: $(DEFSRC)/return.def +builtins/set.o: $(DEFSRC)/set.def +builtins/setattr.o: $(DEFSRC)/setattr.def +builtins/shift.o: $(DEFSRC)/shift.def +builtins/shopt.o: $(DEFSRC)/shopt.def +builtins/source.o: $(DEFSRC)/source.def +builtins/suspend.o: $(DEFSRC)/suspend.def +builtins/test.o: $(DEFSRC)/test.def +builtins/times.o: $(DEFSRC)/times.def +builtins/trap.o: $(DEFSRC)/trap.def +builtins/type.o: $(DEFSRC)/type.def +builtins/ulimit.o: $(DEFSRC)/ulimit.def +builtins/umask.o: $(DEFSRC)/umask.def +builtins/wait.o: $(DEFSRC)/wait.def diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 index ff4eb31f1..fa2b495fa 100644 --- a/autom4te.cache/output.0 +++ b/autom4te.cache/output.0 @@ -1,7 +1,7 @@ @%:@! /bin/sh -@%:@ From configure.in for Bash 3.0, version 3.168, from autoconf version AC_ACVERSION. +@%:@ From configure.in for Bash 3.0, version 3.169, from autoconf version AC_ACVERSION. @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.57 for bash 3.0-release. +@%:@ Generated by GNU Autoconf 2.57 for bash 3.1-devel. @%:@ @%:@ Report bugs to . @%:@ @@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='3.0-release' -PACKAGE_STRING='bash 3.0-release' +PACKAGE_VERSION='3.1-devel' +PACKAGE_STRING='bash 3.1-devel' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -784,7 +784,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 3.0-release to adapt to many kinds of systems. +\`configure' configures bash 3.1-devel to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -845,7 +845,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 3.0-release:";; + short | recursive ) echo "Configuration of bash 3.1-devel:";; esac cat <<\_ACEOF @@ -1000,7 +1000,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -bash configure 3.0-release +bash configure 3.1-devel generated by GNU Autoconf 2.57 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1015,7 +1015,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 3.0-release, which was +It was created by bash $as_me 3.1-devel, which was generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ @@ -1383,8 +1383,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ac_config_headers="$ac_config_headers config.h" -BASHVERS=3.0 -RELSTATUS=release +BASHVERS=3.1 +RELSTATUS=devel case "$RELSTATUS" in alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -11534,7 +11534,8 @@ done -for ac_func in getcwd strcasecmp strerror strftime strpbrk memset strstr + +for ac_func in getcwd strcasecmp strerror strftime strpbrk memset strstr strnlen do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -24445,7 +24446,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by bash $as_me 3.0-release, which was +This file was extended by bash $as_me 3.1-devel, which was generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24508,7 +24509,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -bash config.status 3.0-release +bash config.status 3.1-devel configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/autom4te.cache/requests b/autom4te.cache/requests index 90908ed31..ada195763 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,96 +15,96 @@ 'configure.in' ], { - 'AH_OUTPUT' => 1, + 'AC_PROG_GCC_TRADITIONAL' => 1, + 'AC_PROG_AWK' => 1, + 'AC_INIT' => 1, + 'AC_FUNC_REALLOC' => 1, 'AC_FUNC_UTIME_NULL' => 1, + 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRTOD' => 1, + 'm4_include' => 1, + 'AC_FUNC_STRFTIME' => 1, + 'AM_GNU_GETTEXT' => 1, 'AC_TYPE_OFF_T' => 1, - 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_PROG_AWK' => 1, + 'AC_C_CONST' => 1, + 'AH_OUTPUT' => 1, + 'AC_FUNC_STAT' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_CHECK_LIB' => 1, - 'AC_CHECK_TYPES' => 1, - 'AC_FUNC_STRFTIME' => 1, + 'AC_STRUCT_TM' => 1, 'AC_FUNC_SETPGRP' => 1, - 'AC_SUBST' => 1, - 'AC_FUNC_STRTOD' => 1, + 'AC_PATH_X' => 1, 'AM_PROG_CC_C_O' => 1, - 'AC_PROG_INSTALL' => 1, - 'AC_PROG_MAKE_SET' => 1, + 'AC_FUNC_CHOWN' => 1, + 'AC_FUNC_ALLOCA' => 1, + 'AC_PROG_LN_S' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'm4_pattern_allow' => 1, 'AM_INIT_AUTOMAKE' => 1, - 'AC_CONFIG_FILES' => 1, - 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_SELECT_ARGTYPES' => 1, + 'AC_FUNC_MBRTOWC' => 1, + 'AC_LIBSOURCE' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_HEADER_DIRENT' => 1, + 'AC_FUNC_STRERROR_R' => 1, + 'AC_C_INLINE' => 1, 'AC_TYPE_PID_T' => 1, - 'AC_FUNC_OBSTACK' => 1, - 'AC_FUNC_GETPGRP' => 1, - 'AC_PROG_GCC_TRADITIONAL' => 1, - 'AC_HEADER_STDC' => 1, - 'AC_FUNC_ALLOCA' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_MAINTAINER_MODE' => 1, + 'AC_HEADER_MAJOR' => 1, 'AC_CHECK_FUNCS' => 1, + 'AC_PROG_MAKE_SET' => 1, + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, + 'AC_TYPE_UID_T' => 1, + 'm4_pattern_forbid' => 1, + 'AC_FUNC_GETLOADAVG' => 1, + 'AC_HEADER_STDC' => 1, 'AC_TYPE_SIGNAL' => 1, - 'AC_FUNC_STRNLEN' => 1, - 'AC_HEADER_DIRENT' => 1, - 'AC_STRUCT_TM' => 1, - 'AC_CHECK_MEMBERS' => 1, - 'AC_FUNC_STRCOLL' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_FUNC_MEMCMP' => 1, - 'AC_PATH_X' => 1, 'include' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AC_FUNC_VPRINTF' => 1, - 'AC_FUNC_MBRTOWC' => 1, - 'AC_FUNC_SETVBUF_REVERSED' => 1, - 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, - 'AC_FUNC_STAT' => 1, + 'AC_PROG_RANLIB' => 1, + 'AC_HEADER_STAT' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, + 'AC_FUNC_MALLOC' => 1, + 'AC_FUNC_FORK' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_SUBST' => 1, + 'AC_FUNC_MEMCMP' => 1, 'AC_FUNC_WAIT3' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AC_HEADER_TIME' => 1, + 'AC_FUNC_SETVBUF_REVERSED' => 1, + 'AC_PROG_CPP' => 1, + 'AC_FUNC_GETGROUPS' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_PROG_YACC' => 1, - 'AC_FUNC_REALLOC' => 1, - 'AC_CHECK_HEADERS' => 1, - 'AC_PROG_CXX' => 1, - 'AC_REPLACE_FNMATCH' => 1, - 'm4_pattern_allow' => 1, + 'AC_STRUCT_ST_BLOCKS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_FUNC_FSEEKO' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_PROG_INSTALL' => 1, + 'AC_FUNC_STRNLEN' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CHECK_TYPES' => 1, + 'AC_CHECK_MEMBERS' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_CHECK_LIB' => 1, 'AC_TYPE_SIZE_T' => 1, + 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_MKTIME' => 1, + 'AC_FUNC_GETMNTENT' => 1, 'AC_PROG_LEX' => 1, + 'AC_HEADER_SYS_WAIT' => 1, + 'AC_FUNC_MMAP' => 1, + 'AC_FUNC_GETPGRP' => 1, + 'AC_C_VOLATILE' => 1, + 'AC_TYPE_MODE_T' => 1, + 'AC_CHECK_HEADERS' => 1, + 'AC_FUNC_LSTAT' => 1, 'AC_CONFIG_SUBDIRS' => 1, + 'AC_FUNC_STRCOLL' => 1, + 'AC_REPLACE_FNMATCH' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_HEADER_TIME' => 1, + 'AC_PROG_CXX' => 1, 'AC_PROG_CC' => 1, - 'AC_INIT' => 1, - 'AC_CONFIG_HEADERS' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_PROG_CPP' => 1, - 'AC_TYPE_UID_T' => 1, - 'AC_HEADER_MAJOR' => 1, - 'm4_pattern_forbid' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_C_CONST' => 1, - 'AC_FUNC_CHOWN' => 1, - 'AC_STRUCT_ST_BLOCKS' => 1, - 'AC_FUNC_STRERROR_R' => 1, - 'AC_FUNC_FORK' => 1, - 'AC_FUNC_MMAP' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, - 'AC_FUNC_GETMNTENT' => 1, - 'AC_FUNC_FSEEKO' => 1, - 'AC_FUNC_MALLOC' => 1, - 'AC_FUNC_GETLOADAVG' => 1, - 'AC_PROG_LN_S' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AC_C_VOLATILE' => 1, - 'AC_PROG_RANLIB' => 1, - 'AC_C_INLINE' => 1, - 'AC_FUNC_CLOSEDIR_VOID' => 1, - 'AC_HEADER_SYS_WAIT' => 1, - 'm4_include' => 1, - 'AC_HEADER_STAT' => 1, - 'AC_FUNC_GETGROUPS' => 1, - 'AC_STRUCT_TIMEZONE' => 1 + 'AC_FUNC_OBSTACK' => 1 } ], 'Request' ) ); diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 index 735deae37..2aa1b3fab 100644 --- a/autom4te.cache/traces.0 +++ b/autom4te.cache/traces.0 @@ -1,4 +1,4 @@ -m4trace:configure.in:30: -1- AC_INIT([bash], [3.0-release], [bug-bash@gnu.org]) +m4trace:configure.in:30: -1- AC_INIT([bash], [3.1-devel], [bug-bash@gnu.org]) m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) @@ -729,7 +729,8 @@ m4trace:configure.in:649: -1- AC_LIBSOURCE([strftime.c]) m4trace:configure.in:649: -1- AC_LIBSOURCE([strpbrk.c]) m4trace:configure.in:649: -1- AC_LIBSOURCE([memset.c]) m4trace:configure.in:649: -1- AC_LIBSOURCE([strstr.c]) -m4trace:configure.in:649: -1- AC_CHECK_FUNCS([getcwd strcasecmp strerror strftime strpbrk memset strstr], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:649: -1- AC_LIBSOURCE([strnlen.c]) +m4trace:configure.in:649: -1- AC_CHECK_FUNCS([getcwd strcasecmp strerror strftime strpbrk memset strstr strnlen], [], [_AC_LIBOBJ($ac_func)]) m4trace:configure.in:649: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ #undef HAVE_GETCWD]) m4trace:configure.in:649: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ @@ -744,6 +745,8 @@ m4trace:configure.in:649: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you ha #undef HAVE_MEMSET]) m4trace:configure.in:649: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ #undef HAVE_STRSTR]) +m4trace:configure.in:649: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */ +#undef HAVE_STRNLEN]) m4trace:configure.in:649: -1- AC_SUBST([LIB@&t@OBJS]) m4trace:configure.in:650: -1- AC_LIBSOURCE([strtod.c]) m4trace:configure.in:650: -1- AC_LIBSOURCE([strtol.c]) diff --git a/builtins/cd.def b/builtins/cd.def index 2be86d11f..39afbebea 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -355,7 +355,7 @@ pwd_builtin (list) fflush (stdout); if (ferror (stdout)) { - builtin_error (_("write error: %s"), strerror (errno)); + sh_wrerror (); clearerr (stdout); return (EXECUTION_FAILURE); } diff --git a/builtins/common.c b/builtins/common.c index 3d3dd5947..8c2dde4a2 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -270,6 +270,12 @@ sh_notbuiltin (s) builtin_error (_("%s: not a shell builtin"), s); } +void +sh_wrerror () +{ + builtin_error (_("write error: %s"), strerror (errno)); +} + /* **************************************************************** */ /* */ /* Shell positional parameter manipulation */ diff --git a/builtins/common.h b/builtins/common.h index 869d3af2b..df3032529 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -77,6 +77,7 @@ extern void sh_readonly __P((const char *)); extern void sh_nojobs __P((char *)); extern void sh_restricted __P((char *)); extern void sh_notbuiltin __P((char *)); +extern void sh_wrerror __P((void)); extern char **make_builtin_argv __P((WORD_LIST *, int *)); extern void remember_args __P((WORD_LIST *, int)); diff --git a/builtins/echo.def b/builtins/echo.def index 9d141e5c5..a13c6c4a1 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -175,6 +175,7 @@ just_echo: fflush (stdout); if (ferror (stdout)) { + sh_wrerror (); clearerr (stdout); return (EXECUTION_FAILURE); } diff --git a/builtins/printf.def b/builtins/printf.def index d9719b82a..5342a7312 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -105,7 +105,7 @@ extern int errno; #define LENMODS "hjlLtz" static void printf_erange __P((char *)); -static void printstr __P((char *, char *, int, int, 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 *mklong __P((char *, char *, size_t)); @@ -297,7 +297,7 @@ printf_builtin (list) case 'b': /* expand escapes in argument */ { char *p, *xp; - int rlen; + int rlen, r; p = getstr (); ch = rlen = 0; @@ -307,11 +307,17 @@ printf_builtin (list) { /* 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,6 +325,7 @@ printf_builtin (list) case 'q': /* print with shell quoting */ { char *p, *xp; + int r; p = getstr (); if (ansic_shouldquote (p)) @@ -328,9 +335,17 @@ printf_builtin (list) 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; } @@ -412,6 +427,13 @@ printf_builtin (list) modstart[0] = thisch; modstart[1] = nextch; } + + if (ferror (stdout)) + { + sh_wrerror (); + clearerr (stdout); + PRETURN (EXECUTION_FAILURE); + } } while (garglist && garglist != list->next); @@ -429,7 +451,7 @@ printf_erange (s) } /* 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 */ @@ -531,6 +553,8 @@ printstr (fmt, string, len, fieldwidth, precision) /* output any necessary trailing padding */ for (; padlen < 0; padlen++) putchar (' '); + + return (ferror (stdout) ? -1 : 0); } /* Convert STRING by expanding the escape sequences specified by the diff --git a/config.h.in b/config.h.in index 753b18a8b..8e3e4569f 100644 --- a/config.h.in +++ b/config.h.in @@ -664,6 +664,9 @@ /* 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 diff --git a/config.h.in~ b/config.h.in~ new file mode 100644 index 000000000..753b18a8b --- /dev/null +++ b/config.h.in~ @@ -0,0 +1,976 @@ +/* config.h -- Configuration file for bash. */ + +/* Copyright (C) 1987-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +/* Configuration feature settings controllable by autoconf. */ + +/* Define JOB_CONTROL if your operating system supports + BSD-like job control. */ +#undef JOB_CONTROL + +/* Define ALIAS if you want the alias features. */ +#undef ALIAS + +/* Define PUSHD_AND_POPD if you want those commands to be compiled in. + (Also the `dirs' commands.) */ +#undef PUSHD_AND_POPD + +/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh: + foo{a,b} -> fooa foob. Even if this is compiled in (the default) you + can turn it off at shell startup with `-nobraceexpansion', or during + shell execution with `set +o braceexpand'. */ +#undef BRACE_EXPANSION + +/* Define READLINE to get the nifty/glitzy editing features. + This is on by default. You can turn it off interactively + with the -nolineediting flag. */ +#undef READLINE + +/* Define BANG_HISTORY if you want to have Csh style "!" history expansion. + This is unrelated to READLINE. */ +#undef BANG_HISTORY + +/* Define HISTORY if you want to have access to previously typed commands. + + If both HISTORY and READLINE are defined, you can get at the commands + with line editing commands, and you can directly manipulate the history + from the command line. + + If only HISTORY is defined, the `fc' and `history' builtins are + available. */ +#undef HISTORY + +/* Define this if you want completion that puts all alternatives into + a brace expansion shell expression. */ +#if defined (BRACE_EXPANSION) && defined (READLINE) +# define BRACE_COMPLETION +#endif /* BRACE_EXPANSION */ + +/* Define DEFAULT_ECHO_TO_XPG if you want the echo builtin to interpret + the backslash-escape characters by default, like the XPG Single Unix + Specification V2 for echo. + This requires that V9_ECHO be defined. */ +#undef DEFAULT_ECHO_TO_XPG + +/* Define HELP_BUILTIN if you want the `help' shell builtin and the long + documentation strings compiled into the shell. */ +#undef HELP_BUILTIN + +/* Define RESTRICTED_SHELL if you want the generated shell to have the + ability to be a restricted one. The shell thus generated can become + restricted by being run with the name "rbash", or by setting the -r + flag. */ +#undef RESTRICTED_SHELL + +/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the + shell builtin "foo", even if it has been disabled with "enable -n foo". */ +#undef DISABLED_BUILTINS + +/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process + substitution features "<(file)". */ +/* Right now, you cannot do this on machines without fully operational + FIFO support. This currently include NeXT and Alliant. */ +#undef PROCESS_SUBSTITUTION + +/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special + characters in PS1 and PS2 expanded. Variable expansion will still be + performed. */ +#undef PROMPT_STRING_DECODE + +/* Define SELECT_COMMAND if you want the Korn-shell style `select' command: + select word in word_list; do command_list; done */ +#undef SELECT_COMMAND + +/* Define COMMAND_TIMING of you want the ksh-style `time' reserved word and + the ability to time pipelines, functions, and builtins. */ +#undef COMMAND_TIMING + +/* Define ARRAY_VARS if you want ksh-style one-dimensional array variables. */ +#undef ARRAY_VARS + +/* Define DPAREN_ARITHMETIC if you want the ksh-style ((...)) arithmetic + evaluation command. */ +#undef DPAREN_ARITHMETIC + +/* Define EXTENDED_GLOB if you want the ksh-style [*+@?!](patlist) extended + pattern matching. */ +#undef EXTENDED_GLOB + +/* Define COND_COMMAND if you want the ksh-style [[...]] conditional + command. */ +#undef COND_COMMAND + +/* Define COND_REGEXP if you want extended regular expression matching and the + =~ binary operator in the [[...]] conditional command. */ +#define COND_REGEXP + +/* Define ARITH_FOR_COMMAND if you want the ksh93-style + for (( init; test; step )) do list; done + arithmetic for command. */ +#undef ARITH_FOR_COMMAND + +/* Define NETWORK_REDIRECTIONS if you want /dev/(tcp|udp)/host/port to open + socket connections when used in redirections */ +#undef NETWORK_REDIRECTIONS + +/* Define PROGRAMMABLE_COMPLETION for the programmable completion features + and the complete builtin. */ +#undef PROGRAMMABLE_COMPLETION + +/* Define NO_MULTIBYTE_SUPPORT to not compile in support for multibyte + characters, even if the OS supports them. */ +#undef NO_MULTIBYTE_SUPPORT + +/* Define DEBUGGER if you want to compile in some features used only by the + bash debugger. */ +#undef DEBUGGER + +/* Define MEMSCRAMBLE if you want the bash malloc and free to scramble + memory contents on malloc() and free(). */ +#undef MEMSCRAMBLE + +/* Define AFS if you are using Transarc's AFS. */ +#undef AFS + +#undef ENABLE_NLS + +/* End of configuration settings controllable by autoconf. */ +/* Other settable options appear in config-top.h. */ + +#include "config-top.h" + +/* Beginning of autoconf additions. */ + +/* Characteristics of the C compiler */ +#undef const + +#undef inline + +/* Define if cpp supports the ANSI-C stringizing `#' operator */ +#undef HAVE_STRINGIZE + +/* Define if the compiler supports `long double' variables. */ +#undef HAVE_LONG_DOUBLE + +#undef PROTOTYPES + +#undef __CHAR_UNSIGNED__ + +/* Define if the compiler supports `long long' variables. */ +#undef HAVE_LONG_LONG + +#undef HAVE_UNSIGNED_LONG_LONG + +/* The number of bytes in a int. */ +#undef SIZEOF_INT + +/* The number of bytes in a long. */ +#undef SIZEOF_LONG + +/* The number of bytes in a pointer to char. */ +#undef SIZEOF_CHAR_P + +/* The number of bytes in a double (hopefully 8). */ +#undef SIZEOF_DOUBLE + +/* The number of bytes in a `long long', if we have one. */ +#undef SIZEOF_LONG_LONG + +/* System paths */ + +#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail" + +/* Characteristics of the system's header files and libraries that affect + the compilation environment. */ + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +#undef _POSIX_1_SOURCE + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to use GNU libc extensions */ +#undef _GNU_SOURCE + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Memory management functions. */ + +/* Define if using the bash version of malloc in lib/malloc/malloc.c */ +#undef USING_BASH_MALLOC + +#undef DISABLE_MALLOC_WRAPPERS + +/* Define if using alloca.c. */ +#undef C_ALLOCA + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END + +/* Define if you have alloca, as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H + + +/* SYSTEM TYPES */ + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define to `int' if doesn't define. */ +#undef mode_t + +/* Define to `int' if doesn't define. */ +#undef sigset_t + +/* Define to `int' if doesn't define. */ +#undef pid_t + +/* Define to `short' if doesn't define. */ +#undef bits16_t + +/* Define to `unsigned short' if doesn't define. */ +#undef u_bits16_t + +/* Define to `int' if doesn't define. */ +#undef bits32_t + +/* Define to `unsigned int' if doesn't define. */ +#undef u_bits32_t + +/* Define to `double' if doesn't define. */ +#undef bits64_t + +/* Define to `unsigned int' if doesn't define. */ +#undef u_int + +/* Define to `unsigned long' if doesn't define. */ +#undef u_long + +/* Define to `int' if doesn't define. */ +#undef ptrdiff_t + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* Define to `int' if doesn't define. */ +#undef ssize_t + +/* Define to `long' if doesn't define. */ +#undef intmax_t + +/* Define to `unsigned long' if doesn't define. */ +#undef uintmax_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define to `long' if doesn't define. */ +#undef clock_t + +/* Define to `long' if doesn't define. */ +#undef time_t + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to `unsigned int' if doesn't define. */ +#undef socklen_t + +/* Define if you have quad_t in . */ +#undef HAVE_QUAD_T + +#undef RLIMTYPE + +/* Define to the type of elements in the array set by `getgroups'. + Usually this is either `int' or `gid_t'. */ +#undef GETGROUPS_T + +/* Characteristics of the machine archictecture. */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#undef STACK_DIRECTION + +/* Define if the machine architecture is big-endian. */ +#undef WORDS_BIGENDIAN + +/* Check for the presence of certain non-function symbols in the system + libraries. */ + +/* Define if `sys_siglist' is declared by or . */ +#undef HAVE_DECL_SYS_SIGLIST +#undef SYS_SIGLIST_DECLARED + +/* Define if `_sys_siglist' is declared by or . */ +#undef UNDER_SYS_SIGLIST_DECLARED + +#undef HAVE_SYS_SIGLIST + +#undef HAVE_UNDER_SYS_SIGLIST + +#undef HAVE_SYS_ERRLIST + +#undef HAVE_TZNAME + + +/* Characteristics of some of the system structures. */ + +#undef HAVE_STRUCT_DIRENT_D_INO + +#undef HAVE_STRUCT_DIRENT_D_FILENO + +#undef HAVE_STRUCT_DIRENT_D_NAMLEN + +#undef TIOCSTAT_IN_SYS_IOCTL + +#undef FIONREAD_IN_SYS_IOCTL + +#undef GWINSZ_IN_SYS_IOCTL + +#undef STRUCT_WINSIZE_IN_SYS_IOCTL + +#undef TM_IN_SYS_TIME + +#undef STRUCT_WINSIZE_IN_TERMIOS + +#undef SPEED_T_IN_SYS_TYPES + +#undef TERMIOS_LDISC + +#undef TERMIO_LDISC + +#undef HAVE_STRUCT_STAT_ST_BLOCKS + +#undef HAVE_STRUCT_TM_TM_ZONE +#undef HAVE_TM_ZONE + +#undef HAVE_TIMEVAL + +#undef HAVE_STRUCT_TIMEZONE + +/* Characteristics of definitions in the system header files. */ + +#undef HAVE_GETPW_DECLS + +#undef HAVE_RESOURCE + +#undef HAVE_LIBC_FNM_EXTMATCH + + +#undef HAVE_DECL_CONFSTR + +#undef HAVE_DECL_PRINTF + +#undef HAVE_DECL_SBRK + +#undef HAVE_DECL_STRCPY + +#undef HAVE_DECL_STRSIGNAL + +#undef HAVE_DECL_STRTOLD + +#undef STRTOLD_BROKEN + +#undef HAVE_MBSTATE_T + +/* These are checked with BASH_CHECK_DECL */ + +#undef HAVE_DECL_STRTOIMAX +#undef HAVE_DECL_STRTOL +#undef HAVE_DECL_STRTOLL +#undef HAVE_DECL_STRTOUL +#undef HAVE_DECL_STRTOULL +#undef HAVE_DECL_STRTOUMAX + +/* Characteristics of system calls and C library functions. */ + +/* Define if the `getpgrp' function takes no argument. */ +#undef GETPGRP_VOID + +#undef NAMED_PIPES_MISSING + +#undef OPENDIR_NOT_ROBUST + +#undef PGRP_PIPE + +/* Define if the setvbuf function takes the buffering type as its second + argument and the buffer pointer as the third, as on System V + before release 3. */ +#undef SETVBUF_REVERSED + +#undef STAT_MACROS_BROKEN + +#undef ULIMIT_MAXFDS + +#undef CAN_REDEFINE_GETENV + +#undef HAVE_STD_PUTENV + +#undef HAVE_STD_UNSETENV + +#undef HAVE_PRINTF_A_FORMAT + +#undef CTYPE_NON_ASCII + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Characteristics of properties exported by the kernel. */ + +/* Define if the kernel can exec files beginning with #! */ +#undef HAVE_HASH_BANG_EXEC + +/* Define if you have the /dev/fd devices to map open files into the file system. */ +#undef HAVE_DEV_FD + +/* Defined to /dev/fd or /proc/self/fd (linux). */ +#undef DEV_FD_PREFIX + +/* Define if you have the /dev/stdin device. */ +#undef HAVE_DEV_STDIN + + +/* Type and behavior of signal handling functions. */ + +/* Define as the return type of signal handlers (int or void). */ +#undef RETSIGTYPE + +/* Define if return type of signal handlers is void */ +#undef VOID_SIGHANDLER + +#undef MUST_REINSTALL_SIGHANDLERS + +#undef HAVE_BSD_SIGNALS + +#undef HAVE_POSIX_SIGNALS + +#undef HAVE_USG_SIGHOLD + +#undef UNUSABLE_RT_SIGNALS + + +/* Presence of system and C library functions. */ + +/* Define if you have the asprintf function. */ +#undef HAVE_ASPRINTF + +/* Define if you have the bcopy function. */ +#undef HAVE_BCOPY + +/* Define if you have the bzero function. */ +#undef HAVE_BZERO + +/* Define if you have the confstr function. */ +#undef HAVE_CONFSTR + +/* Define if you have the dlclose function. */ +#undef HAVE_DLCLOSE + +/* Define if you have the dlopen function. */ +#undef HAVE_DLOPEN + +/* Define if you have the dlsym function. */ +#undef HAVE_DLSYM + +/* Define if you don't have vprintf but do have _doprnt. */ +#undef HAVE_DOPRNT + +/* Define if you have the dup2 function. */ +#undef HAVE_DUP2 + +/* Define if you have the getaddrinfo function. */ +#undef HAVE_GETADDRINFO + +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + +/* Define if you have the getdtablesize function. */ +#undef HAVE_GETDTABLESIZE + +/* Define if you have the getgroups function. */ +#undef HAVE_GETGROUPS + +/* Define if you have the gethostbyname function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define if you have the gethostname function. */ +#undef HAVE_GETHOSTNAME + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the getpeername function. */ +#undef HAVE_GETPEERNAME + +/* Define if you have the getrlimit function. */ +#undef HAVE_GETRLIMIT + +/* Define if you have the getrusage function. */ +#undef HAVE_GETRUSAGE + +/* Define if you have the getservbyname function. */ +#undef HAVE_GETSERVBYNAME + +/* Define if you have the getservent function. */ +#undef HAVE_GETSERVENT + +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the getwd function. */ +#undef HAVE_GETWD + +/* Define if you have the inet_aton function. */ +#undef HAVE_INET_ATON + +/* Define if you have the isascii function. */ +#undef HAVE_ISASCII + +/* Define if you have the isblank function. */ +#undef HAVE_ISBLANK + +/* Define if you have the isgraph function. */ +#undef HAVE_ISGRAPH + +/* Define if you have the isint function in libc */ +#undef HAVE_ISINF_IN_LIBC + +/* Define if you have the isprint function. */ +#undef HAVE_ISPRINT + +/* Define if you have the isspace function. */ +#undef HAVE_ISSPACE + +/* Define if you have the isxdigit function. */ +#undef HAVE_ISXDIGIT + +/* Define if you have the killpg function. */ +#undef HAVE_KILLPG + +/* Define if you have the lstat function. */ +#undef HAVE_LSTAT + +/* Define if you have the mbrlen function. */ +#undef HAVE_MBRLEN + +/* Define if you have the mbrtowc function. */ +#undef HAVE_MBRTOWC + +/* Define if you have the mbsrtowcs function. */ +#undef HAVE_MBSRTOWCS + +/* Define if you have the memmove function. */ +#undef HAVE_MEMMOVE + +/* Define if you have the memset function. */ +#undef HAVE_MEMSET + +/* Define if you have the mkfifo function. */ +#undef HAVE_MKFIFO + +/* Define if you have the pathconf function. */ +#undef HAVE_PATHCONF + +/* Define if you have the putenv function. */ +#undef HAVE_PUTENV + +/* Define if you have the readlink function. */ +#undef HAVE_READLINK + +/* Define if you have the regcomp function. */ +#undef HAVE_REGCOMP + +/* Define if you have the regexec function. */ +#undef HAVE_REGEXEC + +/* Define if you have the rename function. */ +#undef HAVE_RENAME + +/* Define if you have the sbrk function. */ +#undef HAVE_SBRK + +/* Define if you have the select function. */ +#undef HAVE_SELECT + +/* Define if you have the setdtablesize function. */ +#undef HAVE_SETDTABLESIZE + +/* Define if you have the setenv function. */ +#undef HAVE_SETENV + +/* Define if you have the setlinebuf function. */ +#undef HAVE_SETLINEBUF + +/* Define if you have the setlocale function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the setostype function. */ +#undef HAVE_SETOSTYPE + +/* Define if you have the setvbuf function. */ +#undef HAVE_SETVBUF + +/* Define if you have the siginterrupt function. */ +#undef HAVE_SIGINTERRUPT + +/* Define if you have the POSIX.1-style sigsetjmp function. */ +#undef HAVE_POSIX_SIGSETJMP + +/* Define if you have the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + +/* Define if you have the strcoll function. */ +#undef HAVE_STRCOLL + +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if you have the strftime function. */ +#undef HAVE_STRFTIME + +/* Define if you have the strpbrk function. */ +#undef HAVE_STRPBRK + +/* Define if you have the strstr function. */ +#undef HAVE_STRSTR + +/* Define if you have the strtod function. */ +#undef HAVE_STRTOD + +/* Define if you have the strtoimax function. */ +#undef HAVE_STRTOIMAX + +/* Define if you have the strtol function. */ +#undef HAVE_STRTOL + +/* Define if you have the strtoll function. */ +#undef HAVE_STRTOLL + +/* Define if you have the strtoul function. */ +#undef HAVE_STRTOUL + +/* Define if you have the strtoull function. */ +#undef HAVE_STRTOULL + +/* Define if you have the strtoumax function. */ +#undef HAVE_STRTOUMAX + +/* Define if you have the strsignal function or macro. */ +#undef HAVE_STRSIGNAL + +/* Define if you have the sysconf function. */ +#undef HAVE_SYSCONF + +/* Define if you have the tcgetattr function. */ +#undef HAVE_TCGETATTR + +/* Define if you have the tcgetpgrp function. */ +#undef HAVE_TCGETPGRP + +/* Define if you have the times function. */ +#undef HAVE_TIMES + +/* Define if you have the ttyname function. */ +#undef HAVE_TTYNAME + +/* Define if you have the tzset function. */ +#undef HAVE_TZSET + +/* Define if you have the ulimit function. */ +#undef HAVE_ULIMIT + +/* Define if you have the uname function. */ +#undef HAVE_UNAME + +/* Define if you have the unsetenv function. */ +#undef HAVE_UNSETENV + +/* Define if you have the vasprintf function. */ +#undef HAVE_VASPRINTF + +/* Define if you have the vprintf function. */ +#undef HAVE_VPRINTF + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the waitpid function. */ +#undef HAVE_WAITPID + +/* Define if you have the wait3 function. */ +#undef HAVE_WAIT3 + +/* Define if you have the wcsdup function. */ +#undef HAVE_WCSDUP + +/* Define if you have the wctomb function. */ +#undef HAVE_WCTOMB + +/* Define if you have the wcwidth function. */ +#undef HAVE_WCWIDTH + +/* Presence of certain system include files. */ + +/* Define if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define if you have the header file. */ +#undef HAVE_DIRENT_H + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the header file. */ +#undef HAVE_GRP_H + +/* Define if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have the header file. */ +#undef HAVE_LANGINFO_H + +/* Define if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the header file. */ +#undef HAVE_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define if you have the header file. */ +#undef HAVE_REGEX_H + +/* Define if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define if you have the header file. */ +#undef HAVE_STDARG_H + +/* Define if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_DIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PTE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PTEM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_STREAM_H + +/* Define if you have */ +#undef HAVE_SYS_TIME_H + +#undef TIME_WITH_SYS_TIME + +/* Define if you have */ +#undef HAVE_SYS_TIMES_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define if you have the header file. */ +#undef HAVE_TERMCAP_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIO_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIOS_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the header file. */ +#undef HAVE_VARARGS_H + +/* Define if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define if you have the header file. */ +#undef HAVE_WCTYPE_H + +/* Presence of certain system libraries. */ + +#undef HAVE_LIBDL + +#undef HAVE_LIBSUN + +#undef HAVE_LIBSOCKET + + +/* Define if on MINIX. */ +#undef _MINIX + +/* Are we running SVR5 (UnixWare 7)? */ +#undef SVR5 + +/* Are we running SVR4.2? */ +#undef SVR4_2 + +/* Are we running some version of SVR4? */ +#undef SVR4 + +/* Define if job control is unusable or unsupported. */ +#undef JOB_CONTROL_MISSING + +/* Do we need to define _KERNEL to get the RLIMIT_* defines from + ? */ +#undef RLIMIT_NEEDS_KERNEL + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Do strcoll(3) and strcmp(3) give different results in the default locale? */ +#undef STRCOLL_BROKEN + +#undef DUP2_BROKEN + +#undef GETCWD_BROKEN + +/* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_STDIO_EXT_H + +/* Define if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define if your system has a working `malloc' function. */ +/* #undef HAVE_MALLOC */ + +/* Define if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + +/* Define if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* End additions for lib/intl */ + +#include "config-bot.h" + +#endif /* _CONFIG_H_ */ diff --git a/configure b/configure index 803b4118a..5910defe6 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.in for Bash 3.0, version 3.168, from autoconf version AC_ACVERSION. +# From configure.in for Bash 3.0, version 3.169, from autoconf version AC_ACVERSION. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.57 for bash 3.0-release. +# Generated by GNU Autoconf 2.57 for bash 3.1-devel. # # Report bugs to . # @@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='3.0-release' -PACKAGE_STRING='bash 3.0-release' +PACKAGE_VERSION='3.1-devel' +PACKAGE_STRING='bash 3.1-devel' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -784,7 +784,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 3.0-release to adapt to many kinds of systems. +\`configure' configures bash 3.1-devel to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -845,7 +845,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 3.0-release:";; + short | recursive ) echo "Configuration of bash 3.1-devel:";; esac cat <<\_ACEOF @@ -1000,7 +1000,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -bash configure 3.0-release +bash configure 3.1-devel generated by GNU Autoconf 2.57 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1015,7 +1015,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 3.0-release, which was +It was created by bash $as_me 3.1-devel, which was generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ @@ -1383,8 +1383,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ac_config_headers="$ac_config_headers config.h" -BASHVERS=3.0 -RELSTATUS=release +BASHVERS=3.1 +RELSTATUS=devel case "$RELSTATUS" in alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -11534,7 +11534,8 @@ done -for ac_func in getcwd strcasecmp strerror strftime strpbrk memset strstr + +for ac_func in getcwd strcasecmp strerror strftime strpbrk memset strstr strnlen do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -24445,7 +24446,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by bash $as_me 3.0-release, which was +This file was extended by bash $as_me 3.1-devel, which was generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24508,7 +24509,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -bash config.status 3.0-release +bash config.status 3.1-devel configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.in b/configure.in index 55c8a5c75..d1fc8048a 100644 --- a/configure.in +++ b/configure.in @@ -22,10 +22,10 @@ dnl Process this file with autoconf to produce a configure script. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. -AC_REVISION([for Bash 3.0, version 3.168, from autoconf version] AC_ACVERSION)dnl +AC_REVISION([for Bash 3.0, version 3.169, from autoconf version] AC_ACVERSION)dnl -define(bashvers, 3.0) -define(relstatus, release) +define(bashvers, 3.1) +define(relstatus, devel) AC_INIT(bash, bashvers-relstatus, bug-bash@gnu.org) @@ -646,7 +646,7 @@ AC_CHECK_FUNCS(bcopy bzero confstr sysconf pathconf setenv putenv unsetenv \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ vsnprintf snprintf vasprintf asprintf fnmatch regcomp regexec) AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) -AC_REPLACE_FUNCS(getcwd strcasecmp strerror strftime strpbrk memset strstr) +AC_REPLACE_FUNCS(getcwd strcasecmp strerror strftime strpbrk memset strstr strnlen) AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) AC_CHECK_DECLS([confstr]) diff --git a/configure.in~ b/configure.in~ index e9ea6378a..55c8a5c75 100644 --- a/configure.in~ +++ b/configure.in~ @@ -22,7 +22,7 @@ dnl Process this file with autoconf to produce a configure script. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. -AC_REVISION([for Bash 3.0, version 3.166, from autoconf version] AC_ACVERSION)dnl +AC_REVISION([for Bash 3.0, version 3.168, from autoconf version] AC_ACVERSION)dnl define(bashvers, 3.0) define(relstatus, release) @@ -574,11 +574,19 @@ 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 regex.h) -AC_CHECK_HEADERS(sys/ptem.h sys/pte.h sys/stream.h sys/select.h sys/file.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 diff --git a/doc/FAQ b/doc/FAQ index f2f4e37bf..ede1272bf 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,4 @@ -This is the Bash FAQ, version 3.28, for Bash version 3.0. +This is the Bash FAQ, version 3.29, for Bash version 3.0. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -181,16 +181,15 @@ earlier Minix versions yet. Bash has been ported to versions of Windows implementing the Win32 programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions as part of their CYGWIN -project. For more information about the project, look at the URLs - -http://www.cygwin.com/ -http://sourceware.cygnus.com/cygwin +The port was done by Cygnus Solutions (now part of Red Hat) as part +of their CYGWIN project. For more information about the project, see +http://www.cygwin.com/. Cygnus originally ported bash-1.14.7, and that port was part of their early GNU-Win32 (the original name) releases. Cygnus has also done a -port of bash-2.05 to the CYGWIN environment, and it is available as -part of their current release. +port of bash-2.05b to the CYGWIN environment, and it is available as +part of their current release. Bash-3.0 is currently being tested and +should be available soon. Bash-2.05b and later versions should require no local Cygnus changes to build and run under CYGWIN. diff --git a/doc/FAQ~ b/doc/FAQ~ new file mode 100644 index 000000000..f2f4e37bf --- /dev/null +++ b/doc/FAQ~ @@ -0,0 +1,1785 @@ +This is the Bash FAQ, version 3.28, for Bash version 3.0. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 3.0? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 3.0, first made available on 27 July, 2004. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 3.0: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of Unix. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of Unix you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05b and later versions should require no local Cygnus changes to +build and run under CYGWIN. + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark began to work with bash-2.05, but I don't know the current status. + +Bash-3.0 compiles and runs with no modifications under Microsoft's Services +for Unix (SFU), once known as Interix. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2004 Edition) as part of the Single +UNIX Specification Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 3.0? + +Bash-3.0 is the third major release of bash. The features introduced +in the intermediate releases following bash-2.05 have been completed. +Support for the bash debugger (a separate project) has been integrated. + +Bash-3.0 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-3.0 +distribution): + +o Features to support the bash debugger have been implemented, and there + is a new `extdebug' option to turn the non-default options on + +o HISTCONTROL is now a colon-separated list of options and has been + extended with a new `erasedups' option that will result in only one + copy of a command being kept in the history list + +o Brace expansion has been extended with a new {x..y} form, producing + sequences of digits or characters + +o Timestamps are now kept with history entries, with an option to save + and restore them from the history file; there is a new HISTTIMEFORMAT + variable describing how to display the timestamps when listing history + entries + +o The `[[' command can now perform extended regular expression (egrep-like) + matching, with matched subexpressions placed in the BASH_REMATCH array + variable + +o A new `pipefail' option causes a pipeline to return a failure status if + any command in it fails + +o The `jobs', `kill', and `wait' builtins now accept job control notation + in their arguments even if job control is not enabled + +o The `gettext' package and libintl have been integrated, and the shell + messages may be translated into other languages + +A short feature history dating from Bash-2.0: + +Bash-2.05b introduced the following new features: + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + debugger support, including `caller' builtin and new variables + RETURN trap + + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + debugger support, including the `caller' builtin + RETURN trap + Timestamps in history entries + {x..y} brace expansion + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-3.0: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-3.0: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + set -o pipefail + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest updated POSIX standard has changed this: the word list +is no longer required. Bash versions 2.05a and later accept the +new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +Rocky Bernstein's bash debugger (support is included with bash-3.0) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2005. Never make predictions. + +This document is Copyright 1995-2004 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/doc/bash.1 b/doc/bash.1 index 91277b6cf..67ca943fa 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -6186,6 +6186,11 @@ suppressing trailing spaces). Intended to be used with shell functions. .B nospace Tell readline not to append a space (the default) to words completed at the end of the line. +.TP 8 +.B plusdirs +After any matches defined by the compspec are generated, +directory name completion is attempted and any +matches are added to the results of the other actions. .RE .TP 8 \fB\-A\fP \fIaction\fP diff --git a/doc/bash.1~ b/doc/bash.1~ index 584cb8cd5..91277b6cf 100644 --- a/doc/bash.1~ +++ b/doc/bash.1~ @@ -1130,6 +1130,10 @@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "\fB$@\fP" is equivalent to "\fB$1\fP" "\fB$2\fP" ... +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning part of the original +word, and the expansion of the last parameter is joined with the last +part of the original word. When there are no positional parameters, "\fB$@\fP" and .B $@ expand to nothing (i.e., they are removed). @@ -1222,7 +1226,7 @@ The command argument to the \fB\-c\fP invocation option. .TP .B BASH_LINENO An array variable whose members are the line numbers in source files -corresponding to each member of @var{FUNCNAME}. +corresponding to each member of \fBFUNCNAME\fP. \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source file where \fB${FUNCNAME[\fP\fI$i + 1\fP\fB]}\fP was called. The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i + 1\fP\fB]}\fB. @@ -2035,7 +2039,12 @@ character of the .B IFS special variable, and ${\fIname\fP[@]} expands each element of \fIname\fP to a separate word. When there are no array members, -${\fIname\fP[@]} expands to nothing. This is analogous to the expansion +${\fIname\fP[@]} expands to nothing. +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning part of the original +word, and the expansion of the last parameter is joined with the last +part of the original word. +This is analogous to the expansion of the special parameters \fB*\fP and \fB@\fP (see .B Special Parameters above). ${#\fIname\fP[\fIsubscript\fP]} expands to the length of diff --git a/doc/version.texi b/doc/version.texi index 2a6b6d7c2..559af1e30 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -4,7 +4,7 @@ Copyright (C) 1988-2004 Free Software Foundation, Inc. @set EDITION 3.0 @set VERSION 3.0 -@set UPDATED 27 August 2004 -@set UPDATED-MONTH August 2004 +@set UPDATED 11 September 2004 +@set UPDATED-MONTH September 2004 -@set LASTCHANGE Fri Aug 27 12:15:06 EDT 2004 +@set LASTCHANGE Sat Sep 11 10:13:36 EDT 2004 diff --git a/doc/version.texi~ b/doc/version.texi~ index 5d1cfa75b..2a6b6d7c2 100644 --- a/doc/version.texi~ +++ b/doc/version.texi~ @@ -4,7 +4,7 @@ Copyright (C) 1988-2004 Free Software Foundation, Inc. @set EDITION 3.0 @set VERSION 3.0 -@set UPDATED 2 August 2004 +@set UPDATED 27 August 2004 @set UPDATED-MONTH August 2004 -@set LASTCHANGE Mon Aug 2 22:45:05 EDT 2004 +@set LASTCHANGE Fri Aug 27 12:15:06 EDT 2004 diff --git a/execute_cmd.c b/execute_cmd.c index 338ee02d8..1ef179eae 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1274,6 +1274,11 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) tcom = (command->type == cm_subshell) ? command->value.Subshell->command : 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; diff --git a/lib/readline/complete.c b/lib/readline/complete.c index d212f6184..e545bf8fa 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -621,6 +621,8 @@ fnprint (to_print) mbstate_t ps; const char *end; size_t tlen; + int width, w; + wchar_t wc; end = to_print + strlen (to_print) + 1; memset (&ps, 0, sizeof (mbstate_t)); @@ -653,21 +655,28 @@ fnprint (to_print) else { #if defined (HANDLE_MULTIBYTE) - tlen = mbrlen (s, end - s, &ps); + 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++; -#endif printed_len++; +#endif } } diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 6fa935075..eccfcd8a2 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -1693,6 +1693,12 @@ 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} diff --git a/lib/readline/doc/rluser.texi~ b/lib/readline/doc/rluser.texi~ new file mode 100644 index 000000000..6fa935075 --- /dev/null +++ b/lib/readline/doc/rluser.texi~ @@ -0,0 +1,1824 @@ +@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 +editing features. It is to be an appendix to manuals for programs which +use these features. There is a document entitled "readline.texinfo" +which contains both end-user and programmer documentation for the +GNU Readline Library. + +Copyright (C) 1988-2004 Free Software Foundation, Inc. + +Authored by Brian Fox and Chet Ramey. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@comment If you are including this manual as an appendix, then set the +@comment variable readline-appendix. + +@ifclear BashFeatures +@defcodeindex bt +@end ifclear + +@node Command Line Editing +@chapter Command Line Editing + +This chapter describes the basic features of the @sc{gnu} +command line editing interface. +@ifset BashFeatures +Command line editing is provided by the Readline library, which is +used by several different programs, including Bash. +@end ifset + +@menu +* Introduction and Notation:: Notation used in this text. +* Readline Interaction:: The minimum set of commands for editing a line. +* Readline Init File:: Customizing Readline from a user's view. +* Bindable Readline Commands:: A description of most of the Readline commands + available for binding +* Readline vi Mode:: A short description of how to make Readline + behave like the vi editor. +@ifset BashFeatures +* Programmable Completion:: How to specify the possible completions for + a specific command. +* Programmable Completion Builtins:: Builtin commands to specify how to + complete arguments for a particular command. +@end ifset +@end menu + +@node Introduction and Notation +@section Introduction to Line Editing + +The following paragraphs describe the notation used to represent +keystrokes. + +The text @kbd{C-k} is read as `Control-K' and describes the character +produced when the @key{k} key is pressed while the Control key +is depressed. + +The text @kbd{M-k} is read as `Meta-K' and describes the character +produced when the Meta key (if you have one) is depressed, and the @key{k} +key is pressed. +The Meta key is labeled @key{ALT} on many keyboards. +On keyboards with two keys labeled @key{ALT} (usually to either side of +the space bar), the @key{ALT} on the left side is generally set to +work as a Meta key. +The @key{ALT} key on the right may also be configured to work as a +Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. + +If you do not have a Meta or @key{ALT} key, or another key working as +a Meta key, the identical keystroke can be generated by typing @key{ESC} +@emph{first}, and then typing @key{k}. +Either process is known as @dfn{metafying} the @key{k} key. + +The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the +character produced by @dfn{metafying} @kbd{C-k}. + +In addition, several keys have their own names. Specifically, +@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all +stand for themselves when seen in this text, or in an init file +(@pxref{Readline Init File}). +If your keyboard lacks a @key{LFD} key, typing @key{C-j} will +produce the desired character. +The @key{RET} key may be labeled @key{Return} or @key{Enter} on +some keyboards. + +@node Readline Interaction +@section Readline Interaction +@cindex interaction, readline + +Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press @key{RET}. You do not have to be at the +end of the line to press @key{RET}; the entire line is accepted +regardless of the location of the cursor within the line. + +@menu +* Readline Bare Essentials:: The least you need to know about Readline. +* Readline Movement Commands:: Moving about the input line. +* Readline Killing Commands:: How to delete text, and how to get it back! +* Readline Arguments:: Giving numeric arguments to commands. +* Searching:: Searching through previous lines. +@end menu + +@node Readline Bare Essentials +@subsection Readline Bare Essentials +@cindex notation, readline +@cindex command editing +@cindex editing command lines + +In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your +erase character to back up and delete the mistyped character. + +Sometimes you may mistype a character, and +not notice the error until you have typed several other characters. In +that case, you can type @kbd{C-b} to move the cursor to the left, and then +correct your mistake. Afterwards, you can move the cursor to the right +with @kbd{C-f}. + +When you add text in the middle of a line, you will notice that characters +to the right of the cursor are `pushed over' to make room for the text +that you have inserted. Likewise, when you delete text behind the cursor, +characters to the right of the cursor are `pulled back' to fill in the +blank space created by the removal of the text. A list of the bare +essentials for editing the text of an input line follows. + +@table @asis +@item @kbd{C-b} +Move back one character. +@item @kbd{C-f} +Move forward one character. +@item @key{DEL} or @key{Backspace} +Delete the character to the left of the cursor. +@item @kbd{C-d} +Delete the character underneath the cursor. +@item @w{Printing characters} +Insert the character into the line at the cursor. +@item @kbd{C-_} or @kbd{C-x C-u} +Undo the last editing command. You can undo all the way back to an +empty line. +@end table + +@noindent +(Depending on your configuration, the @key{Backspace} key be set to +delete the character to the left of the cursor and the @key{DEL} key set +to delete the character underneath the cursor, like @kbd{C-d}, rather +than the character to the left of the cursor.) + +@node Readline Movement Commands +@subsection Readline Movement Commands + + +The above table describes the most basic keystrokes that you need +in order to do editing of the input line. For your convenience, many +other commands have been added in addition to @kbd{C-b}, @kbd{C-f}, +@kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly +about the line. + +@table @kbd +@item C-a +Move to the start of the line. +@item C-e +Move to the end of the line. +@item M-f +Move forward a word, where a word is composed of letters and digits. +@item M-b +Move backward a word. +@item C-l +Clear the screen, reprinting the current line at the top. +@end table + +Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves +forward a word. It is a loose convention that control keystrokes +operate on characters while meta keystrokes operate on words. + +@node Readline Killing Commands +@subsection Readline Killing Commands + +@cindex killing text +@cindex yanking text + +@dfn{Killing} text means to delete the text from the line, but to save +it away for later use, usually by @dfn{yanking} (re-inserting) +it back into the line. +(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) + +If the description for a command says that it `kills' text, then you can +be sure that you can get the text back in a different (or the same) +place later. + +When you use a kill command, the text is saved in a @dfn{kill-ring}. +Any number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill +ring is not line specific; the text that you killed on a previously +typed line is available to be yanked back later, when you are typing +another line. +@cindex kill ring + +Here is the list of commands for killing text. + +@table @kbd +@item C-k +Kill the text from the current cursor position to the end of the line. + +@item M-d +Kill from the cursor to the end of the current word, or, if between +words, to the end of the next word. +Word boundaries are the same as those used by @kbd{M-f}. + +@item M-@key{DEL} +Kill from the cursor the start of the current word, or, if between +words, to the start of the previous word. +Word boundaries are the same as those used by @kbd{M-b}. + +@item C-w +Kill from the cursor to the previous whitespace. This is different than +@kbd{M-@key{DEL}} because the word boundaries differ. + +@end table + +Here is how to @dfn{yank} the text back into the line. Yanking +means to copy the most-recently-killed text from the kill buffer. + +@table @kbd +@item C-y +Yank the most recently killed text back into the buffer at the cursor. + +@item M-y +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is @kbd{C-y} or @kbd{M-y}. +@end table + +@node Readline Arguments +@subsection Readline Arguments + +You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the @i{sign} of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type @samp{M-- C-k}. + +The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first `digit' typed is a minus +sign (@samp{-}), then the sign of the argument will be negative. Once +you have typed one meta digit to get the argument started, you can type +the remainder of the digits, and then the command. For example, to give +the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}, +which will delete the next ten characters on the input line. + +@node Searching +@subsection Searching for Commands in the History + +Readline provides commands for searching through the command history +@ifset BashFeatures +(@pxref{Bash History Facilities}) +@end ifset +for lines containing a specified string. +There are two search modes: @dfn{incremental} and @dfn{non-incremental}. + +Incremental searches begin before the user has finished typing the +search string. +As each character of the search string is typed, Readline displays +the next entry from the history matching the string typed so far. +An incremental search requires only as many characters as needed to +find the desired history entry. +To search backward in the history for a particular string, type +@kbd{C-r}. Typing @kbd{C-s} searches forward through the history. +The characters present in the value of the @code{isearch-terminators} variable +are used to terminate an incremental search. +If that variable has not been assigned a value, the @key{ESC} and +@kbd{C-J} characters will terminate an incremental search. +@kbd{C-g} will abort an incremental search and restore the original line. +When the search is terminated, the history entry containing the +search string becomes the current line. + +To find other matching entries in the history list, type @kbd{C-r} or +@kbd{C-s} as appropriate. +This will search backward or forward in the history for the next +entry matching the search string typed so far. +Any other key sequence bound to a Readline command will terminate +the search and execute that command. +For instance, a @key{RET} will terminate the search and accept +the line, thereby executing the command from the history list. +A movement command will terminate the search, make the last line found +the current line, and begin editing. + +Readline remembers the last incremental search string. If two +@kbd{C-r}s are typed without any intervening characters defining a new +search string, any remembered search string is used. + +Non-incremental searches read the entire search string before starting +to search for matching history lines. The search string may be +typed by the user or be part of the contents of the current line. + +@node Readline Init File +@section Readline Init File +@cindex initialization file, readline + +Although the Readline library comes with a set of Emacs-like +keybindings installed by default, it is possible to use a different set +of keybindings. +Any user can customize programs that use Readline by putting +commands in an @dfn{inputrc} file, conventionally in his home directory. +The name of this +@ifset BashFeatures +file is taken from the value of the shell variable @env{INPUTRC}. If +@end ifset +@ifclear BashFeatures +file is taken from the value of the environment variable @env{INPUTRC}. If +@end ifclear +that variable is unset, the default is @file{~/.inputrc}. + +When a program which uses the Readline library starts up, the +init file is read, and the key bindings are set. + +In addition, the @code{C-x C-r} command re-reads this init file, thus +incorporating any changes that you might have made to it. + +@menu +* Readline Init File Syntax:: Syntax for the commands in the inputrc file. + +* Conditional Init Constructs:: Conditional key bindings in the inputrc file. + +* Sample Init File:: An example inputrc file. +@end menu + +@node Readline Init File Syntax +@subsection Readline Init File Syntax + +There are only a few basic constructs allowed in the +Readline init file. Blank lines are ignored. +Lines beginning with a @samp{#} are comments. +Lines beginning with a @samp{$} indicate conditional +constructs (@pxref{Conditional Init Constructs}). Other lines +denote variable settings and key bindings. + +@table @asis +@item Variable Settings +You can modify the run-time behavior of Readline by +altering the values of variables in Readline +using the @code{set} command within the init file. +The syntax is simple: + +@example +set @var{variable} @var{value} +@end example + +@noindent +Here, for example, is how to +change from the default Emacs-like key binding to use +@code{vi} line editing commands: + +@example +set editing-mode vi +@end example + +Variable names and values, where appropriate, are recognized without regard +to case. + +@ifset BashFeatures +The @w{@code{bind -V}} command lists the current Readline variable names +and values. @xref{Bash Builtins}. +@end ifset + +A great deal of run-time behavior is changeable with the following +variables. + +@cindex variables, readline +@table @code + +@item bell-style +@vindex bell-style +Controls what happens when Readline wants to ring the terminal bell. +If set to @samp{none}, Readline never rings the bell. If set to +@samp{visible}, Readline uses a visible bell if one is available. +If set to @samp{audible} (the default), Readline attempts to ring +the terminal's bell. + +@item comment-begin +@vindex comment-begin +The string to insert at the beginning of the line when the +@code{insert-comment} command is executed. The default value +is @code{"#"}. + +@item completion-ignore-case +If set to @samp{on}, Readline performs filename matching and completion +in a case-insensitive fashion. +The default value is @samp{off}. + +@item completion-query-items +@vindex completion-query-items +The number of possible completions that determines when the user is +asked whether the list of possibilities should be displayed. +If the number of possible completions is greater than 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. +The default limit is @code{100}. + +@item convert-meta +@vindex convert-meta +If set to @samp{on}, Readline will convert characters with the +eighth bit set to an @sc{ascii} key sequence by stripping the eighth +bit and prefixing an @key{ESC} character, converting them to a +meta-prefixed key sequence. The default value is @samp{on}. + +@item disable-completion +@vindex disable-completion +If set to @samp{On}, Readline will inhibit word completion. +Completion characters will be inserted into the line as if they had +been mapped to @code{self-insert}. The default is @samp{off}. + +@item editing-mode +@vindex editing-mode +The @code{editing-mode} variable controls which default set of +key bindings is used. By default, Readline starts up in Emacs editing +mode, where the keystrokes are most similar to Emacs. This variable can be +set to either @samp{emacs} or @samp{vi}. + +@item enable-keypad +@vindex enable-keypad +When set to @samp{on}, Readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. The default is @samp{off}. + +@item expand-tilde +@vindex expand-tilde +If set to @samp{on}, tilde expansion is performed when Readline +attempts word completion. The default is @samp{off}. + +@vindex history-preserve-point +If set to @samp{on}, the history code attempts to place point at the +same location on each history line retrieved with @code{previous-history} +or @code{next-history}. + +@item horizontal-scroll-mode +@vindex horizontal-scroll-mode +This variable can be set to either @samp{on} or @samp{off}. Setting it +to @samp{on} means that the text of the lines being edited will scroll +horizontally on a single screen line when they are longer than the width +of the screen, instead of wrapping onto a new screen line. By default, +this variable is set to @samp{off}. + +@item input-meta +@vindex input-meta +@vindex meta-flag +If set to @samp{on}, Readline will enable eight-bit input (it +will not clear the eighth bit in the characters it reads), +regardless of what the terminal claims it can support. The +default value is @samp{off}. The name @code{meta-flag} is a +synonym for this variable. + +@item isearch-terminators +@vindex isearch-terminators +The string of characters that should terminate an incremental search without +subsequently executing the character as a command (@pxref{Searching}). +If this variable has not been given a value, the characters @key{ESC} and +@kbd{C-J} will terminate an incremental search. + +@item keymap +@vindex keymap +Sets Readline's idea of the current keymap for key binding commands. +Acceptable @code{keymap} names are +@code{emacs}, +@code{emacs-standard}, +@code{emacs-meta}, +@code{emacs-ctlx}, +@code{vi}, +@code{vi-move}, +@code{vi-command}, and +@code{vi-insert}. +@code{vi} is equivalent to @code{vi-command}; @code{emacs} is +equivalent to @code{emacs-standard}. The default value is @code{emacs}. +The value of the @code{editing-mode} variable also affects the +default keymap. + +@item mark-directories +If set to @samp{on}, completed directory names have a slash +appended. The default is @samp{on}. + +@item mark-modified-lines +@vindex mark-modified-lines +This variable, when set to @samp{on}, causes Readline to display an +asterisk (@samp{*}) at the start of history lines which have been modified. +This variable is @samp{off} by default. + +@item mark-symlinked-directories +@vindex mark-symlinked-directories +If set to @samp{on}, completed names which are symbolic links +to directories have a slash appended (subject to the value of +@code{mark-directories}). +The default is @samp{off}. + +@item match-hidden-files +@vindex match-hidden-files +This variable, when set to @samp{on}, causes Readline to match files whose +names begin with a @samp{.} (hidden files) when performing filename +completion, unless the leading @samp{.} is +supplied by the user in the filename to be completed. +This variable is @samp{on} by default. + +@item output-meta +@vindex output-meta +If set to @samp{on}, Readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. The default is @samp{off}. + +@item page-completions +@vindex page-completions +If set to @samp{on}, Readline uses an internal @code{more}-like pager +to display a screenful of possible completions at a time. +This variable is @samp{on} by default. + +@item print-completions-horizontally +If set to @samp{on}, Readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +The default is @samp{off}. + +@item show-all-if-ambiguous +@vindex show-all-if-ambiguous +This alters the default behavior of the completion functions. If +set to @samp{on}, +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +The default value is @samp{off}. + +@item show-all-if-unmodified +@vindex show-all-if-unmodified +This alters the default behavior of the completion functions in +a fashion similar to @var{show-all-if-ambiguous}. +If set to @samp{on}, +words which have more than one possible completion without any +possible partial completion (the possible completions don't share +a common prefix) cause the matches to be listed immediately instead +of ringing the bell. +The default value is @samp{off}. + +@item visible-stats +@vindex visible-stats +If set to @samp{on}, a character denoting a file's type +is appended to the filename when listing possible +completions. The default is @samp{off}. + +@end table + +@item Key Bindings +The syntax for controlling key bindings in the init file is +simple. First you need to find the name of the command that you +want to change. The following sections contain tables of the command +name, the default keybinding, if any, and a short description of what +the command does. + +Once you know the name of the command, simply place on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable. + +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a @var{macro}). + +@ifset BashFeatures +The @w{@code{bind -p}} command displays Readline function names and +bindings in a format that can put directly into an initialization file. +@xref{Bash Builtins}. +@end ifset + +@table @asis +@item @w{@var{keyname}: @var{function-name} or @var{macro}} +@var{keyname} is the name of a key spelled out in English. For example: +@example +Control-u: universal-argument +Meta-Rubout: backward-kill-word +Control-o: "> output" +@end example + +In the above example, @kbd{C-u} is bound to the function +@code{universal-argument}, +@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and +@kbd{C-o} is bound to run the macro +expressed on the right hand side (that is, to insert the text +@samp{> output} into the line). + +A number of symbolic character names are recognized while +processing this key binding syntax: +@var{DEL}, +@var{ESC}, +@var{ESCAPE}, +@var{LFD}, +@var{NEWLINE}, +@var{RET}, +@var{RETURN}, +@var{RUBOUT}, +@var{SPACE}, +@var{SPC}, +and +@var{TAB}. + +@item @w{"@var{keyseq}": @var{function-name} or @var{macro}} +@var{keyseq} differs from @var{keyname} above in that strings +denoting an entire key sequence can be specified, by placing +the key sequence in double quotes. Some @sc{gnu} Emacs style key +escapes can be used, as in the following example, but the +special character names are not recognized. + +@example +"\C-u": universal-argument +"\C-x\C-r": re-read-init-file +"\e[11~": "Function Key 1" +@end example + +In the above example, @kbd{C-u} is again bound to the function +@code{universal-argument} (just as it was in the first example), +@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file}, +and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert +the text @samp{Function Key 1}. + +@end table + +The following @sc{gnu} Emacs style escape sequences are available when +specifying key sequences: + +@table @code +@item @kbd{\C-} +control prefix +@item @kbd{\M-} +meta prefix +@item @kbd{\e} +an escape character +@item @kbd{\\} +backslash +@item @kbd{\"} +@key{"}, a double quotation mark +@item @kbd{\'} +@key{'}, a single quote or apostrophe +@end table + +In addition to the @sc{gnu} Emacs style escape sequences, a second +set of backslash escapes is available: + +@table @code +@item \a +alert (bell) +@item \b +backspace +@item \d +delete +@item \f +form feed +@item \n +newline +@item \r +carriage return +@item \t +horizontal tab +@item \v +vertical tab +@item \@var{nnn} +the eight-bit character whose value is the octal value @var{nnn} +(one to three digits) +@item \x@var{HH} +the eight-bit character whose value is the hexadecimal value @var{HH} +(one or two hex digits) +@end table + +When entering the text of a macro, single or double quotes must +be used to indicate a macro definition. +Unquoted text is assumed to be a function name. +In the macro body, the backslash escapes described above are expanded. +Backslash will quote any other character in the macro text, +including @samp{"} and @samp{'}. +For example, the following binding will make @samp{@kbd{C-x} \} +insert a single @samp{\} into the line: +@example +"\C-x\\": "\\" +@end example + +@end table + +@node Conditional Init Constructs +@subsection Conditional Init Constructs + +Readline implements a facility similar in spirit to the conditional +compilation features of the C preprocessor which allows key +bindings and variable settings to be performed as the result +of tests. There are four parser directives used. + +@table @code +@item $if +The @code{$if} construct allows bindings to be made based on the +editing mode, the terminal being used, or the application using +Readline. The text of the test extends to the end of the line; +no characters are required to isolate it. + +@table @code +@item mode +The @code{mode=} form of the @code{$if} directive is used to test +whether Readline is in @code{emacs} or @code{vi} mode. +This may be used in conjunction +with the @samp{set keymap} command, for instance, to set bindings in +the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if +Readline is starting out in @code{emacs} mode. + +@item term +The @code{term=} form may be used to include terminal-specific +key bindings, perhaps to bind the key sequences output by the +terminal's function keys. The word on the right side of the +@samp{=} is tested against both the full name of the terminal and +the portion of the terminal name before the first @samp{-}. This +allows @code{sun} to match both @code{sun} and @code{sun-cmd}, +for instance. + +@item application +The @var{application} construct is used to include +application-specific settings. Each program using the Readline +library sets the @var{application name}, and you can test for +a particular value. +This could be used to bind key sequences to functions useful for +a specific program. For instance, the following command adds a +key sequence that quotes the current or previous word in Bash: +@example +$if Bash +# Quote the current or previous word +"\C-xq": "\eb\"\ef\"" +$endif +@end example +@end table + +@item $endif +This command, as seen in the previous example, terminates an +@code{$if} command. + +@item $else +Commands in this branch of the @code{$if} directive are executed if +the test fails. + +@item $include +This directive takes a single filename as an argument and reads commands +and bindings from that file. +For example, the following directive reads from @file{/etc/inputrc}: +@example +$include /etc/inputrc +@end example +@end table + +@node Sample Init File +@subsection Sample Init File + +Here is an example of an @var{inputrc} file. This illustrates key +binding, variable assignment, and conditional syntax. + +@example +@page +# This file controls the behaviour of line input editing for +# programs that use the GNU Readline library. Existing +# programs include FTP, Bash, and GDB. +# +# You can re-read the inputrc file with C-x C-r. +# Lines beginning with '#' are comments. +# +# First, include any systemwide bindings and variable +# assignments from /etc/Inputrc +$include /etc/Inputrc + +# +# Set various bindings for emacs mode. + +set editing-mode emacs + +$if mode=emacs + +Meta-Control-h: backward-kill-word Text after the function name is ignored + +# +# Arrow keys in keypad mode +# +#"\M-OD": backward-char +#"\M-OC": forward-char +#"\M-OA": previous-history +#"\M-OB": next-history +# +# Arrow keys in ANSI mode +# +"\M-[D": backward-char +"\M-[C": forward-char +"\M-[A": previous-history +"\M-[B": next-history +# +# Arrow keys in 8 bit keypad mode +# +#"\M-\C-OD": backward-char +#"\M-\C-OC": forward-char +#"\M-\C-OA": previous-history +#"\M-\C-OB": next-history +# +# Arrow keys in 8 bit ANSI mode +# +#"\M-\C-[D": backward-char +#"\M-\C-[C": forward-char +#"\M-\C-[A": previous-history +#"\M-\C-[B": next-history + +C-q: quoted-insert + +$endif + +# An old-style binding. This happens to be the default. +TAB: complete + +# Macros that are convenient for shell interaction +$if Bash +# edit the path +"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f" +# prepare to type a quoted word -- +# insert open and close double quotes +# and move to just after the open quote +"\C-x\"": "\"\"\C-b" +# insert a backslash (testing backslash escapes +# in sequences and macros) +"\C-x\\": "\\" +# Quote the current or previous word +"\C-xq": "\eb\"\ef\"" +# Add a binding to refresh the line, which is unbound +"\C-xr": redraw-current-line +# Edit variable on current line. +"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" +$endif + +# use a visible bell if one is available +set bell-style visible + +# don't strip characters to 7 bits when reading +set input-meta on + +# allow iso-latin1 characters to be inserted rather +# than converted to prefix-meta sequences +set convert-meta off + +# display characters with the eighth bit set directly +# rather than as meta-prefixed characters +set output-meta on + +# if there are more than 150 possible completions for +# a word, ask the user if he wants to see all of them +set completion-query-items 150 + +# For FTP +$if Ftp +"\C-xg": "get \M-?" +"\C-xt": "put \M-?" +"\M-.": yank-last-arg +$endif +@end example + +@node Bindable Readline Commands +@section Bindable Readline Commands + +@menu +* Commands For Moving:: Moving about the line. +* Commands For History:: Getting at previous lines. +* Commands For Text:: Commands for changing text. +* Commands For Killing:: Commands for killing and yanking. +* Numeric Arguments:: Specifying numeric arguments, repeat counts. +* Commands For Completion:: Getting Readline to do the typing for you. +* Keyboard Macros:: Saving and re-executing typed characters +* Miscellaneous Commands:: Other miscellaneous commands. +@end menu + +This section describes Readline commands that may be bound to key +sequences. +@ifset BashFeatures +You can list your key bindings by executing +@w{@code{bind -P}} or, for a more terse format, suitable for an +@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.) +@end ifset +Command names without an accompanying key sequence are unbound by default. + +In the following descriptions, @dfn{point} refers to the current cursor +position, and @dfn{mark} refers to a cursor position saved by the +@code{set-mark} command. +The text between the point and mark is referred to as the @dfn{region}. + +@node Commands For Moving +@subsection Commands For Moving +@ftable @code +@item beginning-of-line (C-a) +Move to the start of the current line. + +@item end-of-line (C-e) +Move to the end of the line. + +@item forward-char (C-f) +Move forward a character. + +@item backward-char (C-b) +Move back a character. + +@item forward-word (M-f) +Move forward to the end of the next word. Words are composed of +letters and digits. + +@item backward-word (M-b) +Move back to the start of the current or previous word. Words are +composed of letters and digits. + +@item clear-screen (C-l) +Clear the screen and redraw the current line, +leaving the current line at the top of the screen. + +@item redraw-current-line () +Refresh the current line. By default, this is unbound. + +@end ftable + +@node Commands For History +@subsection Commands For Manipulating The History + +@ftable @code +@item accept-line (Newline or Return) +@ifset BashFeatures +Accept the line regardless of where the cursor is. +If this line is +non-empty, add it to the history list according to the setting of +the @env{HISTCONTROL} and @env{HISTIGNORE} variables. +If this line is a modified history line, then restore the history line +to its original state. +@end ifset +@ifclear BashFeatures +Accept the line regardless of where the cursor is. +If this line is +non-empty, it may be added to the history list for future recall with +@code{add_history()}. +If this line is a modified history line, the history line is restored +to its original state. +@end ifclear + +@item previous-history (C-p) +Move `back' through the history list, fetching the previous command. + +@item next-history (C-n) +Move `forward' through the history list, fetching the next command. + +@item beginning-of-history (M-<) +Move to the first line in the history. + +@item end-of-history (M->) +Move to the end of the input history, i.e., the line currently +being entered. + +@item reverse-search-history (C-r) +Search backward starting at the current line and moving `up' through +the history as necessary. This is an incremental search. + +@item forward-search-history (C-s) +Search forward starting at the current line and moving `down' through +the the history as necessary. This is an incremental search. + +@item non-incremental-reverse-search-history (M-p) +Search backward starting at the current line and moving `up' +through the history as necessary using a non-incremental search +for a string supplied by the user. + +@item non-incremental-forward-search-history (M-n) +Search forward starting at the current line and moving `down' +through the the history as necessary using a non-incremental search +for a string supplied by the user. + +@item history-search-forward () +Search forward through the history for the string of characters +between the start of the current line and the point. +This is a non-incremental search. +By default, this command is unbound. + +@item history-search-backward () +Search backward through the history for the string of characters +between the start of the current line and the point. This +is a non-incremental search. By default, this command is unbound. + +@item yank-nth-arg (M-C-y) +Insert the first argument to the previous command (usually +the second word on the previous line) at point. +With an argument @var{n}, +insert the @var{n}th word from the previous command (the words +in the previous command begin with word 0). A negative argument +inserts the @var{n}th word from the end of the previous command. + +@item yank-last-arg (M-. or M-_) +Insert last argument to the previous command (the last word of the +previous history entry). With an +argument, behave exactly like @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. + +@end ftable + +@node Commands For Text +@subsection Commands For Changing Text + +@ftable @code +@item delete-char (C-d) +Delete the character at point. If point is at the +beginning of the line, there are no characters in the line, and +the last character typed was not bound to @code{delete-char}, then +return @sc{eof}. + +@item backward-delete-char (Rubout) +Delete the character behind the cursor. A numeric argument means +to kill the characters instead of deleting them. + +@item forward-backward-delete-char () +Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. By default, this is not bound to a key. + +@item quoted-insert (C-q or C-v) +Add the next character typed to the line verbatim. This is +how to insert key sequences like @kbd{C-q}, for example. + +@ifclear BashFeatures +@item tab-insert (M-@key{TAB}) +Insert a tab character. +@end ifclear + +@item self-insert (a, b, A, 1, !, @dots{}) +Insert yourself. + +@item transpose-chars (C-t) +Drag the character before the cursor forward over +the character at the cursor, moving the +cursor forward as well. If the insertion point +is at the end of the line, then this +transposes the last two characters of the line. +Negative arguments have no effect. + +@item transpose-words (M-t) +Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. + +@item upcase-word (M-u) +Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move the cursor. + +@item downcase-word (M-l) +Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move the cursor. + +@item capitalize-word (M-c) +Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move the cursor. + +@item overwrite-mode () +Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +@code{emacs} mode; @code{vi} mode does overwrite differently. +Each call to @code{readline()} starts in insert mode. + +In overwrite mode, characters bound to @code{self-insert} replace +the text at point rather than pushing the text to the right. +Characters bound to @code{backward-delete-char} replace the character +before point with a space. + +By default, this command is unbound. + +@end ftable + +@node Commands For Killing +@subsection Killing And Yanking + +@ftable @code + +@item kill-line (C-k) +Kill the text from point to the end of the line. + +@item backward-kill-line (C-x Rubout) +Kill backward to the beginning of the line. + +@item unix-line-discard (C-u) +Kill backward from the cursor to the beginning of the current line. + +@item kill-whole-line () +Kill all characters on the current line, no matter where point is. +By default, this is unbound. + +@item kill-word (M-d) +Kill from point to the end of the current word, or if between +words, to the end of the next word. +Word boundaries are the same as @code{forward-word}. + +@item backward-kill-word (M-@key{DEL}) +Kill the word behind point. +Word boundaries are the same as @code{backward-word}. + +@item unix-word-rubout (C-w) +Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. + +@item unix-filename-rubout () +Kill the word behind point, using white space and the slash character +as the word boundaries. +The killed text is saved on the kill-ring. + +@item delete-horizontal-space () +Delete all spaces and tabs around point. By default, this is unbound. + +@item kill-region () +Kill the text in the current region. +By default, this command is unbound. + +@item copy-region-as-kill () +Copy the text in the region to the kill buffer, so it can be yanked +right away. By default, this command is unbound. + +@item copy-backward-word () +Copy the word before point to the kill buffer. +The word boundaries are the same as @code{backward-word}. +By default, this command is unbound. + +@item copy-forward-word () +Copy the word following point to the kill buffer. +The word boundaries are the same as @code{forward-word}. +By default, this command is unbound. + +@item yank (C-y) +Yank the top of the kill ring into the buffer at point. + +@item yank-pop (M-y) +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is @code{yank} or @code{yank-pop}. +@end ftable + +@node Numeric Arguments +@subsection Specifying Numeric Arguments +@ftable @code + +@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--}) +Add this digit to the argument already accumulating, or start a new +argument. @kbd{M--} starts a negative argument. + +@item universal-argument () +This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +If the command is followed by digits, executing @code{universal-argument} +again ends the numeric argument, but is otherwise ignored. +As a special case, if this command is immediately followed by a +character that is neither a digit or minus sign, the argument count +for the next command is multiplied by four. +The argument count is initially one, so executing this function the +first time makes the argument count four, a second time makes the +argument count sixteen, and so on. +By default, this is not bound to a key. +@end ftable + +@node Commands For Completion +@subsection Letting Readline Type For You + +@ftable @code +@item complete (@key{TAB}) +Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +@ifset BashFeatures +Bash attempts completion treating the text as a variable (if the +text begins with @samp{$}), username (if the text begins with +@samp{~}), hostname (if the text begins with @samp{@@}), or +command (including aliases and functions) in turn. If none +of these produces a match, filename completion is attempted. +@end ifset +@ifclear BashFeatures +The default is filename completion. +@end ifclear + +@item possible-completions (M-?) +List the possible completions of the text before point. + +@item insert-completions (M-*) +Insert all completions of the text before point that would have +been generated by @code{possible-completions}. + +@item menu-complete () +Similar to @code{complete}, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of @code{menu-complete} steps through the list +of possible completions, inserting each match in turn. +At the end of the list of completions, the bell is rung +(subject to the setting of @code{bell-style}) +and the original text is restored. +An argument of @var{n} moves @var{n} positions forward in the list +of matches; a negative argument may be used to move backward +through the list. +This command is intended to be bound to @key{TAB}, but is unbound +by default. + +@item delete-char-or-list () +Deletes the character under the cursor if not at the beginning or +end of the line (like @code{delete-char}). +If at the end of the line, behaves identically to +@code{possible-completions}. +This command is unbound by default. + +@ifset BashFeatures +@item complete-filename (M-/) +Attempt filename completion on the text before point. + +@item possible-filename-completions (C-x /) +List the possible completions of the text before point, +treating it as a filename. + +@item complete-username (M-~) +Attempt completion on the text before point, treating +it as a username. + +@item possible-username-completions (C-x ~) +List the possible completions of the text before point, +treating it as a username. + +@item complete-variable (M-$) +Attempt completion on the text before point, treating +it as a shell variable. + +@item possible-variable-completions (C-x $) +List the possible completions of the text before point, +treating it as a shell variable. + +@item complete-hostname (M-@@) +Attempt completion on the text before point, treating +it as a hostname. + +@item possible-hostname-completions (C-x @@) +List the possible completions of the text before point, +treating it as a hostname. + +@item complete-command (M-!) +Attempt completion on the text before point, treating +it as a command name. Command completion attempts to +match the text against aliases, reserved words, shell +functions, shell builtins, and finally executable filenames, +in that order. + +@item possible-command-completions (C-x !) +List the possible completions of the text before point, +treating it as a command name. + +@item dynamic-complete-history (M-@key{TAB}) +Attempt completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. + +@item complete-into-braces (M-@{) +Perform filename completion and insert the list of possible completions +enclosed within braces so the list is available to the shell +(@pxref{Brace Expansion}). + +@end ifset +@end ftable + +@node Keyboard Macros +@subsection Keyboard Macros +@ftable @code + +@item start-kbd-macro (C-x () +Begin saving the characters typed into the current keyboard macro. + +@item end-kbd-macro (C-x )) +Stop saving the characters typed into the current keyboard macro +and save the definition. + +@item call-last-kbd-macro (C-x e) +Re-execute the last keyboard macro defined, by making the characters +in the macro appear as if typed at the keyboard. + +@end ftable + +@node Miscellaneous Commands +@subsection Some Miscellaneous Commands +@ftable @code + +@item re-read-init-file (C-x C-r) +Read in the contents of the @var{inputrc} file, and incorporate +any bindings or variable assignments found there. + +@item abort (C-g) +Abort the current editing command and +ring the terminal's bell (subject to the setting of +@code{bell-style}). + +@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{}) +If the metafied character @var{x} is lowercase, run the command +that is bound to the corresponding uppercase character. + +@item prefix-meta (@key{ESC}) +Metafy the next character typed. This is for keyboards +without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing +@kbd{M-f}. + +@item undo (C-_ or C-x C-u) +Incremental undo, separately remembered for each line. + +@item revert-line (M-r) +Undo all changes made to this line. This is like executing the @code{undo} +command enough times to get back to the beginning. + +@ifset BashFeatures +@item tilde-expand (M-&) +@end ifset +@ifclear BashFeatures +@item tilde-expand (M-~) +@end ifclear +Perform tilde expansion on the current word. + +@item set-mark (C-@@) +Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. + +@item exchange-point-and-mark (C-x C-x) +Swap the point with the mark. The current cursor position is set to +the saved position, and the old cursor position is saved as the mark. + +@item character-search (C-]) +A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. + +@item character-search-backward (M-C-]) +A character is read and point is moved to the previous occurrence +of that character. A negative count searches for subsequent +occurrences. + +@item insert-comment (M-#) +Without a numeric argument, the value of the @code{comment-begin} +variable is inserted at the beginning of the current line. +If a numeric argument is supplied, this command acts as a toggle: if +the characters at the beginning of the line do not match the value +of @code{comment-begin}, the value is inserted, otherwise +the characters in @code{comment-begin} are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +@ifset BashFeatures +The default value of @code{comment-begin} causes this command +to make the current line a shell comment. +If a numeric argument causes the comment character to be removed, the line +will be executed by the shell. +@end ifset + +@item dump-functions () +Print all of the functions and their key bindings to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an @var{inputrc} file. This command is unbound by default. + +@item dump-variables () +Print all of the settable variables and their values to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an @var{inputrc} file. This command is unbound by default. + +@item dump-macros () +Print all of the Readline key sequences bound to macros and the +strings they output. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an @var{inputrc} file. This command is unbound by default. + +@ifset BashFeatures +@item glob-complete-word (M-g) +The word before point is treated as a pattern for pathname expansion, +with an asterisk implicitly appended. This pattern is used to +generate a list of matching file names for possible completions. + +@item glob-expand-word (C-x *) +The word before point is treated as a pattern for pathname expansion, +and the list of matching file names is inserted, replacing the word. +If a numeric argument is supplied, a @samp{*} is appended before +pathname expansion. + +@item glob-list-expansions (C-x g) +The list of expansions that would have been generated by +@code{glob-expand-word} is displayed, and the line is redrawn. +If a numeric argument is supplied, a @samp{*} is appended before +pathname expansion. + +@item display-shell-version (C-x C-v) +Display version information about the current instance of Bash. + +@item shell-expand-line (M-C-e) +Expand the line as the shell does. +This performs alias and history expansion as well as all of the shell +word expansions (@pxref{Shell Expansions}). + +@item history-expand-line (M-^) +Perform history expansion on the current line. + +@item magic-space () +Perform history expansion on the current line and insert a space +(@pxref{History Interaction}). + +@item alias-expand-line () +Perform alias expansion on the current line (@pxref{Aliases}). + +@item history-and-alias-expand-line () +Perform history and alias expansion on the current line. + +@item insert-last-argument (M-. or M-_) +A synonym for @code{yank-last-arg}. + +@item operate-and-get-next (C-o) +Accept the current line for execution and fetch the next line +relative to the current line from the history for editing. Any +argument is ignored. + +@item edit-and-execute-command (C-xC-e) +Invoke an editor on the current command line, and execute the result as shell +commands. +Bash attempts to invoke +@code{$VISUAL}, @code{$EDITOR}, and @code{emacs} +as the editor, in that order. + +@end ifset + +@ifclear BashFeatures +@item emacs-editing-mode (C-e) +When in @code{vi} command mode, this causes a switch to @code{emacs} +editing mode. + +@item vi-editing-mode (M-C-j) +When in @code{emacs} editing mode, this causes a switch to @code{vi} +editing mode. + +@end ifclear + +@end ftable + +@node Readline vi Mode +@section Readline vi Mode + +While the Readline library does not have a full set of @code{vi} +editing functions, it does contain enough to allow simple editing +of the line. The Readline @code{vi} mode behaves as specified in +the @sc{posix} 1003.2 standard. + +@ifset BashFeatures +In order to switch interactively between @code{emacs} and @code{vi} +editing modes, use the @samp{set -o emacs} and @samp{set -o vi} +commands (@pxref{The Set Builtin}). +@end ifset +@ifclear BashFeatures +In order to switch interactively between @code{emacs} and @code{vi} +editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode +when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode). +@end ifclear +The Readline default is @code{emacs} mode. + +When you enter a line in @code{vi} mode, you are already placed in +`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC} +switches you into `command' mode, where you can edit the text of the +line with the standard @code{vi} movement keys, move to previous +history lines with @samp{k} and subsequent lines with @samp{j}, and +so forth. + +@ifset BashFeatures +@node Programmable Completion +@section Programmable Completion +@cindex programmable completion + +When word completion is attempted for an argument to a command for +which a completion specification (a @var{compspec}) has been defined +using the @code{complete} builtin (@pxref{Programmable Completion Builtins}), +the programmable completion facilities are invoked. + +First, the command name is identified. +If a compspec has been defined for that command, the +compspec is used to generate the list of possible completions for the word. +If the command word is a full pathname, a compspec for the full +pathname is searched for first. +If no compspec is found for the full pathname, an attempt is made to +find a compspec for the portion following the final slash. + +Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default Bash completion +described above (@pxref{Commands For Completion}) is performed. + +First, the actions specified by the compspec are used. +Only matches which are prefixed by the word being completed are +returned. +When the @option{-f} or @option{-d} option is used for filename or +directory name completion, the shell variable @env{FIGNORE} is +used to filter the matches. +@xref{Bash Variables}, for a description of @env{FIGNORE}. + +Any completions specified by a filename expansion pattern to the +@option{-G} option are generated next. +The words generated by the pattern need not match the word being completed. +The @env{GLOBIGNORE} shell variable is not used to filter the matches, +but the @env{FIGNORE} shell variable is used. + +Next, the string specified as the argument to the @option{-W} option +is considered. +The string is first split using the characters in the @env{IFS} +special variable as delimiters. +Shell quoting is honored. +Each word is then expanded using +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and pathname expansion, +as described above (@pxref{Shell Expansions}). +The results are split using the rules described above +(@pxref{Word Splitting}). +The results of the expansion are prefix-matched against the word being +completed, and the matching words become the possible completions. + +After these matches have been generated, any shell function or command +specified with the @option{-F} and @option{-C} options is invoked. +When the command or function is invoked, the @env{COMP_LINE} and +@env{COMP_POINT} variables are assigned values as described above +(@pxref{Bash Variables}). +If a shell function is being invoked, the @env{COMP_WORDS} and +@env{COMP_CWORD} variables are also set. +When the function or command is invoked, the first argument is the +name of the command whose arguments are being completed, the +second argument is the word being completed, and the third argument +is the word preceding the word being completed on the current command line. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. + +Any function specified with @option{-F} is invoked first. +The function may use any of the shell facilities, including the +@code{compgen} builtin described below +(@pxref{Programmable Completion Builtins}), to generate the matches. +It must put the possible completions in the @env{COMPREPLY} array +variable. + +Next, any command specified with the @option{-C} option is invoked +in an environment equivalent to command substitution. +It should print a list of completions, one per line, to +the standard output. +Backslash may be used to escape a newline, if necessary. + +After all of the possible completions are generated, any filter +specified with the @option{-X} option is applied to the list. +The filter is a pattern as used for pathname expansion; a @samp{&} +in the pattern is replaced with the text of the word being completed. +A literal @samp{&} may be escaped with a backslash; the backslash +is removed before attempting a match. +Any completion that matches the pattern will be removed from the list. +A leading @samp{!} negates the pattern; in this case any completion +not matching the pattern will be removed. + +Finally, any prefix and suffix specified with the @option{-P} and @option{-S} +options are added to each member of the completion list, and the result is +returned to the Readline completion code as the list of possible +completions. + +If the previously-applied actions do not generate any matches, and the +@option{-o dirnames} option was supplied to @code{complete} when the +compspec was defined, directory name completion is attempted. + +If the @option{-o plusdirs} option was supplied to @code{complete} when +the compspec was defined, directory name completion is attempted and any +matches are added to the results of the other actions. + +By default, if a compspec is found, whatever it generates is returned to +the completion code as the full set of possible completions. +The default Bash completions are not attempted, and the Readline default +of filename completion is disabled. +If the @option{-o bashdefault} option was supplied to @code{complete} when +the compspec was defined, the default Bash completions are attempted +if the compspec generates no matches. +If the @option{-o default} option was supplied to @code{complete} when the +compspec was defined, Readline's default completion will be performed +if the compspec (and, if attempted, the default Bash completions) +generate no matches. + +When a compspec indicates that directory name completion is desired, +the programmable completion functions force Readline to append a slash +to completed names which are symbolic links to directories, subject to +the value of the @var{mark-directories} Readline variable, regardless +of the setting of the @var{mark-symlinked-directories} Readline variable. + +@node Programmable Completion Builtins +@section Programmable Completion Builtins +@cindex completion builtins + +Two builtin commands are available to manipulate the programmable completion +facilities. + +@table @code +@item compgen +@btindex compgen +@example +@code{compgen [@var{option}] [@var{word}]} +@end example + +Generate possible completion matches for @var{word} according to +the @var{option}s, which may be any option accepted by the +@code{complete} +builtin with the exception of @option{-p} and @option{-r}, and write +the matches to the standard output. +When using the @option{-F} or @option{-C} options, the various shell variables +set by the programmable completion facilities, while available, will not +have useful values. + +The matches will be generated in the same way as if the programmable +completion code had generated them directly from a completion specification +with the same flags. +If @var{word} is specified, only those completions matching @var{word} +will be displayed. + +The return value is true unless an invalid option is supplied, or no +matches were generated. + +@item complete +@btindex complete +@example +@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-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{}]} +@end example + +Specify how arguments to each @var{name} should be completed. +If the @option{-p} option is supplied, or if no options are supplied, existing +completion specifications are printed in a way that allows them to be +reused as input. +The @option{-r} option removes a completion specification for +each @var{name}, or, if no @var{name}s are supplied, all +completion specifications. + +The process of applying these completion specifications when word completion +is attempted is described above (@pxref{Programmable Completion}). + +Other options, if specified, have the following meanings. +The arguments to the @option{-G}, @option{-W}, and @option{-X} options +(and, if necessary, the @option{-P} and @option{-S} options) +should be quoted to protect them from expansion before the +@code{complete} builtin is invoked. + + +@table @code +@item -o @var{comp-option} +The @var{comp-option} controls several aspects of the compspec's behavior +beyond the simple generation of completions. +@var{comp-option} may be one of: + +@table @code + +@item bashdefault +Perform the rest of the default Bash completions if the compspec +generates no matches. + +@item default +Use Readline's default filename completion if the compspec generates +no matches. + +@item dirnames +Perform directory name completion if the compspec generates no matches. + +@item filenames +Tell Readline that the compspec generates filenames, so it can perform any +filename-specific processing (like adding a slash to directory names 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. +@end table + +@item -A @var{action} +The @var{action} may be one of the following to generate a list of possible +completions: + +@table @code +@item alias +Alias names. May also be specified as @option{-a}. + +@item arrayvar +Array variable names. + +@item binding +Readline key binding names (@pxref{Bindable Readline Commands}). + +@item builtin +Names of shell builtin commands. May also be specified as @option{-b}. + +@item command +Command names. May also be specified as @option{-c}. + +@item directory +Directory names. May also be specified as @option{-d}. + +@item disabled +Names of disabled shell builtins. + +@item enabled +Names of enabled shell builtins. + +@item export +Names of exported shell variables. May also be specified as @option{-e}. + +@item file +File names. May also be specified as @option{-f}. + +@item function +Names of shell functions. + +@item group +Group names. May also be specified as @option{-g}. + +@item helptopic +Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}). + +@item hostname +Hostnames, as taken from the file specified by the +@env{HOSTFILE} shell variable (@pxref{Bash Variables}). + +@item job +Job names, if job control is active. May also be specified as @option{-j}. + +@item keyword +Shell reserved words. May also be specified as @option{-k}. + +@item running +Names of running jobs, if job control is active. + +@item service +Service names. May also be specified as @option{-s}. + +@item setopt +Valid arguments for the @option{-o} option to the @code{set} builtin +(@pxref{The Set Builtin}). + +@item shopt +Shell option names as accepted by the @code{shopt} builtin +(@pxref{Bash Builtins}). + +@item signal +Signal names. + +@item stopped +Names of stopped jobs, if job control is active. + +@item user +User names. May also be specified as @option{-u}. + +@item variable +Names of all shell variables. May also be specified as @option{-v}. +@end table + +@item -G @var{globpat} +The filename expansion pattern @var{globpat} is expanded to generate +the possible completions. + +@item -W @var{wordlist} +The @var{wordlist} is split using the characters in the +@env{IFS} special variable as delimiters, and each resultant word +is expanded. +The possible completions are the members of the resultant list which +match the word being completed. + +@item -C @var{command} +@var{command} is executed in a subshell environment, and its output is +used as the possible completions. + +@item -F @var{function} +The shell function @var{function} is executed in the current shell +environment. +When it finishes, the possible completions are retrieved from the value +of the @env{COMPREPLY} array variable. + +@item -X @var{filterpat} +@var{filterpat} is a pattern as used for filename expansion. +It is applied to the list of possible completions generated by the +preceding options and arguments, and each completion matching +@var{filterpat} is removed from the list. +A leading @samp{!} in @var{filterpat} negates the pattern; in this +case, any completion not matching @var{filterpat} is removed. + +@item -P @var{prefix} +@var{prefix} is added at the beginning of each possible completion +after all other options have been applied. + +@item -S @var{suffix} +@var{suffix} is appended to each possible completion +after all other options have been applied. +@end table + +The return value is true unless an invalid option is supplied, an option +other than @option{-p} or @option{-r} is supplied without a @var{name} +argument, an attempt is made to remove a completion specification for +a @var{name} for which no specification exists, or +an error occurs adding a completion specification. + +@end table +@end ifset diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index c375c1de5..17596b8b8 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -86,7 +86,7 @@ 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 shmatch.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 @@ -95,7 +95,7 @@ HSOURCES = # The object files contained in $(LIBRARY_NAME) LIBOBJS = @LIBOBJS@ -OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o \ +OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ itos.o zread.o zwrite.o shtty.o shmatch.o \ netconn.o netopen.o timeval.o makepath.o pathcanon.o \ pathphys.o tmpfile.o stringlist.o stringvec.o spell.o shquote.o \ @@ -162,6 +162,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 @@ -218,6 +219,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 @@ -372,6 +374,8 @@ stringvec.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h stringvec.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h stringvec.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h +strnlen.o: ${BASHINCDIR}/stdc.h + strpbrk.o: ${BASHINCDIR}/stdc.h strtod.o: ${topdir}/bashansi.h diff --git a/lib/sh/Makefile.in~ b/lib/sh/Makefile.in~ new file mode 100644 index 000000000..c375c1de5 --- /dev/null +++ b/lib/sh/Makefile.in~ @@ -0,0 +1,451 @@ +# +# Makefile for the Bash library +# +# +# Copyright (C) 1998-2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +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@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ + +PROFILE_FLAGS = @PROFILE_FLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) + +CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ + $(CFLAGS) $(CPPFLAGS) + +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ + -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + +.c.o: + $(CC) -c $(CCFLAGS) $< + +# The name of the library target. +LIBRARY_NAME = libsh.a + +# The C code source files for this library. +CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ + strcasecmp.c strerror.c strtod.c strtol.c strtoul.c \ + vprint.c itos.c rename.c zread.c zwrite.c shtty.c \ + inet_aton.c netconn.c netopen.c strpbrk.c timeval.c makepath.c \ + pathcanon.c pathphys.c tmpfile.c stringlist.c stringvec.c spell.c \ + shquote.c strtrans.c strindex.c snprintf.c mailstat.c \ + fmtulong.c fmtullong.c fmtumax.c shmatch.c \ + strtoll.c strtoull.c strtoimax.c strtoumax.c memset.c strstr.c \ + mktime.c strftime.c xstrchr.c zcatfd.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 shmatch.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} + +SUPPORT = Makefile + +all: $(LIBRARY_NAME) + +$(LIBRARY_NAME): $(OBJECTS) + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(OBJECTS) + -test -n "$(RANLIB)" && $(RANLIB) $@ + +force: + +# The rule for 'includes' is written funny so that the if statement +# always returns TRUE unless there really was an error installing the +# include files. +install: + +clean: + $(RM) $(OBJECTS) $(LIBRARY_NAME) + +realclean distclean maintainer-clean: clean + $(RM) Makefile + +mostlyclean: clean + +# Dependencies + +${BUILD_DIR}/version.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} version.h ) + +# rules for losing makes, like SunOS +clktck.o: clktck.c +clock.o: clock.c +fmtullong.o: fmtullong.c +fmtulong.o: fmtulong.c +fmtumax.o: fmtumax.c +getcwd.o: getcwd.c +getenv.o: getenv.c +inet_aton.o: inet_aton.c +itos.o: itos.c +mailstat.o: mailstat.c +makepath.o: makepath.c +memset.o: memset.c +mktime.o: mktime.c +netconn.o: netconn.c +netopen.o: netopen.c +oslib.o: oslib.c +pathcanon.o: pathcanon.c +pathphys.o: pathphys.c +rename.o: rename.c +setlinebuf.o: setlinebuf.c +shquote.o: shquote.c +shtty.o: shtty.c +snprintf.o: snprintf.c +spell.o: spell.c +strcasecmp.o: strcasecmp.c +strerror.o: strerror.c +strftime.o: strftime.c +strindex.o: strindex.c +stringlist.o: stringlist.c +stringvec.o: stringvec.c +strpbrk.o: strpbrk.c +strtod.o: strtod.c +strtoimax.o: strtoimax.c +strtol.o: strtol.c +strtoll.o: strtoll.c +strtoul.o: strtoul.c +strtoull.o: strtoull.c +strtoumax.o: strtoumax.c +strtrans.o: strtrans.c +times.o: times.c +timeval.o: timeval.c +tmpfile.o: tmpfile.c +vprint.o: vprint.c +xstrchr.o: xstrchr.c +zcatfd.o: zcatfd.c +zread.o: zread.c +zwrite.o: zwrite.c + +# dependencies for c files that include other c files +fmtullong.o: fmtulong.c +fmtumax.o: fmtulong.c +strtoll.o: strtol.c +strtoul.o: strtol.c +strtoull.o: strtol.c + +# all files in the library depend on config.h +clktck.o: ${BUILD_DIR}/config.h +clock.o: ${BUILD_DIR}/config.h +fmtullong.o: ${BUILD_DIR}/config.h +fmtulong.o: ${BUILD_DIR}/config.h +fmtumax.o: ${BUILD_DIR}/config.h +getcwd.o: ${BUILD_DIR}/config.h +getenv.o: ${BUILD_DIR}/config.h +inet_aton.o: ${BUILD_DIR}/config.h +itos.o: ${BUILD_DIR}/config.h +mailstat.o: ${BUILD_DIR}/config.h +makepath.o: ${BUILD_DIR}/config.h +memset.o: ${BUILD_DIR}/config.h +mktime.o: ${BUILD_DIR}/config.h +netconn.o: ${BUILD_DIR}/config.h +netopen.o: ${BUILD_DIR}/config.h +oslib.o: ${BUILD_DIR}/config.h +pathcanon.o: ${BUILD_DIR}/config.h +pathphys.o: ${BUILD_DIR}/config.h +rename.o: ${BUILD_DIR}/config.h +setlinebuf.o: ${BUILD_DIR}/config.h +shquote.o: ${BUILD_DIR}/config.h +shtty.o: ${BUILD_DIR}/config.h +snprintf.o: ${BUILD_DIR}/config.h +spell.o: ${BUILD_DIR}/config.h +strcasecmp.o: ${BUILD_DIR}/config.h +strerror.o: ${BUILD_DIR}/config.h +strftime.o: ${BUILD_DIR}/config.h +strindex.o: ${BUILD_DIR}/config.h +stringlist.o: ${BUILD_DIR}/config.h +stringvec.o: ${BUILD_DIR}/config.h +strpbrk.o: ${BUILD_DIR}/config.h +strtod.o: ${BUILD_DIR}/config.h +strtoimax.o: ${BUILD_DIR}/config.h +strtol.o: ${BUILD_DIR}/config.h +strtoll.o: ${BUILD_DIR}/config.h +strtoul.o: ${BUILD_DIR}/config.h +strtoull.o: ${BUILD_DIR}/config.h +strtoumax.o: ${BUILD_DIR}/config.h +strtrans.o: ${BUILD_DIR}/config.h +times.o: ${BUILD_DIR}/config.h +timeval.o: ${BUILD_DIR}/config.h +tmpfile.o: ${BUILD_DIR}/config.h +vprint.o: ${BUILD_DIR}/config.h +xstrchr.o: ${BUILD_DIR}/config.h +zcatfd.o: ${BUILD_DIR}/config.h +zread.o: ${BUILD_DIR}/config.h +zwrite.o: ${BUILD_DIR}/config.h + +clktck.o: ${topdir}/bashtypes.h + +getcwd.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +getcwd.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/posixdir.h +getcwd.o: ${BASHINCDIR}/memalloc.h ${BASHINCDIR}/ansi_stdlib.h + +getenv.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +getenv.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +getenv.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +getenv.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +getenv.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +getenv.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +getenv.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +getenv.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +getenv.o: ${BUILD_DIR}/version.h + +inet_aton.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +inet_aton.o: ${BASHINCDIR}/stdc.h + +itos.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +itos.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +itos.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +itos.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +itos.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +itos.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +itos.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +itos.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +makepath.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +makepath.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +makepath.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +makepath.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +makepath.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +makepath.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +makepath.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +makepath.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +netconn.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +netconn.o: ${topdir}/bashtypes.h + +netopen.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +netopen.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +netopen.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +netopen.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +netopen.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +netopen.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +netopen.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +netopen.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${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 +oslib.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +oslib.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +oslib.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +oslib.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +oslib.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +oslib.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h +oslib.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +oslib.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +pathcanon.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +pathcanon.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +pathcanon.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +pathcanon.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +pathcanon.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +pathcanon.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +pathcanon.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +pathcanon.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h +pathcanon.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +pathcanon.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +pathphys.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +pathphys.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +pathphys.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +pathphys.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +pathphys.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +pathphys.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +pathphys.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +pathphys.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h +pathphys.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +pathphys.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +rename.o: ${topdir}/bashtypes.h ${BASHINCDIR}/stdc.h +rename.o: ${BASHINCDIR}/posixstat.h + +setlinebuf.o: ${topdir}/xmalloc.h ${topdir}/bashansi.h +setlinebuf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/stdc.h + +shquote.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h + +shtty.o: ${BASHINCDIR}/shtty.h +shtty.o: ${BASHINCDIR}/stdc.h + +snprintf.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h ${topdir}/xmalloc.h +snprintf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +snprintf.o: ${BASHINCDIR}/typemax.h + +spell.o: ${topdir}/bashtypes.h +spell.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/posixdir.h +spell.o: ${BASHINCDIR}/ansi_stdlib.h + +strcasecmp.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +strcasecmp.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +strerror.o: ${topdir}/bashtypes.h +strerror.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +strerror.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +strerror.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +strerror.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +strerror.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +strerror.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +strerror.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +strindex.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +strindex.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +stringlist.o: ${topdir}/bashansi.h +stringlist.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +stringlist.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +stringlist.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +stringlist.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +stringlist.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +stringlist.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +stringlist.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +stringvec.o: ${topdir}/bashansi.h ${BASHINCDIR}/chartypes.h +stringvec.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +stringvec.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +stringvec.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +stringvec.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +stringvec.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +stringvec.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +stringvec.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +strpbrk.o: ${BASHINCDIR}/stdc.h + +strtod.o: ${topdir}/bashansi.h +strtod.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +strtoimax.o: ${BASHINCDIR}/stdc.h + +strtol.o: ${topdir}/bashansi.h +strtol.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtol.o: ${BASHINCDIR}/typemax.h + +strtoll.o: ${topdir}/bashansi.h +strtoll.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoll.o: ${BASHINCDIR}/typemax.h + +strtoul.o: ${topdir}/bashansi.h +strtoul.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoul.o: ${BASHINCDIR}/typemax.h + +strtoull.o: ${topdir}/bashansi.h +strtoull.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoull.o: ${BASHINCDIR}/typemax.h + +strtoumax.o: ${BASHINCDIR}/stdc.h + +strtrans.o: ${topdir}/bashansi.h +strtrans.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtrans.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +strtrans.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +strtrans.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +strtrans.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +strtrans.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +strtrans.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ${BUILD_DIR}/version.h + +times.o: ${BASHINCDIR}/systimes.h +times.o: ${BASHINCDIR}/posixtime.h + +timeval.o: ${BASHINCDIR}/posixtime.h + +tmpfile.o: ${topdir}/bashtypes.h +tmpfile.o: ${BASHINCDIR}/posixstat.h +tmpfile.o: ${BASHINCDIR}/filecntl.h + +clock.o: ${BASHINCDIR}/posixtime.h + +mailstat.o: ${topdir}/bashansi.h +mailstat.o: ${topdir}/bashtypes.h +mailstat.o: ${BASHINCDIR}/ansi_stdlib.h +mailstat.o: ${BASHINCDIR}/posixstat.h +mailstat.o: ${BASHINCDIR}/posixdir.h +mailstat.o: ${BASHINCDIR}/maxpath.h + +fmtulong.o: ${topdir}/bashansi.h +fmtulong.o: ${BASHINCDIR}/ansi_stdlib.h +fmtulong.o: ${BASHINCDIR}/chartypes.h +fmtulong.o: ${BASHINCDIR}/stdc.h +fmtulong.o: ${BASHINCDIR}/typemax.h +fmtulong.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +fmtullong.o: ${topdir}/bashansi.h +fmtullong.o: ${BASHINCDIR}/ansi_stdlib.h +fmtullong.o: ${BASHINCDIR}/chartypes.h +fmtullong.o: ${BASHINCDIR}/stdc.h +fmtullong.o: ${BASHINCDIR}/typemax.h +fmtullong.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +fmtumax.o: ${topdir}/bashansi.h +fmtumax.o: ${BASHINCDIR}/ansi_stdlib.h +fmtumax.o: ${BASHINCDIR}/chartypes.h +fmtumax.o: ${BASHINCDIR}/stdc.h +fmtumax.o: ${BASHINCDIR}/typemax.h +fmtumax.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +xstrchr.o: ${topdir}/bashansi.h +xstrchr.o: ${BASHINCDIR}/ansi_stdlib.h +xstrchr.o: ${BASHINCDIR}/shmbutil.h diff --git a/lib/sh/strnlen.c b/lib/sh/strnlen.c new file mode 100644 index 000000000..53e2fe2c0 --- /dev/null +++ b/lib/sh/strnlen.c @@ -0,0 +1,39 @@ +/* Copyright (C) 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 distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined (HAVE_STRNLEN) + +#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/lib/sh/strnlen.c~ b/lib/sh/strnlen.c~ new file mode 100644 index 000000000..3c493a883 --- /dev/null +++ b/lib/sh/strnlen.c~ @@ -0,0 +1,44 @@ +/* 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 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. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined (HAVE_STRPBRK) + +#include + +/* Find the first ocurrence in S of any character in ACCEPT. */ +char * +strpbrk (s, accept) + register const char *s; + register const char *accept; +{ + while (*s != '\0') + { + const char *a = accept; + while (*a != '\0') + if (*a++ == *s) + return (char *) s; + ++s; + } + + return 0; +} +#endif diff --git a/parse.y b/parse.y index 363430e5b..68d66dfed 100644 --- a/parse.y +++ b/parse.y @@ -50,6 +50,7 @@ #include "parser.h" #include "mailcheck.h" #include "test.h" +#include "builtins.h" #include "builtins/common.h" #include "builtins/builtext.h" @@ -1028,6 +1029,7 @@ timespec: TIME #define PST_ALEXPAND 0x0800 /* OK to expand aliases - unused */ #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ +#define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ /* Initial size to allocate for tokens, and the amount to grow them by. */ @@ -2567,6 +2569,8 @@ read_token (command) parser_state &= ~PST_ALEXPNEXT; #endif /* ALIAS */ + parser_state &= ~PST_ASSIGNOK; + return (character); } @@ -2580,6 +2584,8 @@ read_token (command) parser_state &= ~PST_ALEXPNEXT; #endif /* ALIAS */ + parser_state &= ~PST_ASSIGNOK; + peek_char = shell_getc (1); if (character == peek_char) { @@ -2607,6 +2613,7 @@ read_token (command) #if defined (ALIAS) parser_state &= ~PST_ALEXPNEXT; #endif /* ALIAS */ + return (SEMI_SEMI); case '&': @@ -3515,7 +3522,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 == '(') /* ) */ @@ -3642,6 +3649,14 @@ got_token: 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; + } + yylval.word = the_word; result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) diff --git a/parse.y~ b/parse.y~ new file mode 100644 index 000000000..75163c54e --- /dev/null +++ b/parse.y~ @@ -0,0 +1,4874 @@ +/* Yacc grammar for bash. */ + +/* Copyright (C) 1989-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file LICENSE. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +%{ +#include "config.h" + +#include "bashtypes.h" +#include "bashansi.h" + +#include "filecntl.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include +#include "chartypes.h" +#include + +#include "memalloc.h" + +#include "bashintl.h" + +#define NEED_STRFTIME_DECL /* used in externs.h */ + +#include "shell.h" +#include "trap.h" +#include "flags.h" +#include "parser.h" +#include "mailcheck.h" +#include "test.h" +#include "builtins.h" +#include "builtins/common.h" +#include "builtins/builtext.h" + +#include "shmbutil.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#endif /* READLINE */ + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif /* HISTORY */ + +#if defined (JOB_CONTROL) +# include "jobs.h" +#endif /* JOB_CONTROL */ + +#if defined (ALIAS) +# include "alias.h" +#else +typedef void *alias_t; +#endif /* ALIAS */ + +#if defined (PROMPT_STRING_DECODE) +# ifndef _MINIX +# include +# endif +# include +# if defined (TM_IN_SYS_TIME) +# include +# include +# endif /* TM_IN_SYS_TIME */ +# include "maxpath.h" +#endif /* PROMPT_STRING_DECODE */ + +#define RE_READ_TOKEN -99 +#define NO_EXPANSION -100 + +#ifdef DEBUG +# define YYDEBUG 1 +#else +# define YYDEBUG 0 +#endif + +#if defined (HANDLE_MULTIBYTE) +# define last_shell_getc_is_singlebyte \ + ((shell_input_line_index > 1) \ + ? shell_input_line_property[shell_input_line_index - 1] \ + : 1) +# define MBTEST(x) ((x) && last_shell_getc_is_singlebyte) +#else +# define last_shell_getc_is_singlebyte 1 +# define MBTEST(x) ((x)) +#endif + +#if defined (EXTENDED_GLOB) +extern int extended_glob; +#endif + +extern int eof_encountered; +extern int no_line_editing, running_under_emacs; +extern int current_command_number; +extern int sourcelevel; +extern int posixly_correct; +extern int last_command_exit_value; +extern int interrupt_immediately; +extern char *shell_name, *current_host_name; +extern char *dist_version; +extern int patch_level; +extern int dump_translatable_strings, dump_po_strings; +extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; +#if defined (BUFFERED_INPUT) +extern int bash_input_fd_changed; +#endif + +extern int errno; +/* **************************************************************** */ +/* */ +/* "Forward" declarations */ +/* */ +/* **************************************************************** */ + +#ifdef DEBUG +static void debug_parser __P((int)); +#endif + +static int yy_getc __P((void)); +static int yy_ungetc __P((int)); + +#if defined (READLINE) +static int yy_readline_get __P((void)); +static int yy_readline_unget __P((int)); +#endif + +static int yy_string_get __P((void)); +static int yy_string_unget __P((int)); +static int yy_stream_get __P((void)); +static int yy_stream_unget __P((int)); + +static int shell_getc __P((int)); +static void shell_ungetc __P((int)); +static void discard_until __P((int)); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) +static void push_string __P((char *, int, alias_t *)); +static void pop_string __P((void)); +static void free_string_list __P((void)); +#endif + +static char *read_a_line __P((int)); + +static int reserved_word_acceptable __P((int)); +static int yylex __P((void)); +static int alias_expand_token __P((char *)); +static int time_command_acceptable __P((void)); +static int special_case_tokens __P((char *)); +static int read_token __P((int)); +static char *parse_matched_pair __P((int, int, int, int *, int)); +#if defined (ARRAY_VARS) +static char *parse_compound_assignment __P((int *)); +#endif +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +static int parse_dparen __P((int)); +static int parse_arith_cmd __P((char **, int)); +#endif +#if defined (COND_COMMAND) +static void cond_error __P((void)); +static COND_COM *cond_expr __P((void)); +static COND_COM *cond_or __P((void)); +static COND_COM *cond_and __P((void)); +static COND_COM *cond_term __P((void)); +static int cond_skip_newlines __P((void)); +static COMMAND *parse_cond_command __P((void)); +#endif +#if defined (ARRAY_VARS) +static int token_is_assignment __P((char *, int)); +static int token_is_ident __P((char *, int)); +#endif +static int read_token_word __P((int)); +static void discard_parser_constructs __P((int)); + +static char *error_token_from_token __P((int)); +static char *error_token_from_text __P((void)); +static void print_offending_line __P((void)); +static void report_syntax_error __P((char *)); + +static void handle_eof_input_unit __P((void)); +static void prompt_again __P((void)); +#if 0 +static void reset_readline_prompt __P((void)); +#endif +static void print_prompt __P((void)); + +#if defined (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; +#else +# define set_line_mbstate() +#endif + +extern int yyerror __P((const char *)); + +#ifdef DEBUG +extern int yydebug; +#endif + +/* Default prompt strings */ +char *primary_prompt = PPROMPT; +char *secondary_prompt = SPROMPT; + +/* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ +char *ps1_prompt, *ps2_prompt; + +/* Handle on the current prompt string. Indirectly points through + ps1_ or ps2_prompt. */ +char **prompt_string_pointer = (char **)NULL; +char *current_prompt_string; + +/* Non-zero means we expand aliases in commands. */ +int expand_aliases = 0; + +/* If non-zero, the decoded prompt string undergoes parameter and + variable substitution, command substitution, arithmetic substitution, + string expansion, process substitution, and quote removal in + decode_prompt_string. */ +int promptvars = 1; + +/* If non-zero, $'...' and $"..." are expanded when they appear within + a ${...} expansion, even when the expansion appears within double + quotes. */ +int extended_quote = 1; + +/* The decoded prompt string. Used if READLINE is not defined or if + editing is turned off. Analogous to current_readline_prompt. */ +static char *current_decoded_prompt; + +/* The number of lines read from input while creating the current command. */ +int current_command_line_count; + +/* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +static REDIRECT *redir_stack[10]; +int need_here_doc; + +/* Where shell input comes from. History expansion is performed on each + line when the shell is interactive. */ +static char *shell_input_line = (char *)NULL; +static int shell_input_line_index; +static int shell_input_line_size; /* Amount allocated for shell_input_line. */ +static int shell_input_line_len; /* strlen (shell_input_line) */ + +/* Either zero or EOF. */ +static int shell_input_line_terminator; + +/* The line number in a script on which a function definition starts. */ +static int function_dstart; + +/* The line number in a script on which a function body starts. */ +static int function_bstart; + +/* The line number in a script at which an arithmetic for command starts. */ +static int arith_for_lineno; + +/* The line number in a script where the word in a `case WORD', `select WORD' + or `for WORD' begins. This is a nested command maximum, since the array + index is decremented after a case, select, or for command is parsed. */ +#define MAX_CASE_NEST 128 +static int word_lineno[MAX_CASE_NEST]; +static int word_top = -1; + +/* If non-zero, it is the token that we want read_token to return + regardless of what text is (or isn't) present to be read. This + is reset by read_token. If token_to_read == WORD or + ASSIGNMENT_WORD, yylval.word should be set to word_desc_to_read. */ +static int token_to_read; +static WORD_DESC *word_desc_to_read; + +static REDIRECTEE redir; +%} + +%union { + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ + WORD_LIST *word_list; + COMMAND *command; + REDIRECT *redirect; + ELEMENT element; + PATTERN_LIST *pattern; +} + +/* Reserved words. Members of the first group are only recognized + in the case that they are preceded by a list_terminator. Members + of the second group are for [[...]] commands. Members of the + third group are recognized only under special circumstances. */ +%token IF THEN ELSE ELIF FI CASE ESAC FOR SELECT WHILE UNTIL DO DONE FUNCTION +%token COND_START COND_END COND_ERROR +%token IN BANG TIME TIMEOPT + +/* More general tokens. yylex () knows how to make these. */ +%token WORD ASSIGNMENT_WORD +%token NUMBER +%token ARITH_CMD ARITH_FOR_EXPRS +%token COND_CMD +%token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND LESS_LESS_LESS +%token GREATER_AND SEMI_SEMI LESS_LESS_MINUS AND_GREATER LESS_GREATER +%token GREATER_BAR + +/* The types that the various syntactical units return. */ + +%type inputunit command pipeline pipeline_command +%type list list0 list1 compound_list simple_list simple_list1 +%type simple_command shell_command +%type for_command select_command case_command group_command +%type arith_command +%type cond_command +%type arith_for_command +%type function_def function_body if_command elif_clause subshell +%type redirection redirection_list +%type simple_command_element +%type word_list pattern +%type pattern_list case_clause_sequence case_clause +%type timespec +%type list_terminator + +%start inputunit + +%left '&' ';' '\n' yacc_EOF +%left AND_AND OR_OR +%right '|' +%% + +inputunit: simple_list simple_list_terminator + { + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ + global_command = $1; + eof_encountered = 0; + /* discard_parser_constructs (0); */ + YYACCEPT; + } + | '\n' + { + /* Case of regular command, but not a very + interesting one. Return a NULL command. */ + global_command = (COMMAND *)NULL; + YYACCEPT; + } + | error '\n' + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; + eof_encountered = 0; + /* discard_parser_constructs (1); */ + if (interactive) + { + YYACCEPT; + } + else + { + YYABORT; + } + } + | yacc_EOF + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ + global_command = (COMMAND *)NULL; + handle_eof_input_unit (); + YYACCEPT; + } + ; + +word_list: WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + | word_list WORD + { $$ = make_word_list ($2, $1); } + ; + +redirection: '>' WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_output_direction, redir); + } + | '<' WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_input_direction, redir); + } + | NUMBER '>' WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_output_direction, redir); + } + | NUMBER '<' WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_input_direction, redir); + } + | GREATER_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_appending_to, redir); + } + | NUMBER GREATER_GREATER WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_appending_to, redir); + } + | LESS_LESS WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | LESS_LESS_LESS WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_reading_string, redir); + } + | NUMBER LESS_LESS_LESS WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_reading_string, redir); + } + | LESS_AND NUMBER + { + redir.dest = $2; + $$ = make_redirection (0, r_duplicating_input, redir); + } + | NUMBER LESS_AND NUMBER + { + redir.dest = $3; + $$ = make_redirection ($1, r_duplicating_input, redir); + } + | GREATER_AND NUMBER + { + redir.dest = $2; + $$ = make_redirection (1, r_duplicating_output, redir); + } + | NUMBER GREATER_AND NUMBER + { + redir.dest = $3; + $$ = make_redirection ($1, r_duplicating_output, redir); + } + | LESS_AND WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_duplicating_input_word, redir); + } + | NUMBER LESS_AND WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_duplicating_input_word, redir); + } + | GREATER_AND WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_duplicating_output_word, redir); + } + | NUMBER GREATER_AND WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_duplicating_output_word, redir); + } + | LESS_LESS_MINUS WORD + { + redir.filename = $2; + $$ = make_redirection + (0, r_deblank_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS_MINUS WORD + { + redir.filename = $3; + $$ = make_redirection + ($1, r_deblank_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | GREATER_AND '-' + { + redir.dest = 0; + $$ = make_redirection (1, r_close_this, redir); + } + | NUMBER GREATER_AND '-' + { + redir.dest = 0; + $$ = make_redirection ($1, r_close_this, redir); + } + | LESS_AND '-' + { + redir.dest = 0; + $$ = make_redirection (0, r_close_this, redir); + } + | NUMBER LESS_AND '-' + { + redir.dest = 0; + $$ = make_redirection ($1, r_close_this, redir); + } + | AND_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_err_and_out, redir); + } + | NUMBER LESS_GREATER WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_input_output, redir); + } + | LESS_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_input_output, redir); + } + | GREATER_BAR WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_output_force, redir); + } + | NUMBER GREATER_BAR WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_output_force, redir); + } + ; + +simple_command_element: WORD + { $$.word = $1; $$.redirect = 0; } + | ASSIGNMENT_WORD + { $$.word = $1; $$.redirect = 0; } + | redirection + { $$.redirect = $1; $$.word = 0; } + ; + +redirection_list: redirection + { + $$ = $1; + } + | redirection_list redirection + { + register REDIRECT *t; + + for (t = $1; t->next; t = t->next) + ; + t->next = $2; + $$ = $1; + } + ; + +simple_command: simple_command_element + { $$ = make_simple_command ($1, (COMMAND *)NULL); } + | simple_command simple_command_element + { $$ = make_simple_command ($2, $1); } + ; + +command: simple_command + { $$ = clean_simple_command ($1); } + | shell_command + { $$ = $1; } + | shell_command redirection_list + { + COMMAND *tc; + + tc = $1; + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $2; + } + else + tc->redirects = $2; + $$ = $1; + } + | function_def + { $$ = $1; } + ; + +shell_command: for_command + { $$ = $1; } + | case_command + { $$ = $1; } + | WHILE compound_list DO compound_list DONE + { $$ = make_while_command ($2, $4); } + | UNTIL compound_list DO compound_list DONE + { $$ = make_until_command ($2, $4); } + | select_command + { $$ = $1; } + | if_command + { $$ = $1; } + | subshell + { $$ = $1; } + | group_command + { $$ = $1; } + | arith_command + { $$ = $1; } + | cond_command + { $$ = $1; } + | arith_for_command + { $$ = $1; } + ; + +for_command: FOR WORD newline_list DO compound_list DONE + { + $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD newline_list '{' compound_list '}' + { + $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD ';' newline_list DO compound_list DONE + { + $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD ';' newline_list '{' compound_list '}' + { + $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE + { + $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' + { + $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE + { + $$ = make_for_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' + { + $$ = make_for_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + ; + +arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE + { + $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if (word_top > 0) word_top--; + } + | FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' + { + $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if (word_top > 0) word_top--; + } + | FOR ARITH_FOR_EXPRS DO compound_list DONE + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if (word_top > 0) word_top--; + } + | FOR ARITH_FOR_EXPRS '{' compound_list '}' + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if (word_top > 0) word_top--; + } + ; + +select_command: SELECT WORD newline_list DO list DONE + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD newline_list '{' list '}' + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD ';' newline_list DO list DONE + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD ';' newline_list '{' list '}' + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE + { + $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}' + { + $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + ; + +case_command: CASE WORD newline_list IN newline_list ESAC + { + $$ = make_case_command ($2, (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | CASE WORD newline_list IN case_clause_sequence newline_list ESAC + { + $$ = make_case_command ($2, $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | CASE WORD newline_list IN case_clause ESAC + { + $$ = make_case_command ($2, $5, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + ; + +function_def: WORD '(' ')' newline_list function_body + { $$ = make_function_def ($1, $5, function_dstart, function_bstart); } + + | FUNCTION WORD '(' ')' newline_list function_body + { $$ = make_function_def ($2, $6, function_dstart, function_bstart); } + + | FUNCTION WORD newline_list function_body + { $$ = make_function_def ($2, $4, function_dstart, function_bstart); } + ; + + +function_body: shell_command + { $$ = $1; } + | shell_command redirection_list + { + COMMAND *tc; + + tc = $1; + /* According to Posix.2 3.9.5, redirections + specified after the body of a function should + be attached to the function and performed when + the function is executed, not as part of the + function definition command. */ + /* XXX - I don't think it matters, but we might + want to change this in the future to avoid + problems differentiating between a function + definition with a redirection and a function + definition containing a single command with a + redirection. The two are semantically equivalent, + though -- the only difference is in how the + command printing code displays the redirections. */ + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $2; + } + else + tc->redirects = $2; + $$ = $1; + } + ; + +subshell: '(' compound_list ')' + { + $$ = make_subshell_command ($2); + $$->flags |= CMD_WANT_SUBSHELL; + } + ; + +if_command: IF compound_list THEN compound_list FI + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + | IF compound_list THEN compound_list ELSE compound_list FI + { $$ = make_if_command ($2, $4, $6); } + | IF compound_list THEN compound_list elif_clause FI + { $$ = make_if_command ($2, $4, $5); } + ; + + +group_command: '{' compound_list '}' + { $$ = make_group_command ($2); } + ; + +arith_command: ARITH_CMD + { $$ = make_arith_command ($1); } + ; + +cond_command: COND_START COND_CMD COND_END + { $$ = $2; } + ; + +elif_clause: ELIF compound_list THEN compound_list + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + | ELIF compound_list THEN compound_list ELSE compound_list + { $$ = make_if_command ($2, $4, $6); } + | ELIF compound_list THEN compound_list elif_clause + { $$ = make_if_command ($2, $4, $5); } + ; + +case_clause: pattern_list + | case_clause_sequence pattern_list + { $2->next = $1; $$ = $2; } + ; + +pattern_list: newline_list pattern ')' compound_list + { $$ = make_pattern_list ($2, $4); } + | newline_list pattern ')' newline_list + { $$ = make_pattern_list ($2, (COMMAND *)NULL); } + | newline_list '(' pattern ')' compound_list + { $$ = make_pattern_list ($3, $5); } + | newline_list '(' pattern ')' newline_list + { $$ = make_pattern_list ($3, (COMMAND *)NULL); } + ; + +case_clause_sequence: pattern_list SEMI_SEMI + | case_clause_sequence pattern_list SEMI_SEMI + { $2->next = $1; $$ = $2; } + ; + +pattern: WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + | pattern '|' WORD + { $$ = make_word_list ($3, $1); } + ; + +/* A list allows leading or trailing newlines and + newlines as operators (equivalent to semicolons). + It must end with a newline or semicolon. + Lists are used within commands such as if, for, while. */ + +list: newline_list list0 + { + $$ = $2; + if (need_here_doc) + gather_here_documents (); + } + ; + +compound_list: list + | newline_list list1 + { + $$ = $2; + } + ; + +list0: list1 '\n' newline_list + | list1 '&' newline_list + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, (COMMAND *)NULL, '&'); + else + $$ = command_connect ($1, (COMMAND *)NULL, '&'); + } + | list1 ';' newline_list + + ; + +list1: list1 AND_AND newline_list list1 + { $$ = command_connect ($1, $4, AND_AND); } + | list1 OR_OR newline_list list1 + { $$ = command_connect ($1, $4, OR_OR); } + | list1 '&' newline_list list1 + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, $4, '&'); + else + $$ = command_connect ($1, $4, '&'); + } + | list1 ';' newline_list list1 + { $$ = command_connect ($1, $4, ';'); } + | list1 '\n' newline_list list1 + { $$ = command_connect ($1, $4, ';'); } + | pipeline_command + { $$ = $1; } + ; + +simple_list_terminator: '\n' + | yacc_EOF + ; + +list_terminator:'\n' + { $$ = '\n'; } + | ';' + { $$ = ';'; } + | yacc_EOF + { $$ = yacc_EOF; } + ; + +newline_list: + | newline_list '\n' + ; + +/* A simple_list is a list that contains no significant newlines + and no leading or trailing newlines. Newlines are allowed + only following operators, where they are not significant. + + This is what an inputunit consists of. */ + +simple_list: simple_list1 + { + $$ = $1; + if (need_here_doc) + gather_here_documents (); + } + | simple_list1 '&' + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, (COMMAND *)NULL, '&'); + else + $$ = command_connect ($1, (COMMAND *)NULL, '&'); + if (need_here_doc) + gather_here_documents (); + } + | simple_list1 ';' + { + $$ = $1; + if (need_here_doc) + gather_here_documents (); + } + ; + +simple_list1: simple_list1 AND_AND newline_list simple_list1 + { $$ = command_connect ($1, $4, AND_AND); } + | simple_list1 OR_OR newline_list simple_list1 + { $$ = command_connect ($1, $4, OR_OR); } + | simple_list1 '&' simple_list1 + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, $3, '&'); + else + $$ = command_connect ($1, $3, '&'); + } + | simple_list1 ';' simple_list1 + { $$ = command_connect ($1, $3, ';'); } + + | pipeline_command + { $$ = $1; } + ; + +pipeline_command: pipeline + { $$ = $1; } + | BANG pipeline + { + $2->flags |= CMD_INVERT_RETURN; + $$ = $2; + } + | timespec pipeline + { + $2->flags |= $1; + $$ = $2; + } + | timespec BANG pipeline + { + $3->flags |= $1|CMD_INVERT_RETURN; + $$ = $3; + } + | BANG timespec pipeline + { + $3->flags |= $2|CMD_INVERT_RETURN; + $$ = $3; + } + | timespec list_terminator + { + ELEMENT x; + + /* Boy, this is unclean. `time' by itself can + time a null command. We cheat and push a + newline back if the list_terminator was a newline + to avoid the double-newline problem (one to + terminate this, one to terminate the command) */ + x.word = 0; + x.redirect = 0; + $$ = make_simple_command (x, (COMMAND *)NULL); + $$->flags |= $1; + /* XXX - let's cheat and push a newline back */ + if ($2 == '\n') + token_to_read = '\n'; + } + + ; + +pipeline: + pipeline '|' newline_list pipeline + { $$ = command_connect ($1, $4, '|'); } + | command + { $$ = $1; } + ; + +timespec: TIME + { $$ = CMD_TIME_PIPELINE; } + | TIME TIMEOPT + { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + ; +%% + +/* Possible states for the parser that require it to do special things. */ +#define PST_CASEPAT 0x0001 /* in a case pattern list */ +#define PST_ALEXPNEXT 0x0002 /* expand next word for aliases */ +#define PST_ALLOWOPNBRC 0x0004 /* allow open brace for function def */ +#define PST_NEEDCLOSBRC 0x0008 /* need close brace */ +#define PST_DBLPAREN 0x0010 /* double-paren parsing */ +#define PST_SUBSHELL 0x0020 /* ( ... ) subshell */ +#define PST_CMDSUBST 0x0040 /* $( ... ) command substitution */ +#define PST_CASESTMT 0x0080 /* parsing a case statement */ +#define PST_CONDCMD 0x0100 /* parsing a [[...]] command */ +#define PST_CONDEXPR 0x0200 /* parsing the guts of [[...]] */ +#define PST_ARITHFOR 0x0400 /* parsing an arithmetic for command */ +#define PST_ALEXPAND 0x0800 /* OK to expand aliases - unused */ +#define PST_CMDTOKEN 0x1000 /* command token OK - unused */ +#define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ +#define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ + +/* Initial size to allocate for tokens, and the + amount to grow them by. */ +#define TOKEN_DEFAULT_INITIAL_SIZE 496 +#define TOKEN_DEFAULT_GROW_SIZE 512 + +/* Should we call prompt_again? */ +#define SHOULD_PROMPT() \ + (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) + +#if defined (ALIAS) +# define expanding_alias() (pushed_string_list && pushed_string_list->expander) +#else +# define expanding_alias() 0 +#endif + +/* The token currently being read. */ +static int current_token; + +/* The last read token, or NULL. read_token () uses this for context + checking. */ +static int last_read_token; + +/* The token read prior to last_read_token. */ +static int token_before_that; + +/* The token read prior to token_before_that. */ +static int two_tokens_ago; + +/* The current parser state. */ +static int parser_state; + +/* Global var is non-zero when end of file has been reached. */ +int EOF_Reached = 0; + +#ifdef DEBUG +static void +debug_parser (i) + int i; +{ +#if YYDEBUG != 0 + yydebug = i; +#endif +} +#endif + +/* yy_getc () returns the next available character from input or EOF. + yy_ungetc (c) makes `c' the next character to read. + init_yy_io (get, unget, type, location) makes the function GET the + installed function for getting the next character, makes UNGET the + installed function for un-getting a character, sets the type of stream + (either string or file) from TYPE, and makes LOCATION point to where + the input is coming from. */ + +/* Unconditionally returns end-of-file. */ +int +return_EOF () +{ + return (EOF); +} + +/* Variable containing the current get and unget functions. + See ./input.h for a clearer description. */ +BASH_INPUT bash_input; + +/* Set all of the fields in BASH_INPUT to NULL. Free bash_input.name if it + is non-null, avoiding a memory leak. */ +void +initialize_bash_input () +{ + bash_input.type = st_none; + FREE (bash_input.name); + bash_input.name = (char *)NULL; + bash_input.location.file = (FILE *)NULL; + bash_input.location.string = (char *)NULL; + bash_input.getter = (sh_cget_func_t *)NULL; + bash_input.ungetter = (sh_cunget_func_t *)NULL; +} + +/* Set the contents of the current bash input stream from + GET, UNGET, TYPE, NAME, and LOCATION. */ +void +init_yy_io (get, unget, type, name, location) + sh_cget_func_t *get; + sh_cunget_func_t *unget; + enum stream_type type; + const char *name; + INPUT_STREAM location; +{ + bash_input.type = type; + FREE (bash_input.name); + bash_input.name = name ? savestring (name) : (char *)NULL; + + /* XXX */ +#if defined (CRAY) + memcpy((char *)&bash_input.location.string, (char *)&location.string, sizeof(location)); +#else + bash_input.location = location; +#endif + bash_input.getter = get; + bash_input.ungetter = unget; +} + +char * +yy_input_name () +{ + return (bash_input.name ? bash_input.name : "stdin"); +} + +/* Call this to get the next character of input. */ +static int +yy_getc () +{ + return (*(bash_input.getter)) (); +} + +/* Call this to unget C. That is, to make C the next character + to be read. */ +static int +yy_ungetc (c) + int c; +{ + return (*(bash_input.ungetter)) (c); +} + +#if defined (BUFFERED_INPUT) +#ifdef INCLUDE_UNUSED +int +input_file_descriptor () +{ + switch (bash_input.type) + { + case st_stream: + return (fileno (bash_input.location.file)); + case st_bstream: + return (bash_input.location.buffered_fd); + case st_stdin: + default: + return (fileno (stdin)); + } +} +#endif +#endif /* BUFFERED_INPUT */ + +/* **************************************************************** */ +/* */ +/* Let input be read from readline (). */ +/* */ +/* **************************************************************** */ + +#if defined (READLINE) +char *current_readline_prompt = (char *)NULL; +char *current_readline_line = (char *)NULL; +int current_readline_line_index = 0; + +static int +yy_readline_get () +{ + SigHandler *old_sigint; + int line_len; + unsigned char c; + + if (!current_readline_line) + { + if (!bash_readline_initialized) + initialize_readline (); + +#if defined (JOB_CONTROL) + if (job_control) + give_terminal_to (shell_pgrp, 0); +#endif /* JOB_CONTROL */ + + old_sigint = (SigHandler *)NULL; + if (signal_is_ignored (SIGINT) == 0) + { + old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); + interrupt_immediately++; + } + + current_readline_line = readline (current_readline_prompt ? + current_readline_prompt : ""); + + if (signal_is_ignored (SIGINT) == 0 && old_sigint) + { + interrupt_immediately--; + set_signal_handler (SIGINT, old_sigint); + } + +#if 0 + /* Reset the prompt to the decoded value of prompt_string_pointer. */ + reset_readline_prompt (); +#endif + + if (current_readline_line == 0) + return (EOF); + + current_readline_line_index = 0; + line_len = strlen (current_readline_line); + + current_readline_line = (char *)xrealloc (current_readline_line, 2 + line_len); + current_readline_line[line_len++] = '\n'; + current_readline_line[line_len] = '\0'; + } + + if (current_readline_line[current_readline_line_index] == 0) + { + free (current_readline_line); + current_readline_line = (char *)NULL; + return (yy_readline_get ()); + } + else + { + c = current_readline_line[current_readline_line_index++]; + return (c); + } +} + +static int +yy_readline_unget (c) + int c; +{ + if (current_readline_line_index && current_readline_line) + current_readline_line[--current_readline_line_index] = c; + return (c); +} + +void +with_input_from_stdin () +{ + INPUT_STREAM location; + + if (bash_input.type != st_stdin && stream_on_stack (st_stdin) == 0) + { + location.string = current_readline_line; + init_yy_io (yy_readline_get, yy_readline_unget, + st_stdin, "readline stdin", location); + } +} + +#else /* !READLINE */ + +void +with_input_from_stdin () +{ + with_input_from_stream (stdin, "stdin"); +} +#endif /* !READLINE */ + +/* **************************************************************** */ +/* */ +/* Let input come from STRING. STRING is zero terminated. */ +/* */ +/* **************************************************************** */ + +static int +yy_string_get () +{ + register char *string; + register unsigned char c; + + string = bash_input.location.string; + + /* If the string doesn't exist, or is empty, EOF found. */ + if (string && *string) + { + c = *string++; + bash_input.location.string = string; + return (c); + } + else + return (EOF); +} + +static int +yy_string_unget (c) + int c; +{ + *(--bash_input.location.string) = c; + return (c); +} + +void +with_input_from_string (string, name) + char *string; + const char *name; +{ + INPUT_STREAM location; + + location.string = string; + init_yy_io (yy_string_get, yy_string_unget, st_string, name, location); +} + +/* **************************************************************** */ +/* */ +/* Let input come from STREAM. */ +/* */ +/* **************************************************************** */ + +/* These two functions used to test the value of the HAVE_RESTARTABLE_SYSCALLS + define, and just use getc/ungetc if it was defined, but since bash + installs its signal handlers without the SA_RESTART flag, some signals + (like SIGCHLD, SIGWINCH, etc.) received during a read(2) will not cause + the read to be restarted. We need to restart it ourselves. */ + +static int +yy_stream_get () +{ + int result; + + result = EOF; + if (bash_input.location.file) + result = getc_with_restart (bash_input.location.file); + + return (result); +} + +static int +yy_stream_unget (c) + int c; +{ + return (ungetc_with_restart (c, bash_input.location.file)); +} + +void +with_input_from_stream (stream, name) + FILE *stream; + const char *name; +{ + INPUT_STREAM location; + + location.file = stream; + init_yy_io (yy_stream_get, yy_stream_unget, st_stream, name, location); +} + +typedef struct stream_saver { + struct stream_saver *next; + BASH_INPUT bash_input; + int line; +#if defined (BUFFERED_INPUT) + BUFFERED_STREAM *bstream; +#endif /* BUFFERED_INPUT */ +} STREAM_SAVER; + +/* The globally known line number. */ +int line_number = 0; + +#if defined (COND_COMMAND) +static int cond_lineno; +static int cond_token; +#endif + +STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL; + +void +push_stream (reset_lineno) + int reset_lineno; +{ + STREAM_SAVER *saver = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER)); + + xbcopy ((char *)&bash_input, (char *)&(saver->bash_input), sizeof (BASH_INPUT)); + +#if defined (BUFFERED_INPUT) + saver->bstream = (BUFFERED_STREAM *)NULL; + /* If we have a buffered stream, clear out buffers[fd]. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + saver->bstream = set_buffered_stream (bash_input.location.buffered_fd, + (BUFFERED_STREAM *)NULL); +#endif /* BUFFERED_INPUT */ + + saver->line = line_number; + bash_input.name = (char *)NULL; + saver->next = stream_list; + stream_list = saver; + EOF_Reached = 0; + if (reset_lineno) + line_number = 0; +} + +void +pop_stream () +{ + if (!stream_list) + EOF_Reached = 1; + else + { + STREAM_SAVER *saver = stream_list; + + EOF_Reached = 0; + stream_list = stream_list->next; + + init_yy_io (saver->bash_input.getter, + saver->bash_input.ungetter, + saver->bash_input.type, + saver->bash_input.name, + saver->bash_input.location); + +#if defined (BUFFERED_INPUT) + /* If we have a buffered stream, restore buffers[fd]. */ + /* If the input file descriptor was changed while this was on the + save stack, update the buffered fd to the new file descriptor and + re-establish the buffer <-> bash_input fd correspondence. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + { + if (bash_input_fd_changed) + { + bash_input_fd_changed = 0; + if (default_buffered_input >= 0) + { + bash_input.location.buffered_fd = default_buffered_input; + saver->bstream->b_fd = default_buffered_input; + SET_CLOSE_ON_EXEC (default_buffered_input); + } + } + /* XXX could free buffered stream returned as result here. */ + set_buffered_stream (bash_input.location.buffered_fd, saver->bstream); + } +#endif /* BUFFERED_INPUT */ + + line_number = saver->line; + + FREE (saver->bash_input.name); + free (saver); + } +} + +/* Return 1 if a stream of type TYPE is saved on the stack. */ +int +stream_on_stack (type) + enum stream_type type; +{ + register STREAM_SAVER *s; + + for (s = stream_list; s; s = s->next) + if (s->bash_input.type == type) + return 1; + return 0; +} + +/* Save the current token state and return it in a malloced array. */ +int * +save_token_state () +{ + int *ret; + + ret = (int *)xmalloc (3 * sizeof (int)); + ret[0] = last_read_token; + ret[1] = token_before_that; + ret[2] = two_tokens_ago; + return ret; +} + +void +restore_token_state (ts) + int *ts; +{ + if (ts == 0) + return; + last_read_token = ts[0]; + token_before_that = ts[1]; + two_tokens_ago = ts[2]; +} + +/* + * This is used to inhibit alias expansion and reserved word recognition + * inside case statement pattern lists. A `case statement pattern list' is: + * + * everything between the `in' in a `case word in' and the next ')' + * or `esac' + * everything between a `;;' and the next `)' or `esac' + */ + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + +#define END_OF_ALIAS 0 + +/* + * Pseudo-global variables used in implementing token-wise alias expansion. + */ + +/* + * Pushing and popping strings. This works together with shell_getc to + * implement alias expansion on a per-token basis. + */ + +typedef struct string_saver { + struct string_saver *next; + int expand_alias; /* Value to set expand_alias to when string is popped. */ + char *saved_line; +#if defined (ALIAS) + alias_t *expander; /* alias that caused this line to be pushed. */ +#endif + int saved_line_size, saved_line_index, saved_line_terminator; +} STRING_SAVER; + +STRING_SAVER *pushed_string_list = (STRING_SAVER *)NULL; + +/* + * Push the current shell_input_line onto a stack of such lines and make S + * the current input. Used when expanding aliases. EXPAND is used to set + * the value of expand_next_token when the string is popped, so that the + * word after the alias in the original line is handled correctly when the + * alias expands to multiple words. TOKEN is the token that was expanded + * into S; it is saved and used to prevent infinite recursive expansion. + */ +static void +push_string (s, expand, ap) + char *s; + int expand; + alias_t *ap; +{ + STRING_SAVER *temp = (STRING_SAVER *)xmalloc (sizeof (STRING_SAVER)); + + temp->expand_alias = expand; + temp->saved_line = shell_input_line; + temp->saved_line_size = shell_input_line_size; + temp->saved_line_index = shell_input_line_index; + temp->saved_line_terminator = shell_input_line_terminator; +#if defined (ALIAS) + temp->expander = ap; +#endif + temp->next = pushed_string_list; + pushed_string_list = temp; + +#if defined (ALIAS) + if (ap) + ap->flags |= AL_BEINGEXPANDED; +#endif + + shell_input_line = s; + shell_input_line_size = strlen (s); + shell_input_line_index = 0; + shell_input_line_terminator = '\0'; +#if 0 + parser_state &= ~PST_ALEXPNEXT; /* XXX */ +#endif + + set_line_mbstate (); +} + +/* + * Make the top of the pushed_string stack be the current shell input. + * Only called when there is something on the stack. Called from shell_getc + * when it thinks it has consumed the string generated by an alias expansion + * and needs to return to the original input line. + */ +static void +pop_string () +{ + STRING_SAVER *t; + + FREE (shell_input_line); + shell_input_line = pushed_string_list->saved_line; + shell_input_line_index = pushed_string_list->saved_line_index; + shell_input_line_size = pushed_string_list->saved_line_size; + shell_input_line_terminator = pushed_string_list->saved_line_terminator; + + if (pushed_string_list->expand_alias) + parser_state |= PST_ALEXPNEXT; + else + parser_state &= ~PST_ALEXPNEXT; + + t = pushed_string_list; + pushed_string_list = pushed_string_list->next; + +#if defined (ALIAS) + if (t->expander) + t->expander->flags &= ~AL_BEINGEXPANDED; +#endif + + free ((char *)t); + + set_line_mbstate (); +} + +static void +free_string_list () +{ + register STRING_SAVER *t, *t1; + + for (t = pushed_string_list; t; ) + { + t1 = t->next; + FREE (t->saved_line); +#if defined (ALIAS) + if (t->expander) + t->expander->flags &= ~AL_BEINGEXPANDED; +#endif + free ((char *)t); + t = t1; + } + pushed_string_list = (STRING_SAVER *)NULL; +} + +#endif /* ALIAS || DPAREN_ARITHMETIC */ + +void +free_pushed_string_input () +{ +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + free_string_list (); +#endif +} + +/* Return a line of text, taken from wherever yylex () reads input. + If there is no more input, then we return NULL. If REMOVE_QUOTED_NEWLINE + is non-zero, we remove unquoted \ pairs. This is used by + read_secondary_line to read here documents. */ +static char * +read_a_line (remove_quoted_newline) + int remove_quoted_newline; +{ + static char *line_buffer = (char *)NULL; + static int buffer_size = 0; + int indx = 0, c, peekc, pass_next; + +#if defined (READLINE) + if (no_line_editing && SHOULD_PROMPT ()) +#else + if (SHOULD_PROMPT ()) +#endif + print_prompt (); + + pass_next = 0; + while (1) + { + c = yy_getc (); + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + /* Ignore null bytes in input. */ + if (c == 0) + { +#if 0 + internal_warning ("read_a_line: ignored null byte in input"); +#endif + continue; + } + + /* If there is no more input, then we return NULL. */ + if (c == EOF) + { + if (interactive && bash_input.type == st_stream) + clearerr (stdin); + if (indx == 0) + return ((char *)NULL); + c = '\n'; + } + + /* `+2' in case the final character in the buffer is a newline. */ + RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); + + /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a + here document with an unquoted delimiter. In this case, + the line will be expanded as if it were in double quotes. + We allow a backslash to escape the next character, but we + need to treat the backslash specially only if a backslash + quoting a backslash-newline pair appears in the line. */ + if (pass_next) + { + line_buffer[indx++] = c; + pass_next = 0; + } + else if (c == '\\' && remove_quoted_newline) + { + peekc = yy_getc (); + if (peekc == '\n') + { + line_number++; + continue; /* Make the unquoted \ pair disappear. */ + } + else + { + yy_ungetc (peekc); + pass_next = 1; + line_buffer[indx++] = c; /* Preserve the backslash. */ + } + } + else + line_buffer[indx++] = c; + + if (c == '\n') + { + line_buffer[indx] = '\0'; + return (line_buffer); + } + } +} + +/* Return a line as in read_a_line (), but insure that the prompt is + the secondary prompt. This is used to read the lines of a here + document. REMOVE_QUOTED_NEWLINE is non-zero if we should remove + newlines quoted with backslashes while reading the line. It is + non-zero unless the delimiter of the here document was quoted. */ +char * +read_secondary_line (remove_quoted_newline) + int remove_quoted_newline; +{ + prompt_string_pointer = &ps2_prompt; + if (SHOULD_PROMPT()) + prompt_again (); + return (read_a_line (remove_quoted_newline)); +} + +/* **************************************************************** */ +/* */ +/* YYLEX () */ +/* */ +/* **************************************************************** */ + +/* Reserved words. These are only recognized as the first word of a + command. */ +STRING_INT_ALIST word_token_alist[] = { + { "if", IF }, + { "then", THEN }, + { "else", ELSE }, + { "elif", ELIF }, + { "fi", FI }, + { "case", CASE }, + { "esac", ESAC }, + { "for", FOR }, +#if defined (SELECT_COMMAND) + { "select", SELECT }, +#endif + { "while", WHILE }, + { "until", UNTIL }, + { "do", DO }, + { "done", DONE }, + { "in", IN }, + { "function", FUNCTION }, +#if defined (COMMAND_TIMING) + { "time", TIME }, +#endif + { "{", '{' }, + { "}", '}' }, + { "!", BANG }, +#if defined (COND_COMMAND) + { "[[", COND_START }, + { "]]", COND_END }, +#endif + { (char *)NULL, 0} +}; + +/* other tokens that can be returned by read_token() */ +STRING_INT_ALIST other_token_alist[] = { + /* Multiple-character tokens with special values */ + { "-p", TIMEOPT }, + { "&&", AND_AND }, + { "||", OR_OR }, + { ">>", GREATER_GREATER }, + { "<<", LESS_LESS }, + { "<&", LESS_AND }, + { ">&", GREATER_AND }, + { ";;", SEMI_SEMI }, + { "<<-", LESS_LESS_MINUS }, + { "<<<", LESS_LESS_LESS }, + { "&>", AND_GREATER }, + { "<>", LESS_GREATER }, + { ">|", GREATER_BAR }, + { "EOF", yacc_EOF }, + /* Tokens whose value is the character itself */ + { ">", '>' }, + { "<", '<' }, + { "-", '-' }, + { "{", '{' }, + { "}", '}' }, + { ";", ';' }, + { "(", '(' }, + { ")", ')' }, + { "|", '|' }, + { "&", '&' }, + { "newline", '\n' }, + { (char *)NULL, 0} +}; + +/* others not listed here: + WORD look at yylval.word + ASSIGNMENT_WORD look at yylval.word + NUMBER look at yylval.number + ARITH_CMD look at yylval.word_list + ARITH_FOR_EXPRS look at yylval.word_list + COND_CMD look at yylval.command +*/ + +/* These are used by read_token_word, but appear up here so that shell_getc + can use them to decide when to add otherwise blank lines to the history. */ + +/* The primary delimiter stack. */ +struct dstack dstack = { (char *)NULL, 0, 0 }; + +/* A temporary delimiter stack to be used when decoding prompt strings. + This is needed because command substitutions in prompt strings (e.g., PS2) + can screw up the parser's quoting state. */ +static struct dstack temp_dstack = { (char *)NULL, 0, 0 }; + +/* Macro for accessing the top delimiter on the stack. Returns the + delimiter or zero if none. */ +#define current_delimiter(ds) \ + (ds.delimiter_depth ? ds.delimiters[ds.delimiter_depth - 1] : 0) + +#define push_delimiter(ds, character) \ + do \ + { \ + if (ds.delimiter_depth + 2 > ds.delimiter_space) \ + ds.delimiters = (char *)xrealloc \ + (ds.delimiters, (ds.delimiter_space += 10) * sizeof (char)); \ + ds.delimiters[ds.delimiter_depth] = character; \ + ds.delimiter_depth++; \ + } \ + while (0) + +#define pop_delimiter(ds) ds.delimiter_depth-- + +/* Return the next shell input character. This always reads characters + from shell_input_line; when that line is exhausted, it is time to + read the next line. This is called by read_token when the shell is + processing normal command input. */ + +/* This implements one-character lookahead/lookbehind across physical input + lines, to avoid something being lost because it's pushed back with + shell_ungetc when we're at the start of a line. */ +static int eol_ungetc_lookahead = 0; + +static int +shell_getc (remove_quoted_newline) + int remove_quoted_newline; +{ + register int i; + int c; + unsigned char uc; + static int mustpop = 0; + + QUIT; + + if (eol_ungetc_lookahead) + { + c = eol_ungetc_lookahead; + eol_ungetc_lookahead = 0; + return (c); + } + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + /* If shell_input_line[shell_input_line_index] == 0, but there is + something on the pushed list of strings, then we don't want to go + off and get another line. We let the code down below handle it. */ + + if (!shell_input_line || ((!shell_input_line[shell_input_line_index]) && + (pushed_string_list == (STRING_SAVER *)NULL))) +#else /* !ALIAS && !DPAREN_ARITHMETIC */ + if (!shell_input_line || !shell_input_line[shell_input_line_index]) +#endif /* !ALIAS && !DPAREN_ARITHMETIC */ + { + line_number++; + + restart_read: + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + i = 0; + shell_input_line_terminator = 0; + + /* If the shell is interatctive, but not currently printing a prompt + (interactive_shell && interactive == 0), we don't want to print + notifies or cleanup the jobs -- we want to defer it until we do + print the next prompt. */ + if (interactive_shell == 0 || SHOULD_PROMPT()) + { +#if defined (JOB_CONTROL) + /* This can cause a problem when reading a command as the result + of a trap, when the trap is called from flush_child. This call + had better not cause jobs to disappear from the job table in + that case, or we will have big trouble. */ + notify_and_cleanup (); +#else /* !JOB_CONTROL */ + cleanup_dead_jobs (); +#endif /* !JOB_CONTROL */ + } + +#if defined (READLINE) + if (no_line_editing && SHOULD_PROMPT()) +#else + if (SHOULD_PROMPT()) +#endif + print_prompt (); + + if (bash_input.type == st_stream) + clearerr (stdin); + + while (1) + { + c = yy_getc (); + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + if (c == '\0') + { +#if 0 + internal_warning ("shell_getc: ignored null byte in input"); +#endif + continue; + } + + RESIZE_MALLOCED_BUFFER (shell_input_line, i, 2, shell_input_line_size, 256); + + if (c == EOF) + { + if (bash_input.type == st_stream) + clearerr (stdin); + + if (i == 0) + shell_input_line_terminator = EOF; + + shell_input_line[i] = '\0'; + break; + } + + shell_input_line[i++] = c; + + if (c == '\n') + { + shell_input_line[--i] = '\0'; + current_command_line_count++; + break; + } + } + + shell_input_line_index = 0; + shell_input_line_len = i; /* == strlen (shell_input_line) */ + + set_line_mbstate (); + +#if defined (HISTORY) + if (remember_on_history && shell_input_line && shell_input_line[0]) + { + char *expansions; +# if defined (BANG_HISTORY) + int old_hist; + + /* If the current delimiter is a single quote, we should not be + performing history expansion, even if we're on a different + line from the original single quote. */ + old_hist = history_expansion_inhibited; + if (current_delimiter (dstack) == '\'') + history_expansion_inhibited = 1; +# endif + expansions = pre_process_line (shell_input_line, 1, 1); +# if defined (BANG_HISTORY) + history_expansion_inhibited = old_hist; +# endif + if (expansions != shell_input_line) + { + free (shell_input_line); + shell_input_line = expansions; + shell_input_line_len = shell_input_line ? + strlen (shell_input_line) : 0; + if (!shell_input_line_len) + current_command_line_count--; + + /* We have to force the xrealloc below because we don't know + the true allocated size of shell_input_line anymore. */ + shell_input_line_size = shell_input_line_len; + + set_line_mbstate (); + } + } + /* Try to do something intelligent with blank lines encountered while + entering multi-line commands. XXX - this is grotesque */ + else if (remember_on_history && shell_input_line && + shell_input_line[0] == '\0' && + current_command_line_count > 1) + { + if (current_delimiter (dstack)) + /* We know shell_input_line[0] == 0 and we're reading some sort of + quoted string. This means we've got a line consisting of only + a newline in a quoted string. We want to make sure this line + gets added to the history. */ + maybe_add_history (shell_input_line); + else + { + char *hdcs; + hdcs = history_delimiting_chars (); + if (hdcs && hdcs[0] == ';') + maybe_add_history (shell_input_line); + } + } + +#endif /* HISTORY */ + + if (shell_input_line) + { + /* Lines that signify the end of the shell's input should not be + echoed. */ + if (echo_input_at_read && (shell_input_line[0] || + shell_input_line_terminator != EOF)) + fprintf (stderr, "%s\n", shell_input_line); + } + else + { + shell_input_line_size = 0; + prompt_string_pointer = ¤t_prompt_string; + if (SHOULD_PROMPT ()) + prompt_again (); + goto restart_read; + } + + /* Add the newline to the end of this string, iff the string does + not already end in an EOF character. */ + if (shell_input_line_terminator != EOF) + { + if (shell_input_line_len + 3 > shell_input_line_size) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); + + shell_input_line[shell_input_line_len] = '\n'; + shell_input_line[shell_input_line_len + 1] = '\0'; + + set_line_mbstate (); + } + } + + uc = shell_input_line[shell_input_line_index]; + + if (uc) + shell_input_line_index++; + + if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') + { + if (SHOULD_PROMPT ()) + 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 + because we have fully consumed the result of the last alias expansion. + Do it transparently; just return the next character of the string popped + to. */ + if (!uc && (pushed_string_list != (STRING_SAVER *)NULL)) + { + pop_string (); + uc = shell_input_line[shell_input_line_index]; + if (uc) + shell_input_line_index++; + } +#endif /* ALIAS || DPAREN_ARITHMETIC */ + + if (!uc && shell_input_line_terminator == EOF) + return ((shell_input_line_index != 0) ? '\n' : EOF); + + return (uc); +} + +/* Put C back into the input for the shell. This might need changes for + HANDLE_MULTIBYTE around EOLs. Since we (currently) never push back a + character different than we read, shell_input_line_property doesn't need + to change when manipulating shell_input_line. The define for + last_shell_getc_is_singlebyte should take care of it, though. */ +static void +shell_ungetc (c) + int c; +{ + if (shell_input_line && shell_input_line_index) + shell_input_line[--shell_input_line_index] = c; + else + eol_ungetc_lookahead = c; +} + +#ifdef INCLUDE_UNUSED +/* Back the input pointer up by one, effectively `ungetting' a character. */ +static void +shell_ungetchar () +{ + if (shell_input_line && shell_input_line_index) + shell_input_line_index--; +} +#endif + +/* Discard input until CHARACTER is seen, then push that character back + onto the input stream. */ +static void +discard_until (character) + int character; +{ + int c; + + while ((c = shell_getc (0)) != EOF && c != character) + ; + + if (c != EOF) + shell_ungetc (c); +} + +void +execute_prompt_command (command) + char *command; +{ + char *last_lastarg; + sh_parser_state_t ps; + + save_parser_state (&ps); + last_lastarg = get_string_value ("_"); + if (last_lastarg) + last_lastarg = savestring (last_lastarg); + + parse_and_execute (savestring (command), "PROMPT_COMMAND", SEVAL_NONINT|SEVAL_NOHIST); + + restore_parser_state (&ps); + bind_variable ("_", last_lastarg); + FREE (last_lastarg); + + if (token_to_read == '\n') /* reset_parser was called */ + token_to_read = 0; +} + +/* Place to remember the token. We try to keep the buffer + at a reasonable size, but it can grow. */ +static char *token = (char *)NULL; + +/* Current size of the token buffer. */ +static int token_buffer_size; + +/* Command to read_token () explaining what we want it to do. */ +#define READ 0 +#define RESET 1 +#define prompt_is_ps1 \ + (!prompt_string_pointer || prompt_string_pointer == &ps1_prompt) + +/* Function for yyparse to call. yylex keeps track of + the last two tokens read, and calls read_token. */ +static int +yylex () +{ + if (interactive && (current_token == 0 || current_token == '\n')) + { + /* Before we print a prompt, we might have to check mailboxes. + We do this only if it is time to do so. Notice that only here + is the mail alarm reset; nothing takes place in check_mail () + except the checking of mail. Please don't change this. */ + if (prompt_is_ps1 && time_to_check_mail ()) + { + check_mail (); + reset_mail_timer (); + } + + /* Avoid printing a prompt if we're not going to read anything, e.g. + after resetting the parser with read_token (RESET). */ + if (token_to_read == 0 && SHOULD_PROMPT ()) + prompt_again (); + } + + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + current_token = read_token (READ); + return (current_token); +} + +/* When non-zero, we have read the required tokens + which allow ESAC to be the next one read. */ +static int esacs_needed_count; + +void +gather_here_documents () +{ + int r = 0; + while (need_here_doc) + { + make_here_document (redir_stack[r++]); + need_here_doc--; + } +} + +/* When non-zero, an open-brace used to create a group is awaiting a close + brace partner. */ +static int open_brace_count; + +#define command_token_position(token) \ + (((token) == ASSIGNMENT_WORD) || \ + ((token) != SEMI_SEMI && reserved_word_acceptable(token))) + +#define assignment_acceptable(token) \ + (command_token_position(token) && ((parser_state & PST_CASEPAT) == 0)) + +/* Check to see if TOKEN is a reserved word and return the token + value if it is. */ +#define CHECK_FOR_RESERVED_WORD(tok) \ + do { \ + if (!dollar_present && !quoted && \ + reserved_word_acceptable (last_read_token)) \ + { \ + int i; \ + for (i = 0; word_token_alist[i].word != (char *)NULL; i++) \ + if (STREQ (tok, word_token_alist[i].word)) \ + { \ + if ((parser_state & PST_CASEPAT) && (word_token_alist[i].token != ESAC)) \ + break; \ + if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ + break; \ + if (word_token_alist[i].token == ESAC) \ + parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ + else if (word_token_alist[i].token == CASE) \ + parser_state |= PST_CASESTMT; \ + else if (word_token_alist[i].token == COND_END) \ + parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \ + else if (word_token_alist[i].token == COND_START) \ + parser_state |= PST_CONDCMD; \ + else if (word_token_alist[i].token == '{') \ + open_brace_count++; \ + else if (word_token_alist[i].token == '}' && open_brace_count) \ + open_brace_count--; \ + return (word_token_alist[i].token); \ + } \ + } \ + } while (0) + +#if defined (ALIAS) + + /* OK, we have a token. Let's try to alias expand it, if (and only if) + it's eligible. + + It is eligible for expansion if EXPAND_ALIASES is set, and + the token is unquoted and the last token read was a command + separator (or expand_next_token is set), and we are currently + processing an alias (pushed_string_list is non-empty) and this + token is not the same as the current or any previously + processed alias. + + Special cases that disqualify: + In a pattern list in a case statement (parser_state & PST_CASEPAT). */ + +static char * +mk_alexpansion (s) + char *s; +{ + int l; + char *r; + + l = strlen (s); + r = xmalloc (l + 2); + strcpy (r, s); + if (r[l -1] != ' ') + r[l++] = ' '; + r[l] = '\0'; + return r; +} + +static int +alias_expand_token (tokstr) + char *tokstr; +{ + char *expanded; + alias_t *ap; + + if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) && + (parser_state & PST_CASEPAT) == 0) + { + ap = find_alias (tokstr); + + /* Currently expanding this token. */ + if (ap && (ap->flags & AL_BEINGEXPANDED)) + return (NO_EXPANSION); + + /* mk_alexpansion puts an extra space on the end of the alias expansion, + so the lookahead by the parser works right. If this gets changed, + make sure the code in shell_getc that deals with reaching the end of + an expanded alias is changed with it. */ + expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; + + if (expanded) + { + push_string (expanded, ap->flags & AL_EXPANDNEXT, ap); + return (RE_READ_TOKEN); + } + else + /* This is an eligible token that does not have an expansion. */ + return (NO_EXPANSION); + } + return (NO_EXPANSION); +} +#endif /* ALIAS */ + +static int +time_command_acceptable () +{ +#if defined (COMMAND_TIMING) + switch (last_read_token) + { + case 0: + case ';': + case '\n': + case AND_AND: + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ + case '(': /* ) */ + return 1; + default: + return 0; + } +#else + return 0; +#endif /* COMMAND_TIMING */ +} + +/* Handle special cases of token recognition: + IN is recognized if the last token was WORD and the token + before that was FOR or CASE or SELECT. + + DO is recognized if the last token was WORD and the token + before that was FOR or SELECT. + + ESAC is recognized if the last token caused `esacs_needed_count' + to be set + + `{' is recognized if the last token as WORD and the token + before that was FUNCTION, or if we just parsed an arithmetic + `for' command. + + `}' is recognized if there is an unclosed `{' present. + + `-p' is returned as TIMEOPT if the last read token was TIME. + + ']]' is returned as COND_END if the parser is currently parsing + a conditional expression ((parser_state & PST_CONDEXPR) != 0) + + `time' is returned as TIME if and only if it is immediately + preceded by one of `;', `\n', `||', `&&', or `&'. +*/ + +static int +special_case_tokens (tokstr) + char *tokstr; +{ + if ((last_read_token == WORD) && +#if defined (SELECT_COMMAND) + ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && +#else + ((token_before_that == FOR) || (token_before_that == CASE)) && +#endif + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (token_before_that == CASE) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + return (IN); + } + + if (last_read_token == WORD && +#if defined (SELECT_COMMAND) + (token_before_that == FOR || token_before_that == SELECT) && +#else + (token_before_that == FOR) && +#endif + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + return (DO); + + /* Ditto for ESAC in the CASE case. + Specifically, this handles "case word in esac", which is a legal + construct, certainly because someone will pass an empty arg to the + case construct, and we don't want it to barf. Of course, we should + insist that the case construct has at least one pattern in it, but + the designers disagree. */ + if (esacs_needed_count) + { + esacs_needed_count--; + if (STREQ (tokstr, "esac")) + { + parser_state &= ~PST_CASEPAT; + return (ESAC); + } + } + + /* The start of a shell function definition. */ + if (parser_state & PST_ALLOWOPNBRC) + { + parser_state &= ~PST_ALLOWOPNBRC; + if (tokstr[0] == '{' && tokstr[1] == '\0') /* } */ + { + open_brace_count++; + function_bstart = line_number; + return ('{'); /* } */ + } + } + + /* We allow a `do' after a for ((...)) without an intervening + list_terminator */ + if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == 'd' && tokstr[1] == 'o' && !tokstr[2]) + return (DO); + if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == '{' && tokstr[1] == '\0') /* } */ + { + open_brace_count++; + return ('{'); /* } */ + } + + if (open_brace_count && reserved_word_acceptable (last_read_token) && tokstr[0] == '}' && !tokstr[1]) + { + open_brace_count--; /* { */ + return ('}'); + } + +#if defined (COMMAND_TIMING) + /* Handle -p after `time'. */ + if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2]) + return (TIMEOPT); +#endif + +#if 0 +#if defined (COMMAND_TIMING) + if (STREQ (token, "time") && ((parser_state & PST_CASEPAT) == 0) && time_command_acceptable ()) + return (TIME); +#endif /* COMMAND_TIMING */ +#endif + +#if defined (COND_COMMAND) /* [[ */ + if ((parser_state & PST_CONDEXPR) && tokstr[0] == ']' && tokstr[1] == ']' && tokstr[2] == '\0') + return (COND_END); +#endif + + return (-1); +} + +/* Called from shell.c when Control-C is typed at top level. Or + by the error rule at top level. */ +void +reset_parser () +{ + dstack.delimiter_depth = 0; /* No delimiters found so far. */ + open_brace_count = 0; + + parser_state = 0; + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + if (pushed_string_list) + free_string_list (); +#endif /* ALIAS || DPAREN_ARITHMETIC */ + + if (shell_input_line) + { + free (shell_input_line); + shell_input_line = (char *)NULL; + shell_input_line_size = shell_input_line_index = 0; + } + + FREE (word_desc_to_read); + word_desc_to_read = (WORD_DESC *)NULL; + + last_read_token = '\n'; + token_to_read = '\n'; +} + +/* Read the next token. Command can be READ (normal operation) or + RESET (to normalize state). */ +static int +read_token (command) + int command; +{ + int character; /* Current character. */ + int peek_char; /* Temporary look-ahead character. */ + int result; /* The thing to return. */ + + if (command == RESET) + { + reset_parser (); + return ('\n'); + } + + if (token_to_read) + { + result = token_to_read; + if (token_to_read == WORD || token_to_read == ASSIGNMENT_WORD) + { + yylval.word = word_desc_to_read; + word_desc_to_read = (WORD_DESC *)NULL; + } + token_to_read = 0; + return (result); + } + +#if defined (COND_COMMAND) + if ((parser_state & (PST_CONDCMD|PST_CONDEXPR)) == PST_CONDCMD) + { + cond_lineno = line_number; + parser_state |= PST_CONDEXPR; + yylval.command = parse_cond_command (); + if (cond_token != COND_END) + { + cond_error (); + return (-1); + } + token_to_read = COND_END; + parser_state &= ~(PST_CONDEXPR|PST_CONDCMD); + return (COND_CMD); + } +#endif + +#if defined (ALIAS) + /* This is a place to jump back to once we have successfully expanded a + token with an alias and pushed the string with push_string () */ + re_read_token: +#endif /* ALIAS */ + + /* Read a single word from input. Start by skipping blanks. */ + while ((character = shell_getc (1)) != EOF && whitespace (character)) + ; + + if (character == EOF) + { + EOF_Reached = 1; + return (yacc_EOF); + } + + if MBTEST(character == '#' && (!interactive || interactive_comments)) + { + /* A comment. Discard until EOL or EOF, and then return a newline. */ + discard_until ('\n'); + shell_getc (0); + character = '\n'; /* this will take the next if statement and return. */ + } + + if (character == '\n') + { + /* If we're about to return an unquoted newline, we can go and collect + the text of any pending here document. */ + if (need_here_doc) + gather_here_documents (); + +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + parser_state &= ~PST_ASSIGNOK; + + return (character); + } + + /* Shell meta-characters. */ + if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + { +#if defined (ALIAS) + /* Turn off alias tokenization iff this character sequence would + not leave us ready to read a command. */ + if (character == '<' || character == '>') + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + parser_state &= ~PST_ASSIGNOK; + + peek_char = shell_getc (1); + if (character == peek_char) + { + switch (character) + { + case '<': + /* If '<' then we could be at "<<" or at "<<-". We have to + look ahead one more character. */ + peek_char = shell_getc (1); + if (peek_char == '-') + return (LESS_LESS_MINUS); + else if (peek_char == '<') + return (LESS_LESS_LESS); + else + { + shell_ungetc (peek_char); + return (LESS_LESS); + } + + case '>': + return (GREATER_GREATER); + + case ';': + parser_state |= PST_CASEPAT; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + return (SEMI_SEMI); + + case '&': + return (AND_AND); + + case '|': + return (OR_OR); + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) + case '(': /* ) */ + result = parse_dparen (character); + if (result == -2) + break; + else + return result; +#endif + } + } + else if MBTEST(character == '<' && peek_char == '&') + return (LESS_AND); + else if MBTEST(character == '>' && peek_char == '&') + return (GREATER_AND); + else if MBTEST(character == '<' && peek_char == '>') + return (LESS_GREATER); + else if MBTEST(character == '>' && peek_char == '|') + return (GREATER_BAR); + else if MBTEST(peek_char == '>' && character == '&') + return (AND_GREATER); + + shell_ungetc (peek_char); + + /* If we look like we are reading the start of a function + definition, then let the reader know about it so that + we will do the right thing with `{'. */ + if MBTEST(character == ')' && last_read_token == '(' && token_before_that == WORD) + { + parser_state |= PST_ALLOWOPNBRC; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + function_dstart = line_number; + } + + /* case pattern lists may be preceded by an optional left paren. If + we're not trying to parse a case pattern list, the left paren + indicates a subshell. */ + if MBTEST(character == '(' && (parser_state & PST_CASEPAT) == 0) /* ) */ + parser_state |= PST_SUBSHELL; + /*(*/ + else if MBTEST((parser_state & PST_CASEPAT) && character == ')') + parser_state &= ~PST_CASEPAT; + /*(*/ + else if MBTEST((parser_state & PST_SUBSHELL) && character == ')') + parser_state &= ~PST_SUBSHELL; + +#if defined (PROCESS_SUBSTITUTION) + /* Check for the constructs which introduce process substitution. + Shells running in `posix mode' don't do process substitution. */ + if MBTEST(posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) /*)*/ +#endif /* PROCESS_SUBSTITUTION */ + return (character); + } + + /* Hack <&- (close stdin) case. Also <&N- (dup and close). */ + if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) + return (character); + + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + result = read_token_word (character); +#if defined (ALIAS) + if (result == RE_READ_TOKEN) + goto re_read_token; +#endif + return result; +} + +/* + * Match a $(...) or other grouping construct. This has to handle embedded + * quoted strings ('', ``, "") and nested constructs. It also must handle + * reprompting the user, if necessary, after reading a newline (unless the + * P_NONL flag is passed), and returning correct error values if it reads + * EOF. + */ +#define P_FIRSTCLOSE 0x01 +#define P_ALLOWESC 0x02 +#define P_DQUOTE 0x04 + +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; + char *ret, *nestret, *ttrans; + int retind, retsize, rflags; + + count = 1; + pass_next_character = was_dollar = 0; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ + rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE); + + ret = (char *)xmalloc (retsize = 64); + retind = 0; + + start_lineno = line_number; + while (count) + { + ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0); + if (ch == EOF) + { + free (ret); + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ + return (&matched_pair_error); + } + + /* Possible reprompting. */ + if (ch == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + if (pass_next_character) /* last char was backslash */ + { + pass_next_character = 0; + if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ + { + if (retind > 0) retind--; /* swallow previously-added backslash */ + continue; + } + + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + if MBTEST(ch == CTLESC || ch == CTLNUL) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + else if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + else if MBTEST(ch == close) /* ending delimiter */ + count--; +#if 1 + /* handle nested ${...} specially. */ + else if MBTEST(open != close && was_dollar && open == '{' && ch == open) /* } */ + count++; +#endif + else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && ch == open) /* nested begin */ + count++; + + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + if (open == '\'') /* '' inside grouping construct */ + { + if MBTEST((flags & P_ALLOWESC) && ch == '\\') + pass_next_character++; + continue; + } + + if MBTEST(ch == '\\') /* backslashes */ + pass_next_character++; + + if (open != close) /* a grouping construct */ + { + if MBTEST(shellquote (ch)) + { + /* '', ``, or "" inside $(...) or other grouping construct. */ + push_delimiter (dstack, ch); + if MBTEST(was_dollar && ch == '\'') /* $'...' inside group */ + nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); + else + nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); + pop_delimiter (dstack); + if (nestret == &matched_pair_error) + { + free (ret); + return &matched_pair_error; + } + if MBTEST(was_dollar && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + xfree (nestret); + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + retind -= 2; /* back up before the $' */ + } + else if MBTEST(was_dollar && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + xfree (nestret); + nestret = (char *)xmalloc (ttranslen + 3); + nestret[0] = '"'; + strcpy (nestret + 1, ttrans); + nestret[ttranslen + 1] = '"'; + nestret[ttranslen += 2] = '\0'; + free (ttrans); + nestlen = ttranslen; + retind -= 2; /* back up before the $" */ + } + + if (nestlen) + { + RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); + strcpy (ret + retind, nestret); + retind += nestlen; + } + FREE (nestret); + } + } + /* Parse an old-style command substitution within double quotes as a + single word. */ + /* XXX - sh and ksh93 don't do this - XXX */ + else if MBTEST(open == '"' && ch == '`') + { + nestret = parse_matched_pair (0, '`', '`', &nestlen, rflags); + if (nestret == &matched_pair_error) + { + free (ret); + return &matched_pair_error; + } + if (nestlen) + { + RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); + strcpy (ret + retind, nestret); + retind += nestlen; + } + FREE (nestret); + } + else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside quoted string. */ + { + if (open == ch) /* undo previous increment */ + count--; + if (ch == '(') /* ) */ + nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags); + else if (ch == '{') /* } */ + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + if (nestret == &matched_pair_error) + { + free (ret); + return &matched_pair_error; + } + if (nestlen) + { + RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); + strcpy (ret + retind, nestret); + retind += nestlen; + } + FREE (nestret); + } + was_dollar = MBTEST(ch == '$'); + } + + ret[retind] = '\0'; + if (lenp) + *lenp = retind; + return ret; +} + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +/* Parse a double-paren construct. It can be either an arithmetic + command, an arithmetic `for' command, or a nested subshell. Returns + the parsed token, -1 on error, or -2 if we didn't do anything and + should just go on. */ +static int +parse_dparen (c) + int c; +{ + int cmdtyp, len, sline; + char *wval, *wv2; + WORD_DESC *wd; + +#if defined (ARITH_FOR_COMMAND) + if (last_read_token == FOR) + { + arith_for_lineno = line_number; + cmdtyp = parse_arith_cmd (&wval, 0); + if (cmdtyp == 1) + { + wd = make_word (wval); + yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); + free (wval); + return (ARITH_FOR_EXPRS); + } + else + return -1; /* ERROR */ + } +#endif + +#if defined (DPAREN_ARITHMETIC) + if (reserved_word_acceptable (last_read_token)) + { + sline = line_number; +#if 0 + cmdtyp = parse_arith_cmd (&wval, 1); +#else + cmdtyp = parse_arith_cmd (&wval, 0); +#endif + if (cmdtyp == 1) /* arithmetic command */ + { + wd = make_word (wval); +#if 0 + wd->flags = W_QUOTED; +#else + wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB; +#endif + 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 */ + { + push_string (wval, 0, (alias_t *)NULL); + if ((parser_state & PST_CASEPAT) == 0) + parser_state |= PST_SUBSHELL; + return (c); + } + else /* ERROR */ + return -1; + } +#endif + + return -2; /* XXX */ +} + +/* We've seen a `(('. Look for the matching `))'. If we get it, return 1. + If not, assume it's a nested subshell for backwards compatibility and + return 0. In any case, put the characters we've consumed into a locally- + allocated buffer and make *ep point to that buffer. Return -1 on an + error, for example EOF. */ +static int +parse_arith_cmd (ep, adddq) + char **ep; + int adddq; +{ + int exp_lineno, rval, c; + char *ttok, *tokstr; + int ttoklen; + + exp_lineno = line_number; + ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0); + rval = 1; + if (ttok == &matched_pair_error) + return -1; + /* Check that the next character is the closing right paren. If + not, this is a syntax error. ( */ + c = shell_getc (0); + if MBTEST(c != ')') + rval = 0; + + tokstr = (char *)xmalloc (ttoklen + 4); + + /* if ADDDQ != 0 then (( ... )) -> "..." */ + if (rval == 1 && adddq) /* arith cmd, add double quotes */ + { + tokstr[0] = '"'; + strncpy (tokstr + 1, ttok, ttoklen - 1); + tokstr[ttoklen] = '"'; + tokstr[ttoklen+1] = '\0'; + } + else if (rval == 1) /* arith cmd, don't add double quotes */ + { + strncpy (tokstr, ttok, ttoklen - 1); + tokstr[ttoklen-1] = '\0'; + } + else /* nested subshell */ + { + tokstr[0] = '('; + strncpy (tokstr + 1, ttok, ttoklen - 1); + tokstr[ttoklen] = ')'; + tokstr[ttoklen+1] = c; + tokstr[ttoklen+2] = '\0'; + } + + *ep = tokstr; + FREE (ttok); + return rval; +} +#endif /* DPAREN_ARITHMETIC || ARITH_FOR_COMMAND */ + +#if defined (COND_COMMAND) +static void +cond_error () +{ + char *etext; + + if (EOF_Reached && cond_token != COND_ERROR) /* [[ */ + parser_error (cond_lineno, _("unexpected EOF while looking for `]]'")); + else if (cond_token != COND_ERROR) + { + if (etext = error_token_from_token (cond_token)) + { + parser_error (cond_lineno, _("syntax error in conditional expression: unexpected token `%s'"), etext); + free (etext); + } + else + parser_error (cond_lineno, _("syntax error in conditional expression")); + } +} + +static COND_COM * +cond_expr () +{ + return (cond_or ()); +} + +static COND_COM * +cond_or () +{ + COND_COM *l, *r; + + l = cond_and (); + if (cond_token == OR_OR) + { + r = cond_or (); + l = make_cond_node (COND_OR, (WORD_DESC *)NULL, l, r); + } + return l; +} + +static COND_COM * +cond_and () +{ + COND_COM *l, *r; + + l = cond_term (); + if (cond_token == AND_AND) + { + r = cond_and (); + l = make_cond_node (COND_AND, (WORD_DESC *)NULL, l, r); + } + return l; +} + +static int +cond_skip_newlines () +{ + while ((cond_token = read_token (READ)) == '\n') + { + if (SHOULD_PROMPT ()) + prompt_again (); + } + return (cond_token); +} + +#define COND_RETURN_ERROR() \ + do { cond_token = COND_ERROR; return ((COND_COM *)NULL); } while (0) + +static COND_COM * +cond_term () +{ + WORD_DESC *op; + COND_COM *term, *tleft, *tright; + int tok, lineno; + char *etext; + + /* Read a token. It can be a left paren, a `!', a unary operator, or a + word that should be the first argument of a binary operator. Start by + skipping newlines, since this is a compound command. */ + tok = cond_skip_newlines (); + lineno = line_number; + if (tok == COND_END) + { + COND_RETURN_ERROR (); + } + else if (tok == '(') + { + term = cond_expr (); + if (cond_token != ')') + { + if (term) + dispose_cond_node (term); /* ( */ + if (etext = error_token_from_token (cond_token)) + { + parser_error (lineno, _("unexpected token `%s', expected `)'"), etext); + free (etext); + } + else + parser_error (lineno, _("expected `)'")); + COND_RETURN_ERROR (); + } + term = make_cond_node (COND_EXPR, (WORD_DESC *)NULL, term, (COND_COM *)NULL); + (void)cond_skip_newlines (); + } + else if (tok == BANG || (tok == WORD && (yylval.word->word[0] == '!' && yylval.word->word[1] == '\0'))) + { + if (tok == WORD) + dispose_word (yylval.word); /* not needed */ + term = cond_term (); + if (term) + term->flags |= CMD_INVERT_RETURN; + } + else if (tok == WORD && test_unop (yylval.word->word)) + { + op = yylval.word; + tok = read_token (READ); + if (tok == WORD) + { + tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); + } + else + { + dispose_word (op); + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected argument `%s' to conditional unary operator"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected argument to conditional unary operator")); + COND_RETURN_ERROR (); + } + + (void)cond_skip_newlines (); + } + else if (tok == WORD) /* left argument to binary operator */ + { + /* lhs */ + tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + + /* binop */ + tok = read_token (READ); + if (tok == WORD && test_binop (yylval.word->word)) + op = yylval.word; +#if defined (COND_REGEXP) + else if (tok == WORD && STREQ (yylval.word->word,"=~")) + op = yylval.word; +#endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ + /* There should be a check before blindly accepting the `)' that we have + seen the opening `('. */ + else if (tok == COND_END || tok == AND_AND || tok == OR_OR || tok == ')') + { + /* Special case. [[ x ]] is equivalent to [[ -n x ]], just like + the test command. Similarly for [[ x && expr ]] or + [[ x || expr ]] or [[ (x) ]]. */ + op = make_word ("-n"); + term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); + cond_token = tok; + return (term); + } + else + { + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected token `%s', conditional binary operator expected"), etext); + free (etext); + } + else + parser_error (line_number, _("conditional binary operator expected")); + dispose_cond_node (tleft); + COND_RETURN_ERROR (); + } + + /* rhs */ + tok = read_token (READ); + if (tok == WORD) + { + tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + term = make_cond_node (COND_BINARY, op, tleft, tright); + } + else + { + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected argument `%s' to conditional binary operator"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected argument to conditional binary operator")); + dispose_cond_node (tleft); + dispose_word (op); + COND_RETURN_ERROR (); + } + + (void)cond_skip_newlines (); + } + else + { + if (tok < 256) + parser_error (line_number, _("unexpected token `%c' in conditional command"), tok); + else if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected token `%s' in conditional command"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected token %d in conditional command"), tok); + COND_RETURN_ERROR (); + } + return (term); +} + +/* This is kind of bogus -- we slip a mini recursive-descent parser in + here to handle the conditional statement syntax. */ +static COMMAND * +parse_cond_command () +{ + COND_COM *cexp; + + cexp = cond_expr (); + return (make_cond_command (cexp)); +} +#endif + +#if defined (ARRAY_VARS) +/* When this is called, it's guaranteed that we don't care about anything + in t beyond i. We do save and restore the chars, though. */ +static int +token_is_assignment (t, i) + char *t; + int i; +{ + unsigned char c, c1; + int r; + + c = t[i]; c1 = t[i+1]; + t[i] = '='; t[i+1] = '\0'; + r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); + t[i] = c; t[i+1] = c1; + return r; +} + +static int +token_is_ident (t, i) + char *t; + int i; +{ + unsigned char c; + int r; + + c = t[i]; + t[i] = '\0'; + r = legal_identifier (t); + t[i] = c; + return r; +} +#endif + +static int +read_token_word (character) + int character; +{ + /* The value for YYLVAL when a WORD is read. */ + WORD_DESC *the_word; + + /* Index into the token that we are building. */ + int token_index; + + /* ALL_DIGITS becomes zero when we see a non-digit. */ + int all_digit_token; + + /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */ + int dollar_present; + + /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */ + int quoted; + + /* Non-zero means to ignore the value of the next character, and just + to add it no matter what. */ + int pass_next_character; + + /* The current delimiting character. */ + int cd; + int result, peek_char; + char *ttok, *ttrans; + int ttoklen, ttranslen; + intmax_t lvalue; + + if (token_buffer_size < TOKEN_DEFAULT_INITIAL_SIZE) + token = (char *)xrealloc (token, token_buffer_size = TOKEN_DEFAULT_INITIAL_SIZE); + + token_index = 0; + all_digit_token = DIGIT (character); + dollar_present = quoted = pass_next_character = 0; + + for (;;) + { + if (character == EOF) + goto got_token; + + if (pass_next_character) + { + pass_next_character = 0; + goto got_character; + } + + cd = current_delimiter (dstack); + + /* Handle backslashes. Quote lots of things when not inside of + double-quotes, quote some things inside of double-quotes. */ + if MBTEST(character == '\\') + { + peek_char = shell_getc (0); + + /* Backslash-newline is ignored in all cases except + when quoted with single quotes. */ + if (peek_char == '\n') + { + character = '\n'; + goto next_character; + } + else + { + shell_ungetc (peek_char); + + /* If the next character is to be quoted, note it now. */ + if (cd == 0 || cd == '`' || + (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE))) + pass_next_character++; + + quoted = 1; + goto got_character; + } + } + + /* Parse a matched pair of quote characters. */ + if MBTEST(shellquote (character)) + { + push_delimiter (dstack, character); + ttok = parse_matched_pair (character, character, character, &ttoklen, 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + strcpy (token + token_index, ttok); + token_index += ttoklen; + all_digit_token = 0; + quoted = 1; + dollar_present |= (character == '"' && strchr (ttok, '$') != 0); + FREE (ttok); + goto next_character; + } + +#ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ + if (extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + { + push_delimiter (dstack, peek_char); + ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + token[token_index++] = peek_char; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + dollar_present = all_digit_token = 0; + goto next_character; + } + else + shell_ungetc (peek_char); + } +#endif /* EXTENDED_GLOB */ + + /* If the delimiter character is not single quote, parse some of + the shell expansions that must be read as a single word. */ + if (shellexp (character)) + { + peek_char = shell_getc (1); + /* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */ + if MBTEST(peek_char == '(' || \ + ((peek_char == '{' || peek_char == '[') && character == '$')) /* ) ] } */ + { + if (peek_char == '{') /* } */ + ttok = parse_matched_pair (cd, '{', '}', &ttoklen, P_FIRSTCLOSE); + else if (peek_char == '(') /* ) */ + { + /* XXX - push and pop the `(' as a delimiter for use by + the command-oriented-history code. This way newlines + appearing in the $(...) string get added to the + history literally rather than causing a possibly- + incorrect `;' to be added. ) */ + push_delimiter (dstack, peek_char); + ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); + pop_delimiter (dstack); + } + else + ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + token[token_index++] = peek_char; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + dollar_present = 1; + all_digit_token = 0; + goto next_character; + } + /* This handles $'...' and $"..." new-style quoted strings. */ + else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"')) + { + int first_line; + + first_line = line_number; + push_delimiter (dstack, peek_char); + ttok = parse_matched_pair (peek_char, peek_char, peek_char, + &ttoklen, + (peek_char == '\'') ? P_ALLOWESC : 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; + if (peek_char == '\'') + { + ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); + free (ttok); + /* Insert the single quotes and correctly quote any + embedded single quotes (allowed because P_ALLOWESC was + passed to parse_matched_pair). */ + ttok = sh_single_quote (ttrans); + free (ttrans); + ttrans = ttok; + ttranslen = strlen (ttrans); + } + else + { + /* Try to locale-expand the converted string. */ + ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); + free (ttok); + + /* Add the double quotes back */ + ttok = (char *)xmalloc (ttranslen + 3); + ttok[0] = '"'; + strcpy (ttok + 1, ttrans); + ttok[ttranslen + 1] = '"'; + ttok[ttranslen += 2] = '\0'; + free (ttrans); + ttrans = ttok; + } + + RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 2, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + strcpy (token + token_index, ttrans); + token_index += ttranslen; + FREE (ttrans); + quoted = 1; + all_digit_token = 0; + goto next_character; + } + /* This could eventually be extended to recognize all of the + shell's single-character parameter expansions, and set flags.*/ + else if MBTEST(character == '$' && peek_char == '$') + { + ttok = (char *)xmalloc (3); + ttok[0] = ttok[1] = '$'; + ttok[2] = '\0'; + RESIZE_MALLOCED_BUFFER (token, token_index, 3, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + strcpy (token + token_index, ttok); + token_index += 2; + dollar_present = 1; + all_digit_token = 0; + FREE (ttok); + goto next_character; + } + else + shell_ungetc (peek_char); + } + +#if defined (ARRAY_VARS) + /* Identify possible array subscript assignment; match [...] */ + else if MBTEST(character == '[' && token_index > 0 && assignment_acceptable (last_read_token) && token_is_ident (token, token_index)) /* ] */ + { + ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + all_digit_token = 0; + goto next_character; + } + /* Identify possible compound array variable assignment. */ + else if MBTEST(character == '=' && token_index > 0 && token_is_assignment (token, token_index)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + { + ttok = parse_compound_assignment (&ttoklen); + + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 4, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + + token[token_index++] = '='; + token[token_index++] = '('; + if (ttok) + { + strcpy (token + token_index, ttok); + token_index += ttoklen; + } + token[token_index++] = ')'; + FREE (ttok); + all_digit_token = 0; + goto next_character; + } + else + shell_ungetc (peek_char); + } +#endif + + /* When not parsing a multi-character word construct, shell meta- + characters break words. */ + if MBTEST(shellbreak (character)) + { + shell_ungetc (character); + goto got_token; + } + + got_character: + + all_digit_token &= DIGIT (character); + dollar_present |= character == '$'; + + if (character == CTLESC || character == CTLNUL) + token[token_index++] = CTLESC; + + token[token_index++] = character; + + RESIZE_MALLOCED_BUFFER (token, token_index, 1, token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + + next_character: + if (character == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* We want to remove quoted newlines (that is, a \ pair) + unless we are within single quotes or pass_next_character is + set (the shell equivalent of literal-next). */ + cd = current_delimiter (dstack); + character = shell_getc (cd != '\'' && pass_next_character == 0); + } /* end for (;;) */ + +got_token: + + token[token_index] = '\0'; + + /* Check to see what thing we should return. If the last_read_token + is a `<', or a `&', or the character which ended this token is + a '>' or '<', then, and ONLY then, is this input token a NUMBER. + Otherwise, it is just a word, and should be returned as such. */ + if MBTEST(all_digit_token && (character == '<' || character == '>' || \ + last_read_token == LESS_AND || \ + last_read_token == GREATER_AND)) + { + if (legal_number (token, &lvalue) && (int)lvalue == lvalue) + yylval.number = lvalue; + else + yylval.number = -1; + return (NUMBER); + } + + /* Check for special case tokens. */ + result = (last_shell_getc_is_singlebyte) ? special_case_tokens (token) : -1; + if (result >= 0) + return result; + +#if defined (ALIAS) + /* Posix.2 does not allow reserved words to be aliased, so check for all + of them, including special cases, before expanding the current token + as an alias. */ + if MBTEST(posixly_correct) + CHECK_FOR_RESERVED_WORD (token); + + /* Aliases are expanded iff EXPAND_ALIASES is non-zero, and quoting + inhibits alias expansion. */ + if (expand_aliases && quoted == 0) + { + result = alias_expand_token (token); + if (result == RE_READ_TOKEN) + return (RE_READ_TOKEN); + else if (result == NO_EXPANSION) + parser_state &= ~PST_ALEXPNEXT; + } + + /* If not in Posix.2 mode, check for reserved words after alias + expansion. */ + if MBTEST(posixly_correct == 0) +#endif + CHECK_FOR_RESERVED_WORD (token); + + the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word->word = (char *)xmalloc (1 + token_index); + the_word->flags = 0; + strcpy (the_word->word, token); + if (dollar_present) + the_word->flags |= W_HASDOLLAR; + if (quoted) + the_word->flags |= W_QUOTED; + /* A word is an assignment if it appears at the beginning of a + simple command, or after another assignment word. This is + context-dependent, so it cannot be handled in the grammar. */ + if (assignment (token, (parser_state & PST_COMPASSIGN) != 0)) + { + the_word->flags |= W_ASSIGNMENT; + /* Don't perform word splitting on assignment statements. */ + if (assignment_acceptable (last_read_token) || (parser_state & PST_COMPASSIGN) != 0) + the_word->flags |= W_NOSPLIT; + } + + if (command_token_position (last_read_token)) + { + struct builtin *b; + b = builtin_address_internal (token, 0); + if (b && (b->flags & ASSIGNMENT_BUILTIN)) + parser_state |= PST_ASSIGNOK; + } + + yylval.word = the_word; + + result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) + ? ASSIGNMENT_WORD : WORD; + + switch (last_read_token) + { + case FUNCTION: + parser_state |= PST_ALLOWOPNBRC; + function_dstart = line_number; + break; + case CASE: + case SELECT: + case FOR: + if (word_top < MAX_CASE_NEST) + word_top++; + word_lineno[word_top] = line_number; + break; + } + + return (result); +} + +/* Return 1 if TOKSYM is a token that after being read would allow + a reserved word to be seen, else 0. */ +static int +reserved_word_acceptable (toksym) + int toksym; +{ + switch (toksym) + { + case '\n': + case ';': + case '(': + case ')': + case '|': + case '&': + case '{': + case '}': /* XXX */ + case AND_AND: + case BANG: + case DO: + case DONE: + case ELIF: + case ELSE: + case ESAC: + case FI: + case IF: + case OR_OR: + case SEMI_SEMI: + case THEN: + case TIME: + case TIMEOPT: + case UNTIL: + case WHILE: + case 0: + return 1; + default: + return 0; + } +} + +/* Return the index of TOKEN in the alist of reserved words, or -1 if + TOKEN is not a shell reserved word. */ +int +find_reserved_word (tokstr) + char *tokstr; +{ + int i; + for (i = 0; word_token_alist[i].word; i++) + if (STREQ (tokstr, word_token_alist[i].word)) + return i; + return -1; +} + +#if 0 +#if defined (READLINE) +/* Called after each time readline is called. This insures that whatever + the new prompt string is gets propagated to readline's local prompt + variable. */ +static void +reset_readline_prompt () +{ + char *temp_prompt; + + if (prompt_string_pointer) + { + temp_prompt = (*prompt_string_pointer) + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = (char *)xmalloc (1); + temp_prompt[0] = '\0'; + } + + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } +} +#endif /* READLINE */ +#endif /* 0 */ + +#if defined (HISTORY) +/* A list of tokens which can be followed by newlines, but not by + semi-colons. When concatenating multiple lines of history, the + newline separator for such tokens is replaced with a space. */ +static int no_semi_successors[] = { + '\n', '{', '(', ')', ';', '&', '|', + CASE, DO, ELSE, IF, SEMI_SEMI, THEN, UNTIL, WHILE, AND_AND, OR_OR, IN, + 0 +}; + +/* If we are not within a delimited expression, try to be smart + about which separators can be semi-colons and which must be + newlines. Returns the string that should be added into the + history entry. */ +char * +history_delimiting_chars () +{ + register int i; + + if (dstack.delimiter_depth != 0) + return ("\n"); + + /* First, handle some special cases. */ + /*(*/ + /* If we just read `()', assume it's a function definition, and don't + add a semicolon. If the token before the `)' was not `(', and we're + not in the midst of parsing a case statement, assume it's a + parenthesized command and add the semicolon. */ + /*)(*/ + if (token_before_that == ')') + { + if (two_tokens_ago == '(') /*)*/ /* function def */ + return " "; + /* This does not work for subshells inside case statement + command lists. It's a suboptimal solution. */ + else if (parser_state & PST_CASESTMT) /* case statement pattern */ + return " "; + else + return "; "; /* (...) subshell */ + } + else if (token_before_that == WORD && two_tokens_ago == FUNCTION) + return " "; /* function def using `function name' without `()' */ + + else if (token_before_that == WORD && two_tokens_ago == FOR) + { + /* Tricky. `for i\nin ...' should not have a semicolon, but + `for i\ndo ...' should. We do what we can. */ + for (i = shell_input_line_index; whitespace(shell_input_line[i]); i++) + ; + if (shell_input_line[i] && shell_input_line[i] == 'i' && shell_input_line[i+1] == 'n') + return " "; + return ";"; + } + + for (i = 0; no_semi_successors[i]; i++) + { + if (token_before_that == no_semi_successors[i]) + return (" "); + } + + return ("; "); +} +#endif /* HISTORY */ + +/* Issue a prompt, or prepare to issue a prompt when the next character + is read. */ +static void +prompt_again () +{ + char *temp_prompt; + + if (interactive == 0 || expanding_alias()) /* XXX */ + return; + + ps1_prompt = get_string_value ("PS1"); + ps2_prompt = get_string_value ("PS2"); + + if (!prompt_string_pointer) + prompt_string_pointer = &ps1_prompt; + + temp_prompt = *prompt_string_pointer + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = (char *)xmalloc (1); + temp_prompt[0] = '\0'; + } + + current_prompt_string = *prompt_string_pointer; + prompt_string_pointer = &ps2_prompt; + +#if defined (READLINE) + if (!no_line_editing) + { + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } + else +#endif /* READLINE */ + { + FREE (current_decoded_prompt); + current_decoded_prompt = temp_prompt; + } +} + +int +get_current_prompt_level () +{ + return ((current_prompt_string && current_prompt_string == ps2_prompt) ? 2 : 1); +} + +void +set_current_prompt_level (x) + int x; +{ + prompt_string_pointer = (x == 2) ? &ps2_prompt : &ps1_prompt; + current_prompt_string = *prompt_string_pointer; +} + +static void +print_prompt () +{ + fprintf (stderr, "%s", current_decoded_prompt); + fflush (stderr); +} + +/* Return a string which will be printed as a prompt. The string + may contain special characters which are decoded as follows: + + \a bell (ascii 07) + \d the date in Day Mon Date format + \e escape (ascii 033) + \h the hostname up to the first `.' + \H the hostname + \j the number of active jobs + \l the basename of the shell's tty device name + \n CRLF + \r CR + \s the name of the shell + \t the time in 24-hour hh:mm:ss format + \T the time in 12-hour hh:mm:ss format + \@ the time in 12-hour hh:mm am/pm format + \A the time in 24-hour hh:mm format + \D{fmt} the result of passing FMT to strftime(3) + \u your username + \v the version of bash (e.g., 2.00) + \V the release of bash, version + patchlevel (e.g., 2.00.0) + \w the current working directory + \W the last element of $PWD + \! the history number of this command + \# the command number of this command + \$ a $ or a # if you are root + \nnn character code nnn in octal + \\ a backslash + \[ begin a sequence of non-printing chars + \] end a sequence of non-printing chars +*/ +#define PROMPT_GROWTH 48 +char * +decode_prompt_string (string) + char *string; +{ + WORD_LIST *list; + char *result, *t; + struct dstack save_dstack; + int last_exit_value; +#if defined (PROMPT_STRING_DECODE) + int result_size, result_index; + int c, n; + char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; + char timebuf[128]; + char *timefmt; + + result = (char *)xmalloc (result_size = PROMPT_GROWTH); + result[result_index = 0] = 0; + temp = (char *)NULL; + + while (c = *string++) + { + if (posixly_correct && c == '!') + { + if (*string == '!') + { + temp = savestring ("!"); + goto add_string; + } + else + { +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + string--; /* add_string increments string again. */ + goto add_string; + } + } + if (c == '\\') + { + c = *string; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + strncpy (octal_string, string, 3); + octal_string[3] = '\0'; + + n = read_octal (octal_string); + temp = (char *)xmalloc (3); + + if (n == CTLESC || n == CTLNUL) + { + temp[0] = CTLESC; + temp[1] = n; + temp[2] = '\0'; + } + else if (n == -1) + { + temp[0] = '\\'; + temp[1] = '\0'; + } + else + { + temp[0] = n; + temp[1] = '\0'; + } + + for (c = 0; n != -1 && c < 3 && ISOCTAL (*string); c++) + string++; + + c = 0; /* tested at add_string: */ + goto add_string; + + case 'd': + case 't': + case 'T': + case '@': + case 'A': + /* Make the current time/date into a string. */ + (void) time (&the_time); + tm = localtime (&the_time); + + if (c == 'd') + n = strftime (timebuf, sizeof (timebuf), "%a %b %d", tm); + else if (c == 't') + n = strftime (timebuf, sizeof (timebuf), "%H:%M:%S", tm); + else if (c == 'T') + n = strftime (timebuf, sizeof (timebuf), "%I:%M:%S", tm); + else if (c == '@') + n = strftime (timebuf, sizeof (timebuf), "%I:%M %p", tm); + else if (c == 'A') + n = strftime (timebuf, sizeof (timebuf), "%H:%M", tm); + + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + + temp = savestring (timebuf); + goto add_string; + + case 'D': /* strftime format */ + if (string[1] != '{') /* } */ + goto not_escape; + + (void) time (&the_time); + tm = localtime (&the_time); + string += 2; /* skip { */ + timefmt = xmalloc (strlen (string) + 3); + for (t = timefmt; *string && *string != '}'; ) + *t++ = *string++; + *t = '\0'; + c = *string; /* tested at add_string */ + if (timefmt[0] == '\0') + { + timefmt[0] = '%'; + timefmt[1] = 'X'; /* locale-specific current time */ + timefmt[2] = '\0'; + } + n = strftime (timebuf, sizeof (timebuf), timefmt, tm); + free (timefmt); + + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + + if (promptvars || posixly_correct) + /* Make sure that expand_prompt_string is called with a + second argument of Q_DOUBLE_QUOTES if we use this + function here. */ + temp = sh_backslash_quote_for_double_quotes (timebuf); + else + temp = savestring (timebuf); + goto add_string; + + case 'n': + temp = (char *)xmalloc (3); + temp[0] = no_line_editing ? '\n' : '\r'; + temp[1] = no_line_editing ? '\0' : '\n'; + temp[2] = '\0'; + goto add_string; + + case 's': + temp = base_pathname (shell_name); + temp = savestring (temp); + goto add_string; + + case 'v': + case 'V': + temp = (char *)xmalloc (16); + if (c == 'v') + strcpy (temp, dist_version); + else + sprintf (temp, "%s.%d", dist_version, patch_level); + goto add_string; + + case 'w': + case 'W': + { + /* Use the value of PWD because it is much more efficient. */ + char t_string[PATH_MAX], *t; + int tlen; + + temp = get_string_value ("PWD"); + + if (temp == 0) + { + if (getcwd (t_string, sizeof(t_string)) == 0) + { + t_string[0] = '.'; + tlen = 1; + } + else + tlen = strlen (t_string); + } + else + { + tlen = sizeof (t_string) - 1; + strncpy (t_string, temp, tlen); + } + t_string[tlen] = '\0'; + +#define ROOT_PATH(x) ((x)[0] == '/' && (x)[1] == 0) +#define DOUBLE_SLASH_ROOT(x) ((x)[0] == '/' && (x)[1] == '/' && (x)[2] == 0) + /* Abbreviate \W as ~ if $PWD == $HOME */ + if (c == 'W' && (((t = get_string_value ("HOME")) == 0) || STREQ (t, temp) == 0)) + { + if (ROOT_PATH (t_string) == 0 && DOUBLE_SLASH_ROOT (t_string) == 0) + { + t = strrchr (t_string, '/'); + if (t) + strcpy (t_string, t + 1); + } + } +#undef ROOT_PATH +#undef DOUBLE_SLASH_ROOT + else + /* polite_directory_format is guaranteed to return a string + no longer than PATH_MAX - 1 characters. */ + strcpy (t_string, polite_directory_format (t_string)); + + /* If we're going to be expanding the prompt string later, + quote the directory name. */ + if (promptvars || posixly_correct) + /* Make sure that expand_prompt_string is called with a + second argument of Q_DOUBLE_QUOTES if we use this + function here. */ + temp = sh_backslash_quote_for_double_quotes (t_string); + else + temp = savestring (t_string); + + goto add_string; + } + + case 'u': + if (current_user.user_name == 0) + get_current_user_info (); + temp = savestring (current_user.user_name); + goto add_string; + + case 'h': + case 'H': + temp = savestring (current_host_name); + if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + + case '#': + temp = itos (current_command_number); + goto add_string; + + case '!': +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + goto add_string; + + case '$': + t = temp = (char *)xmalloc (3); + if ((promptvars || posixly_correct) && (current_user.euid != 0)) + *t++ = '\\'; + *t++ = current_user.euid == 0 ? '#' : '$'; + *t = '\0'; + goto add_string; + + case 'j': + temp = itos (count_all_jobs ()); + goto add_string; + + case 'l': +#if defined (HAVE_TTYNAME) + temp = (char *)ttyname (fileno (stdin)); + t = temp ? base_pathname (temp) : "tty"; + temp = savestring (t); +#else + temp = savestring ("tty"); +#endif /* !HAVE_TTYNAME */ + goto add_string; + +#if defined (READLINE) + case '[': + case ']': + if (no_line_editing) + { + string++; + break; + } + temp = (char *)xmalloc (3); + temp[0] = '\001'; + temp[1] = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE; + temp[2] = '\0'; + goto add_string; +#endif /* READLINE */ + + case '\\': + case 'a': + case 'e': + case 'r': + temp = (char *)xmalloc (2); + if (c == 'a') + temp[0] = '\07'; + else if (c == 'e') + temp[0] = '\033'; + else if (c == 'r') + temp[0] = '\r'; + else /* (c == '\\') */ + temp[0] = c; + temp[1] = '\0'; + goto add_string; + + default: +not_escape: + temp = (char *)xmalloc (3); + temp[0] = '\\'; + temp[1] = c; + temp[2] = '\0'; + + add_string: + if (c) + string++; + result = + sub_append_string (temp, result, &result_index, &result_size); + temp = (char *)NULL; /* Freed in sub_append_string (). */ + result[result_index] = '\0'; + break; + } + } + else + { + RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, PROMPT_GROWTH); + result[result_index++] = c; + result[result_index] = '\0'; + } + } +#else /* !PROMPT_STRING_DECODE */ + result = savestring (string); +#endif /* !PROMPT_STRING_DECODE */ + + /* Save the delimiter stack and point `dstack' to temp space so any + command substitutions in the prompt string won't result in screwing + up the parser's quoting state. */ + save_dstack = dstack; + dstack = temp_dstack; + dstack.delimiter_depth = 0; + + /* Perform variable and parameter expansion and command substitution on + the prompt string. */ + if (promptvars || posixly_correct) + { + last_exit_value = last_command_exit_value; + list = expand_prompt_string (result, Q_DOUBLE_QUOTES); + free (result); + result = string_list (list); + dispose_words (list); + last_command_exit_value = last_exit_value; + } + else + { + t = dequote_string (result); + free (result); + result = t; + } + + dstack = save_dstack; + + return (result); +} + +/************************************************ + * * + * ERROR HANDLING * + * * + ************************************************/ + +/* Report a syntax error, and restart the parser. Call here for fatal + errors. */ +int +yyerror (msg) + const char *msg; +{ + report_syntax_error ((char *)NULL); + reset_parser (); + return (0); +} + +static char * +error_token_from_token (token) + int token; +{ + char *t; + + if (t = find_token_in_alist (token, word_token_alist, 0)) + return t; + + if (t = find_token_in_alist (token, other_token_alist, 0)) + return t; + + t = (char *)NULL; + /* This stuff is dicy and needs closer inspection */ + switch (current_token) + { + case WORD: + case ASSIGNMENT_WORD: + if (yylval.word) + t = savestring (yylval.word->word); + break; + case NUMBER: + t = itos (yylval.number); + break; + case ARITH_CMD: + if (yylval.word_list) + t = string_list (yylval.word_list); + break; + case ARITH_FOR_EXPRS: + if (yylval.word_list) + t = string_list_internal (yylval.word_list, " ; "); + break; + case COND_CMD: + t = (char *)NULL; /* punt */ + break; + } + + return t; +} + +static char * +error_token_from_text () +{ + char *msg, *t; + int token_end, i; + + t = shell_input_line; + i = shell_input_line_index; + token_end = 0; + msg = (char *)NULL; + + if (i && t[i] == '\0') + i--; + + while (i && (whitespace (t[i]) || t[i] == '\n')) + i--; + + if (i) + token_end = i + 1; + + while (i && (member (t[i], " \n\t;|&") == 0)) + i--; + + while (i != token_end && (whitespace (t[i]) || t[i] == '\n')) + i++; + + /* Return our idea of the offending token. */ + if (token_end || (i == 0 && token_end == 0)) + { + if (token_end) + msg = substring (t, i, token_end); + else /* one-character token */ + { + msg = (char *)xmalloc (2); + msg[0] = t[i]; + msg[1] = '\0'; + } + } + + return (msg); +} + +static void +print_offending_line () +{ + char *msg; + int token_end; + + msg = savestring (shell_input_line); + token_end = strlen (msg); + while (token_end && msg[token_end - 1] == '\n') + msg[--token_end] = '\0'; + + parser_error (line_number, "`%s'", msg); + free (msg); +} + +/* Report a syntax error with line numbers, etc. + Call here for recoverable errors. If you have a message to print, + then place it in MESSAGE, otherwise pass NULL and this will figure + out an appropriate message for you. */ +static void +report_syntax_error (message) + char *message; +{ + char *msg; + + if (message) + { + parser_error (line_number, "%s", message); + if (interactive && EOF_Reached) + EOF_Reached = 0; + last_command_exit_value = EX_USAGE; + return; + } + + /* If the line of input we're reading is not null, try to find the + objectionable token. First, try to figure out what token the + parser's complaining about by looking at current_token. */ + if (current_token != 0 && EOF_Reached == 0 && (msg = error_token_from_token (current_token))) + { + parser_error (line_number, _("syntax error near unexpected token `%s'"), msg); + free (msg); + + if (interactive == 0) + print_offending_line (); + + last_command_exit_value = EX_USAGE; + return; + } + + /* If looking at the current token doesn't prove fruitful, try to find the + offending token by analyzing the text of the input line near the current + input line index and report what we find. */ + if (shell_input_line && *shell_input_line) + { + msg = error_token_from_text (); + if (msg) + { + parser_error (line_number, _("syntax error near `%s'"), msg); + free (msg); + } + + /* If not interactive, print the line containing the error. */ + if (interactive == 0) + print_offending_line (); + } + else + { + msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); + parser_error (line_number, "%s", msg); + /* When the shell is interactive, this file uses EOF_Reached + only for error reporting. Other mechanisms are used to + decide whether or not to exit. */ + if (interactive && EOF_Reached) + EOF_Reached = 0; + } + + last_command_exit_value = EX_USAGE; +} + +/* ??? Needed function. ??? We have to be able to discard the constructs + created during parsing. In the case of error, we want to return + allocated objects to the memory pool. In the case of no error, we want + to throw away the information about where the allocated objects live. + (dispose_command () will actually free the command.) */ +static void +discard_parser_constructs (error_p) + int error_p; +{ +} + +/************************************************ + * * + * EOF HANDLING * + * * + ************************************************/ + +/* Do that silly `type "bye" to exit' stuff. You know, "ignoreeof". */ + +/* A flag denoting whether or not ignoreeof is set. */ +int ignoreeof = 0; + +/* The number of times that we have encountered an EOF character without + another character intervening. When this gets above the limit, the + shell terminates. */ +int eof_encountered = 0; + +/* The limit for eof_encountered. */ +int eof_encountered_limit = 10; + +/* If we have EOF as the only input unit, this user wants to leave + the shell. If the shell is not interactive, then just leave. + Otherwise, if ignoreeof is set, and we haven't done this the + required number of times in a row, print a message. */ +static void +handle_eof_input_unit () +{ + if (interactive) + { + /* shell.c may use this to decide whether or not to write out the + history, among other things. We use it only for error reporting + in this file. */ + if (EOF_Reached) + EOF_Reached = 0; + + /* If the user wants to "ignore" eof, then let her do so, kind of. */ + if (ignoreeof) + { + if (eof_encountered < eof_encountered_limit) + { + fprintf (stderr, _("Use \"%s\" to leave the shell.\n"), + login_shell ? "logout" : "exit"); + eof_encountered++; + /* Reset the parsing state. */ + last_read_token = current_token = '\n'; + /* Reset the prompt string to be $PS1. */ + prompt_string_pointer = (char **)NULL; + prompt_again (); + return; + } + } + + /* In this case EOF should exit the shell. Do it now. */ + reset_parser (); + exit_builtin ((WORD_LIST *)NULL); + } + else + { + /* We don't write history files, etc., for non-interactive shells. */ + EOF_Reached = 1; + } +} + +/************************************************ + * * + * STRING PARSING FUNCTIONS * + * * + ************************************************/ + +/* It's very important that these two functions treat the characters + between ( and ) identically. */ + +static WORD_LIST parse_string_error; + +/* Take a string and run it through the shell parser, returning the + resultant word list. Used by compound array assignment. */ +WORD_LIST * +parse_string_to_word_list (s, flags, whom) + char *s; + int flags; + const char *whom; +{ + WORD_LIST *wl; + int tok, orig_current_token, orig_line_number, orig_input_terminator; + int orig_line_count; + int old_echo_input, old_expand_aliases; +#if defined (HISTORY) + int old_remember_on_history, old_history_expansion_inhibited; +#endif + +#if defined (HISTORY) + old_remember_on_history = remember_on_history; +# if defined (BANG_HISTORY) + old_history_expansion_inhibited = history_expansion_inhibited; +# endif + bash_history_disable (); +#endif + + orig_line_number = line_number; + orig_line_count = current_command_line_count; + orig_input_terminator = shell_input_line_terminator; + old_echo_input = echo_input_at_read; + old_expand_aliases = expand_aliases; + + push_stream (1); + last_read_token = WORD; /* WORD to allow reserved words here */ + current_command_line_count = 0; + echo_input_at_read = expand_aliases = 0; + + with_input_from_string (s, whom); + wl = (WORD_LIST *)NULL; + + if (flags & 1) + parser_state |= PST_COMPASSIGN; + + while ((tok = read_token (READ)) != yacc_EOF) + { + if (tok == '\n' && *bash_input.location.string == '\0') + break; + if (tok == '\n') /* Allow newlines in compound assignments */ + continue; + if (tok != WORD && tok != ASSIGNMENT_WORD) + { + line_number = orig_line_number + line_number - 1; + orig_current_token = current_token; + current_token = tok; + yyerror ((char *)NULL); /* does the right thing */ + current_token = orig_current_token; + if (wl) + dispose_words (wl); + wl = &parse_string_error; + break; + } + wl = make_word_list (yylval.word, wl); + } + + last_read_token = '\n'; + pop_stream (); + +#if defined (HISTORY) + remember_on_history = old_remember_on_history; +# if defined (BANG_HISTORY) + history_expansion_inhibited = old_history_expansion_inhibited; +# endif /* BANG_HISTORY */ +#endif /* HISTORY */ + + echo_input_at_read = old_echo_input; + expand_aliases = old_expand_aliases; + + current_command_line_count = orig_line_count; + shell_input_line_terminator = orig_input_terminator; + + if (flags & 1) + parser_state &= ~PST_COMPASSIGN; + + if (wl == &parse_string_error) + { + last_command_exit_value = EXECUTION_FAILURE; + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else + jump_to_top_level (DISCARD); + } + + return (REVERSE_LIST (wl, WORD_LIST *)); +} + +static char * +parse_compound_assignment (retlenp) + int *retlenp; +{ + WORD_LIST *wl, *rl; + int tok, orig_line_number, orig_token_size; + char *saved_token, *ret; + + saved_token = token; + orig_token_size = token_buffer_size; + orig_line_number = line_number; + + last_read_token = WORD; /* WORD to allow reserved words here */ + + token = (char *)NULL; + token_buffer_size = 0; + + wl = (WORD_LIST *)NULL; /* ( */ + parser_state |= PST_COMPASSIGN; + + while ((tok = read_token (READ)) != ')') + { + if (tok == '\n') /* Allow newlines in compound assignments */ + { + if (SHOULD_PROMPT ()) + prompt_again (); + continue; + } + if (tok != WORD && tok != ASSIGNMENT_WORD) + { + current_token = tok; /* for error reporting */ + if (tok == yacc_EOF) /* ( */ + parser_error (orig_line_number, _("unexpected EOF while looking for matching `)'")); + else + yyerror ((char *)NULL); /* does the right thing */ + if (wl) + dispose_words (wl); + wl = &parse_string_error; + break; + } + wl = make_word_list (yylval.word, wl); + } + + FREE (token); + token = saved_token; + token_buffer_size = orig_token_size; + + parser_state &= ~PST_COMPASSIGN; + + if (wl == &parse_string_error) + { + last_command_exit_value = EXECUTION_FAILURE; + last_read_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else + jump_to_top_level (DISCARD); + } + + last_read_token = WORD; + if (wl) + { + rl = REVERSE_LIST (wl, WORD_LIST *); + ret = string_list (rl); + dispose_words (rl); + } + else + ret = (char *)NULL; + + if (retlenp) + *retlenp = (ret && *ret) ? strlen (ret) : 0; + 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 = xmalloc (sizeof (sh_parser_state_t)); + if (ps == 0) + return ((sh_parser_state_t *)NULL); + + ps->parser_state = parser_state; + ps->token_state = save_token_state (); + + ps->input_line_terminator = shell_input_line_terminator; + ps->eof_encountered = eof_encountered; + + ps->current_command_line_count = current_command_line_count; + +#if defined (HISTORY) + ps->remember_on_history = remember_on_history; +# if defined (BANG_HISTORY) + ps->history_expansion_inhibited = history_expansion_inhibited; +# endif +#endif + + ps->last_command_exit_value = last_command_exit_value; +#if defined (ARRAY_VARS) + v = find_variable ("PIPESTATUS"); + if (v && array_p (v) && array_cell (v)) + ps->pipestatus = array_copy (array_cell (v)); + else + ps->pipestatus = (ARRAY *)NULL; +#endif + + ps->last_shell_builtin = last_shell_builtin; + ps->this_shell_builtin = this_shell_builtin; + + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; + + return (ps); +} + +void +restore_parser_state (ps) + sh_parser_state_t *ps; +{ +#if defined (ARRAY_VARS) + SHELL_VAR *v; +#endif + + if (ps == 0) + return; + + parser_state = ps->parser_state; + if (ps->token_state) + { + restore_token_state (ps->token_state); + free (ps->token_state); + } + + shell_input_line_terminator = ps->input_line_terminator; + eof_encountered = ps->eof_encountered; + + current_command_line_count = ps->current_command_line_count; + +#if defined (HISTORY) + remember_on_history = ps->remember_on_history; +# if defined (BANG_HISTORY) + history_expansion_inhibited = ps->history_expansion_inhibited; +# endif +#endif + + last_command_exit_value = ps->last_command_exit_value; +#if defined (ARRAY_VARS) + v = find_variable ("PIPESTATUS"); + if (v && array_p (v) && array_cell (v)) + { + array_dispose (array_cell (v)); + var_setarray (v, ps->pipestatus); + } +#endif + + last_shell_builtin = ps->last_shell_builtin; + this_shell_builtin = ps->this_shell_builtin; + + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; +} + +/************************************************ + * * + * MULTIBYTE CHARACTER HANDLING * + * * + ************************************************/ + +#if defined (HANDLE_MULTIBYTE) +static void +set_line_mbstate () +{ + int i, previ, len, c; + mbstate_t mbs, prevs; + size_t mbclen; + + if (shell_input_line == NULL) + return; + len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ + FREE (shell_input_line_property); + shell_input_line_property = (char *)xmalloc (len + 1); + + memset (&prevs, '\0', sizeof (mbstate_t)); + for (i = previ = 0; i < len; i++) + { + mbs = prevs; + + c = shell_input_line[i]; + if (c == EOF) + { + int j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; + } + + mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); + if (mbclen == 1 || mbclen == (size_t)-1) + { + mbclen = 1; + previ = i + 1; + } + else if (mbclen == (size_t)-2) + mbclen = 0; + else if (mbclen > 1) + { + mbclen = 0; + previ = i + 1; + prevs = mbs; + } + else + { + /* XXX - what to do if mbrlen returns 0? (null wide character) */ + int j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; + } + + shell_input_line_property[i] = mbclen; + } +} +#endif /* HANDLE_MULTIBYTE */ diff --git a/patchlevel.h b/patchlevel.h index 5eaed70be..4c2c67a45 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 1 +#define PATCHLEVEL 0 #endif /* _PATCHLEVEL_H_ */ diff --git a/patchlevel.h~ b/patchlevel.h~ new file mode 100644 index 000000000..5eaed70be --- /dev/null +++ b/patchlevel.h~ @@ -0,0 +1,30 @@ +/* patchlevel.h -- current bash patch level */ + +/* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_PATCHLEVEL_H_) +#define _PATCHLEVEL_H_ + +/* It's important that there be no other strings in this file that match the + regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh + looks for to find the patch level (for the sccs version string). */ + +#define PATCHLEVEL 1 + +#endif /* _PATCHLEVEL_H_ */ diff --git a/po.orig/LINGUAS b/po.orig/LINGUAS new file mode 100644 index 000000000..3595cc0f5 --- /dev/null +++ b/po.orig/LINGUAS @@ -0,0 +1,2 @@ +# Set of available languages. +en@quot en@boldquot diff --git a/po.orig/Makefile.in.in b/po.orig/Makefile.in.in new file mode 100644 index 000000000..c28f1ce4d --- /dev/null +++ b/po.orig/Makefile.in.in @@ -0,0 +1,357 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datadir@ +localedir = $(datadir)/locale +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)' \ + --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' + $(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/po.orig/Makevars b/po.orig/Makevars new file mode 100644 index 000000000..84b2d9562 --- /dev/null +++ b/po.orig/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/po.orig/Makevars.template b/po.orig/Makevars.template new file mode 100644 index 000000000..32692ab4b --- /dev/null +++ b/po.orig/Makevars.template @@ -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 = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# 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 = + +# 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/po.orig/POTFILES.in b/po.orig/POTFILES.in new file mode 100644 index 000000000..a59a0965b --- /dev/null +++ b/po.orig/POTFILES.in @@ -0,0 +1,76 @@ +# 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/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/po.orig/README b/po.orig/README new file mode 100644 index 000000000..979884c63 --- /dev/null +++ b/po.orig/README @@ -0,0 +1 @@ +This apparently requires GNU sed diff --git a/po.orig/Rules-builtins b/po.orig/Rules-builtins new file mode 100644 index 000000000..57df81c9c --- /dev/null +++ b/po.orig/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/po.orig/Rules-quot b/po.orig/Rules-quot new file mode 100644 index 000000000..5f46d237d --- /dev/null +++ b/po.orig/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/po.orig/bash.po.orig b/po.orig/bash.po.orig new file mode 100644 index 000000000..023388d96 --- /dev/null +++ b/po.orig/bash.po.orig @@ -0,0 +1,5623 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#: array.c:695 array.c:755 array.c:879 bashhist.c:661 bashline.c:801 +#: bashline.c:1416 error.c:88 error.c:318 error.c:320 error.c:322 +#: execute_cmd.c:2005 execute_cmd.c:2007 execute_cmd.c:2195 execute_cmd.c:2441 +#: execute_cmd.c:2580 execute_cmd.c:3186 execute_cmd.c:3838 expr.c:1092 +#: expr.c:1093 general.c:132 jobs.c:1128 jobs.c:1143 jobs.c:2318 jobs.c:2319 +#: locale.c:64 locale.c:422 parse.y:1209 pcomplete.c:937 pcomplete.c:947 +#: pcomplete.c:1076 print_cmd.c:142 print_cmd.c:305 print_cmd.c:364 +#: print_cmd.c:368 print_cmd.c:374 print_cmd.c:378 print_cmd.c:548 +#: print_cmd.c:733 print_cmd.c:847 print_cmd.c:851 subst.c:1483 subst.c:1510 +#: subst.c:1734 subst.c:1754 subst.c:4238 subst.c:4274 subst.c:6391 +#: syntax.h:43 unwind_prot.c:173 variables.c:1631 variables.c:2381 +#: /usr/homes/chet/src/bash/src/parse.y:1209 builtins/common.c:144 +#: builtins/common.c:640 builtins/getopt.c:204 builtins/mkbuiltins.c:1067 +#: builtins/mkbuiltins.c:1070 builtins/mkbuiltins.c:1072 +#: builtins/mkbuiltins.c:1074 builtins/mkbuiltins.c:1079 +#: builtins/mkbuiltins.c:1084 builtins/mkbuiltins.c:1088 +#: builtins/mkbuiltins.c:1094 builtins/mkbuiltins.c:1100 +#: builtins/mkbuiltins.c:1108 builtins/mkbuiltins.c:1111 +#: builtins/mkbuiltins.c:1207 builtins/mkbuiltins.c:1208 +#: builtins/caller.def:127 builtins/caller.def:131 builtins/command.def:134 +#: builtins/complete.def:567 builtins/declare.def:238 builtins/declare.def:355 +#: builtins/declare.def:438 builtins/fc.def:338 builtins/getopts.def:310 +#: builtins/help.def:105 builtins/help.def:110 builtins/history.def:291 +#: builtins/printf.def:123 builtins/printf.def:726 builtins/pushd.def:330 +#: builtins/pushd.def:371 builtins/pushd.def:654 builtins/pushd.def:662 +#: builtins/pushd.def:665 builtins/pushd.def:675 builtins/pushd.def:679 +#: builtins/pushd.def:683 builtins/pushd.def:686 builtins/pushd.def:689 +#: builtins/pushd.def:698 builtins/pushd.def:702 builtins/pushd.def:706 +#: builtins/pushd.def:709 builtins/read.def:258 builtins/read.def:386 +#: builtins/read.def:595 builtins/setattr.def:353 builtins/setattr.def:396 +#: builtins/ulimit.def:111 builtins/umask.def:131 lib/sh/snprintf.c:394 +#: lib/sh/snprintf.c:1691 lib/sh/stringlist.c:235 lib/sh/stringvec.c:223 +#: lib/malloc/stats.c:99 +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-12-04 16:07-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" + +#: arrayfunc.c:43 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:304 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: bashhist.c:319 +#, c-format +msgid "%s: cannot create: %s" +msgstr "" + +#: bashline.c:2789 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:2838 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:2867 braces.c:129 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:2901 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: error.c:163 +#, c-format +msgid "last command: %s\n" +msgstr "" + +#: error.c:168 +#, c-format +msgid "Report this to %s\n" +msgstr "" + +#: error.c:171 +msgid "Stopping myself..." +msgstr "" + +#: error.c:258 +#, c-format +msgid "%s: warning: " +msgstr "" + +#: error.c:403 +msgid "unknown command error" +msgstr "" + +#: error.c:404 +msgid "bad command type" +msgstr "" + +#: error.c:405 +msgid "bad connector" +msgstr "" + +#: error.c:406 +msgid "bad jump" +msgstr "" + +#: error.c:444 +#, c-format +msgid "%s: unbound variable" +msgstr "" + +#: error.c:451 builtins/common.c:221 +#, c-format +msgid "%s: readonly variable" +msgstr "" + +#: eval.c:173 +msgid "timed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:447 +msgid "close" +msgstr "" + +#: execute_cmd.c:447 +msgid "open" +msgstr "" + +#: execute_cmd.c:465 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1035 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:3520 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:3608 +#, c-format +msgid "%s: command not found" +msgstr "" + +#: execute_cmd.c:3820 shell.c:1393 builtins/evalfile.c:127 +#: builtins/hash.def:158 +#, c-format +msgid "%s: is a directory" +msgstr "" + +#: execute_cmd.c:3838 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "" + +#: execute_cmd.c:3875 shell.c:1403 builtins/evalfile.c:172 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "" + +#: execute_cmd.c:3948 builtins/declare.def:306 +#, c-format +msgid "%s: readonly function" +msgstr "" + +#: execute_cmd.c:3987 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:238 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:262 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:373 +msgid "syntax error in expression" +msgstr "" + +#: expr.c:413 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:434 expr.c:439 expr.c:749 +msgid "division by 0" +msgstr "" + +#: expr.c:465 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:495 expr.c:510 builtins/let.def:92 builtins/let.def:117 +msgid "expression expected" +msgstr "" + +#: expr.c:507 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:774 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:818 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:846 +msgid "missing `)'" +msgstr "" + +#: expr.c:870 +msgid "syntax error: operand expected" +msgstr "" + +#: expr.c:1091 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1145 +msgid "bad number" +msgstr "" + +#: expr.c:1149 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1169 +msgid "value too great for base" +msgstr "" + +#: expr.c:1217 +#, c-format +msgid "%s: expression error\n" +msgstr "" + +#: general.c:58 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: general.c:227 general.c:232 builtins/common.c:193 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "" + +#: input.c:229 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:237 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:692 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1631 nojobs.c:646 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:1814 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:1957 +#, c-format +msgid "wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)" +msgstr "" + +#: jobs.c:2061 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2283 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:2292 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3036 +msgid "no job control in this shell" +msgstr "" + +#: jobs.c:3250 +#, c-format +msgid "tcsetpgrp(%d) failed: pid %ld to pgrp %ld" +msgstr "" + +#: mailcheck.c:381 +msgid "You have mail in $_" +msgstr "" + +#: mailcheck.c:406 +msgid "You have new mail in $_" +msgstr "" + +#: mailcheck.c:422 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:316 +msgid "syntax error: arithmetic expression required" +msgstr "" + +#: make_cmd.c:318 +msgid "syntax error: `;' unexpected" +msgstr "" + +#: make_cmd.c:558 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:728 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: mksyntax.c:334 +#, c-format +msgid "%s: %s: cannot open: %s\n" +msgstr "" + +#: parse.y:1663 /usr/homes/chet/src/bash/src/parse.y:1663 +msgid "read_a_line: ignored null byte in input" +msgstr "" + +#: parse.y:1928 /usr/homes/chet/src/bash/src/parse.y:1928 +msgid "shell_getc: ignored null byte in input" +msgstr "" + +#: parse.y:2724 /usr/homes/chet/src/bash/src/parse.y:2724 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3009 /usr/homes/chet/src/bash/src/parse.y:3009 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3014 /usr/homes/chet/src/bash/src/parse.y:3014 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3018 /usr/homes/chet/src/bash/src/parse.y:3018 +msgid "syntax error in conditional expression" +msgstr "" + +#: parse.y:3096 /usr/homes/chet/src/bash/src/parse.y:3096 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3100 /usr/homes/chet/src/bash/src/parse.y:3100 +msgid "expected `)'" +msgstr "" + +#: parse.y:3128 /usr/homes/chet/src/bash/src/parse.y:3128 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3132 /usr/homes/chet/src/bash/src/parse.y:3132 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3160 /usr/homes/chet/src/bash/src/parse.y:3160 +msgid "-n" +msgstr "" + +#: parse.y:3169 /usr/homes/chet/src/bash/src/parse.y:3169 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3173 /usr/homes/chet/src/bash/src/parse.y:3173 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3189 /usr/homes/chet/src/bash/src/parse.y:3189 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3193 /usr/homes/chet/src/bash/src/parse.y:3193 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3204 /usr/homes/chet/src/bash/src/parse.y:3204 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3207 /usr/homes/chet/src/bash/src/parse.y:3207 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3211 /usr/homes/chet/src/bash/src/parse.y:3211 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:4398 /usr/homes/chet/src/bash/src/parse.y:4398 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:4416 /usr/homes/chet/src/bash/src/parse.y:4416 +#, c-format +msgid "syntax error near `%s'" +msgstr "" + +#: parse.y:4426 /usr/homes/chet/src/bash/src/parse.y:4426 +msgid "syntax error: unexpected end of file" +msgstr "" + +#: parse.y:4426 /usr/homes/chet/src/bash/src/parse.y:4426 +msgid "syntax error" +msgstr "" + +#: parse.y:4488 /usr/homes/chet/src/bash/src/parse.y:4488 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "" + +#: parse.y:4647 /usr/homes/chet/src/bash/src/parse.y:4647 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:987 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplete.c:1222 +msgid "ERROR: command_line_to_word_list returns NULL" +msgstr "" + +#: pcomplib.c:177 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:259 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1171 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:98 redir.c:133 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:140 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:144 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "" + +#: redir.c:149 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:154 +#, c-format +msgid "cannot create temp file for here document: %s" +msgstr "" + +#: redir.c:508 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:948 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:300 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:304 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:463 shell.c:735 builtins/common.c:156 +#, c-format +msgid "%s: option requires an argument" +msgstr "" + +#: shell.c:748 builtins/common.c:179 +#, c-format +msgid "%s: invalid option" +msgstr "" + +#: shell.c:837 +#, c-format +msgid "%c%c: invalid option" +msgstr "" + +#: shell.c:1588 +msgid "I have no name!" +msgstr "" + +#: shell.c:1721 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:1722 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:1724 +msgid "GNU long options:\n" +msgstr "" + +#: shell.c:1726 +#, c-format +msgid "\t--%s\n" +msgstr "" + +#: shell.c:1728 +msgid "Shell options:\n" +msgstr "" + +#: shell.c:1729 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:1732 builtins/mkbuiltins.c:131 builtins/set.def:2 +msgid "set" +msgstr "" + +#: shell.c:1744 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "" + +#: shell.c:1750 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1751 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1752 +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:483 +msgid "Bad code in sig.c: sigprocmask" +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:666 subst.c:752 subst.c:865 subst.c:1107 subst.c:1370 +msgid "$(" +msgstr "" + +#: subst.c:876 +msgid "$[" +msgstr "" + +#: subst.c:876 +msgid "[" +msgstr "" + +#: subst.c:876 +msgid "]" +msgstr "" + +#: subst.c:1010 subst.c:1131 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2006 +#, c-format +msgid "%s%s=(%s)\n" +msgstr "" + +#: subst.c:2009 variables.c:2123 +#, c-format +msgid "%s%s=%s\n" +msgstr "" + +#: subst.c:2019 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:3381 +msgid "sh-np" +msgstr "" + +#: subst.c:3449 +#, c-format +msgid "pid %ld: dev_fd_list:" +msgstr "" + +#: subst.c:3455 /usr/local/share/bison/bison.simple:719 +#: /usr/local/share/bison/bison.simple:864 +#, c-format +msgid " %d" +msgstr "" + +#: subst.c:3515 subst.c:3531 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:3562 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:3605 +#, c-format +msgid "cannot open named pipe %s for %s" +msgstr "" + +#: subst.c:3606 +msgid "reading" +msgstr "" + +#: subst.c:3606 +msgid "writing" +msgstr "" + +#: subst.c:3613 +#, c-format +msgid "cannout reset nodelay mode for fd %d" +msgstr "" + +#: subst.c:3623 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:3647 +msgid "process substitution" +msgstr "" + +#: subst.c:3697 +msgid "read_comsub: ignored null byte in input" +msgstr "" + +#: subst.c:3798 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:3827 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:3844 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:3901 +msgid "command substitution" +msgstr "" + +#: subst.c:4279 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:4524 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:4966 subst.c:4983 +msgid "#%:-=?+/}" +msgstr "" + +#: subst.c:5033 +msgid "%:=+/" +msgstr "" + +#: subst.c:5204 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:5204 builtins/history.def:247 +msgid "??" +msgstr "" + +#: subst.c:5278 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:5792 +msgid "<(" +msgstr "" + +#: subst.c:5792 +msgid ">(" +msgstr "" + +#: subst.c:6647 +#, c-format +msgid "no match: %s" +msgstr "" + +#: syntax.h:26 +msgid "\\`$\"\n" +msgstr "" + +#: syntax.h:27 +msgid "\\`$" +msgstr "" + +#: syntax.h:29 +msgid "()<>;&|" +msgstr "" + +#: syntax.h:32 +msgid "\"`'" +msgstr "" + +#: syntax.h:35 +msgid "$<>" +msgstr "" + +#: syntax.h:41 +msgid "@*+?!" +msgstr "" + +#: syntax.h:45 +msgid "*?[]^" +msgstr "" + +#: test.c:152 +msgid "argument expected" +msgstr "" + +#: test.c:161 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:176 +msgid "/dev/fd/" +msgstr "" + +#: test.c:202 +msgid "/dev/std" +msgstr "" + +#: test.c:206 +msgid "out" +msgstr "" + +#: test.c:208 +msgid "err" +msgstr "" + +#: test.c:359 +msgid "`)' expected" +msgstr "" + +#: test.c:361 +#, c-format +msgid "`)' expected, found %s" +msgstr "" + +#: test.c:376 test.c:785 test.c:788 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:541 test.c:828 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:903 builtins/test.def:134 +msgid "missing `]'" +msgstr "" + +#: test.c:919 builtins/common.c:132 +msgid "too many arguments" +msgstr "" + +#: trap.c:171 +msgid "DEFAULT_SIG" +msgstr "" + +#: trap.c:173 +msgid "IGNORE_SIG" +msgstr "" + +#: trap.c:175 +msgid "IMPOSSIBLE_TRAP_HANDLER" +msgstr "" + +#: trap.c:179 builtins/caller.def:94 +msgid "NULL" +msgstr "" + +#: trap.c:192 +msgid "invalid signal number" +msgstr "" + +#: trap.c:222 builtins/common.c:638 builtins/trap.def:218 +msgid "SIG" +msgstr "" + +#: trap.c:307 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:311 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:347 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: trap.c:673 +msgid "exit trap" +msgstr "" + +#: trap.c:781 +msgid "debug trap" +msgstr "" + +#: trap.c:800 +msgid "error trap" +msgstr "" + +#: trap.c:811 +msgid "return trap" +msgstr "" + +#: trap.c:821 +msgid "interrupt trap" +msgstr "" + +#: variables.c:287 +msgid "() {" +msgstr "" + +#: variables.c:309 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:370 +msgid "NODE" +msgstr "" + +#: variables.c:383 +msgid "# " +msgstr "" + +#: variables.c:387 +msgid "+ " +msgstr "" + +#: variables.c:390 variables.c:2867 variables.c:3464 variables.c:3500 +#: variables.c:3632 variables.c:3735 +msgid "IFS" +msgstr "" + +#: variables.c:401 +msgid "600" +msgstr "" + +#: variables.c:401 +msgid "60" +msgstr "" + +#: variables.c:409 variables.c:3647 variables.c:3955 builtins/getopts.def:231 +msgid "OPTIND" +msgstr "" + +#: variables.c:411 variables.c:3646 variables.c:3976 +msgid "OPTERR" +msgstr "" + +#: variables.c:420 +msgid "BASH" +msgstr "" + +#: variables.c:430 +msgid "BASH_VERSION" +msgstr "" + +#: variables.c:436 +msgid "BASH_EXECUTION_STRING" +msgstr "" + +#: variables.c:452 +msgid "~/.sh_history" +msgstr "" + +#: variables.c:452 +msgid "~/.bash_history" +msgstr "" + +#: variables.c:457 +msgid "500" +msgstr "" + +#: variables.c:469 variables.c:3633 builtins/set.def:313 builtins/set.def:315 +#: builtins/set.def:316 +msgid "IGNOREEOF" +msgstr "" + +#: variables.c:471 variables.c:3669 builtins/set.def:191 builtins/set.def:311 +msgid "ignoreeof" +msgstr "" + +#: variables.c:527 +msgid "HOSTTYPE" +msgstr "" + +#: variables.c:528 +msgid "OSTYPE" +msgstr "" + +#: variables.c:529 +msgid "MACHTYPE" +msgstr "" + +#: variables.c:531 +msgid "HOSTNAME" +msgstr "" + +#: variables.c:660 variables.c:694 +msgid "SHLVL" +msgstr "" + +#: variables.c:669 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:734 +msgid "shell-init" +msgstr "" + +#: variables.c:758 variables.c:761 +msgid "PPID" +msgstr "" + +#: variables.c:772 variables.c:775 +msgid "UID" +msgstr "" + +#: variables.c:782 variables.c:785 +msgid "EUID" +msgstr "" + +#: variables.c:798 variables.c:800 +msgid "BASH_VERSINFO" +msgstr "" + +#: variables.c:893 +#, c-format +msgid "%s=" +msgstr "" + +#: variables.c:1087 variables.c:1093 +msgid "SECONDS" +msgstr "" + +#: variables.c:1395 +msgid "BASH_COMMAND" +msgstr "" + +#: variables.c:1396 +msgid "BASH_SUBSHELL" +msgstr "" + +#: variables.c:1398 +msgid "RANDOM" +msgstr "" + +#: variables.c:1399 +msgid "LINENO" +msgstr "" + +#: variables.c:1402 +msgid "HISTCMD" +msgstr "" + +#: variables.c:1406 +msgid "COMP_WORDBREAKS" +msgstr "" + +#: variables.c:1410 +msgid "DIRSTACK" +msgstr "" + +#: variables.c:1414 +msgid "GROUPS" +msgstr "" + +#: variables.c:1417 variables.c:3554 variables.c:3578 builtins/evalfile.c:101 +msgid "BASH_ARGC" +msgstr "" + +#: variables.c:1418 variables.c:3553 variables.c:3577 builtins/evalfile.c:100 +msgid "BASH_ARGV" +msgstr "" + +#: variables.c:1609 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2708 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:2922 variables.c:2931 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:2937 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3071 +msgid ") {" +msgstr "" + +#: variables.c:3222 +msgid "_=" +msgstr "" + +#: variables.c:3242 +msgid "_GNU_nonoption_argv_flags_" +msgstr "" + +#: variables.c:3362 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3375 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3441 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:3625 builtins/history.def:282 +msgid "HISTTIMEFORMAT" +msgstr "" + +#: variables.c:3635 +msgid "LANG" +msgstr "" + +#: variables.c:3636 +msgid "LC_ALL" +msgstr "" + +#: variables.c:3654 +msgid "TERMCAP" +msgstr "" + +#: variables.c:3655 +msgid "TERMINFO" +msgstr "" + +#: variables.c:3662 lib/sh/strftime.c:185 lib/sh/strftime.c:187 +msgid "TZ" +msgstr "" + +#: variables.c:3867 +msgid "ignorespace" +msgstr "" + +#: variables.c:3869 +msgid "ignoredups" +msgstr "" + +#: variables.c:3871 +msgid "ignoreboth" +msgstr "" + +#: variables.c:3873 +msgid "erasedups" +msgstr "" + +#: version.c:60 version.c:62 +#, c-format +msgid "%s.%d(%d)-%s" +msgstr "" + +#: version.c:66 version.c:68 +#, c-format +msgid "%s.%d(%d)" +msgstr "" + +#: version.c:78 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:80 +msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n" +msgstr "" + +#: xmalloc.c:91 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:93 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:113 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:115 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:149 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:151 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:173 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:175 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "error" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "$undefined." +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "IF" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "THEN" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "ELSE" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "ELIF" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "FI" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:469 +msgid "CASE" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "ESAC" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "FOR" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "SELECT" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "WHILE" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "UNTIL" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "DO" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 +msgid "DONE" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:470 builtins/mkbuiltins.c:425 +msgid "FUNCTION" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "COND_START" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "COND_END" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "COND_ERROR" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "IN" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "BANG" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "TIME" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:471 +msgid "TIMEOPT" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:472 +msgid "WORD" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:472 +msgid "ASSIGNMENT_WORD" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:472 +msgid "NUMBER" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:472 +msgid "ARITH_CMD" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:472 +msgid "ARITH_FOR_EXPRS" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:473 +msgid "COND_CMD" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:473 +msgid "AND_AND" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:473 +msgid "OR_OR" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:473 +msgid "GREATER_GREATER" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:473 +msgid "LESS_LESS" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:474 +msgid "LESS_AND" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:474 +msgid "LESS_LESS_LESS" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:474 +msgid "GREATER_AND" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:474 +msgid "SEMI_SEMI" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:475 +msgid "LESS_LESS_MINUS" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:475 +msgid "AND_GREATER" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:475 +msgid "LESS_GREATER" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:475 +msgid "GREATER_BAR" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:475 +msgid "'&'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "';'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'\\n'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "yacc_EOF" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'|'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'>'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'<'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'-'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'{'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:476 +msgid "'}'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:477 +msgid "'('" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:477 +msgid "')'" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:477 +msgid "inputunit" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:477 +msgid "word_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:477 +msgid "redirection" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:478 +msgid "simple_command_element" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:478 +msgid "redirection_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:478 +msgid "simple_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:479 builtins/command.def:2 +#: builtins/complete.def:82 +msgid "command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:479 +msgid "shell_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:479 +msgid "for_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:479 +msgid "arith_for_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:480 +msgid "select_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:480 +msgid "case_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:480 +msgid "function_def" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:480 +msgid "function_body" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:481 +msgid "subshell" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:481 +msgid "if_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:481 +msgid "group_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:481 +msgid "arith_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:482 +msgid "cond_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:482 +msgid "elif_clause" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:482 +msgid "case_clause" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:482 +msgid "pattern_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:483 +msgid "case_clause_sequence" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:483 +msgid "pattern" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:483 +msgid "list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:483 +msgid "compound_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:483 +msgid "list0" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:484 +msgid "list1" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:484 +msgid "simple_list_terminator" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:484 +msgid "list_terminator" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:484 +msgid "newline_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:485 +msgid "simple_list" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:485 +msgid "simple_list1" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:485 +msgid "pipeline_command" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:485 +msgid "pipeline" +msgstr "" + +#: /usr/homes/chet/src/bash/src/parse.y:486 +msgid "timespec" +msgstr "" + +#: /usr/local/share/bison/bison.simple:156 +msgid "syntax error: cannot back up" +msgstr "" + +#: /usr/local/share/bison/bison.simple:442 +msgid "Starting parse\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:492 +#: /usr/local/share/bison/bison.simple:499 +#: /usr/local/share/bison/bison.simple:924 +msgid "parser stack overflow" +msgstr "" + +#: /usr/local/share/bison/bison.simple:538 +#, c-format +msgid "Stack size increased to %lu\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:545 +#, c-format +msgid "Entering state %d\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:572 +msgid "Reading a token: " +msgstr "" + +#: /usr/local/share/bison/bison.simple:583 +msgid "Now at end of input.\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:594 +#, c-format +msgid "Next token is %d (%s" +msgstr "" + +#: /usr/local/share/bison/bison.simple:633 +#, c-format +msgid "Shifting token %d (%s), " +msgstr "" + +#: /usr/local/share/bison/bison.simple:695 +#, c-format +msgid "Reducing via rule %d (line %d), " +msgstr "" + +#: /usr/local/share/bison/bison.simple:701 +#, c-format +msgid " -> %s\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:717 +msgid "state stack now" +msgstr "" + +#: /usr/local/share/bison/bison.simple:769 +#: /usr/local/share/bison/bison.simple:774 +msgid "parse error, unexpected " +msgstr "" + +#: /usr/local/share/bison/bison.simple:785 +msgid ", expecting " +msgstr "" + +#: /usr/local/share/bison/bison.simple:785 +msgid " or " +msgstr "" + +#: /usr/local/share/bison/bison.simple:795 +msgid "parse error; also virtual memory exhausted" +msgstr "" + +#: /usr/local/share/bison/bison.simple:799 +msgid "parse error" +msgstr "" + +#: /usr/local/share/bison/bison.simple:816 +#, c-format +msgid "Discarding token %d (%s).\n" +msgstr "" + +#: /usr/local/share/bison/bison.simple:862 +msgid "Error: state stack now" +msgstr "" + +#: /usr/local/share/bison/bison.simple:895 +msgid "Shifting error token, " +msgstr "" + +#: builtins/common.c:102 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:119 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:163 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:170 +#, c-format +msgid "%s: not found" +msgstr "" + +#: builtins/common.c:186 +#, c-format +msgid "%s: invalid option name" +msgstr "" + +#: builtins/common.c:200 +#, c-format +msgid "%s: invalid number" +msgstr "" + +#: builtins/common.c:207 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:214 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:229 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:229 builtins/common.c:231 +msgid "argument" +msgstr "" + +#: builtins/common.c:231 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:239 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:247 +#, c-format +msgid "%s: no job control" +msgstr "" + +#: builtins/common.c:249 +msgid "no job control" +msgstr "" + +#: builtins/common.c:259 +#, c-format +msgid "%s: restricted" +msgstr "" + +#: builtins/common.c:269 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:417 +msgid "`'" +msgstr "" + +#: builtins/common.c:480 +#, c-format +msgid "%s: could not get current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:547 builtins/common.c:549 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "" + +#: builtins/common.c:631 builtins/common.c:680 builtins/trap.def:214 +msgid "SIGJUNK" +msgstr "" + +#: builtins/common.c:631 builtins/common.c:680 +msgid "Unknown" +msgstr "" + +#: builtins/common.c:644 +#, c-format +msgid "%2d) %s" +msgstr "" + +#: builtins/evalfile.c:132 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: builtins/evalfile.c:140 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:178 builtins/evalfile.c:237 +msgid "_evalfile" +msgstr "" + +#: builtins/evalfile.c:204 builtins/mkbuiltins.c:130 builtins/source.def:2 +#: builtins/source.def:143 builtins/source.def:170 +msgid "source" +msgstr "" + +#: builtins/evalstring.c:76 builtins/evalstring.c:103 +#: builtins/evalstring.c:287 +msgid "parse_and_execute_top" +msgstr "" + +#: builtins/evalstring.c:181 builtins/evalstring.c:189 +#: builtins/evalstring.c:223 builtins/evalstring.c:272 +msgid "pe_dispose" +msgstr "" + +#: builtins/evalstring.c:205 +msgid "parse_and_execute" +msgstr "" + +#: builtins/getopt.c:108 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: builtins/getopt.c:109 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: builtins/getopt.c:231 +msgid "sh_getopt_debug_restore_state: resetting nextchar" +msgstr "" + +#: builtins/getopt.c:254 +msgid "abc:d:0123456789" +msgstr "" + +#: builtins/getopt.c:271 +msgid "digits occur in two different argv-elements.\n" +msgstr "" + +#: builtins/getopt.c:273 +#, c-format +msgid "option %c\n" +msgstr "" + +#: builtins/getopt.c:277 +msgid "option a\n" +msgstr "" + +#: builtins/getopt.c:281 +msgid "option b\n" +msgstr "" + +#: builtins/getopt.c:285 +#, c-format +msgid "option c with value `%s'\n" +msgstr "" + +#: builtins/getopt.c:292 +#, c-format +msgid "?? sh_getopt returned character code 0%o ??\n" +msgstr "" + +#: builtins/getopt.c:298 +msgid "non-option ARGV-elements: " +msgstr "" + +#: builtins/mkbuiltins.c:47 +msgid "builtins.texi" +msgstr "" + +#: builtins/mkbuiltins.c:130 builtins/break.def:2 +msgid "break" +msgstr "" + +#: builtins/mkbuiltins.c:130 builtins/break.def:2 +msgid "continue" +msgstr "" + +#: builtins/mkbuiltins.c:130 builtins/eval.def:2 builtins/eval.def:52 +msgid "eval" +msgstr "" + +#: builtins/mkbuiltins.c:130 builtins/exec.def:2 +msgid "exec" +msgstr "" + +#: builtins/mkbuiltins.c:131 builtins/mkbuiltins.c:138 +#: builtins/complete.def:86 builtins/setattr.def:2 +msgid "export" +msgstr "" + +#: builtins/mkbuiltins.c:131 builtins/mkbuiltins.c:138 builtins/setattr.def:2 +msgid "readonly" +msgstr "" + +#: builtins/mkbuiltins.c:131 builtins/return.def:2 +msgid "return" +msgstr "" + +#: builtins/mkbuiltins.c:131 builtins/shift.def:2 +msgid "shift" +msgstr "" + +#: builtins/mkbuiltins.c:131 builtins/set.def:2 +msgid "unset" +msgstr "" + +#: builtins/mkbuiltins.c:138 builtins/alias.def:2 builtins/complete.def:78 +#: builtins/type.def:228 +msgid "alias" +msgstr "" + +#: builtins/mkbuiltins.c:138 builtins/declare.def:2 +msgid "declare" +msgstr "" + +#: builtins/mkbuiltins.c:138 builtins/declare.def:2 +msgid "local" +msgstr "" + +#: builtins/mkbuiltins.c:138 +msgid "typeset" +msgstr "" + +#: builtins/mkbuiltins.c:194 +msgid "-externfile" +msgstr "" + +#: builtins/mkbuiltins.c:196 +msgid "-structfile" +msgstr "" + +#: builtins/mkbuiltins.c:198 +msgid "-noproduction" +msgstr "" + +#: builtins/mkbuiltins.c:200 +msgid "-document" +msgstr "" + +#: builtins/mkbuiltins.c:202 +msgid "-D" +msgstr "" + +#: builtins/mkbuiltins.c:218 +msgid "-documentonly" +msgstr "" + +#: builtins/mkbuiltins.c:223 +msgid "-H" +msgstr "" + +#: builtins/mkbuiltins.c:230 +#, c-format +msgid "%s: Unknown flag %s.\n" +msgstr "" + +#: builtins/mkbuiltins.c:245 +#, c-format +msgid "mk-%ld" +msgstr "" + +#: builtins/mkbuiltins.c:266 +#, c-format +msgid "@c Table of builtins created with %s.\n" +msgstr "" + +#: builtins/mkbuiltins.c:268 +msgid "@ftable @asis\n" +msgstr "" + +#: builtins/mkbuiltins.c:305 +msgid "@end ftable\n" +msgstr "" + +#: builtins/mkbuiltins.c:423 +msgid "BUILTIN" +msgstr "" + +#: builtins/mkbuiltins.c:424 +msgid "DOCNAME" +msgstr "" + +#: builtins/mkbuiltins.c:426 +msgid "SHORT_DOC" +msgstr "" + +#: builtins/mkbuiltins.c:428 +msgid "COMMENT" +msgstr "" + +#: builtins/mkbuiltins.c:429 +msgid "DEPENDS_ON" +msgstr "" + +#: builtins/mkbuiltins.c:430 +msgid "PRODUCES" +msgstr "" + +#: builtins/mkbuiltins.c:431 +msgid "END" +msgstr "" + +#: builtins/mkbuiltins.c:500 +#, c-format +msgid "mkbuiltins: %s: skipping zero-length file\n" +msgstr "" + +#: builtins/mkbuiltins.c:551 +#, c-format +msgid "Unknown directive `%s'" +msgstr "" + +#: builtins/mkbuiltins.c:577 +#, c-format +msgid "#line %d \"%s\"\n" +msgstr "" + +#: builtins/mkbuiltins.c:580 +#, c-format +msgid "#line %d \"%s%s\"\n" +msgstr "" + +#: builtins/mkbuiltins.c:582 builtins/mkbuiltins.c:954 +msgid "./" +msgstr "" + +#: builtins/mkbuiltins.c:703 +#, c-format +msgid "%s requires an argument" +msgstr "" + +#: builtins/mkbuiltins.c:715 +#, c-format +msgid "%s must be inside of a $BUILTIN block" +msgstr "" + +#: builtins/mkbuiltins.c:740 +msgid "(implied LONGDOC)" +msgstr "" + +#: builtins/mkbuiltins.c:766 +#, c-format +msgid "%s found before $END" +msgstr "" + +#: builtins/mkbuiltins.c:812 +msgid "syntax error: no current builtin for $FUNCTION directive" +msgstr "" + +#: builtins/mkbuiltins.c:816 +#, c-format +msgid "%s already has a function (%s)" +msgstr "" + +#: builtins/mkbuiltins.c:836 +#, c-format +msgid "%s already had a docname (%s)" +msgstr "" + +#: builtins/mkbuiltins.c:856 +#, c-format +msgid "%s already has short documentation (%s)" +msgstr "" + +#: builtins/mkbuiltins.c:910 +#, c-format +msgid "%s already has a %s definition" +msgstr "" + +#: builtins/mkbuiltins.c:923 +#, c-format +msgid "/* %s, created from %s. */\n" +msgstr "" + +#: builtins/mkbuiltins.c:955 +#, c-format +msgid "%s:%d:" +msgstr "" + +#: builtins/mkbuiltins.c:1010 +msgid "mkbuiltins: out of virtual memory\n" +msgstr "" + +#: builtins/mkbuiltins.c:1066 +msgid "/* builtins.c -- the built in shell commands. */" +msgstr "" + +#: builtins/mkbuiltins.c:1068 +msgid "/* This file is manufactured by ./mkbuiltins, and should not be" +msgstr "" + +#: builtins/mkbuiltins.c:1069 +msgid " edited by hand. See the source to mkbuiltins for details. */" +msgstr "" + +#: builtins/mkbuiltins.c:1071 +msgid "/* Copyright (C) 1987-2002 Free Software Foundation, Inc." +msgstr "" + +#: builtins/mkbuiltins.c:1073 +msgid " This file is part of GNU Bash, the Bourne Again SHell." +msgstr "" + +#: builtins/mkbuiltins.c:1075 +msgid " Bash is free software; you can redistribute it and/or modify it" +msgstr "" + +#: builtins/mkbuiltins.c:1076 +msgid " under the terms of the GNU General Public License as published by" +msgstr "" + +#: builtins/mkbuiltins.c:1077 +msgid " the Free Software Foundation; either version 2, or (at your option)" +msgstr "" + +#: builtins/mkbuiltins.c:1078 +msgid " any later version." +msgstr "" + +#: builtins/mkbuiltins.c:1080 +msgid " Bash is distributed in the hope that it will be useful, but WITHOUT" +msgstr "" + +#: builtins/mkbuiltins.c:1081 +msgid " ANY WARRANTY; without even the implied warranty of MERCHANTABILITY" +msgstr "" + +#: builtins/mkbuiltins.c:1082 +msgid " or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public" +msgstr "" + +#: builtins/mkbuiltins.c:1083 +msgid " License for more details." +msgstr "" + +#: builtins/mkbuiltins.c:1085 +msgid " You should have received a copy of the GNU General Public License" +msgstr "" + +#: builtins/mkbuiltins.c:1086 +msgid " along with Bash; see the file COPYING. If not, write to the Free" +msgstr "" + +#: builtins/mkbuiltins.c:1087 +msgid "" +" Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */" +msgstr "" + +#: builtins/mkbuiltins.c:1089 +msgid "/* The list of shell builtins. Each element is name, function, flags," +msgstr "" + +#: builtins/mkbuiltins.c:1090 +msgid "" +" long-doc, short-doc. The long-doc field contains a pointer to an array" +msgstr "" + +#: builtins/mkbuiltins.c:1091 +msgid "" +" of help lines. The function takes a WORD_LIST *; the first word in the" +msgstr "" + +#: builtins/mkbuiltins.c:1092 +msgid " list is the first arg to the command. The list has already had word" +msgstr "" + +#: builtins/mkbuiltins.c:1093 +msgid " expansion performed." +msgstr "" + +#: builtins/mkbuiltins.c:1095 +msgid " Functions which need to look at only the simple commands (e.g." +msgstr "" + +#: builtins/mkbuiltins.c:1096 +msgid " the enable_builtin ()), should ignore entries where" +msgstr "" + +#: builtins/mkbuiltins.c:1097 +msgid "" +" (array[i].function == (sh_builtin_func_t *)NULL). Such entries are for" +msgstr "" + +#: builtins/mkbuiltins.c:1098 +msgid "" +" the list of shell reserved control structures, like `if' and `while'." +msgstr "" + +#: builtins/mkbuiltins.c:1099 +msgid " The end of the list is denoted with a NULL name field. */" +msgstr "" + +#: builtins/mkbuiltins.c:1101 +msgid "#include \"../builtins.h\"" +msgstr "" + +#: builtins/mkbuiltins.c:1106 +msgid "" +" { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (char *)0x0 }" +msgstr "" + +#: builtins/mkbuiltins.c:1107 +msgid "};" +msgstr "" + +#: builtins/mkbuiltins.c:1109 +msgid "struct builtin *shell_builtins = static_shell_builtins;" +msgstr "" + +#: builtins/mkbuiltins.c:1110 +msgid "struct builtin *current_builtin;" +msgstr "" + +#: builtins/mkbuiltins.c:1112 +msgid "int num_shell_builtins =" +msgstr "" + +#: builtins/mkbuiltins.c:1113 +msgid "\tsizeof (static_shell_builtins) / sizeof (struct builtin) - 1;" +msgstr "" + +#: builtins/mkbuiltins.c:1130 +#, c-format +msgid "#include \"%s\"\n" +msgstr "" + +#: builtins/mkbuiltins.c:1131 builtins/mkbuiltins.c:1138 +msgid "builtext.h" +msgstr "" + +#: builtins/mkbuiltins.c:1132 +msgid "" +"\n" +"struct builtin static_shell_builtins[] = {\n" +msgstr "" + +#: builtins/mkbuiltins.c:1137 +#, c-format +msgid "/* %s - The list of builtins found in libbuiltins.a. */\n" +msgstr "" + +#: builtins/mkbuiltins.c:1188 +#, c-format +msgid "extern int %s __P((WORD_LIST *));\n" +msgstr "" + +#: builtins/mkbuiltins.c:1191 +#, c-format +msgid "extern char * const %s_doc[];\n" +msgstr "" + +#: builtins/mkbuiltins.c:1198 +#, c-format +msgid " { \"%s\", " +msgstr "" + +#: builtins/mkbuiltins.c:1201 +#, c-format +msgid "%s, " +msgstr "" + +#: builtins/mkbuiltins.c:1203 +msgid "(sh_builtin_func_t *)0x0, " +msgstr "" + +#: builtins/mkbuiltins.c:1205 +#, c-format +msgid "%s%s%s, %s_doc,\n" +msgstr "" + +#: builtins/mkbuiltins.c:1206 +msgid "BUILTIN_ENABLED | STATIC_BUILTIN" +msgstr "" + +#: builtins/mkbuiltins.c:1207 +msgid " | SPECIAL_BUILTIN" +msgstr "" + +#: builtins/mkbuiltins.c:1208 +msgid " | ASSIGNMENT_BUILTIN" +msgstr "" + +#: builtins/mkbuiltins.c:1212 +#, c-format +msgid " \"%s\", (char *)NULL },\n" +msgstr "" + +#: builtins/mkbuiltins.c:1235 +#, c-format +msgid "@item %s\n" +msgstr "" + +#: builtins/mkbuiltins.c:1263 +#, c-format +msgid "char * const %s_doc[] =" +msgstr "" + +#: builtins/mkbuiltins.c:1269 lib/sh/mailstat.c:126 +#, c-format +msgid "%s/%s" +msgstr "" + +#: builtins/mkbuiltins.c:1299 +msgid "#if " +msgstr "" + +#: builtins/mkbuiltins.c:1306 +#, c-format +msgid "!defined (%s)" +msgstr "" + +#: builtins/mkbuiltins.c:1308 +#, c-format +msgid "defined (%s)" +msgstr "" + +#: builtins/mkbuiltins.c:1330 +msgid "#endif /* " +msgstr "" + +#: builtins/mkbuiltins.c:1340 +msgid " */\n" +msgstr "" + +#: builtins/mkbuiltins.c:1360 +msgid "" +" {\n" +"#if defined (HELP_BUILTIN)\n" +msgstr "" + +#: builtins/mkbuiltins.c:1373 +msgid " \"" +msgstr "" + +#: builtins/mkbuiltins.c:1387 +#, c-format +msgid "\\%c" +msgstr "" + +#: builtins/mkbuiltins.c:1391 builtins/mkbuiltins.c:1410 +#, c-format +msgid "%c" +msgstr "" + +#: builtins/mkbuiltins.c:1395 +msgid "\",\n" +msgstr "" + +#: builtins/mkbuiltins.c:1406 +#, c-format +msgid "@%c" +msgstr "" + +#: builtins/mkbuiltins.c:1420 +msgid "" +"#endif /* HELP_BUILTIN */\n" +" (char *)NULL\n" +"};\n" +msgstr "" + +#: builtins/mkbuiltins.c:1432 +msgid "helpfiles" +msgstr "" + +#: builtins/mkbuiltins.c:1435 +msgid "write_helpfiles: helpfiles: cannot create directory\n" +msgstr "" + +#: builtins/mkbuiltins.c:1439 +msgid "helpfiles/" +msgstr "" + +#: builtins/mkbuiltins.c:1446 +#, c-format +msgid "helpfiles/%s" +msgstr "" + +#: builtins/mkbuiltins.c:1451 +#, c-format +msgid "write_helpfiles: cannot open %s\n" +msgstr "" + +#: builtins/alias.def:2 +msgid "unalias" +msgstr "" + +#: builtins/alias.def:73 +msgid "p" +msgstr "" + +#: builtins/alias.def:160 +msgid "a" +msgstr "" + +#: builtins/alias.def:210 +msgid "alias " +msgstr "" + +#: builtins/bind.def:2 +msgid "bind" +msgstr "" + +#: builtins/bind.def:121 builtins/bind.def:265 +msgid "bind_builtin" +msgstr "" + +#: builtins/bind.def:127 +msgid "lvpVPsSf:q:u:m:r:x:" +msgstr "" + +#: builtins/bind.def:192 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:231 +#, c-format +msgid "%s: cannot read: %s" +msgstr "" + +#: builtins/bind.def:246 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/bind.def:281 builtins/bind.def:311 +#, c-format +msgid "`%s': unknown function name" +msgstr "" + +#: builtins/bind.def:289 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:293 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/bind.def:295 +#, c-format +msgid "\"%s\"%s" +msgstr "" + +#: builtins/bind.def:295 builtins/help.def:106 +msgid ", " +msgstr "" + +#: builtins/bind.def:295 +msgid ".\n" +msgstr "" + +#: builtins/bind.def:297 +msgid "...\n" +msgstr "" + +#: builtins/break.def:71 builtins/break.def:106 +msgid "loop count" +msgstr "" + +#: builtins/break.def:126 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/builtin.def:2 builtins/complete.def:81 builtins/type.def:294 +msgid "builtin" +msgstr "" + +#: builtins/caller.def:2 builtins/caller.def:138 +msgid "caller" +msgstr "" + +#: builtins/caller.def:31 +msgid "$line $filename" +msgstr "" + +#: builtins/caller.def:32 +msgid "$line $subroutine $filename" +msgstr "" + +#: builtins/caller.def:70 +msgid "1 NULL\n" +msgstr "" + +#: builtins/caller.def:94 +#, c-format +msgid "%s %s\n" +msgstr "" + +#: builtins/caller.def:110 +#, c-format +msgid "%s %s %s\n" +msgstr "" + +#: builtins/caller.def:126 +msgid "Returns the context of the current subroutine call." +msgstr "" + +#: builtins/caller.def:128 +msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +msgstr "" + +#: builtins/caller.def:129 +msgid "returns \"$line $subroutine $filename\"; this extra information" +msgstr "" + +#: builtins/caller.def:130 +msgid "can be used used to provide a stack trace." +msgstr "" + +#: builtins/caller.def:132 +msgid "The value of EXPR indicates how many call frames to go back before the" +msgstr "" + +#: builtins/caller.def:133 +msgid "current one; the top frame is frame 0." +msgstr "" + +#: builtins/caller.def:142 +msgid "caller [EXPR]" +msgstr "" + +#: builtins/cd.def:2 builtins/cd.def:96 builtins/cd.def:130 +msgid "cd" +msgstr "" + +#: builtins/cd.def:2 builtins/cd.def:338 +msgid "pwd" +msgstr "" + +#: builtins/cd.def:105 +msgid "OLDPWD=" +msgstr "" + +#: builtins/cd.def:112 +msgid "PWD=" +msgstr "" + +#: builtins/cd.def:160 builtins/cd.def:318 +msgid "LP" +msgstr "" + +#: builtins/cd.def:187 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:199 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/cd.def:210 +msgid "CDPATH" +msgstr "" + +#: builtins/cd.def:349 +#, c-format +msgid "write error: %s" +msgstr "" + +#: builtins/cd.def:378 +msgid "chdir" +msgstr "" + +#: builtins/command.def:29 +msgid "command ls" +msgstr "" + +#: builtins/command.def:73 +msgid "pvV" +msgstr "" + +#: builtins/command.def:120 builtins/command.def:160 +msgid "command_builtin" +msgstr "" + +#: builtins/complete.def:2 +msgid "complete" +msgstr "" + +#: builtins/complete.def:2 builtins/complete.def:589 +msgid "compgen" +msgstr "" + +#: builtins/complete.def:79 builtins/complete.def:458 +msgid "arrayvar" +msgstr "" + +#: builtins/complete.def:80 builtins/complete.def:459 +msgid "binding" +msgstr "" + +#: builtins/complete.def:83 +msgid "directory" +msgstr "" + +#: builtins/complete.def:84 builtins/complete.def:460 +msgid "disabled" +msgstr "" + +#: builtins/complete.def:85 builtins/complete.def:461 +msgid "enabled" +msgstr "" + +#: builtins/complete.def:87 builtins/type.def:315 builtins/type.def:335 +#: builtins/type.def:380 +msgid "file" +msgstr "" + +#: builtins/complete.def:89 builtins/complete.def:463 +msgid "helptopic" +msgstr "" + +#: builtins/complete.def:90 builtins/complete.def:464 +msgid "hostname" +msgstr "" + +#: builtins/complete.def:91 +msgid "group" +msgstr "" + +#: builtins/complete.def:92 +msgid "job" +msgstr "" + +#: builtins/complete.def:93 builtins/set.def:193 builtins/type.def:249 +msgid "keyword" +msgstr "" + +#: builtins/complete.def:94 builtins/complete.def:465 +msgid "running" +msgstr "" + +#: builtins/complete.def:95 +msgid "service" +msgstr "" + +#: builtins/complete.def:96 builtins/complete.def:466 +msgid "setopt" +msgstr "" + +#: builtins/complete.def:97 builtins/complete.def:467 +msgid "shopt" +msgstr "" + +#: builtins/complete.def:98 builtins/complete.def:468 +msgid "signal" +msgstr "" + +#: builtins/complete.def:99 builtins/complete.def:469 +msgid "stopped" +msgstr "" + +#: builtins/complete.def:100 +msgid "user" +msgstr "" + +#: builtins/complete.def:101 builtins/set.def:787 +msgid "variable" +msgstr "" + +#: builtins/complete.def:110 builtins/complete.def:434 +msgid "bashdefault" +msgstr "" + +#: builtins/complete.def:111 builtins/complete.def:435 +msgid "default" +msgstr "" + +#: builtins/complete.def:112 builtins/complete.def:436 +msgid "dirnames" +msgstr "" + +#: builtins/complete.def:113 builtins/complete.def:437 +msgid "filenames" +msgstr "" + +#: builtins/complete.def:114 builtins/complete.def:438 +msgid "nospace" +msgstr "" + +#: builtins/complete.def:115 builtins/complete.def:439 +msgid "plusdirs" +msgstr "" + +#: builtins/complete.def:170 +msgid "abcdefgjko:prsuvA:G:W:P:S:X:F:C:" +msgstr "" + +#: builtins/complete.def:183 +msgid "-r" +msgstr "" + +#: builtins/complete.def:250 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:380 builtins/complete.def:523 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:392 builtins/complete.def:400 +#, c-format +msgid "%s %s " +msgstr "" + +#: builtins/complete.def:412 +#, c-format +msgid "-A %s " +msgstr "" + +#: builtins/complete.def:418 +#, c-format +msgid "-o %s " +msgstr "" + +#: builtins/complete.def:429 +msgid "complete " +msgstr "" + +#: builtins/complete.def:444 +msgid "-a" +msgstr "" + +#: builtins/complete.def:445 +msgid "-b" +msgstr "" + +#: builtins/complete.def:447 +msgid "-d" +msgstr "" + +#: builtins/complete.def:448 +msgid "-e" +msgstr "" + +#: builtins/complete.def:449 +msgid "-f" +msgstr "" + +#: builtins/complete.def:450 +msgid "-g" +msgstr "" + +#: builtins/complete.def:451 +msgid "-j" +msgstr "" + +#: builtins/complete.def:452 +msgid "-k" +msgstr "" + +#: builtins/complete.def:453 builtins/shopt.def:325 +msgid "-s" +msgstr "" + +#: builtins/complete.def:454 builtins/shopt.def:325 +msgid "-u" +msgstr "" + +#: builtins/complete.def:455 +msgid "-v" +msgstr "" + +#: builtins/complete.def:474 +msgid "-G" +msgstr "" + +#: builtins/complete.def:475 +msgid "-W" +msgstr "" + +#: builtins/complete.def:476 +msgid "-P" +msgstr "" + +#: builtins/complete.def:477 +msgid "-S" +msgstr "" + +#: builtins/complete.def:478 +msgid "-X" +msgstr "" + +#: builtins/complete.def:481 +msgid "-F" +msgstr "" + +#: builtins/complete.def:482 +msgid "-C" +msgstr "" + +#: builtins/complete.def:570 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:572 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/declare.def:104 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:110 +msgid "+afiprtxF" +msgstr "" + +#: builtins/declare.def:112 +msgid "+fiprtxF" +msgstr "" + +#: builtins/declare.def:294 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:319 +#, c-format +msgid "%s %d %s\n" +msgstr "" + +#: builtins/declare.def:388 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "" + +#: builtins/echo.def:2 +msgid "echo" +msgstr "" + +#: builtins/echo.def:65 +msgid "neE" +msgstr "" + +#: builtins/echo.def:67 +msgid "n" +msgstr "" + +#: builtins/enable.def:2 +msgid "enable" +msgstr "" + +#: builtins/enable.def:104 +msgid "adnpsf:" +msgstr "" + +#: builtins/enable.def:126 builtins/enable.def:134 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:227 +#, c-format +msgid "enable %s\n" +msgstr "" + +#: builtins/enable.def:230 +#, c-format +msgid "enable -n %s\n" +msgstr "" + +#: builtins/enable.def:301 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:319 +msgid "_struct" +msgstr "" + +#: builtins/enable.def:324 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:448 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:463 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "" + +#: builtins/exec.def:100 +msgid "cla:" +msgstr "" + +#: builtins/exec.def:204 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "" + +#: builtins/exit.def:61 +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:61 +msgid "exit\n" +msgstr "" + +#: builtins/exit.def:81 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:109 +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:145 +msgid "~/.bash_logout" +msgstr "" + +#: builtins/fc.def:2 builtins/fc.def:269 builtins/fc.def:370 +msgid "fc" +msgstr "" + +#: builtins/fc.def:157 +msgid "${FCEDIT:-${EDITOR:-vi}}" +msgstr "" + +#: builtins/fc.def:181 +msgid ":e:lnrs" +msgstr "" + +#: builtins/fc.def:252 +msgid "no command found" +msgstr "" + +#: builtins/fc.def:317 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:335 +msgid "bash-fc" +msgstr "" + +#: builtins/fc.def:338 +#, c-format +msgid "cannot open temp file %s" +msgstr "" + +#: builtins/fc.def:350 +#, c-format +msgid "\t%c" +msgstr "" + +#: builtins/fc.def:363 builtins/fc.def:368 +#, c-format +msgid "%s %s" +msgstr "" + +#: builtins/fc.def:386 builtins/fc.def:394 +msgid "fc builtin" +msgstr "" + +#: builtins/fg_bg.def:123 builtins/jobs.def:264 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:131 +#, c-format +msgid "job %%%d started without job control" +msgstr "" + +#: builtins/getopts.def:2 +msgid "getopts" +msgstr "" + +#: builtins/getopts.def:248 builtins/getopts.def:255 builtins/getopts.def:282 +#: lib/sh/strftime.c:235 lib/sh/strftime.c:242 lib/sh/strftime.c:250 +#: lib/sh/strftime.c:257 +msgid "?" +msgstr "" + +#: builtins/getopts.def:261 builtins/getopts.def:264 builtins/getopts.def:278 +#: builtins/getopts.def:283 builtins/getopts.def:288 +msgid "OPTARG" +msgstr "" + +#: builtins/hash.def:2 +msgid "hash" +msgstr "" + +#: builtins/hash.def:82 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:89 +msgid "dlp:rt" +msgstr "" + +#: builtins/hash.def:118 +msgid "-t" +msgstr "" + +#: builtins/hash.def:127 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:210 +#, c-format +msgid "%4d\t%s\n" +msgstr "" + +#: builtins/hash.def:218 builtins/hash.def:257 +#, c-format +msgid "builtin hash -p %s %s\n" +msgstr "" + +#: builtins/hash.def:230 +msgid "hits\tcommand\n" +msgstr "" + +#: builtins/hash.def:261 +#, c-format +msgid "%s\t" +msgstr "" + +#: builtins/help.def:80 builtins/help.def:105 +msgid "s" +msgstr "" + +#: builtins/help.def:105 +#, c-format +msgid "Shell commands matching keyword%s `" +msgstr "" + +#: builtins/help.def:107 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:121 +#, c-format +msgid "%s: %s\n" +msgstr "" + +#: builtins/help.def:133 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:159 +#, c-format +msgid "%s: cannot open: %s" +msgstr "" + +#: builtins/help.def:167 +#, c-format +msgid " %s\n" +msgstr "" + +#: builtins/help.def:177 +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:2 builtins/set.def:189 +msgid "history" +msgstr "" + +#: builtins/history.def:106 +msgid "acd:npsrw" +msgstr "" + +#: builtins/history.def:147 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:179 +msgid "history position" +msgstr "" + +#: builtins/history.def:289 +#, c-format +msgid "%5d%c %s%s\n" +msgstr "" + +#: builtins/history.def:389 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:2 +msgid "inlib" +msgstr "" + +#: builtins/inlib.def:67 +#, c-format +msgid "%s: inlib failed" +msgstr "" + +#: builtins/jobs.def:2 +msgid "jobs" +msgstr "" + +#: builtins/jobs.def:2 +msgid "disown" +msgstr "" + +#: builtins/jobs.def:85 +msgid "lpnxrs" +msgstr "" + +#: builtins/jobs.def:101 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/jobs.def:185 builtins/jobs.def:197 +msgid "jobs_builtin" +msgstr "" + +#: builtins/jobs.def:224 +msgid "ahr" +msgstr "" + +#: builtins/kill.def:2 +msgid "kill" +msgstr "" + +#: builtins/kill.def:186 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:247 +msgid "Unknown error" +msgstr "" + +#: builtins/kill.def:248 +#, c-format +msgid "(%ld) - %s" +msgstr "" + +#: builtins/let.def:2 +msgid "let" +msgstr "" + +#: builtins/printf.def:2 +msgid "printf" +msgstr "" + +#: builtins/printf.def:66 +msgid "lld" +msgstr "" + +#: builtins/printf.def:68 +msgid "ld" +msgstr "" + +#: builtins/printf.def:103 +msgid "#'-+ 0" +msgstr "" + +#: builtins/printf.def:104 +msgid "hjlLtz" +msgstr "" + +#: builtins/printf.def:119 +msgid "L" +msgstr "" + +#: builtins/printf.def:248 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:346 builtins/printf.def:373 +msgid "" +msgstr "" + +#: builtins/printf.def:355 builtins/printf.def:378 +msgid "l" +msgstr "" + +#: builtins/printf.def:407 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:427 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:504 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:600 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:2 builtins/pushd.def:171 builtins/pushd.def:230 +#: builtins/pushd.def:263 builtins/pushd.def:715 +msgid "pushd" +msgstr "" + +#: builtins/pushd.def:2 builtins/pushd.def:724 +msgid "popd" +msgstr "" + +#: builtins/pushd.def:2 builtins/pushd.def:432 builtins/pushd.def:733 +msgid "dirs" +msgstr "" + +#: builtins/pushd.def:167 +msgid "no other directory" +msgstr "" + +#: builtins/pushd.def:434 +msgid "" +msgstr "" + +#: builtins/pushd.def:436 builtins/pushd.def:455 +#, c-format +msgid "%2d %s" +msgstr "" + +#: builtins/pushd.def:463 +#, c-format +msgid "" +"\n" +"%2d %s" +msgstr "" + +#: builtins/pushd.def:478 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:480 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:625 +msgid "dirstack" +msgstr "" + +#: builtins/pushd.def:651 +msgid "Display the list of currently remembered directories. Directories" +msgstr "" + +#: builtins/pushd.def:652 +msgid "find their way onto the list with the `pushd' command; you can get" +msgstr "" + +#: builtins/pushd.def:653 +msgid "back up through the list with the `popd' command." +msgstr "" + +#: builtins/pushd.def:655 +msgid "The -l flag specifies that `dirs' should not print shorthand versions" +msgstr "" + +#: builtins/pushd.def:656 +msgid "of directories which are relative to your home directory. This means" +msgstr "" + +#: builtins/pushd.def:657 +msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +msgstr "" + +#: builtins/pushd.def:658 +msgid "causes `dirs' to print the directory stack with one entry per line," +msgstr "" + +#: builtins/pushd.def:659 +msgid "prepending the directory name with its position in the stack. The -p" +msgstr "" + +#: builtins/pushd.def:660 +msgid "flag does the same thing, but the stack position is not prepended." +msgstr "" + +#: builtins/pushd.def:661 +msgid "The -c flag clears the directory stack by deleting all of the elements." +msgstr "" + +#: builtins/pushd.def:663 +msgid "+N displays the Nth entry counting from the left of the list shown by" +msgstr "" + +#: builtins/pushd.def:664 builtins/pushd.def:667 +msgid " dirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:666 +msgid "" +"-N displays the Nth entry counting from the right of the list shown by" +msgstr "" + +#: builtins/pushd.def:672 +msgid "Adds a directory to the top of the directory stack, or rotates" +msgstr "" + +#: builtins/pushd.def:673 +msgid "the stack, making the new top of the stack the current working" +msgstr "" + +#: builtins/pushd.def:674 +msgid "directory. With no arguments, exchanges the top two directories." +msgstr "" + +#: builtins/pushd.def:676 +msgid "+N Rotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins/pushd.def:677 +msgid " from the left of the list shown by `dirs', starting with" +msgstr "" + +#: builtins/pushd.def:678 builtins/pushd.def:682 +msgid " zero) is at the top." +msgstr "" + +#: builtins/pushd.def:680 +msgid "-N Rotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins/pushd.def:681 +msgid " from the right of the list shown by `dirs', starting with" +msgstr "" + +#: builtins/pushd.def:684 +msgid "-n suppress the normal change of directory when adding directories" +msgstr "" + +#: builtins/pushd.def:685 +msgid " to the stack, so only the stack is manipulated." +msgstr "" + +#: builtins/pushd.def:687 +msgid "dir adds DIR to the directory stack at the top, making it the" +msgstr "" + +#: builtins/pushd.def:688 +msgid " new current working directory." +msgstr "" + +#: builtins/pushd.def:690 builtins/pushd.def:710 +msgid "You can see the directory stack with the `dirs' command." +msgstr "" + +#: builtins/pushd.def:695 +msgid "Removes entries from the directory stack. With no arguments," +msgstr "" + +#: builtins/pushd.def:696 +msgid "removes the top directory from the stack, and cd's to the new" +msgstr "" + +#: builtins/pushd.def:697 +msgid "top directory." +msgstr "" + +#: builtins/pushd.def:699 +msgid "+N removes the Nth entry counting from the left of the list" +msgstr "" + +#: builtins/pushd.def:700 +msgid " shown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" + +#: builtins/pushd.def:701 +msgid " removes the first directory, `popd +1' the second." +msgstr "" + +#: builtins/pushd.def:703 +msgid "-N removes the Nth entry counting from the right of the list" +msgstr "" + +#: builtins/pushd.def:704 +msgid " shown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" + +#: builtins/pushd.def:705 +msgid " removes the last directory, `popd -1' the next to last." +msgstr "" + +#: builtins/pushd.def:707 +msgid "-n suppress the normal change of directory when removing directories" +msgstr "" + +#: builtins/pushd.def:708 +msgid " from the stack, so only the stack is manipulated." +msgstr "" + +#: builtins/pushd.def:719 +msgid "pushd [+N | -N] [-n] [dir]" +msgstr "" + +#: builtins/pushd.def:728 +msgid "popd [+N | -N] [-n]" +msgstr "" + +#: builtins/pushd.def:737 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins/read.def:2 +msgid "read" +msgstr "" + +#: builtins/read.def:178 +msgid "ersa:d:n:p:t:u:" +msgstr "" + +#: builtins/read.def:205 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:228 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/read.def:235 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/read.def:272 builtins/read.def:317 builtins/read.def:491 +msgid "read_builtin" +msgstr "" + +#: builtins/read.def:461 +#, c-format +msgid "read error: %d: %s" +msgstr "" + +#: builtins/reserved.def:123 +msgid "let EXPRESSION" +msgstr "" + +#: builtins/return.def:61 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:161 builtins/shopt.def:170 +msgid "on" +msgstr "" + +#: builtins/set.def:162 builtins/shopt.def:171 +msgid "off" +msgstr "" + +#: builtins/set.def:174 +msgid "allexport" +msgstr "" + +#: builtins/set.def:176 +msgid "braceexpand" +msgstr "" + +#: builtins/set.def:181 +msgid "errexit" +msgstr "" + +#: builtins/set.def:182 +msgid "errtrace" +msgstr "" + +#: builtins/set.def:183 +msgid "functrace" +msgstr "" + +#: builtins/set.def:184 +msgid "hashall" +msgstr "" + +#: builtins/set.def:186 +msgid "histexpand" +msgstr "" + +#: builtins/set.def:192 +msgid "interactive-comments" +msgstr "" + +#: builtins/set.def:194 +msgid "monitor" +msgstr "" + +#: builtins/set.def:195 +msgid "noclobber" +msgstr "" + +#: builtins/set.def:196 +msgid "noexec" +msgstr "" + +#: builtins/set.def:197 +msgid "noglob" +msgstr "" + +#: builtins/set.def:199 +msgid "nolog" +msgstr "" + +#: builtins/set.def:202 +msgid "notify" +msgstr "" + +#: builtins/set.def:204 +msgid "nounset" +msgstr "" + +#: builtins/set.def:205 +msgid "onecmd" +msgstr "" + +#: builtins/set.def:206 +msgid "physical" +msgstr "" + +#: builtins/set.def:207 +msgid "pipefail" +msgstr "" + +#: builtins/set.def:209 +msgid "privileged" +msgstr "" + +#: builtins/set.def:212 +msgid "vi" +msgstr "" + +#: builtins/set.def:214 +msgid "xtrace" +msgstr "" + +#: builtins/set.def:252 builtins/shopt.def:56 +#, c-format +msgid "%-15s\t%s\n" +msgstr "" + +#: builtins/set.def:262 builtins/shopt.def:414 +#, c-format +msgid "set %co %s\n" +msgstr "" + +#: builtins/set.def:313 +msgid "10" +msgstr "" + +#: builtins/set.def:345 +msgid "editing-mode" +msgstr "" + +#: builtins/set.def:493 builtins/set.def:505 builtins/set.def:541 +msgid "SHELLOPTS" +msgstr "" + +#: builtins/set.def:722 +msgid "fv" +msgstr "" + +#: builtins/set.def:742 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:779 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/set.def:786 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/set.def:797 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:98 +msgid "afnp" +msgstr "" + +#: builtins/setattr.def:100 +msgid "fnp" +msgstr "" + +#: builtins/setattr.def:164 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/setattr.def:201 +msgid "-ra" +msgstr "" + +#: builtins/setattr.def:332 +#, c-format +msgid "declare -%s " +msgstr "" + +#: builtins/setattr.def:334 +#, c-format +msgid "%s -%s " +msgstr "" + +#: builtins/shift.def:65 builtins/shift.def:71 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:115 +msgid "cdable_vars" +msgstr "" + +#: builtins/shopt.def:116 +msgid "cdspell" +msgstr "" + +#: builtins/shopt.def:117 +msgid "checkhash" +msgstr "" + +#: builtins/shopt.def:118 +msgid "checkwinsize" +msgstr "" + +#: builtins/shopt.def:120 +msgid "cmdhist" +msgstr "" + +#: builtins/shopt.def:122 +msgid "dotglob" +msgstr "" + +#: builtins/shopt.def:123 +msgid "execfail" +msgstr "" + +#: builtins/shopt.def:124 +msgid "expand_aliases" +msgstr "" + +#: builtins/shopt.def:126 +msgid "extdebug" +msgstr "" + +#: builtins/shopt.def:129 +msgid "extglob" +msgstr "" + +#: builtins/shopt.def:131 +msgid "extquote" +msgstr "" + +#: builtins/shopt.def:132 +msgid "failglob" +msgstr "" + +#: builtins/shopt.def:134 +msgid "force_fignore" +msgstr "" + +#: builtins/shopt.def:135 +msgid "gnu_errfmt" +msgstr "" + +#: builtins/shopt.def:136 +msgid "histreedit" +msgstr "" + +#: builtins/shopt.def:139 +msgid "histappend" +msgstr "" + +#: builtins/shopt.def:142 +msgid "histverify" +msgstr "" + +#: builtins/shopt.def:143 +msgid "hostcomplete" +msgstr "" + +#: builtins/shopt.def:145 +msgid "huponexit" +msgstr "" + +#: builtins/shopt.def:146 +msgid "interactive_comments" +msgstr "" + +#: builtins/shopt.def:148 +msgid "lithist" +msgstr "" + +#: builtins/shopt.def:150 +msgid "login_shell" +msgstr "" + +#: builtins/shopt.def:151 +msgid "mailwarn" +msgstr "" + +#: builtins/shopt.def:153 +msgid "no_empty_cmd_completion" +msgstr "" + +#: builtins/shopt.def:155 +msgid "nocaseglob" +msgstr "" + +#: builtins/shopt.def:156 +msgid "nullglob" +msgstr "" + +#: builtins/shopt.def:158 +msgid "progcomp" +msgstr "" + +#: builtins/shopt.def:160 +msgid "promptvars" +msgstr "" + +#: builtins/shopt.def:162 +msgid "restricted_shell" +msgstr "" + +#: builtins/shopt.def:164 +msgid "shift_verbose" +msgstr "" + +#: builtins/shopt.def:165 +msgid "sourcepath" +msgstr "" + +#: builtins/shopt.def:166 +msgid "xpg_echo" +msgstr "" + +#: builtins/shopt.def:196 +msgid "psuoq" +msgstr "" + +#: builtins/shopt.def:224 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:289 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/shopt.def:325 +#, c-format +msgid "shopt %s %s\n" +msgstr "" + +#: builtins/source.def:116 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:136 +#, c-format +msgid "%s: file not found" +msgstr "" + +#: builtins/suspend.def:2 +msgid "suspend" +msgstr "" + +#: builtins/suspend.def:77 +msgid "f" +msgstr "" + +#: builtins/suspend.def:92 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:102 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/test.def:2 builtins/test.def:98 +msgid "test" +msgstr "" + +#: builtins/times.def:2 +msgid "times" +msgstr "" + +#: builtins/times.def:109 +msgid "" +"0.00 0.00\n" +"0.00 0.00\n" +msgstr "" + +#: builtins/trap.def:39 +msgid "kill -signal $$" +msgstr "" + +#: builtins/trap.def:94 +msgid "lp" +msgstr "" + +#: builtins/trap.def:215 +#, c-format +msgid "trap -- %s %d\n" +msgstr "" + +#: builtins/trap.def:219 builtins/trap.def:221 builtins/trap.def:224 +#, c-format +msgid "trap -- %s %s\n" +msgstr "" + +#: builtins/type.def:2 builtins/type.def:127 +msgid "type" +msgstr "" + +#: builtins/type.def:127 +msgid "-type" +msgstr "" + +#: builtins/type.def:132 +msgid "path" +msgstr "" + +#: builtins/type.def:132 +msgid "-path" +msgstr "" + +#: builtins/type.def:137 +msgid "all" +msgstr "" + +#: builtins/type.def:137 +msgid "-all" +msgstr "" + +#: builtins/type.def:145 +msgid "afptP" +msgstr "" + +#: builtins/type.def:230 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:234 +#, c-format +msgid "alias %s=%s\n" +msgstr "" + +#: builtins/type.def:251 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:271 +#, 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:382 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:337 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:2 +msgid "ulimit" +msgstr "" + +#: builtins/ulimit.def:111 +#, c-format +msgid "%ld%s" +msgstr "" + +#: builtins/ulimit.def:195 +msgid "core file size" +msgstr "" + +#: builtins/ulimit.def:195 builtins/ulimit.def:200 +msgid "blocks" +msgstr "" + +#: builtins/ulimit.def:198 +msgid "data seg size" +msgstr "" + +#: builtins/ulimit.def:198 builtins/ulimit.def:202 builtins/ulimit.def:205 +#: builtins/ulimit.def:210 builtins/ulimit.def:217 builtins/ulimit.def:220 +msgid "kbytes" +msgstr "" + +#: builtins/ulimit.def:200 +msgid "file size" +msgstr "" + +#: builtins/ulimit.def:202 +msgid "max locked memory" +msgstr "" + +#: builtins/ulimit.def:205 +msgid "max memory size" +msgstr "" + +#: builtins/ulimit.def:207 +msgid "open files" +msgstr "" + +#: builtins/ulimit.def:208 +msgid "pipe size" +msgstr "" + +#: builtins/ulimit.def:208 +msgid "512 bytes" +msgstr "" + +#: builtins/ulimit.def:210 +msgid "stack size" +msgstr "" + +#: builtins/ulimit.def:213 +msgid "cpu time" +msgstr "" + +#: builtins/ulimit.def:213 +msgid "seconds" +msgstr "" + +#: builtins/ulimit.def:215 +msgid "max user processes" +msgstr "" + +#: builtins/ulimit.def:217 +msgid "virtual memory" +msgstr "" + +#: builtins/ulimit.def:220 +msgid "swap size" +msgstr "" + +#: builtins/ulimit.def:328 builtins/ulimit.def:401 builtins/ulimit.def:674 +msgid "unlimited" +msgstr "" + +#: builtins/ulimit.def:330 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:356 +#, c-format +msgid "`%c': bad command" +msgstr "" + +#: builtins/ulimit.def:385 builtins/ulimit.def:649 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:397 builtins/ulimit.def:676 +msgid "hard" +msgstr "" + +#: builtins/ulimit.def:399 builtins/ulimit.def:678 +msgid "soft" +msgstr "" + +#: builtins/ulimit.def:411 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:423 builtins/ulimit.def:716 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "" + +#: builtins/ulimit.def:667 +#, c-format +msgid "(%s, -%c) " +msgstr "" + +#: builtins/ulimit.def:669 +#, c-format +msgid "(-%c) " +msgstr "" + +#: builtins/ulimit.def:671 +#, c-format +msgid "%-18s %16s" +msgstr "" + +#: builtins/umask.def:2 +msgid "umask" +msgstr "" + +#: builtins/umask.def:80 +msgid "Sp" +msgstr "" + +#: builtins/umask.def:110 +msgid "octal number" +msgstr "" + +#: builtins/umask.def:131 +#, c-format +msgid "umask%s " +msgstr "" + +#: builtins/umask.def:131 +msgid " -S" +msgstr "" + +#: builtins/umask.def:135 +#, c-format +msgid "%04lo\n" +msgstr "" + +#: builtins/umask.def:178 +#, c-format +msgid "u=%s,g=%s,o=%s\n" +msgstr "" + +#: builtins/umask.def:194 +msgid "agou" +msgstr "" + +#: builtins/umask.def:224 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:229 +msgid "rwx" +msgstr "" + +#: builtins/umask.def:277 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: lib/sh/clock.c:79 lib/sh/timeval.c:143 +#, c-format +msgid "%ldm%d.%03ds" +msgstr "" + +#: lib/sh/fmtulong.c:55 lib/sh/snprintf.c:167 +msgid "0123456789abcdef" +msgstr "" + +#: lib/sh/fmtulong.c:56 lib/sh/snprintf.c:168 +msgid "0123456789ABCDEF" +msgstr "" + +#: lib/sh/fmtulong.c:99 +msgid "invalid base" +msgstr "" + +#: lib/sh/getcwd.c:75 +msgid "../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.." +msgstr "" + +#: lib/sh/getcwd.c:304 +msgid "cwd: getcwd" +msgstr "" + +#: lib/sh/inet_aton.c:59 +msgid "@(#)inet_addr.c\t8.1 (Berkeley) 6/17/93" +msgstr "" + +#: lib/sh/inet_aton.c:60 +msgid "$Id: inet_addr.c,v 1.5 1996/08/14 03:48:37 drepper Exp $" +msgstr "" + +#: lib/sh/mailstat.c:95 +#, c-format +msgid "%s/cur" +msgstr "" + +#: lib/sh/mailstat.c:101 +#, c-format +msgid "%s/tmp" +msgstr "" + +#: lib/sh/mailstat.c:107 +#, c-format +msgid "%s/new" +msgstr "" + +#: lib/sh/mailstat.c:126 +msgid "cur" +msgstr "" + +#: lib/sh/mailstat.c:126 +msgid "new" +msgstr "" + +#: lib/sh/mailstat.c:127 +#, c-format +msgid "%s/" +msgstr "" + +#: lib/sh/makepath.c:77 +msgid "sh_makepath" +msgstr "" + +#: lib/sh/mktime.c:330 +#, c-format +msgid "%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d" +msgstr "" + +#: lib/sh/mktime.c:345 +msgid "mktime (" +msgstr "" + +#: lib/sh/mktime.c:347 +msgid "" +")\n" +"yields (" +msgstr "" + +#: lib/sh/mktime.c:349 +#, c-format +msgid ") == %ld, should be %ld\n" +msgstr "" + +#: lib/sh/mktime.c:367 +#, c-format +msgid "%d-%d-%d%c" +msgstr "" + +#: lib/sh/mktime.c:370 +#, c-format +msgid "%d:%d:%d%c" +msgstr "" + +#: lib/sh/mktime.c:380 +#, c-format +msgid "mktime returns %ld == " +msgstr "" + +#: lib/sh/mktime.c:410 +#, c-format +msgid "" +"Usage:\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n" +"\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n" +"\t%s FROM BY TO - # Do not test those values (for benchmark).\n" +msgstr "" + +#: lib/sh/netopen.c:128 +msgid "tcp" +msgstr "" + +#: lib/sh/netopen.c:128 +msgid "udp" +msgstr "" + +#: lib/sh/netopen.c:156 +#, c-format +msgid "%s: host unknown" +msgstr "" + +#: lib/sh/netopen.c:163 +#, c-format +msgid "%s: invalid service" +msgstr "" + +#: lib/sh/netopen.c:176 lib/sh/netopen.c:234 +msgid "socket" +msgstr "" + +#: lib/sh/netopen.c:183 lib/sh/netopen.c:246 +msgid "connect" +msgstr "" + +#: lib/sh/netopen.c:294 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:334 +msgid "network operations not supported" +msgstr "" + +#: lib/sh/pathphys.c:269 +msgid "sh_realpath" +msgstr "" + +#: lib/sh/shmatch.c:95 lib/sh/shmatch.c:96 +msgid "BASH_REMATCH" +msgstr "" + +#: lib/sh/snprintf.c:402 +msgid "" +msgstr "" + +#: lib/sh/snprintf.c:892 +msgid "INF" +msgstr "" + +#: lib/sh/snprintf.c:892 +msgid "NAN" +msgstr "" + +#: lib/sh/snprintf.c:893 +msgid "inf" +msgstr "" + +#: lib/sh/snprintf.c:893 +msgid "nan" +msgstr "" + +#: lib/sh/snprintf.c:1646 +msgid "out of virtual memory\n" +msgstr "" + +#: lib/sh/snprintf.c:1695 lib/sh/snprintf.c:1697 lib/sh/snprintf.c:1699 +msgid "abcde\n" +msgstr "" + +#: lib/sh/snprintf.c:1696 +#, c-format +msgid "snprintf returns %d with NULL first argument and size of 0\n" +msgstr "" + +#: lib/sh/snprintf.c:1698 +#, c-format +msgid "snprintf returns %d with non-NULL first argument and size of 0\n" +msgstr "" + +#: lib/sh/snprintf.c:1700 +#, c-format +msgid "snprintf returns %d with NULL first argument and non-zero size\n" +msgstr "" + +#: lib/sh/snprintf.c:1710 +#, c-format +msgid "/%%ld %%ld/, 336, 336\n" +msgstr "" + +#: lib/sh/snprintf.c:1711 lib/sh/snprintf.c:1712 lib/sh/snprintf.c:1713 +#, c-format +msgid "/%ld %ld/\n" +msgstr "" + +#: lib/sh/snprintf.c:1717 +#, c-format +msgid "/%%d/, 336\n" +msgstr "" + +#: lib/sh/snprintf.c:1718 lib/sh/snprintf.c:1719 lib/sh/snprintf.c:1720 +#, c-format +msgid "/%d/\n" +msgstr "" + +#: lib/sh/snprintf.c:1724 +#, c-format +msgid "/%%2d/, 336\n" +msgstr "" + +#: lib/sh/snprintf.c:1725 lib/sh/snprintf.c:1726 lib/sh/snprintf.c:1727 +#, c-format +msgid "/%2d/\n" +msgstr "" + +#: lib/sh/snprintf.c:1731 +#, c-format +msgid "/%%10d/, 336\n" +msgstr "" + +#: lib/sh/snprintf.c:1732 lib/sh/snprintf.c:1733 lib/sh/snprintf.c:1734 +#, c-format +msgid "/%10d/\n" +msgstr "" + +#: lib/sh/snprintf.c:1738 +#, c-format +msgid "/%%-10d/, 336\n" +msgstr "" + +#: lib/sh/snprintf.c:1739 lib/sh/snprintf.c:1740 lib/sh/snprintf.c:1741 +#, c-format +msgid "/%-10d/\n" +msgstr "" + +#: lib/sh/snprintf.c:1748 +#, c-format +msgid "/%%f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1749 lib/sh/snprintf.c:1750 lib/sh/snprintf.c:1751 +#, c-format +msgid "/%f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1755 +#, c-format +msgid "/%%e/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1756 lib/sh/snprintf.c:1757 lib/sh/snprintf.c:1758 +#, c-format +msgid "/%e/\n" +msgstr "" + +#: lib/sh/snprintf.c:1762 +#, c-format +msgid "/%%4.2f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1763 lib/sh/snprintf.c:1764 lib/sh/snprintf.c:1765 +#, c-format +msgid "/%4.2f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1769 +#, c-format +msgid "/%%3.1f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1770 lib/sh/snprintf.c:1771 lib/sh/snprintf.c:1772 +#, c-format +msgid "/%3.1f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1776 +#, c-format +msgid "/%%10.3f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1777 lib/sh/snprintf.c:1778 lib/sh/snprintf.c:1779 +#, c-format +msgid "/%10.3f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1783 +#, c-format +msgid "/%%10.3e/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1784 lib/sh/snprintf.c:1785 lib/sh/snprintf.c:1786 +#, c-format +msgid "/%10.3e/\n" +msgstr "" + +#: lib/sh/snprintf.c:1790 +#, c-format +msgid "/%%+4.2f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1791 lib/sh/snprintf.c:1792 lib/sh/snprintf.c:1793 +#, c-format +msgid "/%+4.2f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1797 +#, c-format +msgid "/%%010.2f/, 1234.56\n" +msgstr "" + +#: lib/sh/snprintf.c:1798 lib/sh/snprintf.c:1799 lib/sh/snprintf.c:1800 +#, c-format +msgid "/%010.2f/\n" +msgstr "" + +#: lib/sh/snprintf.c:1804 +msgid "Outstanding acting !" +msgstr "" + +#: lib/sh/snprintf.c:1807 +#, c-format +msgid "/%%2s/, \"%s\"\n" +msgstr "" + +#: lib/sh/snprintf.c:1808 lib/sh/snprintf.c:1809 lib/sh/snprintf.c:1810 +#, c-format +msgid "/%2s/\n" +msgstr "" + +#: lib/sh/snprintf.c:1814 +#, c-format +msgid "/%%22s/ %s\n" +msgstr "" + +#: lib/sh/snprintf.c:1815 lib/sh/snprintf.c:1816 lib/sh/snprintf.c:1817 +#, c-format +msgid "/%22s/\n" +msgstr "" + +#: lib/sh/snprintf.c:1821 +#, c-format +msgid "/%%22.5s/ %s\n" +msgstr "" + +#: lib/sh/snprintf.c:1822 lib/sh/snprintf.c:1823 lib/sh/snprintf.c:1824 +#, c-format +msgid "/%22.5s/\n" +msgstr "" + +#: lib/sh/snprintf.c:1828 +#, c-format +msgid "/%%-22.5s/ %s\n" +msgstr "" + +#: lib/sh/snprintf.c:1829 lib/sh/snprintf.c:1830 lib/sh/snprintf.c:1831 +#, c-format +msgid "/%-22.5s/\n" +msgstr "" + +#: lib/sh/snprintf.c:1837 +#, c-format +msgid "%%x %%X %%#x, 31, 31, 31\n" +msgstr "" + +#: lib/sh/snprintf.c:1838 lib/sh/snprintf.c:1839 lib/sh/snprintf.c:1840 +#, c-format +msgid "%x %X %#x\n" +msgstr "" + +#: lib/sh/snprintf.c:1844 +#, c-format +msgid "**%%d**%% d**%% d**, 42, 42, -42\n" +msgstr "" + +#: lib/sh/snprintf.c:1845 lib/sh/snprintf.c:1846 lib/sh/snprintf.c:1847 +#, c-format +msgid "**%d**% d**% d**\n" +msgstr "" + +#: lib/sh/snprintf.c:1853 +#, c-format +msgid "/%%g/, 31.4\n" +msgstr "" + +#: lib/sh/snprintf.c:1854 lib/sh/snprintf.c:1855 lib/sh/snprintf.c:1856 +#: lib/sh/snprintf.c:1975 lib/sh/snprintf.c:1976 lib/sh/snprintf.c:1977 +#: lib/sh/snprintf.c:1982 lib/sh/snprintf.c:1983 lib/sh/snprintf.c:1984 +#, c-format +msgid "/%g/\n" +msgstr "" + +#: lib/sh/snprintf.c:1860 +#, c-format +msgid "/%%.6g/, 31.4\n" +msgstr "" + +#: lib/sh/snprintf.c:1861 lib/sh/snprintf.c:1862 lib/sh/snprintf.c:1863 +#, c-format +msgid "/%.6g/\n" +msgstr "" + +#: lib/sh/snprintf.c:1867 +#, c-format +msgid "/%%.1G/, 31.4\n" +msgstr "" + +#: lib/sh/snprintf.c:1868 lib/sh/snprintf.c:1869 lib/sh/snprintf.c:1870 +#: lib/sh/snprintf.c:1875 lib/sh/snprintf.c:1876 lib/sh/snprintf.c:1877 +#, c-format +msgid "/%.1G/\n" +msgstr "" + +#: lib/sh/snprintf.c:1874 +#, c-format +msgid "/%%.1G/, 3100000000.4\n" +msgstr "" + +#: lib/sh/snprintf.c:1881 +#, c-format +msgid "abc%%n\n" +msgstr "" + +#: lib/sh/snprintf.c:1882 lib/sh/snprintf.c:1883 lib/sh/snprintf.c:1885 +#, c-format +msgid "abc%n" +msgstr "" + +#: lib/sh/snprintf.c:1884 lib/sh/snprintf.c:1886 +#, c-format +msgid "" +"%d\n" +"\n" +msgstr "" + +#: lib/sh/snprintf.c:1888 +#, c-format +msgid "%%*.*s --> 10.10\n" +msgstr "" + +#: lib/sh/snprintf.c:1889 lib/sh/snprintf.c:1890 lib/sh/snprintf.c:1891 +#, c-format +msgid "%*.*s\n" +msgstr "" + +#: lib/sh/snprintf.c:1895 +#, c-format +msgid "%%%%%%%%\n" +msgstr "" + +#: lib/sh/snprintf.c:1896 lib/sh/snprintf.c:1897 lib/sh/snprintf.c:1898 +#, c-format +msgid "%%%%\n" +msgstr "" + +#: lib/sh/snprintf.c:1902 +msgid "Hello this is a too big string for the buffer" +msgstr "" + +#: lib/sh/snprintf.c:1904 +#, c-format +msgid "<%%>, %s\n" +msgstr "" + +#: lib/sh/snprintf.c:1907 lib/sh/snprintf.c:1908 lib/sh/snprintf.c:1915 +#: lib/sh/snprintf.c:1922 lib/sh/snprintf.c:1930 lib/sh/snprintf.c:1939 +#: lib/sh/snprintf.c:1948 lib/sh/snprintf.c:1955 +#, c-format +msgid "<%s>\n" +msgstr "" + +#: lib/sh/snprintf.c:1909 lib/sh/snprintf.c:1916 lib/sh/snprintf.c:1923 +#: lib/sh/snprintf.c:1931 lib/sh/snprintf.c:1940 lib/sh/snprintf.c:1949 +#: lib/sh/snprintf.c:1956 +#, c-format +msgid "" +"<%s>\n" +"\n" +msgstr "" + +#: lib/sh/snprintf.c:1911 +#, c-format +msgid "<%%p> vsnprintf\n" +msgstr "" + +#: lib/sh/snprintf.c:1912 lib/sh/snprintf.c:1913 +#, c-format +msgid "%p" +msgstr "" + +#: lib/sh/snprintf.c:1914 +#, c-format +msgid "<%p>\n" +msgstr "" + +#: lib/sh/snprintf.c:1918 +#, c-format +msgid "<%%lu> LONG_MAX+1\n" +msgstr "" + +#: lib/sh/snprintf.c:1919 lib/sh/snprintf.c:1920 +#, c-format +msgid "%lu" +msgstr "" + +#: lib/sh/snprintf.c:1921 +#, c-format +msgid "<%lu>\n" +msgstr "" + +#: lib/sh/snprintf.c:1926 +#, c-format +msgid "<%%llu> LLONG_MAX+1\n" +msgstr "" + +#: lib/sh/snprintf.c:1927 lib/sh/snprintf.c:1928 +#, c-format +msgid "%llu" +msgstr "" + +#: lib/sh/snprintf.c:1929 +#, c-format +msgid "<%llu>\n" +msgstr "" + +#: lib/sh/snprintf.c:1935 +#, c-format +msgid "<%%6.2LE> 42.42\n" +msgstr "" + +#: lib/sh/snprintf.c:1936 lib/sh/snprintf.c:1937 +#, c-format +msgid "%6.2LE" +msgstr "" + +#: lib/sh/snprintf.c:1938 +#, c-format +msgid "<%6.2LE>\n" +msgstr "" + +#: lib/sh/snprintf.c:1944 +#, c-format +msgid "<%%6.2A> 42.42\n" +msgstr "" + +#: lib/sh/snprintf.c:1945 lib/sh/snprintf.c:1946 +#, c-format +msgid "%6.2A" +msgstr "" + +#: lib/sh/snprintf.c:1947 +#, c-format +msgid "<%6.2A>\n" +msgstr "" + +#: lib/sh/snprintf.c:1951 +#, c-format +msgid "<%%6.2LA> 42.42\n" +msgstr "" + +#: lib/sh/snprintf.c:1952 lib/sh/snprintf.c:1953 +#, c-format +msgid "%6.2LA" +msgstr "" + +#: lib/sh/snprintf.c:1954 +#, c-format +msgid "<%6.2LA>\n" +msgstr "" + +#: lib/sh/snprintf.c:1959 +#, c-format +msgid "<%%.10240f> DBL_MAX\n" +msgstr "" + +#: lib/sh/snprintf.c:1960 lib/sh/snprintf.c:1961 +#, c-format +msgid "%.10240f" +msgstr "" + +#: lib/sh/snprintf.c:1962 +#, c-format +msgid "<%.10240f>\n" +msgstr "" + +#: lib/sh/snprintf.c:1963 lib/sh/snprintf.c:1970 +#, c-format +msgid "<%d> <%s>\n" +msgstr "" + +#: lib/sh/snprintf.c:1964 lib/sh/snprintf.c:1971 +#, c-format +msgid "" +"<%d> <%s>\n" +"\n" +msgstr "" + +#: lib/sh/snprintf.c:1966 +#, c-format +msgid "<%%.10240Lf> LDBL_MAX\n" +msgstr "" + +#: lib/sh/snprintf.c:1967 lib/sh/snprintf.c:1968 +#, c-format +msgid "%.10240Lf" +msgstr "" + +#: lib/sh/snprintf.c:1969 +#, c-format +msgid "<%.10240Lf>\n" +msgstr "" + +#: lib/sh/snprintf.c:1974 +#, c-format +msgid "/%%g/, 421.2345\n" +msgstr "" + +#: lib/sh/snprintf.c:1981 +#, c-format +msgid "/%%g/, 4214.2345\n" +msgstr "" + +#: lib/sh/snprintf.c:1988 +#, c-format +msgid "/%%.5g/, 4214.2345\n" +msgstr "" + +#: lib/sh/snprintf.c:1989 lib/sh/snprintf.c:1990 lib/sh/snprintf.c:1991 +#, c-format +msgid "/%.5g/\n" +msgstr "" + +#: lib/sh/snprintf.c:1995 +#, c-format +msgid "/%%.4g/, 4214.2345\n" +msgstr "" + +#: lib/sh/snprintf.c:1996 lib/sh/snprintf.c:1997 lib/sh/snprintf.c:1998 +#, c-format +msgid "/%.4g/\n" +msgstr "" + +#: lib/sh/snprintf.c:2002 +#, c-format +msgid "/%%'ld %%'ld/, 12345, 1234567\n" +msgstr "" + +#: lib/sh/snprintf.c:2003 lib/sh/snprintf.c:2004 lib/sh/snprintf.c:2005 +#: lib/sh/snprintf.c:2010 lib/sh/snprintf.c:2011 lib/sh/snprintf.c:2012 +#: lib/sh/snprintf.c:2017 lib/sh/snprintf.c:2018 lib/sh/snprintf.c:2019 +#, c-format +msgid "/%'ld %'ld/\n" +msgstr "" + +#: lib/sh/snprintf.c:2009 +#, c-format +msgid "/%%'ld %%'ld/, 336, 3336\n" +msgstr "" + +#: lib/sh/snprintf.c:2016 +#, c-format +msgid "/%%'ld %%'ld/, -42786, -142786\n" +msgstr "" + +#: lib/sh/snprintf.c:2023 +#, c-format +msgid "/%%'f %%'f/, 421.2345, 421234.56789\n" +msgstr "" + +#: lib/sh/snprintf.c:2024 lib/sh/snprintf.c:2025 lib/sh/snprintf.c:2026 +#: lib/sh/snprintf.c:2031 lib/sh/snprintf.c:2032 lib/sh/snprintf.c:2033 +#, c-format +msgid "/%'f %'f/\n" +msgstr "" + +#: lib/sh/snprintf.c:2030 +#, c-format +msgid "/%%'f %%'f/, -421.2345, -421234.56789\n" +msgstr "" + +#: lib/sh/snprintf.c:2037 +#, c-format +msgid "/%%'g %%'g/, 421.2345, 421234.56789\n" +msgstr "" + +#: lib/sh/snprintf.c:2038 lib/sh/snprintf.c:2039 lib/sh/snprintf.c:2040 +#: lib/sh/snprintf.c:2045 lib/sh/snprintf.c:2046 lib/sh/snprintf.c:2047 +#, c-format +msgid "/%'g %'g/\n" +msgstr "" + +#: lib/sh/snprintf.c:2044 +#, c-format +msgid "/%%'g %%'g/, -421.2345, -421234.56789\n" +msgstr "" + +#: lib/sh/snprintf.c:2052 +#, c-format +msgid "/%%'g/, 4213455.8392\n" +msgstr "" + +#: lib/sh/snprintf.c:2053 lib/sh/snprintf.c:2054 lib/sh/snprintf.c:2055 +#, c-format +msgid "/%'g/\n" +msgstr "" + +#: lib/sh/strerror.c:49 +msgid "Unknown system error " +msgstr "" + +#: lib/sh/strftime.c:153 +msgid "Sun" +msgstr "" + +#: lib/sh/strftime.c:153 +msgid "Mon" +msgstr "" + +#: lib/sh/strftime.c:153 +msgid "Tue" +msgstr "" + +#: lib/sh/strftime.c:153 +msgid "Wed" +msgstr "" + +#: lib/sh/strftime.c:154 +msgid "Thu" +msgstr "" + +#: lib/sh/strftime.c:154 +msgid "Fri" +msgstr "" + +#: lib/sh/strftime.c:154 +msgid "Sat" +msgstr "" + +#: lib/sh/strftime.c:157 +msgid "Sunday" +msgstr "" + +#: lib/sh/strftime.c:157 +msgid "Monday" +msgstr "" + +#: lib/sh/strftime.c:157 +msgid "Tuesday" +msgstr "" + +#: lib/sh/strftime.c:157 +msgid "Wednesday" +msgstr "" + +#: lib/sh/strftime.c:158 +msgid "Thursday" +msgstr "" + +#: lib/sh/strftime.c:158 +msgid "Friday" +msgstr "" + +#: lib/sh/strftime.c:158 +msgid "Saturday" +msgstr "" + +#: lib/sh/strftime.c:161 +msgid "Jan" +msgstr "" + +#: lib/sh/strftime.c:161 +msgid "Feb" +msgstr "" + +#: lib/sh/strftime.c:161 +msgid "Mar" +msgstr "" + +#: lib/sh/strftime.c:161 +msgid "Apr" +msgstr "" + +#: lib/sh/strftime.c:161 lib/sh/strftime.c:166 +msgid "May" +msgstr "" + +#: lib/sh/strftime.c:161 +msgid "Jun" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Jul" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Aug" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Sep" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Oct" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Nov" +msgstr "" + +#: lib/sh/strftime.c:162 +msgid "Dec" +msgstr "" + +#: lib/sh/strftime.c:165 +msgid "January" +msgstr "" + +#: lib/sh/strftime.c:165 +msgid "February" +msgstr "" + +#: lib/sh/strftime.c:165 +msgid "March" +msgstr "" + +#: lib/sh/strftime.c:165 +msgid "April" +msgstr "" + +#: lib/sh/strftime.c:166 +msgid "June" +msgstr "" + +#: lib/sh/strftime.c:166 +msgid "July" +msgstr "" + +#: lib/sh/strftime.c:166 +msgid "August" +msgstr "" + +#: lib/sh/strftime.c:166 +msgid "September" +msgstr "" + +#: lib/sh/strftime.c:167 +msgid "October" +msgstr "" + +#: lib/sh/strftime.c:167 +msgid "November" +msgstr "" + +#: lib/sh/strftime.c:167 +msgid "December" +msgstr "" + +#: lib/sh/strftime.c:169 +msgid "AM" +msgstr "" + +#: lib/sh/strftime.c:169 +msgid "PM" +msgstr "" + +#: lib/sh/strftime.c:270 +msgid "%A %B %d %T %Y" +msgstr "" + +#: lib/sh/strftime.c:275 lib/sh/strftime.c:280 lib/sh/strftime.c:321 +#: lib/sh/strftime.c:329 lib/sh/strftime.c:338 lib/sh/strftime.c:347 +#: lib/sh/strftime.c:352 lib/sh/strftime.c:393 lib/sh/strftime.c:413 +#: lib/sh/strftime.c:417 lib/sh/strftime.c:426 lib/sh/strftime.c:440 +#, c-format +msgid "%02d" +msgstr "" + +#: lib/sh/strftime.c:284 +msgid "%m/%d/%y" +msgstr "" + +#: lib/sh/strftime.c:288 lib/sh/strftime.c:519 lib/sh/strftime.c:528 +#, c-format +msgid "%2d" +msgstr "" + +#: lib/sh/strftime.c:296 +msgid "%Y-%m-%d" +msgstr "" + +#: lib/sh/strftime.c:342 +#, c-format +msgid "%03d" +msgstr "" + +#: lib/sh/strftime.c:373 +msgid "%I:%M:%S %p" +msgstr "" + +#: lib/sh/strftime.c:386 lib/malloc/stats.c:181 +#, c-format +msgid "%ld" +msgstr "" + +#: lib/sh/strftime.c:430 +msgid "%A %B %d %Y" +msgstr "" + +#: lib/sh/strftime.c:495 +#, c-format +msgid "%02d%02d" +msgstr "" + +#: lib/sh/strftime.c:544 +#, c-format +msgid "%2d-%3.3s-%4d" +msgstr "" + +#: lib/sh/strftime.c:786 +#, c-format +msgid "(%%A) full weekday name, var length (Sunday..Saturday) %A" +msgstr "" + +#: lib/sh/strftime.c:787 +msgid "(%%B) full month name, var length (January..December) %B" +msgstr "" + +#: lib/sh/strftime.c:788 +#, c-format +msgid "(%%C) Century %C" +msgstr "" + +#: lib/sh/strftime.c:789 +msgid "(%%D) date (%%m/%%d/%%y) %D" +msgstr "" + +#: lib/sh/strftime.c:790 +#, c-format +msgid "(%%E) Locale extensions (ignored) %E" +msgstr "" + +#: lib/sh/strftime.c:791 +#, c-format +msgid "(%%F) full month name, var length (January..December) %F" +msgstr "" + +#: lib/sh/strftime.c:792 +msgid "(%%H) hour (24-hour clock, 00..23) %H" +msgstr "" + +#: lib/sh/strftime.c:793 +msgid "(%%I) hour (12-hour clock, 01..12) %I" +msgstr "" + +#: lib/sh/strftime.c:794 +msgid "(%%M) minute (00..59) %M" +msgstr "" + +#: lib/sh/strftime.c:795 +msgid "(%%N) Emporer/Era Name %N" +msgstr "" + +#: lib/sh/strftime.c:796 +msgid "(%%O) Locale extensions (ignored) %O" +msgstr "" + +#: lib/sh/strftime.c:797 +msgid "(%%R) time, 24-hour (%%H:%%M) %R" +msgstr "" + +#: lib/sh/strftime.c:798 +#, c-format +msgid "(%%S) second (00..60) %S" +msgstr "" + +#: lib/sh/strftime.c:799 +msgid "(%%T) time, 24-hour (%%H:%%M:%%S) %T" +msgstr "" + +#: lib/sh/strftime.c:800 +msgid "(%%U) week of year, Sunday as first day of week (00..53) %U" +msgstr "" + +#: lib/sh/strftime.c:801 +msgid "(%%V) week of year according to ISO 8601 %V" +msgstr "" + +#: lib/sh/strftime.c:802 +msgid "(%%W) week of year, Monday as first day of week (00..53) %W" +msgstr "" + +#: lib/sh/strftime.c:803 +msgid "(%%X) appropriate locale time representation (%H:%M:%S) %X" +msgstr "" + +#: lib/sh/strftime.c:804 +msgid "(%%Y) year with century (1970...) %Y" +msgstr "" + +#: lib/sh/strftime.c:805 +msgid "(%%Z) timezone (EDT), or blank if timezone not determinable %Z" +msgstr "" + +#: lib/sh/strftime.c:806 +#, c-format +msgid "(%%a) locale's abbreviated weekday name (Sun..Sat) %a" +msgstr "" + +#: lib/sh/strftime.c:807 +msgid "(%%b) locale's abbreviated month name (Jan..Dec) %b" +msgstr "" + +#: lib/sh/strftime.c:808 +msgid "(%%c) full date (Sat Nov 4 12:02:33 1989)%n%t%t%t %c" +msgstr "" + +#: lib/sh/strftime.c:809 +#, c-format +msgid "(%%d) day of the month (01..31) %d" +msgstr "" + +#: lib/sh/strftime.c:810 +#, c-format +msgid "(%%e) day of the month, blank-padded ( 1..31) %e" +msgstr "" + +#: lib/sh/strftime.c:811 +msgid "(%%h) should be same as (%%b) %h" +msgstr "" + +#: lib/sh/strftime.c:812 +msgid "(%%j) day of the year (001..366) %j" +msgstr "" + +#: lib/sh/strftime.c:813 +msgid "(%%k) hour, 24-hour clock, blank pad ( 0..23) %k" +msgstr "" + +#: lib/sh/strftime.c:814 +msgid "(%%l) hour, 12-hour clock, blank pad ( 0..12) %l" +msgstr "" + +#: lib/sh/strftime.c:815 +#, c-format +msgid "(%%m) month (01..12) %m" +msgstr "" + +#: lib/sh/strftime.c:816 +#, c-format +msgid "(%%o) Emporer/Era Year %o" +msgstr "" + +#: lib/sh/strftime.c:817 +#, c-format +msgid "(%%p) locale's AM or PM based on 12-hour clock %p" +msgstr "" + +#: lib/sh/strftime.c:818 +msgid "(%%r) time, 12-hour (same as %%I:%%M:%%S %%p) %r" +msgstr "" + +#: lib/sh/strftime.c:819 +#, c-format +msgid "(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7] %u" +msgstr "" + +#: lib/sh/strftime.c:820 +msgid "(%%v) VMS date (dd-bbb-YYYY) %v" +msgstr "" + +#: lib/sh/strftime.c:821 +msgid "(%%w) day of week (0..6, Sunday == 0) %w" +msgstr "" + +#: lib/sh/strftime.c:822 +#, c-format +msgid "(%%x) appropriate locale date representation %x" +msgstr "" + +#: lib/sh/strftime.c:823 +msgid "(%%y) last two digits of year (00..99) %y" +msgstr "" + +#: lib/sh/strftime.c:824 +msgid "(%%z) timezone offset east of GMT as HHMM (e.g. -0500) %z" +msgstr "" + +#: lib/sh/stringlist.c:235 +#, c-format +msgid "%s%s\n" +msgstr "" + +#: lib/sh/strtoimax.c:38 lib/sh/strtoimax.c:45 lib/sh/strtoumax.c:38 +#: lib/sh/strtoumax.c:45 +msgid "this configure-time declaration test was not run" +msgstr "" + +#: lib/sh/strtoimax.c:83 +#, c-format +msgid "sizeof intmax_t: %d\n" +msgstr "" + +#: lib/sh/strtoimax.c:86 +#, c-format +msgid "sizeof long long: %d\n" +msgstr "" + +#: lib/sh/strtoimax.c:88 +#, c-format +msgid "sizeof long: %d\n" +msgstr "" + +#: lib/sh/strtoimax.c:98 +#, c-format +msgid "%lld %lld %ld\n" +msgstr "" + +#: lib/sh/strtoumax.c:83 +#, c-format +msgid "sizeof uintmax_t: %d\n" +msgstr "" + +#: lib/sh/strtoumax.c:86 +#, c-format +msgid "sizeof unsigned long long: %d\n" +msgstr "" + +#: lib/sh/strtoumax.c:88 +#, c-format +msgid "sizeof unsigned long: %d\n" +msgstr "" + +#: lib/sh/strtoumax.c:98 +#, c-format +msgid "%llu %llu %lu\n" +msgstr "" + +#: lib/sh/tmpfile.c:46 +msgid "shtmp" +msgstr "" + +#: lib/sh/tmpfile.c:73 +msgid "/var/tmp" +msgstr "" + +#: lib/sh/tmpfile.c:77 +msgid "/usr/tmp" +msgstr "" + +#: lib/sh/tmpfile.c:92 +msgid "TMPDIR" +msgstr "" + +#: lib/sh/tmpfile.c:122 lib/sh/tmpfile.c:167 +#, c-format +msgid "%s/%s.XXXXXX" +msgstr "" + +#: lib/sh/tmpfile.c:135 lib/sh/tmpfile.c:184 +#, c-format +msgid "%s/%s-%lu" +msgstr "" + +#: lib/sh/tmpfile.c:212 +msgid "w+" +msgstr "" + +#: lib/malloc/alloca.c:446 +#, c-format +msgid "%011o %011o %011o\n" +msgstr "" + +#: lib/malloc/alloca.c:467 +#, c-format +msgid "%011o %011o\n" +msgstr "" + +#: lib/malloc/i386-alloca.s:1 +msgid "alloca.s" +msgstr "" + +#: lib/malloc/imalloc.h:52 +msgid "x" +msgstr "" + +#: lib/malloc/malloc.c:298 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:314 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:355 +msgid "bcoalesce: CHAIN(mp2) != mp1" +msgstr "" + +#: lib/malloc/malloc.c:604 +msgid "malloc_debug_dummy\n" +msgstr "" + +#: lib/malloc/malloc.c:740 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:766 lib/malloc/malloc.c:768 lib/malloc/malloc.c:773 +msgid "malloc" +msgstr "" + +#: lib/malloc/malloc.c:817 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:820 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:839 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:845 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:942 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:957 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:963 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1009 lib/malloc/malloc.c:1011 lib/malloc/malloc.c:1016 +msgid "realloc" +msgstr "" + +#: lib/malloc/memtest.c:125 lib/malloc/memtest.c:138 +msgid "malloc-test: " +msgstr "" + +#: lib/malloc/stats.c:99 +#, c-format +msgid "" +"Memory allocation statistics: %s\n" +" size\tfree\tin use\ttotal\tmorecore lesscore split\tcoalesce\n" +msgstr "" + +#: lib/malloc/stats.c:104 +#, c-format +msgid "%8lu\t%4d\t%6d\t%5d\t%8d\t%d %5d %8d\n" +msgstr "" + +#: lib/malloc/stats.c:108 +#, c-format +msgid "" +"\n" +"Total bytes in use: %lu, total bytes free: %lu\n" +msgstr "" + +#: lib/malloc/stats.c:110 +#, c-format +msgid "" +"\n" +"Total bytes requested by application: %lu\n" +msgstr "" + +#: lib/malloc/stats.c:111 +#, c-format +msgid "Total mallocs: %d, total frees: %d, total reallocs: %d (%d copies)\n" +msgstr "" + +#: lib/malloc/stats.c:113 +#, c-format +msgid "Total sbrks: %d, total bytes via sbrk: %d\n" +msgstr "" + +#: lib/malloc/stats.c:115 +#, c-format +msgid "Total blocks split: %d, total block coalesces: %d\n" +msgstr "" + +#: lib/malloc/stats.c:134 +msgid "/var/tmp/maltrace/stats." +msgstr "" + +#: lib/malloc/stats.c:172 +#, c-format +msgid "%s%ld" +msgstr "" + +#: lib/malloc/table.c:152 +#, c-format +msgid "malloc: %p: %s: last %s from %s:%d\n" +msgstr "" + +#: lib/malloc/table.c:154 lib/malloc/table.c:155 lib/malloc/table.c:239 +#: lib/malloc/watch.c:46 +msgid "allocated" +msgstr "" + +#: lib/malloc/table.c:154 lib/malloc/table.c:222 lib/malloc/table.c:237 +msgid "free" +msgstr "" + +#: lib/malloc/table.c:155 lib/malloc/watch.c:48 +msgid "freed" +msgstr "" + +#: lib/malloc/table.c:175 +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:182 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:211 +#, c-format +msgid "register_free: %p not in allocation table?\n" +msgstr "" + +#: lib/malloc/table.c:218 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/malloc/table.c:241 +msgid "undetermined?" +msgstr "" + +#: lib/malloc/table.c:255 +#, c-format +msgid "[%d] %p:%d:%s:%s:%s:%d:%d:%d\n" +msgstr "" + +#: lib/malloc/trace.c:51 +#, c-format +msgid "alloc: %s: %p (%d bytes) from '%s:%d'\n" +msgstr "" + +#: lib/malloc/trace.c:54 +#, c-format +msgid "alloc:%p:%d:%s:%d\n" +msgstr "" + +#: lib/malloc/trace.c:69 +#, c-format +msgid "free: %p (%d bytes) from '%s:%d'\n" +msgstr "" + +#: lib/malloc/trace.c:72 +#, c-format +msgid "free:%p:%d:%s:%d\n" +msgstr "" + +#: lib/malloc/trace.c:107 +msgid "/var/tmp/maltrace/trace." +msgstr "" + +#: lib/malloc/watch.c:50 +msgid "requesting resize" +msgstr "" + +#: lib/malloc/watch.c:52 +msgid "just resized" +msgstr "" + +#: lib/malloc/watch.c:54 +msgid "bug: unknown operation" +msgstr "" + +#: lib/malloc/watch.c:56 +#, c-format +msgid "malloc: watch alert: %p %s " +msgstr "" + +#: lib/malloc/watch.c:58 +#, c-format +msgid "(size %lu) " +msgstr "" + +#: lib/malloc/watch.c:59 +#, c-format +msgid "from '%s:%d'\n" +msgstr "" + +#: lib/malloc/x386-alloca.s:10 +msgid "masm" +msgstr "" + +#: lib/malloc/xmalloc.c:55 +#, c-format +msgid "%s: out of virtual memory\n" +msgstr "" + +#: lib/malloc/xmalloc.c:70 +msgid "xmalloc" +msgstr "" + +#: lib/malloc/xmalloc.c:84 +msgid "xrealloc" +msgstr "" diff --git a/po.orig/bash.pot b/po.orig/bash.pot new file mode 100644 index 000000000..3340d22cc --- /dev/null +++ b/po.orig/bash.pot @@ -0,0 +1,4174 @@ +# 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. +# +#: builtins/caller.def:128 builtins/caller.def:132 builtins/pushd.def:655 +#: builtins/pushd.def:663 builtins/pushd.def:666 builtins/pushd.def:676 +#: builtins/pushd.def:680 builtins/pushd.def:684 builtins/pushd.def:687 +#: builtins/pushd.def:690 builtins/pushd.def:699 builtins/pushd.def:703 +#: builtins/pushd.def:707 builtins/pushd.def:710 builtins.c:321 builtins.c:325 +#: builtins.c:390 builtins.c:392 builtins.c:401 builtins.c:404 builtins.c:408 +#: builtins.c:445 builtins.c:487 builtins.c:491 builtins.c:498 builtins.c:509 +#: builtins.c:513 builtins.c:552 builtins.c:555 builtins.c:559 builtins.c:562 +#: builtins.c:630 builtins.c:637 builtins.c:692 builtins.c:713 builtins.c:718 +#: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921 +#: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952 +#: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973 +#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028 +#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062 +#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309 +#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331 +#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354 +#: builtins.c:1362 builtins.c:1365 +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: bug-bash@gnu.org\n" +"POT-Creation-Date: 2003-12-22 15:34-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" + +#: arrayfunc.c:45 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:306 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: bashhist.c:321 +#, c-format +msgid "%s: cannot create: %s" +msgstr "" + +#: bashline.c:2791 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:2840 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:2869 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:2903 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: builtins/alias.def:123 +#, c-format +msgid "`%s': invalid alias name" +msgstr "" + +#: builtins/bind.def:194 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:233 +#, c-format +msgid "%s: cannot read: %s" +msgstr "" + +#: builtins/bind.def:248 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/bind.def:283 +#, c-format +msgid "`%s': unknown function name" +msgstr "" + +#: builtins/bind.def:291 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:295 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/break.def:128 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:127 builtins.c:320 +msgid "Returns the context of the current subroutine call." +msgstr "" + +#: builtins/caller.def:129 builtins.c:322 +msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +msgstr "" + +#: builtins/caller.def:130 builtins.c:323 +msgid "returns \"$line $subroutine $filename\"; this extra information" +msgstr "" + +#: builtins/caller.def:131 builtins.c:324 +msgid "can be used used to provide a stack trace." +msgstr "" + +#: builtins/caller.def:133 builtins.c:326 +msgid "The value of EXPR indicates how many call frames to go back before the" +msgstr "" + +#: builtins/caller.def:134 builtins.c:327 +msgid "current one; the top frame is frame 0." +msgstr "" + +#: builtins/cd.def:188 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:200 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/cd.def:357 +#, c-format +msgid "write error: %s" +msgstr "" + +#: builtins/common.c:133 test.c:921 +msgid "too many arguments" +msgstr "" + +#: builtins/common.c:157 shell.c:465 shell.c:737 +#, c-format +msgid "%s: option requires an argument" +msgstr "" + +#: builtins/common.c:164 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:171 +#, c-format +msgid "%s: not found" +msgstr "" + +#: builtins/common.c:180 shell.c:750 +#, c-format +msgid "%s: invalid option" +msgstr "" + +#: builtins/common.c:187 +#, c-format +msgid "%s: invalid option name" +msgstr "" + +#: builtins/common.c:194 general.c:229 general.c:234 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "" + +#: builtins/common.c:201 +#, c-format +msgid "%s: invalid number" +msgstr "" + +#: builtins/common.c:208 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:215 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:222 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "" + +#: builtins/common.c:230 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:230 builtins/common.c:232 +msgid "argument" +msgstr "" + +#: builtins/common.c:232 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:240 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:248 +#, c-format +msgid "%s: no job control" +msgstr "" + +#: builtins/common.c:250 +msgid "no job control" +msgstr "" + +#: builtins/common.c:260 +#, c-format +msgid "%s: restricted" +msgstr "" + +#: builtins/common.c:262 +msgid "restricted" +msgstr "" + +#: builtins/common.c:270 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:486 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:553 builtins/common.c:555 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "" + +#: builtins/complete.def:251 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:381 builtins/complete.def:524 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:571 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:573 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/declare.def:105 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:295 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:307 execute_cmd.c:3949 +#, c-format +msgid "%s: readonly function" +msgstr "" + +#: builtins/declare.def:389 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "" + +#: builtins/enable.def:128 builtins/enable.def:136 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:303 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:326 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:450 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:465 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "" + +#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395 +#, c-format +msgid "%s: is a directory" +msgstr "" + +#: builtins/evalfile.c:133 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: builtins/evalfile.c:141 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/exec.def:205 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "" + +#: builtins/exit.def:83 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:111 +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/fc.def:252 +msgid "no command found" +msgstr "" + +#: builtins/fc.def:317 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:338 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "" + +#: builtins/fg_bg.def:133 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:109 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: builtins/hash.def:83 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:128 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/help.def:108 +msgid "Shell commands matching keywords `" +msgstr "" + +#: builtins/help.def:110 +msgid "Shell commands matching keyword `" +msgstr "" + +#: builtins/help.def:138 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:164 +#, c-format +msgid "%s: cannot open: %s" +msgstr "" + +#: builtins/help.def:182 +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:148 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:180 +msgid "history position" +msgstr "" + +#: builtins/history.def:390 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/jobs.def:99 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:187 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:248 +msgid "Unknown error" +msgstr "" + +#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511 +msgid "expression expected" +msgstr "" + +#: builtins/printf.def:249 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:408 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:601 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/pushd.def:168 +msgid "no other directory" +msgstr "" + +#: builtins/pushd.def:435 +msgid "" +msgstr "" + +#: builtins/pushd.def:652 builtins.c:1351 +msgid "Display the list of currently remembered directories. Directories" +msgstr "" + +#: builtins/pushd.def:653 builtins.c:1352 +msgid "find their way onto the list with the `pushd' command; you can get" +msgstr "" + +#: builtins/pushd.def:654 builtins.c:1353 +msgid "back up through the list with the `popd' command." +msgstr "" + +#: builtins/pushd.def:656 builtins.c:1355 +msgid "The -l flag specifies that `dirs' should not print shorthand versions" +msgstr "" + +#: builtins/pushd.def:657 builtins.c:1356 +msgid "of directories which are relative to your home directory. This means" +msgstr "" + +#: builtins/pushd.def:658 builtins.c:1357 +msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +msgstr "" + +#: builtins/pushd.def:659 builtins.c:1358 +msgid "causes `dirs' to print the directory stack with one entry per line," +msgstr "" + +#: builtins/pushd.def:660 builtins.c:1359 +msgid "prepending the directory name with its position in the stack. The -p" +msgstr "" + +#: builtins/pushd.def:661 builtins.c:1360 +msgid "flag does the same thing, but the stack position is not prepended." +msgstr "" + +#: builtins/pushd.def:662 builtins.c:1361 +msgid "The -c flag clears the directory stack by deleting all of the elements." +msgstr "" + +#: builtins/pushd.def:664 +msgid "+N displays the Nth entry counting from the left of the list shown by" +msgstr "" + +#: builtins/pushd.def:665 builtins/pushd.def:668 +msgid " dirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:667 +msgid "" +"-N displays the Nth entry counting from the right of the list shown by" +msgstr "" + +#: builtins/pushd.def:673 builtins.c:1302 +msgid "Adds a directory to the top of the directory stack, or rotates" +msgstr "" + +#: builtins/pushd.def:674 builtins.c:1303 +msgid "the stack, making the new top of the stack the current working" +msgstr "" + +#: builtins/pushd.def:675 builtins.c:1304 +msgid "directory. With no arguments, exchanges the top two directories." +msgstr "" + +#: builtins/pushd.def:677 +msgid "+N Rotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins/pushd.def:678 +msgid " from the left of the list shown by `dirs', starting with" +msgstr "" + +#: builtins/pushd.def:679 builtins/pushd.def:683 +msgid " zero) is at the top." +msgstr "" + +#: builtins/pushd.def:681 +msgid "-N Rotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins/pushd.def:682 +msgid " from the right of the list shown by `dirs', starting with" +msgstr "" + +#: builtins/pushd.def:685 +msgid "-n suppress the normal change of directory when adding directories" +msgstr "" + +#: builtins/pushd.def:686 +msgid " to the stack, so only the stack is manipulated." +msgstr "" + +#: builtins/pushd.def:688 +msgid "dir adds DIR to the directory stack at the top, making it the" +msgstr "" + +#: builtins/pushd.def:689 +msgid " new current working directory." +msgstr "" + +#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320 +#: builtins.c:1343 +msgid "You can see the directory stack with the `dirs' command." +msgstr "" + +#: builtins/pushd.def:696 builtins.c:1328 +msgid "Removes entries from the directory stack. With no arguments," +msgstr "" + +#: builtins/pushd.def:697 builtins.c:1329 +msgid "removes the top directory from the stack, and cd's to the new" +msgstr "" + +#: builtins/pushd.def:698 builtins.c:1330 +msgid "top directory." +msgstr "" + +#: builtins/pushd.def:700 +msgid "+N removes the Nth entry counting from the left of the list" +msgstr "" + +#: builtins/pushd.def:701 +msgid " shown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" + +#: builtins/pushd.def:702 +msgid " removes the first directory, `popd +1' the second." +msgstr "" + +#: builtins/pushd.def:704 +msgid "-N removes the Nth entry counting from the right of the list" +msgstr "" + +#: builtins/pushd.def:705 +msgid " shown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" + +#: builtins/pushd.def:706 +msgid " removes the last directory, `popd -1' the next to last." +msgstr "" + +#: builtins/pushd.def:708 +msgid "-n suppress the normal change of directory when removing directories" +msgstr "" + +#: builtins/pushd.def:709 +msgid " from the stack, so only the stack is manipulated." +msgstr "" + +#: builtins/read.def:207 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:230 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/read.def:237 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/read.def:463 +#, c-format +msgid "read error: %d: %s" +msgstr "" + +#: builtins/return.def:63 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:743 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:780 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/set.def:787 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/set.def:798 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:165 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/shift.def:66 builtins/shift.def:72 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:226 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:291 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:117 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:137 +#, c-format +msgid "%s: file not found" +msgstr "" + +#: builtins/suspend.def:93 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:103 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:231 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:252 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:272 +#, c-format +msgid "%s is a function\n" +msgstr "" + +#: builtins/type.def:297 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:318 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:338 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:332 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:358 +#, c-format +msgid "`%c': bad command" +msgstr "" + +#: builtins/ulimit.def:387 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:425 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "" + +#: builtins/umask.def:112 +msgid "octal number" +msgstr "" + +#: builtins/umask.def:226 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:279 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:165 +#, c-format +msgid "last command: %s\n" +msgstr "" + +#: error.c:173 +msgid "Aborting..." +msgstr "" + +#: error.c:260 +#, c-format +msgid "%s: warning: " +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:175 +msgid "timed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:466 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1036 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:3521 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:3609 +#, c-format +msgid "%s: command not found" +msgstr "" + +#: execute_cmd.c:3839 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "" + +#: execute_cmd.c:3876 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "" + +#: execute_cmd.c:3988 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:239 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:263 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:374 +msgid "syntax error in expression" +msgstr "" + +#: expr.c:414 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:435 expr.c:440 expr.c:750 +msgid "division by 0" +msgstr "" + +#: expr.c:466 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:508 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:775 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:819 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:847 +msgid "missing `)'" +msgstr "" + +#: expr.c:871 +msgid "syntax error: operand expected" +msgstr "" + +#: expr.c:1146 +msgid "invalid number" +msgstr "" + +#: expr.c:1150 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1170 +msgid "value too great for base" +msgstr "" + +#: general.c:60 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: input.c:231 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:239 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:693 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1001 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" + +#: jobs.c:1632 nojobs.c:648 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:1815 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:2062 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:2284 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:2293 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3037 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:298 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:314 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:740 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:817 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:820 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:839 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:845 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:942 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:957 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:963 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:175 +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:182 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:218 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/malloc/watch.c:46 +msgid "allocated" +msgstr "" + +#: lib/malloc/watch.c:48 +msgid "freed" +msgstr "" + +#: lib/malloc/watch.c:50 +msgid "requesting resize" +msgstr "" + +#: lib/malloc/watch.c:52 +msgid "just resized" +msgstr "" + +#: lib/malloc/watch.c:54 +msgid "bug: unknown operation" +msgstr "" + +#: lib/malloc/watch.c:56 +#, c-format +msgid "malloc: watch alert: %p %s " +msgstr "" + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:158 +#, c-format +msgid "%s: host unknown" +msgstr "" + +#: lib/sh/netopen.c:165 +#, c-format +msgid "%s: invalid service" +msgstr "" + +#: lib/sh/netopen.c:296 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:336 +msgid "network operations not supported" +msgstr "" + +#: mailcheck.c:382 +msgid "You have mail in $_" +msgstr "" + +#: mailcheck.c:407 +msgid "You have new mail in $_" +msgstr "" + +#: mailcheck.c:423 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:318 +msgid "syntax error: arithmetic expression required" +msgstr "" + +#: make_cmd.c:320 +msgid "syntax error: `;' unexpected" +msgstr "" + +#: make_cmd.c:321 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "" + +#: make_cmd.c:560 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:730 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2726 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:3011 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:3016 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:3020 +msgid "syntax error in conditional expression" +msgstr "" + +#: parse.y:3098 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:3102 +msgid "expected `)'" +msgstr "" + +#: parse.y:3130 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:3134 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:3171 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:3175 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:3191 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:3195 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:3206 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:3209 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:3213 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:4400 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:4418 +#, c-format +msgid "syntax error near `%s'" +msgstr "" + +#: parse.y:4428 +msgid "syntax error: unexpected end of file" +msgstr "" + +#: parse.y:4428 +msgid "syntax error" +msgstr "" + +#: parse.y:4490 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "" + +#: parse.y:4649 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:988 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplib.c:179 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:260 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:1172 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:99 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:141 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:145 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "" + +#: redir.c:150 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:155 +#, c-format +msgid "cannot create temp file for here document: %s" +msgstr "" + +#: redir.c:509 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:949 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:302 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:306 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:839 +#, c-format +msgid "%c%c: invalid option" +msgstr "" + +#: shell.c:1590 +msgid "I have no name!" +msgstr "" + +#: shell.c:1725 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:1727 +msgid "GNU long options:\n" +msgstr "" + +#: shell.c:1731 +msgid "Shell options:\n" +msgstr "" + +#: shell.c:1732 +msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:1747 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "" + +#: shell.c:1753 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:1754 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:1755 +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: sig.c:485 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: subst.c:1011 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:2020 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:3516 subst.c:3532 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:3563 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:3608 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:3610 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:3618 +#, c-format +msgid "cannout reset nodelay mode for fd %d" +msgstr "" + +#: subst.c:3628 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:3803 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:3832 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:3849 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:4284 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:4529 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:5209 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:5283 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:6652 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:154 +msgid "argument expected" +msgstr "" + +#: test.c:163 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:361 +msgid "`)' expected" +msgstr "" + +#: test.c:363 +#, c-format +msgid "`)' expected, found %s" +msgstr "" + +#: test.c:378 test.c:787 test.c:790 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:543 test.c:830 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:905 +msgid "missing `]'" +msgstr "" + +#: trap.c:194 +msgid "invalid signal number" +msgstr "" + +#: trap.c:309 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:313 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:349 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:310 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:670 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:1610 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2709 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:2923 variables.c:2932 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:2938 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:3363 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:3376 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:3442 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: version.c:82 +msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n" +msgstr "" + +#: xmalloc.c:93 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:95 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:115 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:117 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:151 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:153 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:175 +#, c-format +msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:177 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:244 +msgid "`alias' with no arguments or with the -p option prints the list" +msgstr "" + +#: builtins.c:245 +msgid "of aliases in the form alias NAME=VALUE on standard output." +msgstr "" + +#: builtins.c:246 +msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +msgstr "" + +#: builtins.c:247 +msgid "A trailing space in VALUE causes the next word to be checked for" +msgstr "" + +#: builtins.c:248 +msgid "alias substitution when the alias is expanded. Alias returns" +msgstr "" + +#: builtins.c:249 +msgid "true unless a NAME is given for which no alias has been defined." +msgstr "" + +#: builtins.c:257 +msgid "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," +msgstr "" + +#: builtins.c:258 +msgid "then remove all alias definitions." +msgstr "" + +#: builtins.c:266 +msgid "Bind a key sequence to a Readline function or a macro, or set" +msgstr "" + +#: builtins.c:267 +msgid "a Readline variable. The non-option argument syntax is equivalent" +msgstr "" + +#: builtins.c:268 +msgid "to that found in ~/.inputrc, but must be passed as a single argument:" +msgstr "" + +#: builtins.c:269 +msgid "bind '\"\\C-x\\C-r\": re-read-init-file'." +msgstr "" + +#: builtins.c:270 +msgid "bind accepts the following options:" +msgstr "" + +#: builtins.c:271 +msgid "" +" -m keymap Use `keymap' as the keymap for the duration of this" +msgstr "" + +#: builtins.c:272 +msgid " command. Acceptable keymap names are emacs," +msgstr "" + +#: builtins.c:273 +msgid "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +msgstr "" + +#: builtins.c:274 +msgid " vi-command, and vi-insert." +msgstr "" + +#: builtins.c:275 +msgid " -l List names of functions." +msgstr "" + +#: builtins.c:276 +msgid " -P List function names and bindings." +msgstr "" + +#: builtins.c:277 +msgid " -p List functions and bindings in a form that can be" +msgstr "" + +#: builtins.c:278 +msgid " reused as input." +msgstr "" + +#: builtins.c:279 +msgid " -r keyseq Remove the binding for KEYSEQ." +msgstr "" + +#: builtins.c:280 +msgid " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" +msgstr "" + +#: builtins.c:281 +msgid "\t\t\t\tKEYSEQ is entered." +msgstr "" + +#: builtins.c:282 +msgid " -f filename Read key bindings from FILENAME." +msgstr "" + +#: builtins.c:283 +msgid " -q function-name Query about which keys invoke the named function." +msgstr "" + +#: builtins.c:284 +msgid "" +" -u function-name Unbind all keys which are bound to the named function." +msgstr "" + +#: builtins.c:285 +msgid " -V List variable names and values" +msgstr "" + +#: builtins.c:286 +msgid " -v List variable names and values in a form that can" +msgstr "" + +#: builtins.c:287 +msgid " be reused as input." +msgstr "" + +#: builtins.c:288 +msgid "" +" -S List key sequences that invoke macros and their values" +msgstr "" + +#: builtins.c:289 +msgid "" +" -s List key sequences that invoke macros and their values" +msgstr "" + +#: builtins.c:290 +msgid " in a form that can be reused as input." +msgstr "" + +#: builtins.c:297 +msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +msgstr "" + +#: builtins.c:298 +msgid "break N levels." +msgstr "" + +#: builtins.c:304 +msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +msgstr "" + +#: builtins.c:305 +msgid "If N is specified, resume at the N-th enclosing loop." +msgstr "" + +#: builtins.c:311 +msgid "Run a shell builtin. This is useful when you wish to rename a" +msgstr "" + +#: builtins.c:312 +msgid "shell builtin to be a function, but need the functionality of the" +msgstr "" + +#: builtins.c:313 +msgid "builtin within the function itself." +msgstr "" + +#: builtins.c:334 +msgid "Change the current directory to DIR. The variable $HOME is the" +msgstr "" + +#: builtins.c:335 +msgid "default DIR. The variable CDPATH defines the search path for" +msgstr "" + +#: builtins.c:336 +msgid "the directory containing DIR. Alternative directory names in CDPATH" +msgstr "" + +#: builtins.c:337 +msgid "are separated by a colon (:). A null directory name is the same as" +msgstr "" + +#: builtins.c:338 +msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +msgstr "" + +#: builtins.c:339 +msgid "then CDPATH is not used. If the directory is not found, and the" +msgstr "" + +#: builtins.c:340 +msgid "shell option `cdable_vars' is set, then try the word as a variable" +msgstr "" + +#: builtins.c:341 +msgid "name. If that variable has a value, then cd to the value of that" +msgstr "" + +#: builtins.c:342 +msgid "variable. The -P option says to use the physical directory structure" +msgstr "" + +#: builtins.c:343 +msgid "" +"instead of following symbolic links; the -L option forces symbolic links" +msgstr "" + +#: builtins.c:344 +msgid "to be followed." +msgstr "" + +#: builtins.c:350 +msgid "Print the current working directory. With the -P option, pwd prints" +msgstr "" + +#: builtins.c:351 +msgid "the physical directory, without any symbolic links; the -L option" +msgstr "" + +#: builtins.c:352 +msgid "makes pwd follow symbolic links." +msgstr "" + +#: builtins.c:358 +msgid "No effect; the command does nothing. A zero exit code is returned." +msgstr "" + +#: builtins.c:364 +msgid "Return a successful result." +msgstr "" + +#: builtins.c:370 +msgid "Return an unsuccessful result." +msgstr "" + +#: builtins.c:376 +msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +msgstr "" + +#: builtins.c:377 +msgid "function called `ls', and you wish to call the command `ls', you can" +msgstr "" + +#: builtins.c:378 +msgid "say \"command ls\". If the -p option is given, a default value is used" +msgstr "" + +#: builtins.c:379 +msgid "for PATH that is guaranteed to find all of the standard utilities. If" +msgstr "" + +#: builtins.c:380 +msgid "the -V or -v option is given, a string is printed describing COMMAND." +msgstr "" + +#: builtins.c:381 +msgid "The -V option produces a more verbose description." +msgstr "" + +#: builtins.c:387 +msgid "Declare variables and/or give them attributes. If no NAMEs are" +msgstr "" + +#: builtins.c:388 +msgid "given, then display the values of variables instead. The -p option" +msgstr "" + +#: builtins.c:389 +msgid "will display the attributes and values of each NAME." +msgstr "" + +#: builtins.c:391 +msgid "The flags are:" +msgstr "" + +#: builtins.c:393 +msgid " -a\tto make NAMEs arrays (if supported)" +msgstr "" + +#: builtins.c:394 +msgid " -f\tto select from among function names only" +msgstr "" + +#: builtins.c:395 +msgid "" +" -F\tto display function names (and line number and source file name if" +msgstr "" + +#: builtins.c:396 +msgid "\tdebugging) without definitions" +msgstr "" + +#: builtins.c:397 +msgid " -i\tto make NAMEs have the `integer' attribute" +msgstr "" + +#: builtins.c:398 +msgid " -r\tto make NAMEs readonly" +msgstr "" + +#: builtins.c:399 +msgid " -t\tto make NAMEs have the `trace' attribute" +msgstr "" + +#: builtins.c:400 +msgid " -x\tto make NAMEs export" +msgstr "" + +#: builtins.c:402 +msgid "Variables with the integer attribute have arithmetic evaluation (see" +msgstr "" + +#: builtins.c:403 +msgid "`let') done when the variable is assigned to." +msgstr "" + +#: builtins.c:405 +msgid "When displaying values of variables, -f displays a function's name" +msgstr "" + +#: builtins.c:406 +msgid "and definition. The -F option restricts the display to function" +msgstr "" + +#: builtins.c:407 +msgid "name only." +msgstr "" + +#: builtins.c:409 +msgid "Using `+' instead of `-' turns off the given attribute instead. When" +msgstr "" + +#: builtins.c:410 +msgid "used in a function, makes NAMEs local, as with the `local' command." +msgstr "" + +#: builtins.c:416 +msgid "Obsolete. See `declare'." +msgstr "" + +#: builtins.c:422 +msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +msgstr "" + +#: builtins.c:423 +msgid "can only be used within a function; it makes the variable NAME" +msgstr "" + +#: builtins.c:424 +msgid "have a visible scope restricted to that function and its children." +msgstr "" + +#: builtins.c:431 +msgid "Output the ARGs. If -n is specified, the trailing newline is" +msgstr "" + +#: builtins.c:432 +msgid "suppressed. If the -e option is given, interpretation of the" +msgstr "" + +#: builtins.c:433 +msgid "following backslash-escaped characters is turned on:" +msgstr "" + +#: builtins.c:434 +msgid "\t\\a\talert (bell)" +msgstr "" + +#: builtins.c:435 +msgid "\t\\b\tbackspace" +msgstr "" + +#: builtins.c:436 +msgid "\t\\c\tsuppress trailing newline" +msgstr "" + +#: builtins.c:437 +msgid "\t\\E\tescape character" +msgstr "" + +#: builtins.c:438 +msgid "\t\\f\tform feed" +msgstr "" + +#: builtins.c:439 +msgid "\t\\n\tnew line" +msgstr "" + +#: builtins.c:440 +msgid "\t\\r\tcarriage return" +msgstr "" + +#: builtins.c:441 +msgid "\t\\t\thorizontal tab" +msgstr "" + +#: builtins.c:442 +msgid "\t\\v\tvertical tab" +msgstr "" + +#: builtins.c:443 +msgid "\t\\\\\tbackslash" +msgstr "" + +#: builtins.c:444 +msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +msgstr "" + +#: builtins.c:446 +msgid "You can explicitly turn off the interpretation of the above characters" +msgstr "" + +#: builtins.c:447 +msgid "with the -E option." +msgstr "" + +#: builtins.c:455 +msgid "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." +msgstr "" + +#: builtins.c:462 +msgid "Enable and disable builtin shell commands. This allows" +msgstr "" + +#: builtins.c:463 +msgid "you to use a disk command which has the same name as a shell" +msgstr "" + +#: builtins.c:464 +msgid "builtin without specifying a full pathname. If -n is used, the" +msgstr "" + +#: builtins.c:465 +msgid "NAMEs become disabled; otherwise NAMEs are enabled. For example," +msgstr "" + +#: builtins.c:466 +msgid "to use the `test' found in $PATH instead of the shell builtin" +msgstr "" + +#: builtins.c:467 +msgid "version, type `enable -n test'. On systems supporting dynamic" +msgstr "" + +#: builtins.c:468 +msgid "loading, the -f option may be used to load new builtins from the" +msgstr "" + +#: builtins.c:469 +msgid "shared object FILENAME. The -d option will delete a builtin" +msgstr "" + +#: builtins.c:470 +msgid "previously loaded with -f. If no non-option names are given, or" +msgstr "" + +#: builtins.c:471 +msgid "the -p option is supplied, a list of builtins is printed. The" +msgstr "" + +#: builtins.c:472 +msgid "-a option means to print every builtin with an indication of whether" +msgstr "" + +#: builtins.c:473 +msgid "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" +msgstr "" + +#: builtins.c:474 +msgid "" +"`special' builtins. The -n option displays a list of all disabled builtins." +msgstr "" + +#: builtins.c:480 +msgid "Read ARGs as input to the shell and execute the resulting command(s)." +msgstr "" + +#: builtins.c:486 +msgid "Getopts is used by shell procedures to parse positional parameters." +msgstr "" + +#: builtins.c:488 +msgid "OPTSTRING contains the option letters to be recognized; if a letter" +msgstr "" + +#: builtins.c:489 +msgid "is followed by a colon, the option is expected to have an argument," +msgstr "" + +#: builtins.c:490 +msgid "which should be separated from it by white space." +msgstr "" + +#: builtins.c:492 +msgid "Each time it is invoked, getopts will place the next option in the" +msgstr "" + +#: builtins.c:493 +msgid "shell variable $name, initializing name if it does not exist, and" +msgstr "" + +#: builtins.c:494 +msgid "the index of the next argument to be processed into the shell" +msgstr "" + +#: builtins.c:495 +msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +msgstr "" + +#: builtins.c:496 +msgid "a shell script is invoked. When an option requires an argument," +msgstr "" + +#: builtins.c:497 +msgid "getopts places that argument into the shell variable OPTARG." +msgstr "" + +#: builtins.c:499 +msgid "getopts reports errors in one of two ways. If the first character" +msgstr "" + +#: builtins.c:500 +msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +msgstr "" + +#: builtins.c:501 +msgid "this mode, no error messages are printed. If an invalid option is" +msgstr "" + +#: builtins.c:502 +msgid "seen, getopts places the option character found into OPTARG. If a" +msgstr "" + +#: builtins.c:503 +msgid "required argument is not found, getopts places a ':' into NAME and" +msgstr "" + +#: builtins.c:504 +msgid "sets OPTARG to the option character found. If getopts is not in" +msgstr "" + +#: builtins.c:505 +msgid "silent mode, and an invalid option is seen, getopts places '?' into" +msgstr "" + +#: builtins.c:506 +msgid "NAME and unsets OPTARG. If a required argument is not found, a '?'" +msgstr "" + +#: builtins.c:507 +msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +msgstr "" + +#: builtins.c:508 +msgid "printed." +msgstr "" + +#: builtins.c:510 +msgid "If the shell variable OPTERR has the value 0, getopts disables the" +msgstr "" + +#: builtins.c:511 +msgid "printing of error messages, even if the first character of" +msgstr "" + +#: builtins.c:512 +msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +msgstr "" + +#: builtins.c:514 +msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +msgstr "" + +#: builtins.c:515 +msgid "more arguments are given, they are parsed instead." +msgstr "" + +#: builtins.c:521 +msgid "Exec FILE, replacing this shell with the specified program." +msgstr "" + +#: builtins.c:522 +msgid "If FILE is not specified, the redirections take effect in this" +msgstr "" + +#: builtins.c:523 +msgid "shell. If the first argument is `-l', then place a dash in the" +msgstr "" + +#: builtins.c:524 +msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +msgstr "" + +#: builtins.c:525 +msgid "is supplied, FILE is executed with a null environment. The `-a'" +msgstr "" + +#: builtins.c:526 +msgid "option means to make set argv[0] of the executed process to NAME." +msgstr "" + +#: builtins.c:527 +msgid "If the file cannot be executed and the shell is not interactive," +msgstr "" + +#: builtins.c:528 +msgid "then the shell exits, unless the shell option `execfail' is set." +msgstr "" + +#: builtins.c:534 +msgid "Exit the shell with a status of N. If N is omitted, the exit status" +msgstr "" + +#: builtins.c:535 +msgid "is that of the last command executed." +msgstr "" + +#: builtins.c:541 +msgid "Logout of a login shell." +msgstr "" + +#: builtins.c:548 +msgid "" +"fc is used to list or edit and re-execute commands from the history list." +msgstr "" + +#: builtins.c:549 +msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +msgstr "" + +#: builtins.c:550 +msgid "string, which means the most recent command beginning with that" +msgstr "" + +#: builtins.c:551 +msgid "string." +msgstr "" + +#: builtins.c:553 +msgid "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +msgstr "" + +#: builtins.c:554 +msgid " then vi." +msgstr "" + +#: builtins.c:556 +msgid " -l means list lines instead of editing." +msgstr "" + +#: builtins.c:557 +msgid " -n means no line numbers listed." +msgstr "" + +#: builtins.c:558 +msgid "" +" -r means reverse the order of the lines (making it newest listed first)." +msgstr "" + +#: builtins.c:560 +msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +msgstr "" + +#: builtins.c:561 +msgid "re-executed after the substitution OLD=NEW is performed." +msgstr "" + +#: builtins.c:563 +msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +msgstr "" + +#: builtins.c:564 +msgid "runs the last command beginning with `cc' and typing `r' re-executes" +msgstr "" + +#: builtins.c:565 +msgid "the last command." +msgstr "" + +#: builtins.c:573 +msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +msgstr "" + +#: builtins.c:574 +msgid "JOB_SPEC is not present, the shell's notion of the current job is" +msgstr "" + +#: builtins.c:575 +msgid "used." +msgstr "" + +#: builtins.c:583 +msgid "Place JOB_SPEC in the background, as if it had been started with" +msgstr "" + +#: builtins.c:584 +msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +msgstr "" + +#: builtins.c:585 +msgid "job is used." +msgstr "" + +#: builtins.c:592 +msgid "For each NAME, the full pathname of the command is determined and" +msgstr "" + +#: builtins.c:593 +msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +msgstr "" + +#: builtins.c:594 +msgid "full pathname of NAME, and no path search is performed. The -r" +msgstr "" + +#: builtins.c:595 +msgid "option causes the shell to forget all remembered locations. The -d" +msgstr "" + +#: builtins.c:596 +msgid "option causes the shell to forget the remembered location of each NAME." +msgstr "" + +#: builtins.c:597 +msgid "If the -t option is supplied the full pathname to which each NAME" +msgstr "" + +#: builtins.c:598 +msgid "corresponds is printed. If multiple NAME arguments are supplied with" +msgstr "" + +#: builtins.c:599 +msgid "-t, the NAME is printed before the hashed full pathname. The -l option" +msgstr "" + +#: builtins.c:600 +msgid "causes output to be displayed in a format that may be reused as input." +msgstr "" + +#: builtins.c:601 +msgid "" +"If no arguments are given, information about remembered commands is " +"displayed." +msgstr "" + +#: builtins.c:608 +msgid "Display helpful information about builtin commands. If PATTERN is" +msgstr "" + +#: builtins.c:609 +msgid "specified, gives detailed help on all commands matching PATTERN," +msgstr "" + +#: builtins.c:610 +msgid "otherwise a list of the builtins is printed. The -s option" +msgstr "" + +#: builtins.c:611 +msgid "restricts the output for each builtin command matching PATTERN to" +msgstr "" + +#: builtins.c:612 +msgid "a short usage synopsis." +msgstr "" + +#: builtins.c:620 +msgid "Display the history list with line numbers. Lines listed with" +msgstr "" + +#: builtins.c:621 +msgid "with a `*' have been modified. Argument of N says to list only" +msgstr "" + +#: builtins.c:622 +msgid "the last N lines. The `-c' option causes the history list to be" +msgstr "" + +#: builtins.c:623 +msgid "cleared by deleting all of the entries. The `-d' option deletes" +msgstr "" + +#: builtins.c:624 +msgid "the history entry at offset OFFSET. The `-w' option writes out the" +msgstr "" + +#: builtins.c:625 +msgid "current history to the history file; `-r' means to read the file and" +msgstr "" + +#: builtins.c:626 +msgid "append the contents to the history list instead. `-a' means" +msgstr "" + +#: builtins.c:627 +msgid "to append history lines from this session to the history file." +msgstr "" + +#: builtins.c:628 +msgid "Argument `-n' means to read all history lines not already read" +msgstr "" + +#: builtins.c:629 +msgid "from the history file and append them to the history list." +msgstr "" + +#: builtins.c:631 +msgid "If FILENAME is given, then that is used as the history file else" +msgstr "" + +#: builtins.c:632 +msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +msgstr "" + +#: builtins.c:633 +msgid "If the -s option is supplied, the non-option ARGs are appended to" +msgstr "" + +#: builtins.c:634 +msgid "the history list as a single entry. The -p option means to perform" +msgstr "" + +#: builtins.c:635 +msgid "history expansion on each ARG and display the result, without storing" +msgstr "" + +#: builtins.c:636 +msgid "anything in the history list." +msgstr "" + +#: builtins.c:638 +msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used" +msgstr "" + +#: builtins.c:639 +msgid "as a format string for strftime(3) to print the time stamp associated" +msgstr "" + +#: builtins.c:640 +msgid "" +"with each displayed history entry. No time stamps are printed otherwise." +msgstr "" + +#: builtins.c:648 +msgid "Lists the active jobs. The -l option lists process id's in addition" +msgstr "" + +#: builtins.c:649 +msgid "to the normal information; the -p option lists process id's only." +msgstr "" + +#: builtins.c:650 +msgid "If -n is given, only processes that have changed status since the last" +msgstr "" + +#: builtins.c:651 +msgid "notification are printed. JOBSPEC restricts output to that job. The" +msgstr "" + +#: builtins.c:652 +msgid "-r and -s options restrict output to running and stopped jobs only," +msgstr "" + +#: builtins.c:653 +msgid "respectively. Without options, the status of all active jobs is" +msgstr "" + +#: builtins.c:654 +msgid "printed. If -x is given, COMMAND is run after all job specifications" +msgstr "" + +#: builtins.c:655 +msgid "" +"that appear in ARGS have been replaced with the process ID of that job's" +msgstr "" + +#: builtins.c:656 +msgid "process group leader." +msgstr "" + +#: builtins.c:664 +msgid "" +"By default, removes each JOBSPEC argument from the table of active jobs." +msgstr "" + +#: builtins.c:665 +msgid "" +"If the -h option is given, the job is not removed from the table, but is" +msgstr "" + +#: builtins.c:666 +msgid "marked so that SIGHUP is not sent to the job if the shell receives a" +msgstr "" + +#: builtins.c:667 +msgid "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" +msgstr "" + +#: builtins.c:668 +msgid "" +"jobs from the job table; the -r option means to remove only running jobs." +msgstr "" + +#: builtins.c:675 +msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +msgstr "" + +#: builtins.c:676 +msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +msgstr "" + +#: builtins.c:677 +msgid "lists the signal names; if arguments follow `-l' they are assumed to" +msgstr "" + +#: builtins.c:678 +msgid "be signal numbers for which names should be listed. Kill is a shell" +msgstr "" + +#: builtins.c:679 +msgid "builtin for two reasons: it allows job IDs to be used instead of" +msgstr "" + +#: builtins.c:680 +msgid "process IDs, and, if you have reached the limit on processes that" +msgstr "" + +#: builtins.c:681 +msgid "you can create, you don't have to start a process to kill another one." +msgstr "" + +#: builtins.c:687 +msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +msgstr "" + +#: builtins.c:688 +msgid "is done in fixed-width integers with no check for overflow, though" +msgstr "" + +#: builtins.c:689 +msgid "division by 0 is trapped and flagged as an error. The following" +msgstr "" + +#: builtins.c:690 +msgid "list of operators is grouped into levels of equal-precedence operators." +msgstr "" + +#: builtins.c:691 +msgid "The levels are listed in order of decreasing precedence." +msgstr "" + +#: builtins.c:693 +msgid "\tid++, id--\tvariable post-increment, post-decrement" +msgstr "" + +#: builtins.c:694 +msgid "\t++id, --id\tvariable pre-increment, pre-decrement" +msgstr "" + +#: builtins.c:695 +msgid "\t-, +\t\tunary minus, plus" +msgstr "" + +#: builtins.c:696 +msgid "\t!, ~\t\tlogical and bitwise negation" +msgstr "" + +#: builtins.c:697 +msgid "\t**\t\texponentiation" +msgstr "" + +#: builtins.c:698 +msgid "\t*, /, %\t\tmultiplication, division, remainder" +msgstr "" + +#: builtins.c:699 +msgid "\t+, -\t\taddition, subtraction" +msgstr "" + +#: builtins.c:700 +msgid "\t<<, >>\t\tleft and right bitwise shifts" +msgstr "" + +#: builtins.c:701 +msgid "\t<=, >=, <, >\tcomparison" +msgstr "" + +#: builtins.c:702 +msgid "\t==, !=\t\tequality, inequality" +msgstr "" + +#: builtins.c:703 +msgid "\t&\t\tbitwise AND" +msgstr "" + +#: builtins.c:704 +msgid "\t^\t\tbitwise XOR" +msgstr "" + +#: builtins.c:705 +msgid "\t|\t\tbitwise OR" +msgstr "" + +#: builtins.c:706 +msgid "\t&&\t\tlogical AND" +msgstr "" + +#: builtins.c:707 +msgid "\t||\t\tlogical OR" +msgstr "" + +#: builtins.c:708 +msgid "\texpr ? expr : expr" +msgstr "" + +#: builtins.c:709 +msgid "\t\t\tconditional operator" +msgstr "" + +#: builtins.c:710 +msgid "\t=, *=, /=, %=," +msgstr "" + +#: builtins.c:711 +msgid "\t+=, -=, <<=, >>=," +msgstr "" + +#: builtins.c:712 +msgid "\t&=, ^=, |=\tassignment" +msgstr "" + +#: builtins.c:714 +msgid "Shell variables are allowed as operands. The name of the variable" +msgstr "" + +#: builtins.c:715 +msgid "is replaced by its value (coerced to a fixed-width integer) within" +msgstr "" + +#: builtins.c:716 +msgid "an expression. The variable need not have its integer attribute" +msgstr "" + +#: builtins.c:717 +msgid "turned on to be used in an expression." +msgstr "" + +#: builtins.c:719 +msgid "Operators are evaluated in order of precedence. Sub-expressions in" +msgstr "" + +#: builtins.c:720 +msgid "parentheses are evaluated first and may override the precedence" +msgstr "" + +#: builtins.c:721 +msgid "rules above." +msgstr "" + +#: builtins.c:723 +msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +msgstr "" + +#: builtins.c:724 +msgid "otherwise." +msgstr "" + +#: builtins.c:730 +msgid "" +"One line is read from the standard input, or from file descriptor FD if the" +msgstr "" + +#: builtins.c:731 +msgid "" +"-u option is supplied, and the first word is assigned to the first NAME," +msgstr "" + +#: builtins.c:732 +msgid "" +"the second word to the second NAME, and so on, with leftover words assigned" +msgstr "" + +#: builtins.c:733 +msgid "" +"to the last NAME. Only the characters found in $IFS are recognized as word" +msgstr "" + +#: builtins.c:734 +msgid "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" +msgstr "" + +#: builtins.c:735 +msgid "variable. If the -r option is given, this signifies `raw' input, and" +msgstr "" + +#: builtins.c:736 +msgid "backslash escaping is disabled. The -d option causes read to continue" +msgstr "" + +#: builtins.c:737 +msgid "" +"until the first character of DELIM is read, rather than newline. If the -p" +msgstr "" + +#: builtins.c:738 +msgid "" +"option is supplied, the string PROMPT is output without a trailing newline" +msgstr "" + +#: builtins.c:739 +msgid "" +"before attempting to read. If -a is supplied, the words read are assigned" +msgstr "" + +#: builtins.c:740 +msgid "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" +msgstr "" + +#: builtins.c:741 +msgid "" +"the shell is interactive, readline is used to obtain the line. If -n is" +msgstr "" + +#: builtins.c:742 +msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS" +msgstr "" + +#: builtins.c:743 +msgid "characters have been read. The -s option causes input coming from a" +msgstr "" + +#: builtins.c:744 +msgid "terminal to not be echoed." +msgstr "" + +#: builtins.c:746 +msgid "" +"The -t option causes read to time out and return failure if a complete line" +msgstr "" + +#: builtins.c:747 +msgid "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," +msgstr "" + +#: builtins.c:748 +msgid "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" +msgstr "" + +#: builtins.c:749 +msgid "" +"is encountered, read times out, or an invalid file descriptor is supplied as" +msgstr "" + +#: builtins.c:750 +msgid "the argument to -u." +msgstr "" + +#: builtins.c:756 +msgid "Causes a function to exit with the return value specified by N. If N" +msgstr "" + +#: builtins.c:757 +msgid "is omitted, the return status is that of the last command." +msgstr "" + +#: builtins.c:763 +msgid " -a Mark variables which are modified or created for export." +msgstr "" + +#: builtins.c:764 +msgid " -b Notify of job termination immediately." +msgstr "" + +#: builtins.c:765 +msgid " -e Exit immediately if a command exits with a non-zero status." +msgstr "" + +#: builtins.c:766 +msgid " -f Disable file name generation (globbing)." +msgstr "" + +#: builtins.c:767 +msgid " -h Remember the location of commands as they are looked up." +msgstr "" + +#: builtins.c:768 +msgid " -k All assignment arguments are placed in the environment for a" +msgstr "" + +#: builtins.c:769 +msgid " command, not just those that precede the command name." +msgstr "" + +#: builtins.c:770 +msgid " -m Job control is enabled." +msgstr "" + +#: builtins.c:771 +msgid " -n Read commands but do not execute them." +msgstr "" + +#: builtins.c:772 +msgid " -o option-name" +msgstr "" + +#: builtins.c:773 +msgid " Set the variable corresponding to option-name:" +msgstr "" + +#: builtins.c:774 +msgid " allexport same as -a" +msgstr "" + +#: builtins.c:775 +msgid " braceexpand same as -B" +msgstr "" + +#: builtins.c:777 +msgid " emacs use an emacs-style line editing interface" +msgstr "" + +#: builtins.c:779 +msgid " errexit same as -e" +msgstr "" + +#: builtins.c:780 +msgid " errtrace same as -E" +msgstr "" + +#: builtins.c:781 +msgid " functrace same as -T" +msgstr "" + +#: builtins.c:782 +msgid " hashall same as -h" +msgstr "" + +#: builtins.c:784 +msgid " histexpand same as -H" +msgstr "" + +#: builtins.c:787 +msgid " history enable command history" +msgstr "" + +#: builtins.c:789 +msgid " ignoreeof the shell will not exit upon reading EOF" +msgstr "" + +#: builtins.c:790 +msgid " interactive-comments" +msgstr "" + +#: builtins.c:791 +msgid "" +" allow comments to appear in interactive commands" +msgstr "" + +#: builtins.c:792 +msgid " keyword same as -k" +msgstr "" + +#: builtins.c:793 +msgid " monitor same as -m" +msgstr "" + +#: builtins.c:794 +msgid " noclobber same as -C" +msgstr "" + +#: builtins.c:795 +msgid " noexec same as -n" +msgstr "" + +#: builtins.c:796 +msgid " noglob same as -f" +msgstr "" + +#: builtins.c:797 +msgid " nolog currently accepted but ignored" +msgstr "" + +#: builtins.c:798 +msgid " notify same as -b" +msgstr "" + +#: builtins.c:799 +msgid " nounset same as -u" +msgstr "" + +#: builtins.c:800 +msgid " onecmd same as -t" +msgstr "" + +#: builtins.c:801 +msgid " physical same as -P" +msgstr "" + +#: builtins.c:802 +msgid "" +" pipefail the return value of a pipeline is the status of" +msgstr "" + +#: builtins.c:803 +msgid "" +" the last command to exit with a non-zero status," +msgstr "" + +#: builtins.c:804 +msgid "" +" or zero if no command exited with a non-zero status" +msgstr "" + +#: builtins.c:805 +msgid " posix change the behavior of bash where the default" +msgstr "" + +#: builtins.c:806 +msgid " operation differs from the 1003.2 standard to" +msgstr "" + +#: builtins.c:807 +msgid " match the standard" +msgstr "" + +#: builtins.c:808 +msgid " privileged same as -p" +msgstr "" + +#: builtins.c:809 +msgid " verbose same as -v" +msgstr "" + +#: builtins.c:811 +msgid " vi use a vi-style line editing interface" +msgstr "" + +#: builtins.c:813 +msgid " xtrace same as -x" +msgstr "" + +#: builtins.c:814 +msgid "" +" -p Turned on whenever the real and effective user ids do not match." +msgstr "" + +#: builtins.c:815 +msgid " Disables processing of the $ENV file and importing of shell" +msgstr "" + +#: builtins.c:816 +msgid "" +" functions. Turning this option off causes the effective uid and" +msgstr "" + +#: builtins.c:817 +msgid " gid to be set to the real uid and gid." +msgstr "" + +#: builtins.c:818 +msgid " -t Exit after reading and executing one command." +msgstr "" + +#: builtins.c:819 +msgid " -u Treat unset variables as an error when substituting." +msgstr "" + +#: builtins.c:820 +msgid " -v Print shell input lines as they are read." +msgstr "" + +#: builtins.c:821 +msgid " -x Print commands and their arguments as they are executed." +msgstr "" + +#: builtins.c:823 +msgid " -B the shell will perform brace expansion" +msgstr "" + +#: builtins.c:825 +msgid " -C If set, disallow existing regular files to be overwritten" +msgstr "" + +#: builtins.c:826 +msgid " by redirection of output." +msgstr "" + +#: builtins.c:827 +msgid " -E If set, the ERR trap is inherited by shell functions." +msgstr "" + +#: builtins.c:829 +msgid " -H Enable ! style history substitution. This flag is on" +msgstr "" + +#: builtins.c:830 +msgid " by default." +msgstr "" + +#: builtins.c:832 +msgid " -P If set, do not follow symbolic links when executing commands" +msgstr "" + +#: builtins.c:833 +msgid " such as cd which change the current directory." +msgstr "" + +#: builtins.c:834 +msgid " -T If set, the DEBUG trap is inherited by shell functions." +msgstr "" + +#: builtins.c:836 +msgid "Using + rather than - causes these flags to be turned off. The" +msgstr "" + +#: builtins.c:837 +msgid "flags can also be used upon invocation of the shell. The current" +msgstr "" + +#: builtins.c:838 +msgid "set of flags may be found in $-. The remaining n ARGs are positional" +msgstr "" + +#: builtins.c:839 +msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +msgstr "" + +#: builtins.c:840 +msgid "ARGs are given, all shell variables are printed." +msgstr "" + +#: builtins.c:846 +msgid "For each NAME, remove the corresponding variable or function. Given" +msgstr "" + +#: builtins.c:847 +msgid "the `-v', unset will only act on variables. Given the `-f' flag," +msgstr "" + +#: builtins.c:848 +msgid "unset will only act on functions. With neither flag, unset first" +msgstr "" + +#: builtins.c:849 +msgid "tries to unset a variable, and if that fails, then tries to unset a" +msgstr "" + +#: builtins.c:850 +msgid "function. Some variables cannot be unset; also see readonly." +msgstr "" + +#: builtins.c:856 +msgid "NAMEs are marked for automatic export to the environment of" +msgstr "" + +#: builtins.c:857 +msgid "subsequently executed commands. If the -f option is given," +msgstr "" + +#: builtins.c:858 +msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +msgstr "" + +#: builtins.c:859 +msgid "is given, a list of all names that are exported in this shell is" +msgstr "" + +#: builtins.c:860 +msgid "printed. An argument of `-n' says to remove the export property" +msgstr "" + +#: builtins.c:861 +msgid "from subsequent NAMEs. An argument of `--' disables further option" +msgstr "" + +#: builtins.c:862 builtins.c:874 +msgid "processing." +msgstr "" + +#: builtins.c:868 +msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +msgstr "" + +#: builtins.c:869 +msgid "not be changed by subsequent assignment. If the -f option is given," +msgstr "" + +#: builtins.c:870 +msgid "then functions corresponding to the NAMEs are so marked. If no" +msgstr "" + +#: builtins.c:871 +msgid "arguments are given, or if `-p' is given, a list of all readonly names" +msgstr "" + +#: builtins.c:872 +msgid "is printed. The `-a' option means to treat each NAME as" +msgstr "" + +#: builtins.c:873 +msgid "an array variable. An argument of `--' disables further option" +msgstr "" + +#: builtins.c:880 +msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +msgstr "" + +#: builtins.c:881 +msgid "not given, it is assumed to be 1." +msgstr "" + +#: builtins.c:887 builtins.c:896 +msgid "Read and execute commands from FILENAME and return. The pathnames" +msgstr "" + +#: builtins.c:888 builtins.c:897 +msgid "in $PATH are used to find the directory containing FILENAME. If any" +msgstr "" + +#: builtins.c:889 builtins.c:898 +msgid "ARGUMENTS are supplied, they become the positional parameters when" +msgstr "" + +#: builtins.c:890 builtins.c:899 +msgid "FILENAME is executed." +msgstr "" + +#: builtins.c:906 +msgid "Suspend the execution of this shell until it receives a SIGCONT" +msgstr "" + +#: builtins.c:907 +msgid "signal. The `-f' if specified says not to complain about this" +msgstr "" + +#: builtins.c:908 +msgid "being a login shell if it is; just suspend anyway." +msgstr "" + +#: builtins.c:915 +msgid "Exits with a status of 0 (true) or 1 (false) depending on" +msgstr "" + +#: builtins.c:916 +msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +msgstr "" + +#: builtins.c:917 +msgid "expressions are often used to examine the status of a file. There" +msgstr "" + +#: builtins.c:918 +msgid "are string operators as well, and numeric comparison operators." +msgstr "" + +#: builtins.c:920 +msgid "File operators:" +msgstr "" + +#: builtins.c:922 +msgid " -a FILE True if file exists." +msgstr "" + +#: builtins.c:923 +msgid " -b FILE True if file is block special." +msgstr "" + +#: builtins.c:924 +msgid " -c FILE True if file is character special." +msgstr "" + +#: builtins.c:925 +msgid " -d FILE True if file is a directory." +msgstr "" + +#: builtins.c:926 +msgid " -e FILE True if file exists." +msgstr "" + +#: builtins.c:927 +msgid " -f FILE True if file exists and is a regular file." +msgstr "" + +#: builtins.c:928 +msgid " -g FILE True if file is set-group-id." +msgstr "" + +#: builtins.c:929 +msgid " -h FILE True if file is a symbolic link." +msgstr "" + +#: builtins.c:930 +msgid " -L FILE True if file is a symbolic link." +msgstr "" + +#: builtins.c:931 +msgid " -k FILE True if file has its `sticky' bit set." +msgstr "" + +#: builtins.c:932 +msgid " -p FILE True if file is a named pipe." +msgstr "" + +#: builtins.c:933 +msgid " -r FILE True if file is readable by you." +msgstr "" + +#: builtins.c:934 +msgid " -s FILE True if file exists and is not empty." +msgstr "" + +#: builtins.c:935 +msgid " -S FILE True if file is a socket." +msgstr "" + +#: builtins.c:936 +msgid " -t FD True if FD is opened on a terminal." +msgstr "" + +#: builtins.c:937 +msgid " -u FILE True if the file is set-user-id." +msgstr "" + +#: builtins.c:938 +msgid " -w FILE True if the file is writable by you." +msgstr "" + +#: builtins.c:939 +msgid " -x FILE True if the file is executable by you." +msgstr "" + +#: builtins.c:940 +msgid " -O FILE True if the file is effectively owned by you." +msgstr "" + +#: builtins.c:941 +msgid " -G FILE True if the file is effectively owned by your group." +msgstr "" + +#: builtins.c:942 +msgid "" +" -N FILE True if the file has been modified since it was last read." +msgstr "" + +#: builtins.c:944 +msgid " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" +msgstr "" + +#: builtins.c:945 +msgid " modification date)." +msgstr "" + +#: builtins.c:947 +msgid " FILE1 -ot FILE2 True if file1 is older than file2." +msgstr "" + +#: builtins.c:949 +msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +msgstr "" + +#: builtins.c:951 +msgid "String operators:" +msgstr "" + +#: builtins.c:953 +msgid " -z STRING True if string is empty." +msgstr "" + +#: builtins.c:955 +msgid " -n STRING" +msgstr "" + +#: builtins.c:956 +msgid " STRING True if string is not empty." +msgstr "" + +#: builtins.c:958 +msgid " STRING1 = STRING2" +msgstr "" + +#: builtins.c:959 +msgid " True if the strings are equal." +msgstr "" + +#: builtins.c:960 +msgid " STRING1 != STRING2" +msgstr "" + +#: builtins.c:961 +msgid " True if the strings are not equal." +msgstr "" + +#: builtins.c:962 +msgid " STRING1 < STRING2" +msgstr "" + +#: builtins.c:963 +msgid "" +" True if STRING1 sorts before STRING2 lexicographically." +msgstr "" + +#: builtins.c:964 +msgid " STRING1 > STRING2" +msgstr "" + +#: builtins.c:965 +msgid "" +" True if STRING1 sorts after STRING2 lexicographically." +msgstr "" + +#: builtins.c:967 +msgid "Other operators:" +msgstr "" + +#: builtins.c:969 +msgid " -o OPTION True if the shell option OPTION is enabled." +msgstr "" + +#: builtins.c:970 +msgid " ! EXPR True if expr is false." +msgstr "" + +#: builtins.c:971 +msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +msgstr "" + +#: builtins.c:972 +msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +msgstr "" + +#: builtins.c:974 +msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +msgstr "" + +#: builtins.c:975 +msgid " -lt, -le, -gt, or -ge." +msgstr "" + +#: builtins.c:977 +msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +msgstr "" + +#: builtins.c:978 +msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +msgstr "" + +#: builtins.c:979 +msgid "than ARG2." +msgstr "" + +#: builtins.c:985 +msgid "This is a synonym for the \"test\" builtin, but the last" +msgstr "" + +#: builtins.c:986 +msgid "argument must be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:992 +msgid "Print the accumulated user and system times for processes run from" +msgstr "" + +#: builtins.c:993 +msgid "the shell." +msgstr "" + +#: builtins.c:999 +msgid "The command ARG is to be read and executed when the shell receives" +msgstr "" + +#: builtins.c:1000 +msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +msgstr "" + +#: builtins.c:1001 +msgid "reset to their original values. If ARG is the null string each" +msgstr "" + +#: builtins.c:1002 +msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +msgstr "" + +#: builtins.c:1003 +msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +msgstr "" + +#: builtins.c:1004 +msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" +msgstr "" + +#: builtins.c:1005 +msgid "command. If ARG is `-p' then the trap commands associated with" +msgstr "" + +#: builtins.c:1006 +msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +msgstr "" + +#: builtins.c:1007 +msgid "only `-p' is given, trap prints the list of commands associated with" +msgstr "" + +#: builtins.c:1008 +msgid "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " +msgstr "" + +#: builtins.c:1009 +msgid "or a signal number. `trap -l' prints a list of signal names and their" +msgstr "" + +#: builtins.c:1010 +msgid "corresponding numbers. Note that a signal can be sent to the shell" +msgstr "" + +#: builtins.c:1011 +msgid "with \"kill -signal $$\"." +msgstr "" + +#: builtins.c:1017 +msgid "For each NAME, indicate how it would be interpreted if used as a" +msgstr "" + +#: builtins.c:1018 +msgid "command name." +msgstr "" + +#: builtins.c:1020 +msgid "If the -t option is used, `type' outputs a single word which is one of" +msgstr "" + +#: builtins.c:1021 +msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +msgstr "" + +#: builtins.c:1022 +msgid "alias, shell reserved word, shell function, shell builtin, disk file," +msgstr "" + +#: builtins.c:1023 +msgid "or unfound, respectively." +msgstr "" + +#: builtins.c:1025 +msgid "If the -p flag is used, `type' either returns the name of the disk" +msgstr "" + +#: builtins.c:1026 +msgid "file that would be executed, or nothing if `type -t NAME' would not" +msgstr "" + +#: builtins.c:1027 +msgid "return `file'." +msgstr "" + +#: builtins.c:1029 +msgid "If the -a flag is used, `type' displays all of the places that contain" +msgstr "" + +#: builtins.c:1030 +msgid "an executable named `file'. This includes aliases, builtins, and" +msgstr "" + +#: builtins.c:1031 +msgid "functions, if and only if the -p flag is not also used." +msgstr "" + +#: builtins.c:1033 +msgid "The -f flag suppresses shell function lookup." +msgstr "" + +#: builtins.c:1035 +msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," +msgstr "" + +#: builtins.c:1036 +msgid "builtin, or function, and returns the name of the disk file that would" +msgstr "" + +#: builtins.c:1037 +msgid "be executed." +msgstr "" + +#: builtins.c:1044 +msgid "Ulimit provides control over the resources available to processes" +msgstr "" + +#: builtins.c:1045 +msgid "started by the shell, on systems that allow such control. If an" +msgstr "" + +#: builtins.c:1046 +msgid "option is given, it is interpreted as follows:" +msgstr "" + +#: builtins.c:1048 +msgid " -S\tuse the `soft' resource limit" +msgstr "" + +#: builtins.c:1049 +msgid " -H\tuse the `hard' resource limit" +msgstr "" + +#: builtins.c:1050 +msgid " -a\tall current limits are reported" +msgstr "" + +#: builtins.c:1051 +msgid " -c\tthe maximum size of core files created" +msgstr "" + +#: builtins.c:1052 +msgid " -d\tthe maximum size of a process's data segment" +msgstr "" + +#: builtins.c:1053 +msgid " -f\tthe maximum size of files created by the shell" +msgstr "" + +#: builtins.c:1054 +msgid " -l\tthe maximum size a process may lock into memory" +msgstr "" + +#: builtins.c:1055 +msgid " -m\tthe maximum resident set size" +msgstr "" + +#: builtins.c:1056 +msgid " -n\tthe maximum number of open file descriptors" +msgstr "" + +#: builtins.c:1057 +msgid " -p\tthe pipe buffer size" +msgstr "" + +#: builtins.c:1058 +msgid " -s\tthe maximum stack size" +msgstr "" + +#: builtins.c:1059 +msgid " -t\tthe maximum amount of cpu time in seconds" +msgstr "" + +#: builtins.c:1060 +msgid " -u\tthe maximum number of user processes" +msgstr "" + +#: builtins.c:1061 +msgid " -v\tthe size of virtual memory" +msgstr "" + +#: builtins.c:1063 +msgid "If LIMIT is given, it is the new value of the specified resource;" +msgstr "" + +#: builtins.c:1064 +msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" +msgstr "" + +#: builtins.c:1065 +msgid "" +"the current soft limit, the current hard limit, and no limit, respectively." +msgstr "" + +#: builtins.c:1066 +msgid "Otherwise, the current value of the specified resource is printed." +msgstr "" + +#: builtins.c:1067 +msgid "If no option is given, then -f is assumed. Values are in 1024-byte" +msgstr "" + +#: builtins.c:1068 +msgid "increments, except for -t, which is in seconds, -p, which is in" +msgstr "" + +#: builtins.c:1069 +msgid "increments of 512 bytes, and -u, which is an unscaled number of" +msgstr "" + +#: builtins.c:1070 +msgid "processes." +msgstr "" + +#: builtins.c:1077 +msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +msgstr "" + +#: builtins.c:1078 +msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +msgstr "" + +#: builtins.c:1079 +msgid "option makes the output symbolic; otherwise an octal number is output." +msgstr "" + +#: builtins.c:1080 +msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" +msgstr "" + +#: builtins.c:1081 +msgid "that may be used as input. If MODE begins with a digit, it is" +msgstr "" + +#: builtins.c:1082 +msgid "interpreted as an octal number, otherwise it is a symbolic mode string" +msgstr "" + +#: builtins.c:1083 +msgid "like that accepted by chmod(1)." +msgstr "" + +#: builtins.c:1090 builtins.c:1102 +msgid "Wait for the specified process and report its termination status. If" +msgstr "" + +#: builtins.c:1091 builtins.c:1103 +msgid "N is not given, all currently active child processes are waited for," +msgstr "" + +#: builtins.c:1092 +msgid "and the return code is zero. N may be a process ID or a job" +msgstr "" + +#: builtins.c:1093 +msgid "specification; if a job spec is given, all processes in the job's" +msgstr "" + +#: builtins.c:1094 +msgid "pipeline are waited for." +msgstr "" + +#: builtins.c:1104 +msgid "and the return code is zero. N is a process ID; if it is not given," +msgstr "" + +#: builtins.c:1105 +msgid "all child processes of the shell are waited for." +msgstr "" + +#: builtins.c:1112 +msgid "The `for' loop executes a sequence of commands for each member in a" +msgstr "" + +#: builtins.c:1113 +msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +msgstr "" + +#: builtins.c:1114 +msgid "assumed. For each element in WORDS, NAME is set to that element, and" +msgstr "" + +#: builtins.c:1115 +msgid "the COMMANDS are executed." +msgstr "" + +#: builtins.c:1121 +msgid "Equivalent to" +msgstr "" + +#: builtins.c:1122 +msgid "\t(( EXP1 ))" +msgstr "" + +#: builtins.c:1123 +msgid "\twhile (( EXP2 )); do" +msgstr "" + +#: builtins.c:1124 +msgid "\t\tCOMMANDS" +msgstr "" + +#: builtins.c:1125 +msgid "\t\t(( EXP3 ))" +msgstr "" + +#: builtins.c:1126 +msgid "\tdone" +msgstr "" + +#: builtins.c:1127 +msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" +msgstr "" + +#: builtins.c:1128 +msgid "omitted, it behaves as if it evaluates to 1." +msgstr "" + +#: builtins.c:1134 +msgid "The WORDS are expanded, generating a list of words. The" +msgstr "" + +#: builtins.c:1135 +msgid "set of expanded words is printed on the standard error, each" +msgstr "" + +#: builtins.c:1136 +msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +msgstr "" + +#: builtins.c:1137 +msgid "is assumed. The PS3 prompt is then displayed and a line read" +msgstr "" + +#: builtins.c:1138 +msgid "from the standard input. If the line consists of the number" +msgstr "" + +#: builtins.c:1139 +msgid "corresponding to one of the displayed words, then NAME is set" +msgstr "" + +#: builtins.c:1140 +msgid "to that word. If the line is empty, WORDS and the prompt are" +msgstr "" + +#: builtins.c:1141 +msgid "redisplayed. If EOF is read, the command completes. Any other" +msgstr "" + +#: builtins.c:1142 +msgid "value read causes NAME to be set to null. The line read is saved" +msgstr "" + +#: builtins.c:1143 +msgid "in the variable REPLY. COMMANDS are executed after each selection" +msgstr "" + +#: builtins.c:1144 +msgid "until a break command is executed." +msgstr "" + +#: builtins.c:1150 +msgid "Execute PIPELINE and print a summary of the real time, user CPU time," +msgstr "" + +#: builtins.c:1151 +msgid "and system CPU time spent executing PIPELINE when it terminates." +msgstr "" + +#: builtins.c:1152 +msgid "The return status is the return status of PIPELINE. The `-p' option" +msgstr "" + +#: builtins.c:1153 +msgid "prints the timing summary in a slightly different format. This uses" +msgstr "" + +#: builtins.c:1154 +msgid "the value of the TIMEFORMAT variable as the output format." +msgstr "" + +#: builtins.c:1160 +msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +msgstr "" + +#: builtins.c:1161 +msgid "`|' is used to separate multiple patterns." +msgstr "" + +#: builtins.c:1167 +msgid "" +"The if COMMANDS are executed. If the exit status is zero, then the then" +msgstr "" + +#: builtins.c:1168 +msgid "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +msgstr "" + +#: builtins.c:1169 +msgid "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" +msgstr "" + +#: builtins.c:1170 +msgid "" +"are executed and the if command completes. Otherwise, the else COMMANDS" +msgstr "" + +#: builtins.c:1171 +msgid "" +"are executed, if present. The exit status is the exit status of the last" +msgstr "" + +#: builtins.c:1172 +msgid "command executed, or zero if no condition tested true." +msgstr "" + +#: builtins.c:1178 builtins.c:1185 +msgid "Expand and execute COMMANDS as long as the final command in the" +msgstr "" + +#: builtins.c:1179 +msgid "`while' COMMANDS has an exit status of zero." +msgstr "" + +#: builtins.c:1186 +msgid "`until' COMMANDS has an exit status which is not zero." +msgstr "" + +#: builtins.c:1192 +msgid "Create a simple command invoked by NAME which runs COMMANDS." +msgstr "" + +#: builtins.c:1193 +msgid "Arguments on the command line along with NAME are passed to the" +msgstr "" + +#: builtins.c:1194 +msgid "function as $0 .. $n." +msgstr "" + +#: builtins.c:1200 +msgid "Run a set of commands in a group. This is one way to redirect an" +msgstr "" + +#: builtins.c:1201 +msgid "entire set of commands." +msgstr "" + +#: builtins.c:1207 +msgid "This is similar to the `fg' command. Resume a stopped or background" +msgstr "" + +#: builtins.c:1208 +msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +msgstr "" + +#: builtins.c:1209 +msgid "WORD, then the job whose name begins with WORD is used. Following the" +msgstr "" + +#: builtins.c:1210 +msgid "job specification with a `&' places the job in the background." +msgstr "" + +#: builtins.c:1216 +msgid "The EXPRESSION is evaluated according to the rules for arithmetic" +msgstr "" + +#: builtins.c:1217 +msgid "evaluation. Equivalent to \"let EXPRESSION\"." +msgstr "" + +#: builtins.c:1223 +msgid "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" +msgstr "" + +#: builtins.c:1224 +msgid "" +"expression EXPRESSION. Expressions are composed of the same primaries used" +msgstr "" + +#: builtins.c:1225 +msgid "" +"by the `test' builtin, and may be combined using the following operators" +msgstr "" + +#: builtins.c:1227 +msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION" +msgstr "" + +#: builtins.c:1228 +msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" +msgstr "" + +#: builtins.c:1229 +msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" +msgstr "" + +#: builtins.c:1230 +msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" +msgstr "" + +#: builtins.c:1232 +msgid "" +"When the `==' and `!=' operators are used, the string to the right of the" +msgstr "" + +#: builtins.c:1233 +msgid "operator is used as a pattern and pattern matching is performed. The" +msgstr "" + +#: builtins.c:1234 +msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" +msgstr "" + +#: builtins.c:1235 +msgid "determine the expression's value." +msgstr "" + +#: builtins.c:1241 +msgid "BASH_VERSION Version information for this Bash." +msgstr "" + +#: builtins.c:1242 +msgid "CDPATH A colon separated list of directories to search" +msgstr "" + +#: builtins.c:1243 +msgid "\t\twhen the argument to `cd' is not found in the current" +msgstr "" + +#: builtins.c:1244 +msgid "\t\tdirectory." +msgstr "" + +#: builtins.c:1245 +msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" +msgstr "" + +#: builtins.c:1246 +msgid "\t\tbe ignored by pathname expansion." +msgstr "" + +#: builtins.c:1248 +msgid "" +"HISTFILE The name of the file where your command history is stored." +msgstr "" + +#: builtins.c:1249 +msgid "HISTFILESIZE The maximum number of lines this file can contain." +msgstr "" + +#: builtins.c:1250 +msgid "HISTSIZE The maximum number of history lines that a running" +msgstr "" + +#: builtins.c:1251 +msgid "\t\tshell can access." +msgstr "" + +#: builtins.c:1253 +msgid "HOME The complete pathname to your login directory." +msgstr "" + +#: builtins.c:1254 +msgid "HOSTNAME\tThe name of the current host." +msgstr "" + +#: builtins.c:1255 +msgid "HOSTTYPE The type of CPU this version of Bash is running under." +msgstr "" + +#: builtins.c:1256 +msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +msgstr "" + +#: builtins.c:1257 +msgid "\t\tcharacter as the sole input. If set, then the value" +msgstr "" + +#: builtins.c:1258 +msgid "\t\tof it is the number of EOF characters that can be seen" +msgstr "" + +#: builtins.c:1259 +msgid "\t\tin a row on an empty line before the shell will exit" +msgstr "" + +#: builtins.c:1260 +msgid "\t\t(default 10). When unset, EOF signifies the end of input." +msgstr "" + +#: builtins.c:1261 +msgid "MACHTYPE\tA string describing the current system Bash is running on." +msgstr "" + +#: builtins.c:1262 +msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +msgstr "" + +#: builtins.c:1263 +msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +msgstr "" + +#: builtins.c:1264 +msgid "\t\tfor new mail." +msgstr "" + +#: builtins.c:1265 +msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +msgstr "" + +#: builtins.c:1266 +msgid "PATH A colon-separated list of directories to search when" +msgstr "" + +#: builtins.c:1267 +msgid "\t\tlooking for commands." +msgstr "" + +#: builtins.c:1268 +msgid "PROMPT_COMMAND A command to be executed before the printing of each" +msgstr "" + +#: builtins.c:1269 +msgid "\t\tprimary prompt." +msgstr "" + +#: builtins.c:1270 +msgid "PS1 The primary prompt string." +msgstr "" + +#: builtins.c:1271 +msgid "PS2 The secondary prompt string." +msgstr "" + +#: builtins.c:1272 +msgid "PWD\t\tThe full pathname of the current directory." +msgstr "" + +#: builtins.c:1273 +msgid "SHELLOPTS\tA colon-separated list of enabled shell options." +msgstr "" + +#: builtins.c:1274 +msgid "TERM The name of the current terminal type." +msgstr "" + +#: builtins.c:1275 +msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" +msgstr "" + +#: builtins.c:1276 +msgid "\t\t`time' reserved word." +msgstr "" + +#: builtins.c:1277 +msgid "auto_resume Non-null means a command word appearing on a line by" +msgstr "" + +#: builtins.c:1278 +msgid "\t\titself is first looked for in the list of currently" +msgstr "" + +#: builtins.c:1279 +msgid "\t\tstopped jobs. If found there, that job is foregrounded." +msgstr "" + +#: builtins.c:1280 +msgid "\t\tA value of `exact' means that the command word must" +msgstr "" + +#: builtins.c:1281 +msgid "\t\texactly match a command in the list of stopped jobs. A" +msgstr "" + +#: builtins.c:1282 +msgid "\t\tvalue of `substring' means that the command word must" +msgstr "" + +#: builtins.c:1283 +msgid "\t\tmatch a substring of the job. Any other value means that" +msgstr "" + +#: builtins.c:1284 +msgid "\t\tthe command must be a prefix of a stopped job." +msgstr "" + +#: builtins.c:1287 +msgid "histchars Characters controlling history expansion and quick" +msgstr "" + +#: builtins.c:1288 +msgid "\t\tsubstitution. The first character is the history" +msgstr "" + +#: builtins.c:1289 +msgid "\t\tsubstitution character, usually `!'. The second is" +msgstr "" + +#: builtins.c:1290 +msgid "\t\tthe `quick substitution' character, usually `^'. The" +msgstr "" + +#: builtins.c:1291 +msgid "\t\tthird is the `history comment' character, usually `#'." +msgstr "" + +#: builtins.c:1293 +msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" +msgstr "" + +#: builtins.c:1294 +msgid "\t\tcommands should be saved on the history list." +msgstr "" + +#: builtins.c:1306 +msgid "+N\tRotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins.c:1307 +msgid "\tfrom the left of the list shown by `dirs', starting with" +msgstr "" + +#: builtins.c:1308 builtins.c:1312 +msgid "\tzero) is at the top." +msgstr "" + +#: builtins.c:1310 +msgid "-N\tRotates the stack so that the Nth directory (counting" +msgstr "" + +#: builtins.c:1311 +msgid "\tfrom the right of the list shown by `dirs', starting with" +msgstr "" + +#: builtins.c:1314 +msgid "-n\tsuppress the normal change of directory when adding directories" +msgstr "" + +#: builtins.c:1315 +msgid "\tto the stack, so only the stack is manipulated." +msgstr "" + +#: builtins.c:1317 +msgid "dir\tadds DIR to the directory stack at the top, making it the" +msgstr "" + +#: builtins.c:1318 +msgid "\tnew current working directory." +msgstr "" + +#: builtins.c:1332 +msgid "+N\tremoves the Nth entry counting from the left of the list" +msgstr "" + +#: builtins.c:1333 +msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" + +#: builtins.c:1334 +msgid "\tremoves the first directory, `popd +1' the second." +msgstr "" + +#: builtins.c:1336 +msgid "-N\tremoves the Nth entry counting from the right of the list" +msgstr "" + +#: builtins.c:1337 +msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" + +#: builtins.c:1338 +msgid "\tremoves the last directory, `popd -1' the next to last." +msgstr "" + +#: builtins.c:1340 +msgid "-n\tsuppress the normal change of directory when removing directories" +msgstr "" + +#: builtins.c:1341 +msgid "\tfrom the stack, so only the stack is manipulated." +msgstr "" + +#: builtins.c:1363 +msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +msgstr "" + +#: builtins.c:1364 builtins.c:1367 +msgid "\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins.c:1366 +msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +msgstr "" + +#: builtins.c:1374 +msgid "Toggle the values of variables controlling optional behavior." +msgstr "" + +#: builtins.c:1375 +msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +msgstr "" + +#: builtins.c:1376 +msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +msgstr "" + +#: builtins.c:1377 +msgid "status indicates whether each OPTNAME is set or unset. The -o" +msgstr "" + +#: builtins.c:1378 +msgid "option restricts the OPTNAMEs to those defined for use with" +msgstr "" + +#: builtins.c:1379 +msgid "`set -o'. With no options, or with the -p option, a list of all" +msgstr "" + +#: builtins.c:1380 +msgid "settable options is displayed, with an indication of whether or" +msgstr "" + +#: builtins.c:1381 +msgid "not each is set." +msgstr "" + +#: builtins.c:1387 +msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" +msgstr "" + +#: builtins.c:1388 +msgid "is a character string which contains three types of objects: plain" +msgstr "" + +#: builtins.c:1389 +msgid "" +"characters, which are simply copied to standard output, character escape" +msgstr "" + +#: builtins.c:1390 +msgid "sequences which are converted and copied to the standard output, and" +msgstr "" + +#: builtins.c:1391 +msgid "" +"format specifications, each of which causes printing of the next successive" +msgstr "" + +#: builtins.c:1392 +msgid "argument. In addition to the standard printf(1) formats, %b means to" +msgstr "" + +#: builtins.c:1393 +msgid "expand backslash escape sequences in the corresponding argument, and %q" +msgstr "" + +#: builtins.c:1394 +msgid "means to quote the argument in a way that can be reused as shell input." +msgstr "" + +#: builtins.c:1401 +msgid "For each NAME, specify how arguments are to be completed." +msgstr "" + +#: builtins.c:1402 +msgid "If the -p option is supplied, or if no options are supplied, existing" +msgstr "" + +#: builtins.c:1403 +msgid "completion specifications are printed in a way that allows them to be" +msgstr "" + +#: builtins.c:1404 +msgid "reused as input. The -r option removes a completion specification for" +msgstr "" + +#: builtins.c:1405 +msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." +msgstr "" + +#: builtins.c:1413 +msgid "Display the possible completions depending on the options. Intended" +msgstr "" + +#: builtins.c:1414 +msgid "" +"to be used from within a shell function generating possible completions." +msgstr "" + +#: builtins.c:1415 +msgid "If the optional WORD argument is supplied, matches against WORD are" +msgstr "" + +#: builtins.c:1416 +msgid "generated." +msgstr "" diff --git a/po.orig/boldquot.sed b/po.orig/boldquot.sed new file mode 100644 index 000000000..4b937aa51 --- /dev/null +++ b/po.orig/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/po.orig/builtins.pot b/po.orig/builtins.pot new file mode 100644 index 000000000..e30179c3a --- /dev/null +++ b/po.orig/builtins.pot @@ -0,0 +1,2845 @@ +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:244 +msgid "`alias' with no arguments or with the -p option prints the list" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:245 +msgid "of aliases in the form alias NAME=VALUE on standard output." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:246 +msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:247 +msgid "A trailing space in VALUE causes the next word to be checked for" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:248 +msgid "alias substitution when the alias is expanded. Alias returns" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:249 +msgid "true unless a NAME is given for which no alias has been defined." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:257 +msgid "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:258 +msgid "then remove all alias definitions." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:266 +msgid "Bind a key sequence to a Readline function or a macro, or set" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:267 +msgid "a Readline variable. The non-option argument syntax is equivalent" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:268 +msgid "to that found in ~/.inputrc, but must be passed as a single argument:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:269 +msgid "bind '\"\\C-x\\C-r\": re-read-init-file'." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:270 +msgid "bind accepts the following options:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:271 +msgid "" +" -m keymap Use `keymap' as the keymap for the duration of this" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:272 +msgid " command. Acceptable keymap names are emacs," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:273 +msgid "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:274 +msgid " vi-command, and vi-insert." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:275 +msgid " -l List names of functions." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:276 +msgid " -P List function names and bindings." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:277 +msgid " -p List functions and bindings in a form that can be" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:278 +msgid " reused as input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:279 +msgid " -r keyseq Remove the binding for KEYSEQ." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:280 +msgid " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:281 +msgid "\t\t\t\tKEYSEQ is entered." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:282 +msgid " -f filename Read key bindings from FILENAME." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:283 +msgid " -q function-name Query about which keys invoke the named function." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:284 +msgid "" +" -u function-name Unbind all keys which are bound to the named function." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:285 +msgid " -V List variable names and values" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:286 +msgid " -v List variable names and values in a form that can" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:287 +msgid " be reused as input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:288 +msgid "" +" -S List key sequences that invoke macros and their values" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:289 +msgid "" +" -s List key sequences that invoke macros and their values" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:290 +msgid " in a form that can be reused as input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:297 +msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:298 +msgid "break N levels." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:304 +msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:305 +msgid "If N is specified, resume at the N-th enclosing loop." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:311 +msgid "Run a shell builtin. This is useful when you wish to rename a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:312 +msgid "shell builtin to be a function, but need the functionality of the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:313 +msgid "builtin within the function itself." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:320 +msgid "Returns the context of the current subroutine call." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:321 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:325 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:390 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:392 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:401 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:404 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:408 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:445 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:487 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:491 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:498 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:509 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:513 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:552 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:555 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:559 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:562 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:630 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:637 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:692 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:713 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:718 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:722 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:745 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:835 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:919 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:921 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:943 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:946 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:948 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:950 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:952 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:954 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:957 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:966 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:968 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:973 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:976 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1019 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1024 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1028 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1032 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1034 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1047 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1062 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1226 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1231 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1305 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1309 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1313 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1316 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1319 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1331 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1335 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1339 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1342 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1354 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1362 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1365 +msgid "" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:322 +msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:323 +msgid "returns \"$line $subroutine $filename\"; this extra information" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:324 +msgid "can be used used to provide a stack trace." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:326 +msgid "The value of EXPR indicates how many call frames to go back before the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:327 +msgid "current one; the top frame is frame 0." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:334 +msgid "Change the current directory to DIR. The variable $HOME is the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:335 +msgid "default DIR. The variable CDPATH defines the search path for" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:336 +msgid "the directory containing DIR. Alternative directory names in CDPATH" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:337 +msgid "are separated by a colon (:). A null directory name is the same as" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:338 +msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:339 +msgid "then CDPATH is not used. If the directory is not found, and the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:340 +msgid "shell option `cdable_vars' is set, then try the word as a variable" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:341 +msgid "name. If that variable has a value, then cd to the value of that" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:342 +msgid "variable. The -P option says to use the physical directory structure" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:343 +msgid "" +"instead of following symbolic links; the -L option forces symbolic links" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:344 +msgid "to be followed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:350 +msgid "Print the current working directory. With the -P option, pwd prints" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:351 +msgid "the physical directory, without any symbolic links; the -L option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:352 +msgid "makes pwd follow symbolic links." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:358 +msgid "No effect; the command does nothing. A zero exit code is returned." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:364 +msgid "Return a successful result." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:370 +msgid "Return an unsuccessful result." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:376 +msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:377 +msgid "function called `ls', and you wish to call the command `ls', you can" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:378 +msgid "say \"command ls\". If the -p option is given, a default value is used" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:379 +msgid "for PATH that is guaranteed to find all of the standard utilities. If" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:380 +msgid "the -V or -v option is given, a string is printed describing COMMAND." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:381 +msgid "The -V option produces a more verbose description." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:387 +msgid "Declare variables and/or give them attributes. If no NAMEs are" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:388 +msgid "given, then display the values of variables instead. The -p option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:389 +msgid "will display the attributes and values of each NAME." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:391 +msgid "The flags are:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:393 +msgid " -a\tto make NAMEs arrays (if supported)" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:394 +msgid " -f\tto select from among function names only" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:395 +msgid "" +" -F\tto display function names (and line number and source file name if" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:396 +msgid "\tdebugging) without definitions" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:397 +msgid " -i\tto make NAMEs have the `integer' attribute" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:398 +msgid " -r\tto make NAMEs readonly" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:399 +msgid " -t\tto make NAMEs have the `trace' attribute" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:400 +msgid " -x\tto make NAMEs export" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:402 +msgid "Variables with the integer attribute have arithmetic evaluation (see" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:403 +msgid "`let') done when the variable is assigned to." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:405 +msgid "When displaying values of variables, -f displays a function's name" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:406 +msgid "and definition. The -F option restricts the display to function" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:407 +msgid "name only." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:409 +msgid "Using `+' instead of `-' turns off the given attribute instead. When" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:410 +msgid "used in a function, makes NAMEs local, as with the `local' command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:416 +msgid "Obsolete. See `declare'." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:422 +msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:423 +msgid "can only be used within a function; it makes the variable NAME" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:424 +msgid "have a visible scope restricted to that function and its children." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:431 +msgid "Output the ARGs. If -n is specified, the trailing newline is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:432 +msgid "suppressed. If the -e option is given, interpretation of the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:433 +msgid "following backslash-escaped characters is turned on:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:434 +msgid "\t\\a\talert (bell)" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:435 +msgid "\t\\b\tbackspace" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:436 +msgid "\t\\c\tsuppress trailing newline" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:437 +msgid "\t\\E\tescape character" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:438 +msgid "\t\\f\tform feed" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:439 +msgid "\t\\n\tnew line" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:440 +msgid "\t\\r\tcarriage return" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:441 +msgid "\t\\t\thorizontal tab" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:442 +msgid "\t\\v\tvertical tab" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:443 +msgid "\t\\\\\tbackslash" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:444 +msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:446 +msgid "You can explicitly turn off the interpretation of the above characters" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:447 +msgid "with the -E option." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:455 +msgid "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:462 +msgid "Enable and disable builtin shell commands. This allows" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:463 +msgid "you to use a disk command which has the same name as a shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:464 +msgid "builtin without specifying a full pathname. If -n is used, the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:465 +msgid "NAMEs become disabled; otherwise NAMEs are enabled. For example," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:466 +msgid "to use the `test' found in $PATH instead of the shell builtin" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:467 +msgid "version, type `enable -n test'. On systems supporting dynamic" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:468 +msgid "loading, the -f option may be used to load new builtins from the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:469 +msgid "shared object FILENAME. The -d option will delete a builtin" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:470 +msgid "previously loaded with -f. If no non-option names are given, or" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:471 +msgid "the -p option is supplied, a list of builtins is printed. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:472 +msgid "-a option means to print every builtin with an indication of whether" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:473 +msgid "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:474 +msgid "" +"`special' builtins. The -n option displays a list of all disabled builtins." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:480 +msgid "Read ARGs as input to the shell and execute the resulting command(s)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:486 +msgid "Getopts is used by shell procedures to parse positional parameters." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:488 +msgid "OPTSTRING contains the option letters to be recognized; if a letter" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:489 +msgid "is followed by a colon, the option is expected to have an argument," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:490 +msgid "which should be separated from it by white space." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:492 +msgid "Each time it is invoked, getopts will place the next option in the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:493 +msgid "shell variable $name, initializing name if it does not exist, and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:494 +msgid "the index of the next argument to be processed into the shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:495 +msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:496 +msgid "a shell script is invoked. When an option requires an argument," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:497 +msgid "getopts places that argument into the shell variable OPTARG." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:499 +msgid "getopts reports errors in one of two ways. If the first character" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:500 +msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:501 +msgid "this mode, no error messages are printed. If an invalid option is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:502 +msgid "seen, getopts places the option character found into OPTARG. If a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:503 +msgid "required argument is not found, getopts places a ':' into NAME and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:504 +msgid "sets OPTARG to the option character found. If getopts is not in" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:505 +msgid "silent mode, and an invalid option is seen, getopts places '?' into" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:506 +msgid "NAME and unsets OPTARG. If a required argument is not found, a '?'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:507 +msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:508 +msgid "printed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:510 +msgid "If the shell variable OPTERR has the value 0, getopts disables the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:511 +msgid "printing of error messages, even if the first character of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:512 +msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:514 +msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:515 +msgid "more arguments are given, they are parsed instead." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:521 +msgid "Exec FILE, replacing this shell with the specified program." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:522 +msgid "If FILE is not specified, the redirections take effect in this" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:523 +msgid "shell. If the first argument is `-l', then place a dash in the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:524 +msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:525 +msgid "is supplied, FILE is executed with a null environment. The `-a'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:526 +msgid "option means to make set argv[0] of the executed process to NAME." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:527 +msgid "If the file cannot be executed and the shell is not interactive," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:528 +msgid "then the shell exits, unless the shell option `execfail' is set." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:534 +msgid "Exit the shell with a status of N. If N is omitted, the exit status" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:535 +msgid "is that of the last command executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:541 +msgid "Logout of a login shell." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:548 +msgid "" +"fc is used to list or edit and re-execute commands from the history list." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:549 +msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:550 +msgid "string, which means the most recent command beginning with that" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:551 +msgid "string." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:553 +msgid "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:554 +msgid " then vi." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:556 +msgid " -l means list lines instead of editing." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:557 +msgid " -n means no line numbers listed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:558 +msgid "" +" -r means reverse the order of the lines (making it newest listed first)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:560 +msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:561 +msgid "re-executed after the substitution OLD=NEW is performed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:563 +msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:564 +msgid "runs the last command beginning with `cc' and typing `r' re-executes" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:565 +msgid "the last command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:573 +msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:574 +msgid "JOB_SPEC is not present, the shell's notion of the current job is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:575 +msgid "used." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:583 +msgid "Place JOB_SPEC in the background, as if it had been started with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:584 +msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:585 +msgid "job is used." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:592 +msgid "For each NAME, the full pathname of the command is determined and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:593 +msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:594 +msgid "full pathname of NAME, and no path search is performed. The -r" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:595 +msgid "option causes the shell to forget all remembered locations. The -d" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:596 +msgid "option causes the shell to forget the remembered location of each NAME." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:597 +msgid "If the -t option is supplied the full pathname to which each NAME" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:598 +msgid "corresponds is printed. If multiple NAME arguments are supplied with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:599 +msgid "-t, the NAME is printed before the hashed full pathname. The -l option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:600 +msgid "causes output to be displayed in a format that may be reused as input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:601 +msgid "" +"If no arguments are given, information about remembered commands is " +"displayed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:608 +msgid "Display helpful information about builtin commands. If PATTERN is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:609 +msgid "specified, gives detailed help on all commands matching PATTERN," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:610 +msgid "otherwise a list of the builtins is printed. The -s option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:611 +msgid "restricts the output for each builtin command matching PATTERN to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:612 +msgid "a short usage synopsis." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:620 +msgid "Display the history list with line numbers. Lines listed with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:621 +msgid "with a `*' have been modified. Argument of N says to list only" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:622 +msgid "the last N lines. The `-c' option causes the history list to be" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:623 +msgid "cleared by deleting all of the entries. The `-d' option deletes" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:624 +msgid "the history entry at offset OFFSET. The `-w' option writes out the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:625 +msgid "current history to the history file; `-r' means to read the file and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:626 +msgid "append the contents to the history list instead. `-a' means" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:627 +msgid "to append history lines from this session to the history file." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:628 +msgid "Argument `-n' means to read all history lines not already read" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:629 +msgid "from the history file and append them to the history list." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:631 +msgid "If FILENAME is given, then that is used as the history file else" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:632 +msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:633 +msgid "If the -s option is supplied, the non-option ARGs are appended to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:634 +msgid "the history list as a single entry. The -p option means to perform" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:635 +msgid "history expansion on each ARG and display the result, without storing" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:636 +msgid "anything in the history list." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:638 +msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:639 +msgid "as a format string for strftime(3) to print the time stamp associated" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:640 +msgid "" +"with each displayed history entry. No time stamps are printed otherwise." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:648 +msgid "Lists the active jobs. The -l option lists process id's in addition" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:649 +msgid "to the normal information; the -p option lists process id's only." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:650 +msgid "If -n is given, only processes that have changed status since the last" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:651 +msgid "notification are printed. JOBSPEC restricts output to that job. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:652 +msgid "-r and -s options restrict output to running and stopped jobs only," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:653 +msgid "respectively. Without options, the status of all active jobs is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:654 +msgid "printed. If -x is given, COMMAND is run after all job specifications" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:655 +msgid "" +"that appear in ARGS have been replaced with the process ID of that job's" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:656 +msgid "process group leader." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:664 +msgid "" +"By default, removes each JOBSPEC argument from the table of active jobs." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:665 +msgid "" +"If the -h option is given, the job is not removed from the table, but is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:666 +msgid "marked so that SIGHUP is not sent to the job if the shell receives a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:667 +msgid "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:668 +msgid "" +"jobs from the job table; the -r option means to remove only running jobs." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:675 +msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:676 +msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:677 +msgid "lists the signal names; if arguments follow `-l' they are assumed to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:678 +msgid "be signal numbers for which names should be listed. Kill is a shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:679 +msgid "builtin for two reasons: it allows job IDs to be used instead of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:680 +msgid "process IDs, and, if you have reached the limit on processes that" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:681 +msgid "you can create, you don't have to start a process to kill another one." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:687 +msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:688 +msgid "is done in fixed-width integers with no check for overflow, though" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:689 +msgid "division by 0 is trapped and flagged as an error. The following" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:690 +msgid "list of operators is grouped into levels of equal-precedence operators." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:691 +msgid "The levels are listed in order of decreasing precedence." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:693 +msgid "\tid++, id--\tvariable post-increment, post-decrement" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:694 +msgid "\t++id, --id\tvariable pre-increment, pre-decrement" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:695 +msgid "\t-, +\t\tunary minus, plus" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:696 +msgid "\t!, ~\t\tlogical and bitwise negation" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:697 +msgid "\t**\t\texponentiation" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:698 +msgid "\t*, /, %\t\tmultiplication, division, remainder" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:699 +msgid "\t+, -\t\taddition, subtraction" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:700 +msgid "\t<<, >>\t\tleft and right bitwise shifts" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:701 +msgid "\t<=, >=, <, >\tcomparison" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:702 +msgid "\t==, !=\t\tequality, inequality" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:703 +msgid "\t&\t\tbitwise AND" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:704 +msgid "\t^\t\tbitwise XOR" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:705 +msgid "\t|\t\tbitwise OR" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:706 +msgid "\t&&\t\tlogical AND" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:707 +msgid "\t||\t\tlogical OR" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:708 +msgid "\texpr ? expr : expr" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:709 +msgid "\t\t\tconditional operator" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:710 +msgid "\t=, *=, /=, %=," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:711 +msgid "\t+=, -=, <<=, >>=," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:712 +msgid "\t&=, ^=, |=\tassignment" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:714 +msgid "Shell variables are allowed as operands. The name of the variable" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:715 +msgid "is replaced by its value (coerced to a fixed-width integer) within" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:716 +msgid "an expression. The variable need not have its integer attribute" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:717 +msgid "turned on to be used in an expression." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:719 +msgid "Operators are evaluated in order of precedence. Sub-expressions in" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:720 +msgid "parentheses are evaluated first and may override the precedence" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:721 +msgid "rules above." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:723 +msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:724 +msgid "otherwise." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:730 +msgid "" +"One line is read from the standard input, or from file descriptor FD if the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:731 +msgid "" +"-u option is supplied, and the first word is assigned to the first NAME," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:732 +msgid "" +"the second word to the second NAME, and so on, with leftover words assigned" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:733 +msgid "" +"to the last NAME. Only the characters found in $IFS are recognized as word" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:734 +msgid "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:735 +msgid "variable. If the -r option is given, this signifies `raw' input, and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:736 +msgid "backslash escaping is disabled. The -d option causes read to continue" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:737 +msgid "" +"until the first character of DELIM is read, rather than newline. If the -p" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:738 +msgid "" +"option is supplied, the string PROMPT is output without a trailing newline" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:739 +msgid "" +"before attempting to read. If -a is supplied, the words read are assigned" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:740 +msgid "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:741 +msgid "" +"the shell is interactive, readline is used to obtain the line. If -n is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:742 +msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:743 +msgid "characters have been read. The -s option causes input coming from a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:744 +msgid "terminal to not be echoed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:746 +msgid "" +"The -t option causes read to time out and return failure if a complete line" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:747 +msgid "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:748 +msgid "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:749 +msgid "" +"is encountered, read times out, or an invalid file descriptor is supplied as" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:750 +msgid "the argument to -u." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:756 +msgid "Causes a function to exit with the return value specified by N. If N" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:757 +msgid "is omitted, the return status is that of the last command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:763 +msgid " -a Mark variables which are modified or created for export." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:764 +msgid " -b Notify of job termination immediately." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:765 +msgid " -e Exit immediately if a command exits with a non-zero status." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:766 +msgid " -f Disable file name generation (globbing)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:767 +msgid " -h Remember the location of commands as they are looked up." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:768 +msgid " -k All assignment arguments are placed in the environment for a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:769 +msgid " command, not just those that precede the command name." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:770 +msgid " -m Job control is enabled." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:771 +msgid " -n Read commands but do not execute them." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:772 +msgid " -o option-name" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:773 +msgid " Set the variable corresponding to option-name:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:774 +msgid " allexport same as -a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:775 +msgid " braceexpand same as -B" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:777 +msgid " emacs use an emacs-style line editing interface" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:779 +msgid " errexit same as -e" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:780 +msgid " errtrace same as -E" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:781 +msgid " functrace same as -T" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:782 +msgid " hashall same as -h" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:784 +msgid " histexpand same as -H" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:787 +msgid " history enable command history" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:789 +msgid " ignoreeof the shell will not exit upon reading EOF" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:790 +msgid " interactive-comments" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:791 +msgid "" +" allow comments to appear in interactive commands" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:792 +msgid " keyword same as -k" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:793 +msgid " monitor same as -m" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:794 +msgid " noclobber same as -C" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:795 +msgid " noexec same as -n" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:796 +msgid " noglob same as -f" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:797 +msgid " nolog currently accepted but ignored" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:798 +msgid " notify same as -b" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:799 +msgid " nounset same as -u" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:800 +msgid " onecmd same as -t" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:801 +msgid " physical same as -P" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:802 +msgid "" +" pipefail the return value of a pipeline is the status of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:803 +msgid "" +" the last command to exit with a non-zero status," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:804 +msgid "" +" or zero if no command exited with a non-zero status" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:805 +msgid " posix change the behavior of bash where the default" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:806 +msgid " operation differs from the 1003.2 standard to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:807 +msgid " match the standard" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:808 +msgid " privileged same as -p" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:809 +msgid " verbose same as -v" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:811 +msgid " vi use a vi-style line editing interface" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:813 +msgid " xtrace same as -x" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:814 +msgid "" +" -p Turned on whenever the real and effective user ids do not match." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:815 +msgid " Disables processing of the $ENV file and importing of shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:816 +msgid "" +" functions. Turning this option off causes the effective uid and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:817 +msgid " gid to be set to the real uid and gid." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:818 +msgid " -t Exit after reading and executing one command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:819 +msgid " -u Treat unset variables as an error when substituting." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:820 +msgid " -v Print shell input lines as they are read." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:821 +msgid " -x Print commands and their arguments as they are executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:823 +msgid " -B the shell will perform brace expansion" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:825 +msgid " -C If set, disallow existing regular files to be overwritten" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:826 +msgid " by redirection of output." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:827 +msgid " -E If set, the ERR trap is inherited by shell functions." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:829 +msgid " -H Enable ! style history substitution. This flag is on" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:830 +msgid " by default." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:832 +msgid " -P If set, do not follow symbolic links when executing commands" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:833 +msgid " such as cd which change the current directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:834 +msgid " -T If set, the DEBUG trap is inherited by shell functions." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:836 +msgid "Using + rather than - causes these flags to be turned off. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:837 +msgid "flags can also be used upon invocation of the shell. The current" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:838 +msgid "set of flags may be found in $-. The remaining n ARGs are positional" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:839 +msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:840 +msgid "ARGs are given, all shell variables are printed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:846 +msgid "For each NAME, remove the corresponding variable or function. Given" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:847 +msgid "the `-v', unset will only act on variables. Given the `-f' flag," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:848 +msgid "unset will only act on functions. With neither flag, unset first" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:849 +msgid "tries to unset a variable, and if that fails, then tries to unset a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:850 +msgid "function. Some variables cannot be unset; also see readonly." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:856 +msgid "NAMEs are marked for automatic export to the environment of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:857 +msgid "subsequently executed commands. If the -f option is given," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:858 +msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:859 +msgid "is given, a list of all names that are exported in this shell is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:860 +msgid "printed. An argument of `-n' says to remove the export property" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:861 +msgid "from subsequent NAMEs. An argument of `--' disables further option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:862 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:874 +msgid "processing." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:868 +msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:869 +msgid "not be changed by subsequent assignment. If the -f option is given," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:870 +msgid "then functions corresponding to the NAMEs are so marked. If no" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:871 +msgid "arguments are given, or if `-p' is given, a list of all readonly names" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:872 +msgid "is printed. The `-a' option means to treat each NAME as" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:873 +msgid "an array variable. An argument of `--' disables further option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:880 +msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:881 +msgid "not given, it is assumed to be 1." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:887 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:896 +msgid "Read and execute commands from FILENAME and return. The pathnames" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:888 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:897 +msgid "in $PATH are used to find the directory containing FILENAME. If any" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:889 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:898 +msgid "ARGUMENTS are supplied, they become the positional parameters when" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:890 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:899 +msgid "FILENAME is executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:906 +msgid "Suspend the execution of this shell until it receives a SIGCONT" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:907 +msgid "signal. The `-f' if specified says not to complain about this" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:908 +msgid "being a login shell if it is; just suspend anyway." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:915 +msgid "Exits with a status of 0 (true) or 1 (false) depending on" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:916 +msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:917 +msgid "expressions are often used to examine the status of a file. There" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:918 +msgid "are string operators as well, and numeric comparison operators." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:920 +msgid "File operators:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:922 +msgid " -a FILE True if file exists." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:923 +msgid " -b FILE True if file is block special." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:924 +msgid " -c FILE True if file is character special." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:925 +msgid " -d FILE True if file is a directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:926 +msgid " -e FILE True if file exists." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:927 +msgid " -f FILE True if file exists and is a regular file." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:928 +msgid " -g FILE True if file is set-group-id." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:929 +msgid " -h FILE True if file is a symbolic link." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:930 +msgid " -L FILE True if file is a symbolic link." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:931 +msgid " -k FILE True if file has its `sticky' bit set." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:932 +msgid " -p FILE True if file is a named pipe." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:933 +msgid " -r FILE True if file is readable by you." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:934 +msgid " -s FILE True if file exists and is not empty." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:935 +msgid " -S FILE True if file is a socket." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:936 +msgid " -t FD True if FD is opened on a terminal." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:937 +msgid " -u FILE True if the file is set-user-id." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:938 +msgid " -w FILE True if the file is writable by you." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:939 +msgid " -x FILE True if the file is executable by you." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:940 +msgid " -O FILE True if the file is effectively owned by you." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:941 +msgid " -G FILE True if the file is effectively owned by your group." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:942 +msgid "" +" -N FILE True if the file has been modified since it was last read." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:944 +msgid " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:945 +msgid " modification date)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:947 +msgid " FILE1 -ot FILE2 True if file1 is older than file2." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:949 +msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:951 +msgid "String operators:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:953 +msgid " -z STRING True if string is empty." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:955 +msgid " -n STRING" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:956 +msgid " STRING True if string is not empty." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:958 +msgid " STRING1 = STRING2" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:959 +msgid " True if the strings are equal." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:960 +msgid " STRING1 != STRING2" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:961 +msgid " True if the strings are not equal." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:962 +msgid " STRING1 < STRING2" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:963 +msgid "" +" True if STRING1 sorts before STRING2 lexicographically." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:964 +msgid " STRING1 > STRING2" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:965 +msgid "" +" True if STRING1 sorts after STRING2 lexicographically." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:967 +msgid "Other operators:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:969 +msgid " -o OPTION True if the shell option OPTION is enabled." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:970 +msgid " ! EXPR True if expr is false." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:971 +msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:972 +msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:974 +msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:975 +msgid " -lt, -le, -gt, or -ge." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:977 +msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:978 +msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:979 +msgid "than ARG2." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:985 +msgid "This is a synonym for the \"test\" builtin, but the last" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:986 +msgid "argument must be a literal `]', to match the opening `['." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:992 +msgid "Print the accumulated user and system times for processes run from" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:993 +msgid "the shell." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:999 +msgid "The command ARG is to be read and executed when the shell receives" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1000 +msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1001 +msgid "reset to their original values. If ARG is the null string each" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1002 +msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1003 +msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1004 +msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1005 +msgid "command. If ARG is `-p' then the trap commands associated with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1006 +msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1007 +msgid "only `-p' is given, trap prints the list of commands associated with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1008 +msgid "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1009 +msgid "or a signal number. `trap -l' prints a list of signal names and their" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1010 +msgid "corresponding numbers. Note that a signal can be sent to the shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1011 +msgid "with \"kill -signal $$\"." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1017 +msgid "For each NAME, indicate how it would be interpreted if used as a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1018 +msgid "command name." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1020 +msgid "If the -t option is used, `type' outputs a single word which is one of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1021 +msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1022 +msgid "alias, shell reserved word, shell function, shell builtin, disk file," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1023 +msgid "or unfound, respectively." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1025 +msgid "If the -p flag is used, `type' either returns the name of the disk" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1026 +msgid "file that would be executed, or nothing if `type -t NAME' would not" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1027 +msgid "return `file'." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1029 +msgid "If the -a flag is used, `type' displays all of the places that contain" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1030 +msgid "an executable named `file'. This includes aliases, builtins, and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1031 +msgid "functions, if and only if the -p flag is not also used." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1033 +msgid "The -f flag suppresses shell function lookup." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1035 +msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1036 +msgid "builtin, or function, and returns the name of the disk file that would" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1037 +msgid "be executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1044 +msgid "Ulimit provides control over the resources available to processes" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1045 +msgid "started by the shell, on systems that allow such control. If an" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1046 +msgid "option is given, it is interpreted as follows:" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1048 +msgid " -S\tuse the `soft' resource limit" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1049 +msgid " -H\tuse the `hard' resource limit" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1050 +msgid " -a\tall current limits are reported" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1051 +msgid " -c\tthe maximum size of core files created" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1052 +msgid " -d\tthe maximum size of a process's data segment" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1053 +msgid " -f\tthe maximum size of files created by the shell" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1054 +msgid " -l\tthe maximum size a process may lock into memory" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1055 +msgid " -m\tthe maximum resident set size" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1056 +msgid " -n\tthe maximum number of open file descriptors" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1057 +msgid " -p\tthe pipe buffer size" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1058 +msgid " -s\tthe maximum stack size" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1059 +msgid " -t\tthe maximum amount of cpu time in seconds" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1060 +msgid " -u\tthe maximum number of user processes" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1061 +msgid " -v\tthe size of virtual memory" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1063 +msgid "If LIMIT is given, it is the new value of the specified resource;" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1064 +msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1065 +msgid "" +"the current soft limit, the current hard limit, and no limit, respectively." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1066 +msgid "Otherwise, the current value of the specified resource is printed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1067 +msgid "If no option is given, then -f is assumed. Values are in 1024-byte" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1068 +msgid "increments, except for -t, which is in seconds, -p, which is in" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1069 +msgid "increments of 512 bytes, and -u, which is an unscaled number of" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1070 +msgid "processes." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1077 +msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1078 +msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1079 +msgid "option makes the output symbolic; otherwise an octal number is output." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1080 +msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1081 +msgid "that may be used as input. If MODE begins with a digit, it is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1082 +msgid "interpreted as an octal number, otherwise it is a symbolic mode string" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1083 +msgid "like that accepted by chmod(1)." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1090 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1102 +msgid "Wait for the specified process and report its termination status. If" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1091 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1103 +msgid "N is not given, all currently active child processes are waited for," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1092 +msgid "and the return code is zero. N may be a process ID or a job" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1093 +msgid "specification; if a job spec is given, all processes in the job's" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1094 +msgid "pipeline are waited for." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1104 +msgid "and the return code is zero. N is a process ID; if it is not given," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1105 +msgid "all child processes of the shell are waited for." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1112 +msgid "The `for' loop executes a sequence of commands for each member in a" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1113 +msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1114 +msgid "assumed. For each element in WORDS, NAME is set to that element, and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1115 +msgid "the COMMANDS are executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1121 +msgid "Equivalent to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1122 +msgid "\t(( EXP1 ))" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1123 +msgid "\twhile (( EXP2 )); do" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1124 +msgid "\t\tCOMMANDS" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1125 +msgid "\t\t(( EXP3 ))" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1126 +msgid "\tdone" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1127 +msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1128 +msgid "omitted, it behaves as if it evaluates to 1." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1134 +msgid "The WORDS are expanded, generating a list of words. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1135 +msgid "set of expanded words is printed on the standard error, each" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1136 +msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1137 +msgid "is assumed. The PS3 prompt is then displayed and a line read" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1138 +msgid "from the standard input. If the line consists of the number" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1139 +msgid "corresponding to one of the displayed words, then NAME is set" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1140 +msgid "to that word. If the line is empty, WORDS and the prompt are" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1141 +msgid "redisplayed. If EOF is read, the command completes. Any other" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1142 +msgid "value read causes NAME to be set to null. The line read is saved" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1143 +msgid "in the variable REPLY. COMMANDS are executed after each selection" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1144 +msgid "until a break command is executed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1150 +msgid "Execute PIPELINE and print a summary of the real time, user CPU time," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1151 +msgid "and system CPU time spent executing PIPELINE when it terminates." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1152 +msgid "The return status is the return status of PIPELINE. The `-p' option" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1153 +msgid "prints the timing summary in a slightly different format. This uses" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1154 +msgid "the value of the TIMEFORMAT variable as the output format." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1160 +msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1161 +msgid "`|' is used to separate multiple patterns." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1167 +msgid "" +"The if COMMANDS are executed. If the exit status is zero, then the then" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1168 +msgid "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1169 +msgid "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1170 +msgid "" +"are executed and the if command completes. Otherwise, the else COMMANDS" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1171 +msgid "" +"are executed, if present. The exit status is the exit status of the last" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1172 +msgid "command executed, or zero if no condition tested true." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1178 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1185 +msgid "Expand and execute COMMANDS as long as the final command in the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1179 +msgid "`while' COMMANDS has an exit status of zero." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1186 +msgid "`until' COMMANDS has an exit status which is not zero." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1192 +msgid "Create a simple command invoked by NAME which runs COMMANDS." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1193 +msgid "Arguments on the command line along with NAME are passed to the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1194 +msgid "function as $0 .. $n." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1200 +msgid "Run a set of commands in a group. This is one way to redirect an" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1201 +msgid "entire set of commands." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1207 +msgid "This is similar to the `fg' command. Resume a stopped or background" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1208 +msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1209 +msgid "WORD, then the job whose name begins with WORD is used. Following the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1210 +msgid "job specification with a `&' places the job in the background." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1216 +msgid "The EXPRESSION is evaluated according to the rules for arithmetic" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1217 +msgid "evaluation. Equivalent to \"let EXPRESSION\"." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1223 +msgid "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1224 +msgid "" +"expression EXPRESSION. Expressions are composed of the same primaries used" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1225 +msgid "" +"by the `test' builtin, and may be combined using the following operators" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1227 +msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1228 +msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1229 +msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1230 +msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1232 +msgid "" +"When the `==' and `!=' operators are used, the string to the right of the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1233 +msgid "operator is used as a pattern and pattern matching is performed. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1234 +msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1235 +msgid "determine the expression's value." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1241 +msgid "BASH_VERSION Version information for this Bash." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1242 +msgid "CDPATH A colon separated list of directories to search" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1243 +msgid "\t\twhen the argument to `cd' is not found in the current" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1244 +msgid "\t\tdirectory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1245 +msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1246 +msgid "\t\tbe ignored by pathname expansion." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1248 +msgid "" +"HISTFILE The name of the file where your command history is stored." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1249 +msgid "HISTFILESIZE The maximum number of lines this file can contain." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1250 +msgid "HISTSIZE The maximum number of history lines that a running" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1251 +msgid "\t\tshell can access." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1253 +msgid "HOME The complete pathname to your login directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1254 +msgid "HOSTNAME\tThe name of the current host." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1255 +msgid "HOSTTYPE The type of CPU this version of Bash is running under." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1256 +msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1257 +msgid "\t\tcharacter as the sole input. If set, then the value" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1258 +msgid "\t\tof it is the number of EOF characters that can be seen" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1259 +msgid "\t\tin a row on an empty line before the shell will exit" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1260 +msgid "\t\t(default 10). When unset, EOF signifies the end of input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1261 +msgid "MACHTYPE\tA string describing the current system Bash is running on." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1262 +msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1263 +msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1264 +msgid "\t\tfor new mail." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1265 +msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1266 +msgid "PATH A colon-separated list of directories to search when" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1267 +msgid "\t\tlooking for commands." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1268 +msgid "PROMPT_COMMAND A command to be executed before the printing of each" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1269 +msgid "\t\tprimary prompt." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1270 +msgid "PS1 The primary prompt string." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1271 +msgid "PS2 The secondary prompt string." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1272 +msgid "PWD\t\tThe full pathname of the current directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1273 +msgid "SHELLOPTS\tA colon-separated list of enabled shell options." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1274 +msgid "TERM The name of the current terminal type." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1275 +msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1276 +msgid "\t\t`time' reserved word." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1277 +msgid "auto_resume Non-null means a command word appearing on a line by" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1278 +msgid "\t\titself is first looked for in the list of currently" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1279 +msgid "\t\tstopped jobs. If found there, that job is foregrounded." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1280 +msgid "\t\tA value of `exact' means that the command word must" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1281 +msgid "\t\texactly match a command in the list of stopped jobs. A" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1282 +msgid "\t\tvalue of `substring' means that the command word must" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1283 +msgid "\t\tmatch a substring of the job. Any other value means that" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1284 +msgid "\t\tthe command must be a prefix of a stopped job." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1287 +msgid "histchars Characters controlling history expansion and quick" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1288 +msgid "\t\tsubstitution. The first character is the history" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1289 +msgid "\t\tsubstitution character, usually `!'. The second is" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1290 +msgid "\t\tthe `quick substitution' character, usually `^'. The" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1291 +msgid "\t\tthird is the `history comment' character, usually `#'." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1293 +msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1294 +msgid "\t\tcommands should be saved on the history list." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1302 +msgid "Adds a directory to the top of the directory stack, or rotates" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1303 +msgid "the stack, making the new top of the stack the current working" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1304 +msgid "directory. With no arguments, exchanges the top two directories." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1306 +msgid "+N\tRotates the stack so that the Nth directory (counting" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1307 +msgid "\tfrom the left of the list shown by `dirs', starting with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1308 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1312 +msgid "\tzero) is at the top." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1310 +msgid "-N\tRotates the stack so that the Nth directory (counting" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1311 +msgid "\tfrom the right of the list shown by `dirs', starting with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1314 +msgid "-n\tsuppress the normal change of directory when adding directories" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1315 +msgid "\tto the stack, so only the stack is manipulated." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1317 +msgid "dir\tadds DIR to the directory stack at the top, making it the" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1318 +msgid "\tnew current working directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1320 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1343 +msgid "You can see the directory stack with the `dirs' command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1328 +msgid "Removes entries from the directory stack. With no arguments," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1329 +msgid "removes the top directory from the stack, and cd's to the new" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1330 +msgid "top directory." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1332 +msgid "+N\tremoves the Nth entry counting from the left of the list" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1333 +msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1334 +msgid "\tremoves the first directory, `popd +1' the second." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1336 +msgid "-N\tremoves the Nth entry counting from the right of the list" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1337 +msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1338 +msgid "\tremoves the last directory, `popd -1' the next to last." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1340 +msgid "-n\tsuppress the normal change of directory when removing directories" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1341 +msgid "\tfrom the stack, so only the stack is manipulated." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1351 +msgid "Display the list of currently remembered directories. Directories" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1352 +msgid "find their way onto the list with the `pushd' command; you can get" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1353 +msgid "back up through the list with the `popd' command." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1355 +msgid "The -l flag specifies that `dirs' should not print shorthand versions" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1356 +msgid "of directories which are relative to your home directory. This means" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1357 +msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1358 +msgid "causes `dirs' to print the directory stack with one entry per line," +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1359 +msgid "prepending the directory name with its position in the stack. The -p" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1360 +msgid "flag does the same thing, but the stack position is not prepended." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1361 +msgid "The -c flag clears the directory stack by deleting all of the elements." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1363 +msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1364 +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1367 +msgid "\tdirs when invoked without options, starting with zero." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1366 +msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1374 +msgid "Toggle the values of variables controlling optional behavior." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1375 +msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1376 +msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1377 +msgid "status indicates whether each OPTNAME is set or unset. The -o" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1378 +msgid "option restricts the OPTNAMEs to those defined for use with" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1379 +msgid "`set -o'. With no options, or with the -p option, a list of all" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1380 +msgid "settable options is displayed, with an indication of whether or" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1381 +msgid "not each is set." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1387 +msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1388 +msgid "is a character string which contains three types of objects: plain" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1389 +msgid "" +"characters, which are simply copied to standard output, character escape" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1390 +msgid "sequences which are converted and copied to the standard output, and" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1391 +msgid "" +"format specifications, each of which causes printing of the next successive" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1392 +msgid "argument. In addition to the standard printf(1) formats, %b means to" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1393 +msgid "expand backslash escape sequences in the corresponding argument, and %q" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1394 +msgid "means to quote the argument in a way that can be reused as shell input." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1401 +msgid "For each NAME, specify how arguments are to be completed." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1402 +msgid "If the -p option is supplied, or if no options are supplied, existing" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1403 +msgid "completion specifications are printed in a way that allows them to be" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1404 +msgid "reused as input. The -r option removes a completion specification for" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1405 +msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1413 +msgid "Display the possible completions depending on the options. Intended" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1414 +msgid "" +"to be used from within a shell function generating possible completions." +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1415 +msgid "If the optional WORD argument is supplied, matches against WORD are" +msgstr "" + +#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1416 +msgid "generated." +msgstr "" diff --git a/po.orig/en@boldquot.gmo b/po.orig/en@boldquot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6a9c77ba25ca19e810fecf4cbdf2859e979a677f GIT binary patch literal 120143 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 literal 0 Hc-jL100001 diff --git a/po.orig/en@boldquot.header b/po.orig/en@boldquot.header new file mode 100644 index 000000000..fedb6a06d --- /dev/null +++ b/po.orig/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po.orig/en@boldquot.po b/po.orig/en@boldquot.po new file mode 100644 index 000000000..652c51b0c --- /dev/null +++ b/po.orig/en@boldquot.po @@ -0,0 +1,4349 @@ +# English translations for GNU bash package. +# Copyright (C) 2004 Free Software Foundation, Inc. +# This file is distributed under the same license as the GNU bash package. +# Automatically generated, 2004. +# +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# +#: builtins/caller.def:128 builtins/caller.def:132 builtins/pushd.def:655 +#: builtins/pushd.def:663 builtins/pushd.def:666 builtins/pushd.def:676 +#: builtins/pushd.def:680 builtins/pushd.def:684 builtins/pushd.def:687 +#: builtins/pushd.def:690 builtins/pushd.def:699 builtins/pushd.def:703 +#: builtins/pushd.def:707 builtins/pushd.def:710 builtins.c:321 builtins.c:325 +#: builtins.c:390 builtins.c:392 builtins.c:401 builtins.c:404 builtins.c:408 +#: builtins.c:445 builtins.c:487 builtins.c:491 builtins.c:498 builtins.c:509 +#: builtins.c:513 builtins.c:552 builtins.c:555 builtins.c:559 builtins.c:562 +#: builtins.c:630 builtins.c:637 builtins.c:692 builtins.c:713 builtins.c:718 +#: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921 +#: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952 +#: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973 +#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028 +#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062 +#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309 +#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331 +#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354 +#: builtins.c:1362 builtins.c:1365 +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 3.0-rc1\n" +"POT-Creation-Date: 2003-12-22 15:34-0500\n" +"PO-Revision-Date: 2003-12-22 15:34-0500\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: bug-bash@gnu.org\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:45 +msgid "bad array subscript" +msgstr "bad array subscript" + +#: arrayfunc.c:306 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: cannot assign to non-numeric index" + +#: bashhist.c:321 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: cannot create: %s" + +#: bashline.c:2791 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: cannot find keymap for command" + +#: bashline.c:2840 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: first non-whitespace character is not ‘\"’" + +#: bashline.c:2869 +#, c-format +msgid "no closing `%c' in %s" +msgstr "no closing ‘%c’ in %s" + +#: bashline.c:2903 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: missing colon separator" + +#: builtins/alias.def:123 +#, c-format +msgid "`%s': invalid alias name" +msgstr "‘%s’: invalid alias name" + +#: builtins/bind.def:194 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "‘%s’: invalid keymap name" + +#: builtins/bind.def:233 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: cannot read: %s" + +#: builtins/bind.def:248 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/bind.def:283 +#, c-format +msgid "`%s': unknown function name" +msgstr "‘%s’: unknown function name" + +#: builtins/bind.def:291 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s is not bound to any keys.\n" + +#: builtins/bind.def:295 +#, c-format +msgid "%s can be invoked via " +msgstr "%s can be invoked via " + +#: builtins/break.def:128 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" + +#: builtins/caller.def:127 builtins.c:320 +msgid "Returns the context of the current subroutine call." +msgstr "Returns the context of the current subroutine call." + +#: builtins/caller.def:129 builtins.c:322 +msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +msgstr "Without EXPR, returns returns “$line $filename”. With EXPR," + +#: builtins/caller.def:130 builtins.c:323 +msgid "returns \"$line $subroutine $filename\"; this extra information" +msgstr "returns “$line $subroutine $filename”; this extra information" + +#: builtins/caller.def:131 builtins.c:324 +msgid "can be used used to provide a stack trace." +msgstr "can be used used to provide a stack trace." + +#: builtins/caller.def:133 builtins.c:326 +msgid "The value of EXPR indicates how many call frames to go back before the" +msgstr "The value of EXPR indicates how many call frames to go back before the" + +#: builtins/caller.def:134 builtins.c:327 +msgid "current one; the top frame is frame 0." +msgstr "current one; the top frame is frame 0." + +#: builtins/cd.def:188 +msgid "HOME not set" +msgstr "HOME not set" + +#: builtins/cd.def:200 +msgid "OLDPWD not set" +msgstr "OLDPWD not set" + +#: builtins/cd.def:357 +#, c-format +msgid "write error: %s" +msgstr "write error: %s" + +#: builtins/common.c:133 test.c:921 +msgid "too many arguments" +msgstr "too many arguments" + +#: builtins/common.c:157 shell.c:465 shell.c:737 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: option requires an argument" + +#: builtins/common.c:164 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: numeric argument required" + +#: builtins/common.c:171 +#, c-format +msgid "%s: not found" +msgstr "%s: not found" + +#: builtins/common.c:180 shell.c:750 +#, c-format +msgid "%s: invalid option" +msgstr "%s: invalid option" + +#: builtins/common.c:187 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: invalid option name" + +#: builtins/common.c:194 general.c:229 general.c:234 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "‘%s’: not a valid identifier" + +#: builtins/common.c:201 +#, c-format +msgid "%s: invalid number" +msgstr "%s: invalid number" + +#: builtins/common.c:208 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: invalid signal specification" + +#: builtins/common.c:215 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "‘%s’: not a pid or valid job spec" + +#: builtins/common.c:222 error.c:453 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: readonly variable" + +#: builtins/common.c:230 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s out of range" + +#: builtins/common.c:230 builtins/common.c:232 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:232 +#, c-format +msgid "%s out of range" +msgstr "%s out of range" + +#: builtins/common.c:240 +#, c-format +msgid "%s: no such job" +msgstr "%s: no such job" + +#: builtins/common.c:248 +#, c-format +msgid "%s: no job control" +msgstr "%s: no job control" + +#: builtins/common.c:250 +msgid "no job control" +msgstr "no job control" + +#: builtins/common.c:260 +#, c-format +msgid "%s: restricted" +msgstr "%s: restricted" + +#: builtins/common.c:262 +msgid "restricted" +msgstr "restricted" + +#: builtins/common.c:270 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: not a shell builtin" + +#: builtins/common.c:486 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error retrieving current directory: %s: %s\n" + +#: builtins/common.c:553 builtins/common.c:555 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: ambiguous job spec" + +#: builtins/complete.def:251 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: invalid action name" + +#: builtins/complete.def:381 builtins/complete.def:524 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: no completion specification" + +#: builtins/complete.def:571 +msgid "warning: -F option may not work as you expect" +msgstr "warning: -F option may not work as you expect" + +#: builtins/complete.def:573 +msgid "warning: -C option may not work as you expect" +msgstr "warning: -C option may not work as you expect" + +#: builtins/declare.def:105 +msgid "can only be used in a function" +msgstr "can only be used in a function" + +#: builtins/declare.def:295 +msgid "cannot use `-f' to make functions" +msgstr "cannot use ‘-f’ to make functions" + +#: builtins/declare.def:307 execute_cmd.c:3949 +#, c-format +msgid "%s: readonly function" +msgstr "%s: readonly function" + +#: builtins/declare.def:389 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: cannot destroy array variables in this way" + +#: builtins/enable.def:128 builtins/enable.def:136 +msgid "dynamic loading not available" +msgstr "dynamic loading not available" + +#: builtins/enable.def:303 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "cannot open shared object %s: %s" + +#: builtins/enable.def:326 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "cannot find %s in shared object %s: %s" + +#: builtins/enable.def:450 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: not dynamically loaded" + +#: builtins/enable.def:465 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: cannot delete: %s" + +#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is a directory" + +#: builtins/evalfile.c:133 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: not a regular file" + +#: builtins/evalfile.c:141 +#, c-format +msgid "%s: file is too large" +msgstr "%s: file is too large" + +#: builtins/exec.def:205 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: cannot execute: %s" + +#: builtins/exit.def:83 +msgid "not login shell: use `exit'" +msgstr "not login shell: use ‘exit’" + +#: builtins/exit.def:111 +msgid "There are stopped jobs.\n" +msgstr "There are stopped jobs.\n" + +#: builtins/fc.def:252 +msgid "no command found" +msgstr "no command found" + +#: builtins/fc.def:317 +msgid "history specification" +msgstr "history specification" + +#: builtins/fc.def:338 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: cannot open temp file: %s" + +#: builtins/fg_bg.def:133 +#, c-format +msgid "job %d started without job control" +msgstr "job %d started without job control" + +#: builtins/getopt.c:109 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: illegal option -- %c\n" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: option requires an argument -- %c\n" + +#: builtins/hash.def:83 +msgid "hashing disabled" +msgstr "hashing disabled" + +#: builtins/hash.def:128 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hash table empty\n" + +#: builtins/help.def:108 +msgid "Shell commands matching keywords `" +msgstr "Shell commands matching keywords `" + +#: builtins/help.def:110 +msgid "Shell commands matching keyword `" +msgstr "Shell commands matching keyword `" + +#: builtins/help.def:138 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ " +"or ‘info %s’." + +#: builtins/help.def:164 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: cannot open: %s" + +#: builtins/help.def:182 +msgid "" +"These shell commands are defined internally. Type `help' to see this list.\n" +"Type `help name' to find out more about the function `name'.\n" +"Use `info bash' to find out more about the shell in general.\n" +"Use `man -k' or `info' to find out more about commands not in this list.\n" +"\n" +"A star (*) next to a name means that the command is disabled.\n" +"\n" +msgstr "" +"These shell commands are defined internally. Type ‘help’ to see this " +"list.\n" +"Type ‘help name’ to find out more about the function ‘name’.\n" +"Use ‘info bash’ to find out more about the shell in general.\n" +"Use ‘man -k’ or ‘info’ to find out more about commands not in " +"this list.\n" +"\n" +"A star (*) next to a name means that the command is disabled.\n" +"\n" + +#: builtins/history.def:148 +msgid "cannot use more than one of -anrw" +msgstr "cannot use more than one of -anrw" + +#: builtins/history.def:180 +msgid "history position" +msgstr "history position" + +#: builtins/history.def:390 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: history expansion failed" + +#: builtins/jobs.def:99 +msgid "no other options allowed with `-x'" +msgstr "no other options allowed with ‘-x’" + +#: builtins/kill.def:187 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: arguments must be process or job IDs" + +#: builtins/kill.def:248 +msgid "Unknown error" +msgstr "Unknown error" + +#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511 +msgid "expression expected" +msgstr "expression expected" + +#: builtins/printf.def:249 +#, c-format +msgid "`%s': missing format character" +msgstr "‘%s’: missing format character" + +#: builtins/printf.def:408 +#, c-format +msgid "`%c': invalid format character" +msgstr "‘%c’: invalid format character" + +#: builtins/printf.def:601 +msgid "missing hex digit for \\x" +msgstr "missing hex digit for \\x" + +#: builtins/pushd.def:168 +msgid "no other directory" +msgstr "no other directory" + +#: builtins/pushd.def:435 +msgid "" +msgstr "" + +#: builtins/pushd.def:652 builtins.c:1351 +msgid "Display the list of currently remembered directories. Directories" +msgstr "Display the list of currently remembered directories. Directories" + +#: builtins/pushd.def:653 builtins.c:1352 +msgid "find their way onto the list with the `pushd' command; you can get" +msgstr "" +"find their way onto the list with the ‘pushd’ command; you can get" + +#: builtins/pushd.def:654 builtins.c:1353 +msgid "back up through the list with the `popd' command." +msgstr "back up through the list with the ‘popd’ command." + +#: builtins/pushd.def:656 builtins.c:1355 +msgid "The -l flag specifies that `dirs' should not print shorthand versions" +msgstr "" +"The -l flag specifies that ‘dirs’ should not print shorthand versions" + +#: builtins/pushd.def:657 builtins.c:1356 +msgid "of directories which are relative to your home directory. This means" +msgstr "of directories which are relative to your home directory. This means" + +#: builtins/pushd.def:658 builtins.c:1357 +msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +msgstr "" +"that ‘~/bin’ might be displayed as ‘/homes/bfox/bin’. The -v " +"flag" + +#: builtins/pushd.def:659 builtins.c:1358 +msgid "causes `dirs' to print the directory stack with one entry per line," +msgstr "" +"causes ‘dirs’ to print the directory stack with one entry per line," + +#: builtins/pushd.def:660 builtins.c:1359 +msgid "prepending the directory name with its position in the stack. The -p" +msgstr "prepending the directory name with its position in the stack. The -p" + +#: builtins/pushd.def:661 builtins.c:1360 +msgid "flag does the same thing, but the stack position is not prepended." +msgstr "flag does the same thing, but the stack position is not prepended." + +#: builtins/pushd.def:662 builtins.c:1361 +msgid "The -c flag clears the directory stack by deleting all of the elements." +msgstr "" +"The -c flag clears the directory stack by deleting all of the elements." + +#: builtins/pushd.def:664 +msgid "+N displays the Nth entry counting from the left of the list shown by" +msgstr "" +"+N displays the Nth entry counting from the left of the list shown by" + +#: builtins/pushd.def:665 builtins/pushd.def:668 +msgid " dirs when invoked without options, starting with zero." +msgstr " dirs when invoked without options, starting with zero." + +#: builtins/pushd.def:667 +msgid "" +"-N displays the Nth entry counting from the right of the list shown by" +msgstr "" +"-N displays the Nth entry counting from the right of the list shown by" + +#: builtins/pushd.def:673 builtins.c:1302 +msgid "Adds a directory to the top of the directory stack, or rotates" +msgstr "Adds a directory to the top of the directory stack, or rotates" + +#: builtins/pushd.def:674 builtins.c:1303 +msgid "the stack, making the new top of the stack the current working" +msgstr "the stack, making the new top of the stack the current working" + +#: builtins/pushd.def:675 builtins.c:1304 +msgid "directory. With no arguments, exchanges the top two directories." +msgstr "directory. With no arguments, exchanges the top two directories." + +#: builtins/pushd.def:677 +msgid "+N Rotates the stack so that the Nth directory (counting" +msgstr "+N Rotates the stack so that the Nth directory (counting" + +#: builtins/pushd.def:678 +msgid " from the left of the list shown by `dirs', starting with" +msgstr " from the left of the list shown by ‘dirs’, starting with" + +#: builtins/pushd.def:679 builtins/pushd.def:683 +msgid " zero) is at the top." +msgstr " zero) is at the top." + +#: builtins/pushd.def:681 +msgid "-N Rotates the stack so that the Nth directory (counting" +msgstr "-N Rotates the stack so that the Nth directory (counting" + +#: builtins/pushd.def:682 +msgid " from the right of the list shown by `dirs', starting with" +msgstr " from the right of the list shown by ‘dirs’, starting with" + +#: builtins/pushd.def:685 +msgid "-n suppress the normal change of directory when adding directories" +msgstr "-n suppress the normal change of directory when adding directories" + +#: builtins/pushd.def:686 +msgid " to the stack, so only the stack is manipulated." +msgstr " to the stack, so only the stack is manipulated." + +#: builtins/pushd.def:688 +msgid "dir adds DIR to the directory stack at the top, making it the" +msgstr "dir adds DIR to the directory stack at the top, making it the" + +#: builtins/pushd.def:689 +msgid " new current working directory." +msgstr " new current working directory." + +#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320 +#: builtins.c:1343 +msgid "You can see the directory stack with the `dirs' command." +msgstr "You can see the directory stack with the ‘dirs’ command." + +#: builtins/pushd.def:696 builtins.c:1328 +msgid "Removes entries from the directory stack. With no arguments," +msgstr "Removes entries from the directory stack. With no arguments," + +#: builtins/pushd.def:697 builtins.c:1329 +msgid "removes the top directory from the stack, and cd's to the new" +msgstr "removes the top directory from the stack, and cd's to the new" + +#: builtins/pushd.def:698 builtins.c:1330 +msgid "top directory." +msgstr "top directory." + +#: builtins/pushd.def:700 +msgid "+N removes the Nth entry counting from the left of the list" +msgstr "+N removes the Nth entry counting from the left of the list" + +#: builtins/pushd.def:701 +msgid " shown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" +" shown by ‘dirs’, starting with zero. For example: ‘popd +0’" + +#: builtins/pushd.def:702 +msgid " removes the first directory, `popd +1' the second." +msgstr " removes the first directory, ‘popd +1’ the second." + +#: builtins/pushd.def:704 +msgid "-N removes the Nth entry counting from the right of the list" +msgstr "-N removes the Nth entry counting from the right of the list" + +#: builtins/pushd.def:705 +msgid " shown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" +" shown by ‘dirs’, starting with zero. For example: ‘popd -0’" + +#: builtins/pushd.def:706 +msgid " removes the last directory, `popd -1' the next to last." +msgstr " removes the last directory, ‘popd -1’ the next to last." + +#: builtins/pushd.def:708 +msgid "-n suppress the normal change of directory when removing directories" +msgstr "-n suppress the normal change of directory when removing directories" + +#: builtins/pushd.def:709 +msgid " from the stack, so only the stack is manipulated." +msgstr " from the stack, so only the stack is manipulated." + +#: builtins/read.def:207 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:230 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: invalid file descriptor specification" + +#: builtins/read.def:237 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: invalid file descriptor: %s" + +#: builtins/read.def:463 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:63 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:743 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:780 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: cannot unset" + +#: builtins/set.def:787 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: cannot unset: readonly %s" + +#: builtins/set.def:798 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:165 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/shift.def:66 builtins/shift.def:72 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:226 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:291 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: invalid shell option name" + +#: builtins/source.def:117 +msgid "filename argument required" +msgstr "filename argument required" + +#: builtins/source.def:137 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:93 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:103 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:231 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:252 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:272 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:297 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:318 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:338 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:332 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:358 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:387 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:425 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:112 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:226 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:279 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:165 +#, c-format +msgid "last command: %s\n" +msgstr "last command: %s\n" + +#: error.c:173 +msgid "Aborting..." +msgstr "Aborting..." + +#: error.c:260 +#, c-format +msgid "%s: warning: " +msgstr "%s: warning: " + +#: 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:175 +msgid "timed out waiting for input: auto-logout\n" +msgstr "timed out waiting for input: auto-logout\n" + +#: execute_cmd.c:466 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1036 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:3521 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:3609 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:3839 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:3876 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: cannot execute binary file" + +#: execute_cmd.c:3988 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:239 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:263 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:374 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:414 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:435 expr.c:440 expr.c:750 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:466 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:508 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:775 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:819 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:847 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:871 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1146 +msgid "invalid number" +msgstr "invalid number" + +#: expr.c:1150 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1170 +msgid "value too great for base" +msgstr "value too great for base" + +#: general.c:60 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:231 +#, 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:239 +#, 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:693 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1001 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1632 nojobs.c:648 +#, 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:1815 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:2062 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:2284 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:2293 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3037 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:298 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:314 +#, 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:740 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:817 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:820 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:839 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:845 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:942 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:957 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:963 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:175 +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:182 +#, 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:218 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p already in table as free?\n" + +#: lib/malloc/watch.c:46 +msgid "allocated" +msgstr "allocated" + +#: lib/malloc/watch.c:48 +msgid "freed" +msgstr "freed" + +#: lib/malloc/watch.c:50 +msgid "requesting resize" +msgstr "requesting resize" + +#: lib/malloc/watch.c:52 +msgid "just resized" +msgstr "just resized" + +#: lib/malloc/watch.c:54 +msgid "bug: unknown operation" +msgstr "bug: unknown operation" + +#: lib/malloc/watch.c:56 +#, c-format +msgid "malloc: watch alert: %p %s " +msgstr "malloc: watch alert: %p %s " + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "invalid base" + +#: lib/sh/netopen.c:158 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host unknown" + +#: lib/sh/netopen.c:165 +#, c-format +msgid "%s: invalid service" +msgstr "%s: invalid service" + +#: lib/sh/netopen.c:296 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: bad network path specification" + +#: lib/sh/netopen.c:336 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: mailcheck.c:382 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:407 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:423 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:318 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:320 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:321 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:560 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:730 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2726 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:3011 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:3016 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:3020 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:3098 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:3102 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:3130 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:3134 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:3171 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:3175 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:3191 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:3195 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:3206 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:3209 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:3213 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:4400 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:4418 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:4428 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:4428 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:4490 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s” to leave the shell.\n" + +#: parse.y:4649 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:988 +#, 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:260 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:1172 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:99 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:141 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:145 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:150 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:155 +#, c-format +msgid "cannot create temp file for here document: %s" +msgstr "cannot create temp file for here document: %s" + +#: redir.c:509 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:949 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:302 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:306 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:839 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1590 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:1725 +#, 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:1727 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:1731 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:1732 +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:1747 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:1753 +#, 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:1754 +#, 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:1755 +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: sig.c:485 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: invalid operation" + +#: subst.c:1011 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:2020 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:3516 subst.c:3532 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:3563 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:3608 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:3610 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:3618 +#, c-format +msgid "cannout reset nodelay mode for fd %d" +msgstr "cannout reset nodelay mode for fd %d" + +#: subst.c:3628 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:3803 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:3832 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:3849 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:4284 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:4529 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:5209 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:5283 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:6652 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:154 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:163 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:361 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:363 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:378 test.c:787 test.c:790 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:543 test.c:830 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:905 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: trap.c:194 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:309 +#, 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:313 +#, 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:349 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:310 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:670 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:1610 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2709 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:2923 variables.c:2932 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:2938 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:3363 +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:3376 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:3442 +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:82 +msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n" +msgstr "Copyright (C) 2004 Free Software Foundation, Inc.\n" + +#: xmalloc.c:93 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:95 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: cannot allocate %lu bytes" + +#: xmalloc.c:115 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:117 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: cannot allocate %lu bytes" + +#: xmalloc.c:151 +#, 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:153 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes" + +#: xmalloc.c:175 +#, 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:177 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:244 +msgid "`alias' with no arguments or with the -p option prints the list" +msgstr "‘alias’ with no arguments or with the -p option prints the list" + +#: builtins.c:245 +msgid "of aliases in the form alias NAME=VALUE on standard output." +msgstr "of aliases in the form alias NAME=VALUE on standard output." + +#: builtins.c:246 +msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +msgstr "Otherwise, an alias is defined for each NAME whose VALUE is given." + +#: builtins.c:247 +msgid "A trailing space in VALUE causes the next word to be checked for" +msgstr "A trailing space in VALUE causes the next word to be checked for" + +#: builtins.c:248 +msgid "alias substitution when the alias is expanded. Alias returns" +msgstr "alias substitution when the alias is expanded. Alias returns" + +#: builtins.c:249 +msgid "true unless a NAME is given for which no alias has been defined." +msgstr "true unless a NAME is given for which no alias has been defined." + +#: builtins.c:257 +msgid "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," +msgstr "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," + +#: builtins.c:258 +msgid "then remove all alias definitions." +msgstr "then remove all alias definitions." + +#: builtins.c:266 +msgid "Bind a key sequence to a Readline function or a macro, or set" +msgstr "Bind a key sequence to a Readline function or a macro, or set" + +#: builtins.c:267 +msgid "a Readline variable. The non-option argument syntax is equivalent" +msgstr "a Readline variable. The non-option argument syntax is equivalent" + +#: builtins.c:268 +msgid "to that found in ~/.inputrc, but must be passed as a single argument:" +msgstr "to that found in ~/.inputrc, but must be passed as a single argument:" + +#: builtins.c:269 +msgid "bind '\"\\C-x\\C-r\": re-read-init-file'." +msgstr "bind '“\\C-x\\C-r”: re-read-init-file'." + +#: builtins.c:270 +msgid "bind accepts the following options:" +msgstr "bind accepts the following options:" + +#: builtins.c:271 +msgid "" +" -m keymap Use `keymap' as the keymap for the duration of this" +msgstr "" +" -m keymap Use ‘keymap’ as the keymap for the duration of " +"this" + +#: builtins.c:272 +msgid " command. Acceptable keymap names are emacs," +msgstr " command. Acceptable keymap names are emacs," + +#: builtins.c:273 +msgid "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +msgstr "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#: builtins.c:274 +msgid " vi-command, and vi-insert." +msgstr " vi-command, and vi-insert." + +#: builtins.c:275 +msgid " -l List names of functions." +msgstr " -l List names of functions." + +#: builtins.c:276 +msgid " -P List function names and bindings." +msgstr " -P List function names and bindings." + +#: builtins.c:277 +msgid " -p List functions and bindings in a form that can be" +msgstr " -p List functions and bindings in a form that can be" + +#: builtins.c:278 +msgid " reused as input." +msgstr " reused as input." + +#: builtins.c:279 +msgid " -r keyseq Remove the binding for KEYSEQ." +msgstr " -r keyseq Remove the binding for KEYSEQ." + +#: builtins.c:280 +msgid " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" +msgstr " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" + +#: builtins.c:281 +msgid "\t\t\t\tKEYSEQ is entered." +msgstr "\t\t\t\tKEYSEQ is entered." + +#: builtins.c:282 +msgid " -f filename Read key bindings from FILENAME." +msgstr " -f filename Read key bindings from FILENAME." + +#: builtins.c:283 +msgid " -q function-name Query about which keys invoke the named function." +msgstr " -q function-name Query about which keys invoke the named function." + +#: builtins.c:284 +msgid "" +" -u function-name Unbind all keys which are bound to the named function." +msgstr "" +" -u function-name Unbind all keys which are bound to the named function." + +#: builtins.c:285 +msgid " -V List variable names and values" +msgstr " -V List variable names and values" + +#: builtins.c:286 +msgid " -v List variable names and values in a form that can" +msgstr " -v List variable names and values in a form that can" + +#: builtins.c:287 +msgid " be reused as input." +msgstr " be reused as input." + +#: builtins.c:288 +msgid "" +" -S List key sequences that invoke macros and their values" +msgstr "" +" -S List key sequences that invoke macros and their values" + +#: builtins.c:289 +msgid "" +" -s List key sequences that invoke macros and their values" +msgstr "" +" -s List key sequences that invoke macros and their values" + +#: builtins.c:290 +msgid " in a form that can be reused as input." +msgstr " in a form that can be reused as input." + +#: builtins.c:297 +msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +msgstr "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," + +#: builtins.c:298 +msgid "break N levels." +msgstr "break N levels." + +#: builtins.c:304 +msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +msgstr "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." + +#: builtins.c:305 +msgid "If N is specified, resume at the N-th enclosing loop." +msgstr "If N is specified, resume at the N-th enclosing loop." + +#: builtins.c:311 +msgid "Run a shell builtin. This is useful when you wish to rename a" +msgstr "Run a shell builtin. This is useful when you wish to rename a" + +#: builtins.c:312 +msgid "shell builtin to be a function, but need the functionality of the" +msgstr "shell builtin to be a function, but need the functionality of the" + +#: builtins.c:313 +msgid "builtin within the function itself." +msgstr "builtin within the function itself." + +#: builtins.c:334 +msgid "Change the current directory to DIR. The variable $HOME is the" +msgstr "Change the current directory to DIR. The variable $HOME is the" + +#: builtins.c:335 +msgid "default DIR. The variable CDPATH defines the search path for" +msgstr "default DIR. The variable CDPATH defines the search path for" + +#: builtins.c:336 +msgid "the directory containing DIR. Alternative directory names in CDPATH" +msgstr "the directory containing DIR. Alternative directory names in CDPATH" + +#: builtins.c:337 +msgid "are separated by a colon (:). A null directory name is the same as" +msgstr "are separated by a colon (:). A null directory name is the same as" + +#: builtins.c:338 +msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +msgstr "" +"the current directory, i.e. ‘.’. If DIR begins with a slash (/)," + +#: builtins.c:339 +msgid "then CDPATH is not used. If the directory is not found, and the" +msgstr "then CDPATH is not used. If the directory is not found, and the" + +#: builtins.c:340 +msgid "shell option `cdable_vars' is set, then try the word as a variable" +msgstr "" +"shell option ‘cdable_vars’ is set, then try the word as a variable" + +#: builtins.c:341 +msgid "name. If that variable has a value, then cd to the value of that" +msgstr "name. If that variable has a value, then cd to the value of that" + +#: builtins.c:342 +msgid "variable. The -P option says to use the physical directory structure" +msgstr "variable. The -P option says to use the physical directory structure" + +#: builtins.c:343 +msgid "" +"instead of following symbolic links; the -L option forces symbolic links" +msgstr "" +"instead of following symbolic links; the -L option forces symbolic links" + +#: builtins.c:344 +msgid "to be followed." +msgstr "to be followed." + +#: builtins.c:350 +msgid "Print the current working directory. With the -P option, pwd prints" +msgstr "Print the current working directory. With the -P option, pwd prints" + +#: builtins.c:351 +msgid "the physical directory, without any symbolic links; the -L option" +msgstr "the physical directory, without any symbolic links; the -L option" + +#: builtins.c:352 +msgid "makes pwd follow symbolic links." +msgstr "makes pwd follow symbolic links." + +#: builtins.c:358 +msgid "No effect; the command does nothing. A zero exit code is returned." +msgstr "No effect; the command does nothing. A zero exit code is returned." + +#: builtins.c:364 +msgid "Return a successful result." +msgstr "Return a successful result." + +#: builtins.c:370 +msgid "Return an unsuccessful result." +msgstr "Return an unsuccessful result." + +#: builtins.c:376 +msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +msgstr "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" + +#: builtins.c:377 +msgid "function called `ls', and you wish to call the command `ls', you can" +msgstr "" +"function called ‘ls’, and you wish to call the command ‘ls’, you " +"can" + +#: builtins.c:378 +msgid "say \"command ls\". If the -p option is given, a default value is used" +msgstr "" +"say “command ls”. If the -p option is given, a default value is used" + +#: builtins.c:379 +msgid "for PATH that is guaranteed to find all of the standard utilities. If" +msgstr "for PATH that is guaranteed to find all of the standard utilities. If" + +#: builtins.c:380 +msgid "the -V or -v option is given, a string is printed describing COMMAND." +msgstr "the -V or -v option is given, a string is printed describing COMMAND." + +#: builtins.c:381 +msgid "The -V option produces a more verbose description." +msgstr "The -V option produces a more verbose description." + +#: builtins.c:387 +msgid "Declare variables and/or give them attributes. If no NAMEs are" +msgstr "Declare variables and/or give them attributes. If no NAMEs are" + +#: builtins.c:388 +msgid "given, then display the values of variables instead. The -p option" +msgstr "given, then display the values of variables instead. The -p option" + +#: builtins.c:389 +msgid "will display the attributes and values of each NAME." +msgstr "will display the attributes and values of each NAME." + +#: builtins.c:391 +msgid "The flags are:" +msgstr "The flags are:" + +#: builtins.c:393 +msgid " -a\tto make NAMEs arrays (if supported)" +msgstr " -a\tto make NAMEs arrays (if supported)" + +#: builtins.c:394 +msgid " -f\tto select from among function names only" +msgstr " -f\tto select from among function names only" + +#: builtins.c:395 +msgid "" +" -F\tto display function names (and line number and source file name if" +msgstr "" +" -F\tto display function names (and line number and source file name if" + +#: builtins.c:396 +msgid "\tdebugging) without definitions" +msgstr "\tdebugging) without definitions" + +#: builtins.c:397 +msgid " -i\tto make NAMEs have the `integer' attribute" +msgstr " -i\tto make NAMEs have the ‘integer’ attribute" + +#: builtins.c:398 +msgid " -r\tto make NAMEs readonly" +msgstr " -r\tto make NAMEs readonly" + +#: builtins.c:399 +msgid " -t\tto make NAMEs have the `trace' attribute" +msgstr " -t\tto make NAMEs have the ‘trace’ attribute" + +#: builtins.c:400 +msgid " -x\tto make NAMEs export" +msgstr " -x\tto make NAMEs export" + +#: builtins.c:402 +msgid "Variables with the integer attribute have arithmetic evaluation (see" +msgstr "Variables with the integer attribute have arithmetic evaluation (see" + +#: builtins.c:403 +msgid "`let') done when the variable is assigned to." +msgstr "‘let’) done when the variable is assigned to." + +#: builtins.c:405 +msgid "When displaying values of variables, -f displays a function's name" +msgstr "When displaying values of variables, -f displays a function's name" + +#: builtins.c:406 +msgid "and definition. The -F option restricts the display to function" +msgstr "and definition. The -F option restricts the display to function" + +#: builtins.c:407 +msgid "name only." +msgstr "name only." + +#: builtins.c:409 +msgid "Using `+' instead of `-' turns off the given attribute instead. When" +msgstr "" +"Using ‘+’ instead of ‘-’ turns off the given attribute instead. " +"When" + +#: builtins.c:410 +msgid "used in a function, makes NAMEs local, as with the `local' command." +msgstr "" +"used in a function, makes NAMEs local, as with the ‘local’ command." + +#: builtins.c:416 +msgid "Obsolete. See `declare'." +msgstr "Obsolete. See ‘declare’." + +#: builtins.c:422 +msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +msgstr "Create a local variable called NAME, and give it VALUE. LOCAL" + +#: builtins.c:423 +msgid "can only be used within a function; it makes the variable NAME" +msgstr "can only be used within a function; it makes the variable NAME" + +#: builtins.c:424 +msgid "have a visible scope restricted to that function and its children." +msgstr "have a visible scope restricted to that function and its children." + +#: builtins.c:431 +msgid "Output the ARGs. If -n is specified, the trailing newline is" +msgstr "Output the ARGs. If -n is specified, the trailing newline is" + +#: builtins.c:432 +msgid "suppressed. If the -e option is given, interpretation of the" +msgstr "suppressed. If the -e option is given, interpretation of the" + +#: builtins.c:433 +msgid "following backslash-escaped characters is turned on:" +msgstr "following backslash-escaped characters is turned on:" + +#: builtins.c:434 +msgid "\t\\a\talert (bell)" +msgstr "\t\\a\talert (bell)" + +#: builtins.c:435 +msgid "\t\\b\tbackspace" +msgstr "\t\\b\tbackspace" + +#: builtins.c:436 +msgid "\t\\c\tsuppress trailing newline" +msgstr "\t\\c\tsuppress trailing newline" + +#: builtins.c:437 +msgid "\t\\E\tescape character" +msgstr "\t\\E\tescape character" + +#: builtins.c:438 +msgid "\t\\f\tform feed" +msgstr "\t\\f\tform feed" + +#: builtins.c:439 +msgid "\t\\n\tnew line" +msgstr "\t\\n\tnew line" + +#: builtins.c:440 +msgid "\t\\r\tcarriage return" +msgstr "\t\\r\tcarriage return" + +#: builtins.c:441 +msgid "\t\\t\thorizontal tab" +msgstr "\t\\t\thorizontal tab" + +#: builtins.c:442 +msgid "\t\\v\tvertical tab" +msgstr "\t\\v\tvertical tab" + +#: builtins.c:443 +msgid "\t\\\\\tbackslash" +msgstr "\t\\\\\tbackslash" + +#: builtins.c:444 +msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +msgstr "\t\\num\tthe character whose ASCII code is NUM (octal)." + +#: builtins.c:446 +msgid "You can explicitly turn off the interpretation of the above characters" +msgstr "You can explicitly turn off the interpretation of the above characters" + +#: builtins.c:447 +msgid "with the -E option." +msgstr "with the -E option." + +#: builtins.c:455 +msgid "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." +msgstr "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." + +#: builtins.c:462 +msgid "Enable and disable builtin shell commands. This allows" +msgstr "Enable and disable builtin shell commands. This allows" + +#: builtins.c:463 +msgid "you to use a disk command which has the same name as a shell" +msgstr "you to use a disk command which has the same name as a shell" + +#: builtins.c:464 +msgid "builtin without specifying a full pathname. If -n is used, the" +msgstr "builtin without specifying a full pathname. If -n is used, the" + +#: builtins.c:465 +msgid "NAMEs become disabled; otherwise NAMEs are enabled. For example," +msgstr "NAMEs become disabled; otherwise NAMEs are enabled. For example," + +#: builtins.c:466 +msgid "to use the `test' found in $PATH instead of the shell builtin" +msgstr "to use the ‘test’ found in $PATH instead of the shell builtin" + +#: builtins.c:467 +msgid "version, type `enable -n test'. On systems supporting dynamic" +msgstr "version, type ‘enable -n test’. On systems supporting dynamic" + +#: builtins.c:468 +msgid "loading, the -f option may be used to load new builtins from the" +msgstr "loading, the -f option may be used to load new builtins from the" + +#: builtins.c:469 +msgid "shared object FILENAME. The -d option will delete a builtin" +msgstr "shared object FILENAME. The -d option will delete a builtin" + +#: builtins.c:470 +msgid "previously loaded with -f. If no non-option names are given, or" +msgstr "previously loaded with -f. If no non-option names are given, or" + +#: builtins.c:471 +msgid "the -p option is supplied, a list of builtins is printed. The" +msgstr "the -p option is supplied, a list of builtins is printed. The" + +#: builtins.c:472 +msgid "-a option means to print every builtin with an indication of whether" +msgstr "-a option means to print every builtin with an indication of whether" + +#: builtins.c:473 +msgid "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" +msgstr "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" + +#: builtins.c:474 +msgid "" +"`special' builtins. The -n option displays a list of all disabled builtins." +msgstr "" +"‘special’ builtins. The -n option displays a list of all disabled " +"builtins." + +#: builtins.c:480 +msgid "Read ARGs as input to the shell and execute the resulting command(s)." +msgstr "Read ARGs as input to the shell and execute the resulting command(s)." + +#: builtins.c:486 +msgid "Getopts is used by shell procedures to parse positional parameters." +msgstr "Getopts is used by shell procedures to parse positional parameters." + +#: builtins.c:488 +msgid "OPTSTRING contains the option letters to be recognized; if a letter" +msgstr "OPTSTRING contains the option letters to be recognized; if a letter" + +#: builtins.c:489 +msgid "is followed by a colon, the option is expected to have an argument," +msgstr "is followed by a colon, the option is expected to have an argument," + +#: builtins.c:490 +msgid "which should be separated from it by white space." +msgstr "which should be separated from it by white space." + +#: builtins.c:492 +msgid "Each time it is invoked, getopts will place the next option in the" +msgstr "Each time it is invoked, getopts will place the next option in the" + +#: builtins.c:493 +msgid "shell variable $name, initializing name if it does not exist, and" +msgstr "shell variable $name, initializing name if it does not exist, and" + +#: builtins.c:494 +msgid "the index of the next argument to be processed into the shell" +msgstr "the index of the next argument to be processed into the shell" + +#: builtins.c:495 +msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +msgstr "variable OPTIND. OPTIND is initialized to 1 each time the shell or" + +#: builtins.c:496 +msgid "a shell script is invoked. When an option requires an argument," +msgstr "a shell script is invoked. When an option requires an argument," + +#: builtins.c:497 +msgid "getopts places that argument into the shell variable OPTARG." +msgstr "getopts places that argument into the shell variable OPTARG." + +#: builtins.c:499 +msgid "getopts reports errors in one of two ways. If the first character" +msgstr "getopts reports errors in one of two ways. If the first character" + +#: builtins.c:500 +msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +msgstr "of OPTSTRING is a colon, getopts uses silent error reporting. In" + +#: builtins.c:501 +msgid "this mode, no error messages are printed. If an invalid option is" +msgstr "this mode, no error messages are printed. If an invalid option is" + +#: builtins.c:502 +msgid "seen, getopts places the option character found into OPTARG. If a" +msgstr "seen, getopts places the option character found into OPTARG. If a" + +#: builtins.c:503 +msgid "required argument is not found, getopts places a ':' into NAME and" +msgstr "" +"required argument is not found, getopts places a ‘:’ into NAME and" + +#: builtins.c:504 +msgid "sets OPTARG to the option character found. If getopts is not in" +msgstr "sets OPTARG to the option character found. If getopts is not in" + +#: builtins.c:505 +msgid "silent mode, and an invalid option is seen, getopts places '?' into" +msgstr "" +"silent mode, and an invalid option is seen, getopts places ‘?’ into" + +#: builtins.c:506 +msgid "NAME and unsets OPTARG. If a required argument is not found, a '?'" +msgstr "" +"NAME and unsets OPTARG. If a required argument is not found, a ‘?’" + +#: builtins.c:507 +msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +msgstr "is placed in NAME, OPTARG is unset, and a diagnostic message is" + +#: builtins.c:508 +msgid "printed." +msgstr "printed." + +#: builtins.c:510 +msgid "If the shell variable OPTERR has the value 0, getopts disables the" +msgstr "If the shell variable OPTERR has the value 0, getopts disables the" + +#: builtins.c:511 +msgid "printing of error messages, even if the first character of" +msgstr "printing of error messages, even if the first character of" + +#: builtins.c:512 +msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +msgstr "OPTSTRING is not a colon. OPTERR has the value 1 by default." + +#: builtins.c:514 +msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +msgstr "Getopts normally parses the positional parameters ($0 - $9), but if" + +#: builtins.c:515 +msgid "more arguments are given, they are parsed instead." +msgstr "more arguments are given, they are parsed instead." + +#: builtins.c:521 +msgid "Exec FILE, replacing this shell with the specified program." +msgstr "Exec FILE, replacing this shell with the specified program." + +#: builtins.c:522 +msgid "If FILE is not specified, the redirections take effect in this" +msgstr "If FILE is not specified, the redirections take effect in this" + +#: builtins.c:523 +msgid "shell. If the first argument is `-l', then place a dash in the" +msgstr "shell. If the first argument is ‘-l’, then place a dash in the" + +#: builtins.c:524 +msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +msgstr "zeroth arg passed to FILE, as login does. If the ‘-c’ option" + +#: builtins.c:525 +msgid "is supplied, FILE is executed with a null environment. The `-a'" +msgstr "is supplied, FILE is executed with a null environment. The ‘-a’" + +#: builtins.c:526 +msgid "option means to make set argv[0] of the executed process to NAME." +msgstr "option means to make set argv[0] of the executed process to NAME." + +#: builtins.c:527 +msgid "If the file cannot be executed and the shell is not interactive," +msgstr "If the file cannot be executed and the shell is not interactive," + +#: builtins.c:528 +msgid "then the shell exits, unless the shell option `execfail' is set." +msgstr "then the shell exits, unless the shell option ‘execfail’ is set." + +#: builtins.c:534 +msgid "Exit the shell with a status of N. If N is omitted, the exit status" +msgstr "Exit the shell with a status of N. If N is omitted, the exit status" + +#: builtins.c:535 +msgid "is that of the last command executed." +msgstr "is that of the last command executed." + +#: builtins.c:541 +msgid "Logout of a login shell." +msgstr "Logout of a login shell." + +#: builtins.c:548 +msgid "" +"fc is used to list or edit and re-execute commands from the history list." +msgstr "" +"fc is used to list or edit and re-execute commands from the history list." + +#: builtins.c:549 +msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +msgstr "FIRST and LAST can be numbers specifying the range, or FIRST can be a" + +#: builtins.c:550 +msgid "string, which means the most recent command beginning with that" +msgstr "string, which means the most recent command beginning with that" + +#: builtins.c:551 +msgid "string." +msgstr "string." + +#: builtins.c:553 +msgid "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +msgstr "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," + +#: builtins.c:554 +msgid " then vi." +msgstr " then vi." + +#: builtins.c:556 +msgid " -l means list lines instead of editing." +msgstr " -l means list lines instead of editing." + +#: builtins.c:557 +msgid " -n means no line numbers listed." +msgstr " -n means no line numbers listed." + +#: builtins.c:558 +msgid "" +" -r means reverse the order of the lines (making it newest listed first)." +msgstr "" +" -r means reverse the order of the lines (making it newest listed first)." + +#: builtins.c:560 +msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +msgstr "With the ‘fc -s [pat=rep ...] [command]’ format, the command is" + +#: builtins.c:561 +msgid "re-executed after the substitution OLD=NEW is performed." +msgstr "re-executed after the substitution OLD=NEW is performed." + +#: builtins.c:563 +msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +msgstr "" +"A useful alias to use with this is r='fc -s', so that typing ‘r cc’" + +#: builtins.c:564 +msgid "runs the last command beginning with `cc' and typing `r' re-executes" +msgstr "" +"runs the last command beginning with ‘cc’ and typing ‘r’ re-" +"executes" + +#: builtins.c:565 +msgid "the last command." +msgstr "the last command." + +#: builtins.c:573 +msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +msgstr "Place JOB_SPEC in the foreground, and make it the current job. If" + +#: builtins.c:574 +msgid "JOB_SPEC is not present, the shell's notion of the current job is" +msgstr "JOB_SPEC is not present, the shell's notion of the current job is" + +#: builtins.c:575 +msgid "used." +msgstr "used." + +#: builtins.c:583 +msgid "Place JOB_SPEC in the background, as if it had been started with" +msgstr "Place JOB_SPEC in the background, as if it had been started with" + +#: builtins.c:584 +msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +msgstr "" +"‘&’. If JOB_SPEC is not present, the shell's notion of the current" + +#: builtins.c:585 +msgid "job is used." +msgstr "job is used." + +#: builtins.c:592 +msgid "For each NAME, the full pathname of the command is determined and" +msgstr "For each NAME, the full pathname of the command is determined and" + +#: builtins.c:593 +msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +msgstr "remembered. If the -p option is supplied, PATHNAME is used as the" + +#: builtins.c:594 +msgid "full pathname of NAME, and no path search is performed. The -r" +msgstr "full pathname of NAME, and no path search is performed. The -r" + +#: builtins.c:595 +msgid "option causes the shell to forget all remembered locations. The -d" +msgstr "option causes the shell to forget all remembered locations. The -d" + +#: builtins.c:596 +msgid "option causes the shell to forget the remembered location of each NAME." +msgstr "" +"option causes the shell to forget the remembered location of each NAME." + +#: builtins.c:597 +msgid "If the -t option is supplied the full pathname to which each NAME" +msgstr "If the -t option is supplied the full pathname to which each NAME" + +#: builtins.c:598 +msgid "corresponds is printed. If multiple NAME arguments are supplied with" +msgstr "corresponds is printed. If multiple NAME arguments are supplied with" + +#: builtins.c:599 +msgid "-t, the NAME is printed before the hashed full pathname. The -l option" +msgstr "" +"-t, the NAME is printed before the hashed full pathname. The -l option" + +#: builtins.c:600 +msgid "causes output to be displayed in a format that may be reused as input." +msgstr "causes output to be displayed in a format that may be reused as input." + +#: builtins.c:601 +msgid "" +"If no arguments are given, information about remembered commands is " +"displayed." +msgstr "" +"If no arguments are given, information about remembered commands is " +"displayed." + +#: builtins.c:608 +msgid "Display helpful information about builtin commands. If PATTERN is" +msgstr "Display helpful information about builtin commands. If PATTERN is" + +#: builtins.c:609 +msgid "specified, gives detailed help on all commands matching PATTERN," +msgstr "specified, gives detailed help on all commands matching PATTERN," + +#: builtins.c:610 +msgid "otherwise a list of the builtins is printed. The -s option" +msgstr "otherwise a list of the builtins is printed. The -s option" + +#: builtins.c:611 +msgid "restricts the output for each builtin command matching PATTERN to" +msgstr "restricts the output for each builtin command matching PATTERN to" + +#: builtins.c:612 +msgid "a short usage synopsis." +msgstr "a short usage synopsis." + +#: builtins.c:620 +msgid "Display the history list with line numbers. Lines listed with" +msgstr "Display the history list with line numbers. Lines listed with" + +#: builtins.c:621 +msgid "with a `*' have been modified. Argument of N says to list only" +msgstr "with a ‘*’ have been modified. Argument of N says to list only" + +#: builtins.c:622 +msgid "the last N lines. The `-c' option causes the history list to be" +msgstr "the last N lines. The ‘-c’ option causes the history list to be" + +#: builtins.c:623 +msgid "cleared by deleting all of the entries. The `-d' option deletes" +msgstr "cleared by deleting all of the entries. The ‘-d’ option deletes" + +#: builtins.c:624 +msgid "the history entry at offset OFFSET. The `-w' option writes out the" +msgstr "" +"the history entry at offset OFFSET. The ‘-w’ option writes out the" + +#: builtins.c:625 +msgid "current history to the history file; `-r' means to read the file and" +msgstr "" +"current history to the history file; ‘-r’ means to read the file and" + +#: builtins.c:626 +msgid "append the contents to the history list instead. `-a' means" +msgstr "append the contents to the history list instead. ‘-a’ means" + +#: builtins.c:627 +msgid "to append history lines from this session to the history file." +msgstr "to append history lines from this session to the history file." + +#: builtins.c:628 +msgid "Argument `-n' means to read all history lines not already read" +msgstr "Argument ‘-n’ means to read all history lines not already read" + +#: builtins.c:629 +msgid "from the history file and append them to the history list." +msgstr "from the history file and append them to the history list." + +#: builtins.c:631 +msgid "If FILENAME is given, then that is used as the history file else" +msgstr "If FILENAME is given, then that is used as the history file else" + +#: builtins.c:632 +msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +msgstr "if $HISTFILE has a value, that is used, else ~/.bash_history." + +#: builtins.c:633 +msgid "If the -s option is supplied, the non-option ARGs are appended to" +msgstr "If the -s option is supplied, the non-option ARGs are appended to" + +#: builtins.c:634 +msgid "the history list as a single entry. The -p option means to perform" +msgstr "the history list as a single entry. The -p option means to perform" + +#: builtins.c:635 +msgid "history expansion on each ARG and display the result, without storing" +msgstr "history expansion on each ARG and display the result, without storing" + +#: builtins.c:636 +msgid "anything in the history list." +msgstr "anything in the history list." + +#: builtins.c:638 +msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used" +msgstr "If the $HISTTIMEFORMAT variable is set and not null, its value is used" + +#: builtins.c:639 +msgid "as a format string for strftime(3) to print the time stamp associated" +msgstr "as a format string for strftime(3) to print the time stamp associated" + +#: builtins.c:640 +msgid "" +"with each displayed history entry. No time stamps are printed otherwise." +msgstr "" +"with each displayed history entry. No time stamps are printed otherwise." + +#: builtins.c:648 +msgid "Lists the active jobs. The -l option lists process id's in addition" +msgstr "Lists the active jobs. The -l option lists process id's in addition" + +#: builtins.c:649 +msgid "to the normal information; the -p option lists process id's only." +msgstr "to the normal information; the -p option lists process id's only." + +#: builtins.c:650 +msgid "If -n is given, only processes that have changed status since the last" +msgstr "If -n is given, only processes that have changed status since the last" + +#: builtins.c:651 +msgid "notification are printed. JOBSPEC restricts output to that job. The" +msgstr "notification are printed. JOBSPEC restricts output to that job. The" + +#: builtins.c:652 +msgid "-r and -s options restrict output to running and stopped jobs only," +msgstr "-r and -s options restrict output to running and stopped jobs only," + +#: builtins.c:653 +msgid "respectively. Without options, the status of all active jobs is" +msgstr "respectively. Without options, the status of all active jobs is" + +#: builtins.c:654 +msgid "printed. If -x is given, COMMAND is run after all job specifications" +msgstr "printed. If -x is given, COMMAND is run after all job specifications" + +#: builtins.c:655 +msgid "" +"that appear in ARGS have been replaced with the process ID of that job's" +msgstr "" +"that appear in ARGS have been replaced with the process ID of that job's" + +#: builtins.c:656 +msgid "process group leader." +msgstr "process group leader." + +#: builtins.c:664 +msgid "" +"By default, removes each JOBSPEC argument from the table of active jobs." +msgstr "" +"By default, removes each JOBSPEC argument from the table of active jobs." + +#: builtins.c:665 +msgid "" +"If the -h option is given, the job is not removed from the table, but is" +msgstr "" +"If the -h option is given, the job is not removed from the table, but is" + +#: builtins.c:666 +msgid "marked so that SIGHUP is not sent to the job if the shell receives a" +msgstr "marked so that SIGHUP is not sent to the job if the shell receives a" + +#: builtins.c:667 +msgid "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" +msgstr "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" + +#: builtins.c:668 +msgid "" +"jobs from the job table; the -r option means to remove only running jobs." +msgstr "" +"jobs from the job table; the -r option means to remove only running jobs." + +#: builtins.c:675 +msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +msgstr "Send the processes named by PID (or JOB) the signal SIGSPEC. If" + +#: builtins.c:676 +msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +msgstr "" +"SIGSPEC is not present, then SIGTERM is assumed. An argument of ‘-l’" + +#: builtins.c:677 +msgid "lists the signal names; if arguments follow `-l' they are assumed to" +msgstr "" +"lists the signal names; if arguments follow ‘-l’ they are assumed to" + +#: builtins.c:678 +msgid "be signal numbers for which names should be listed. Kill is a shell" +msgstr "be signal numbers for which names should be listed. Kill is a shell" + +#: builtins.c:679 +msgid "builtin for two reasons: it allows job IDs to be used instead of" +msgstr "builtin for two reasons: it allows job IDs to be used instead of" + +#: builtins.c:680 +msgid "process IDs, and, if you have reached the limit on processes that" +msgstr "process IDs, and, if you have reached the limit on processes that" + +#: builtins.c:681 +msgid "you can create, you don't have to start a process to kill another one." +msgstr "you can create, you don't have to start a process to kill another one." + +#: builtins.c:687 +msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +msgstr "Each ARG is an arithmetic expression to be evaluated. Evaluation" + +#: builtins.c:688 +msgid "is done in fixed-width integers with no check for overflow, though" +msgstr "is done in fixed-width integers with no check for overflow, though" + +#: builtins.c:689 +msgid "division by 0 is trapped and flagged as an error. The following" +msgstr "division by 0 is trapped and flagged as an error. The following" + +#: builtins.c:690 +msgid "list of operators is grouped into levels of equal-precedence operators." +msgstr "" +"list of operators is grouped into levels of equal-precedence operators." + +#: builtins.c:691 +msgid "The levels are listed in order of decreasing precedence." +msgstr "The levels are listed in order of decreasing precedence." + +#: builtins.c:693 +msgid "\tid++, id--\tvariable post-increment, post-decrement" +msgstr "\tid++, id--\tvariable post-increment, post-decrement" + +#: builtins.c:694 +msgid "\t++id, --id\tvariable pre-increment, pre-decrement" +msgstr "\t++id, --id\tvariable pre-increment, pre-decrement" + +#: builtins.c:695 +msgid "\t-, +\t\tunary minus, plus" +msgstr "\t-, +\t\tunary minus, plus" + +#: builtins.c:696 +msgid "\t!, ~\t\tlogical and bitwise negation" +msgstr "\t!, ~\t\tlogical and bitwise negation" + +#: builtins.c:697 +msgid "\t**\t\texponentiation" +msgstr "\t**\t\texponentiation" + +#: builtins.c:698 +msgid "\t*, /, %\t\tmultiplication, division, remainder" +msgstr "\t*, /, %\t\tmultiplication, division, remainder" + +#: builtins.c:699 +msgid "\t+, -\t\taddition, subtraction" +msgstr "\t+, -\t\taddition, subtraction" + +#: builtins.c:700 +msgid "\t<<, >>\t\tleft and right bitwise shifts" +msgstr "\t<<, >>\t\tleft and right bitwise shifts" + +#: builtins.c:701 +msgid "\t<=, >=, <, >\tcomparison" +msgstr "\t<=, >=, <, >\tcomparison" + +#: builtins.c:702 +msgid "\t==, !=\t\tequality, inequality" +msgstr "\t==, !=\t\tequality, inequality" + +#: builtins.c:703 +msgid "\t&\t\tbitwise AND" +msgstr "\t&\t\tbitwise AND" + +#: builtins.c:704 +msgid "\t^\t\tbitwise XOR" +msgstr "\t^\t\tbitwise XOR" + +#: builtins.c:705 +msgid "\t|\t\tbitwise OR" +msgstr "\t|\t\tbitwise OR" + +#: builtins.c:706 +msgid "\t&&\t\tlogical AND" +msgstr "\t&&\t\tlogical AND" + +#: builtins.c:707 +msgid "\t||\t\tlogical OR" +msgstr "\t||\t\tlogical OR" + +#: builtins.c:708 +msgid "\texpr ? expr : expr" +msgstr "\texpr ? expr : expr" + +#: builtins.c:709 +msgid "\t\t\tconditional operator" +msgstr "\t\t\tconditional operator" + +#: builtins.c:710 +msgid "\t=, *=, /=, %=," +msgstr "\t=, *=, /=, %=," + +#: builtins.c:711 +msgid "\t+=, -=, <<=, >>=," +msgstr "\t+=, -=, <<=, >>=," + +#: builtins.c:712 +msgid "\t&=, ^=, |=\tassignment" +msgstr "\t&=, ^=, |=\tassignment" + +#: builtins.c:714 +msgid "Shell variables are allowed as operands. The name of the variable" +msgstr "Shell variables are allowed as operands. The name of the variable" + +#: builtins.c:715 +msgid "is replaced by its value (coerced to a fixed-width integer) within" +msgstr "is replaced by its value (coerced to a fixed-width integer) within" + +#: builtins.c:716 +msgid "an expression. The variable need not have its integer attribute" +msgstr "an expression. The variable need not have its integer attribute" + +#: builtins.c:717 +msgid "turned on to be used in an expression." +msgstr "turned on to be used in an expression." + +#: builtins.c:719 +msgid "Operators are evaluated in order of precedence. Sub-expressions in" +msgstr "Operators are evaluated in order of precedence. Sub-expressions in" + +#: builtins.c:720 +msgid "parentheses are evaluated first and may override the precedence" +msgstr "parentheses are evaluated first and may override the precedence" + +#: builtins.c:721 +msgid "rules above." +msgstr "rules above." + +#: builtins.c:723 +msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +msgstr "If the last ARG evaluates to 0, let returns 1; 0 is returned" + +#: builtins.c:724 +msgid "otherwise." +msgstr "otherwise." + +#: builtins.c:730 +msgid "" +"One line is read from the standard input, or from file descriptor FD if the" +msgstr "" +"One line is read from the standard input, or from file descriptor FD if the" + +#: builtins.c:731 +msgid "" +"-u option is supplied, and the first word is assigned to the first NAME," +msgstr "" +"-u option is supplied, and the first word is assigned to the first NAME," + +#: builtins.c:732 +msgid "" +"the second word to the second NAME, and so on, with leftover words assigned" +msgstr "" +"the second word to the second NAME, and so on, with leftover words assigned" + +#: builtins.c:733 +msgid "" +"to the last NAME. Only the characters found in $IFS are recognized as word" +msgstr "" +"to the last NAME. Only the characters found in $IFS are recognized as word" + +#: builtins.c:734 +msgid "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" +msgstr "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" + +#: builtins.c:735 +msgid "variable. If the -r option is given, this signifies `raw' input, and" +msgstr "" +"variable. If the -r option is given, this signifies ‘raw’ input, and" + +#: builtins.c:736 +msgid "backslash escaping is disabled. The -d option causes read to continue" +msgstr "backslash escaping is disabled. The -d option causes read to continue" + +#: builtins.c:737 +msgid "" +"until the first character of DELIM is read, rather than newline. If the -p" +msgstr "" +"until the first character of DELIM is read, rather than newline. If the -p" + +#: builtins.c:738 +msgid "" +"option is supplied, the string PROMPT is output without a trailing newline" +msgstr "" +"option is supplied, the string PROMPT is output without a trailing newline" + +#: builtins.c:739 +msgid "" +"before attempting to read. If -a is supplied, the words read are assigned" +msgstr "" +"before attempting to read. If -a is supplied, the words read are assigned" + +#: builtins.c:740 +msgid "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" +msgstr "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" + +#: builtins.c:741 +msgid "" +"the shell is interactive, readline is used to obtain the line. If -n is" +msgstr "" +"the shell is interactive, readline is used to obtain the line. If -n is" + +#: builtins.c:742 +msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS" +msgstr "supplied with a non-zero NCHARS argument, read returns after NCHARS" + +#: builtins.c:743 +msgid "characters have been read. The -s option causes input coming from a" +msgstr "characters have been read. The -s option causes input coming from a" + +#: builtins.c:744 +msgid "terminal to not be echoed." +msgstr "terminal to not be echoed." + +#: builtins.c:746 +msgid "" +"The -t option causes read to time out and return failure if a complete line" +msgstr "" +"The -t option causes read to time out and return failure if a complete line" + +#: builtins.c:747 +msgid "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," +msgstr "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," + +#: builtins.c:748 +msgid "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" +msgstr "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" + +#: builtins.c:749 +msgid "" +"is encountered, read times out, or an invalid file descriptor is supplied as" +msgstr "" +"is encountered, read times out, or an invalid file descriptor is supplied as" + +#: builtins.c:750 +msgid "the argument to -u." +msgstr "the argument to -u." + +#: builtins.c:756 +msgid "Causes a function to exit with the return value specified by N. If N" +msgstr "Causes a function to exit with the return value specified by N. If N" + +#: builtins.c:757 +msgid "is omitted, the return status is that of the last command." +msgstr "is omitted, the return status is that of the last command." + +#: builtins.c:763 +msgid " -a Mark variables which are modified or created for export." +msgstr " -a Mark variables which are modified or created for export." + +#: builtins.c:764 +msgid " -b Notify of job termination immediately." +msgstr " -b Notify of job termination immediately." + +#: builtins.c:765 +msgid " -e Exit immediately if a command exits with a non-zero status." +msgstr " -e Exit immediately if a command exits with a non-zero status." + +#: builtins.c:766 +msgid " -f Disable file name generation (globbing)." +msgstr " -f Disable file name generation (globbing)." + +#: builtins.c:767 +msgid " -h Remember the location of commands as they are looked up." +msgstr " -h Remember the location of commands as they are looked up." + +#: builtins.c:768 +msgid " -k All assignment arguments are placed in the environment for a" +msgstr " -k All assignment arguments are placed in the environment for a" + +#: builtins.c:769 +msgid " command, not just those that precede the command name." +msgstr " command, not just those that precede the command name." + +#: builtins.c:770 +msgid " -m Job control is enabled." +msgstr " -m Job control is enabled." + +#: builtins.c:771 +msgid " -n Read commands but do not execute them." +msgstr " -n Read commands but do not execute them." + +#: builtins.c:772 +msgid " -o option-name" +msgstr " -o option-name" + +#: builtins.c:773 +msgid " Set the variable corresponding to option-name:" +msgstr " Set the variable corresponding to option-name:" + +#: builtins.c:774 +msgid " allexport same as -a" +msgstr " allexport same as -a" + +#: builtins.c:775 +msgid " braceexpand same as -B" +msgstr " braceexpand same as -B" + +#: builtins.c:777 +msgid " emacs use an emacs-style line editing interface" +msgstr " emacs use an emacs-style line editing interface" + +#: builtins.c:779 +msgid " errexit same as -e" +msgstr " errexit same as -e" + +#: builtins.c:780 +msgid " errtrace same as -E" +msgstr " errtrace same as -E" + +#: builtins.c:781 +msgid " functrace same as -T" +msgstr " functrace same as -T" + +#: builtins.c:782 +msgid " hashall same as -h" +msgstr " hashall same as -h" + +#: builtins.c:784 +msgid " histexpand same as -H" +msgstr " histexpand same as -H" + +#: builtins.c:787 +msgid " history enable command history" +msgstr " history enable command history" + +#: builtins.c:789 +msgid " ignoreeof the shell will not exit upon reading EOF" +msgstr " ignoreeof the shell will not exit upon reading EOF" + +#: builtins.c:790 +msgid " interactive-comments" +msgstr " interactive-comments" + +#: builtins.c:791 +msgid "" +" allow comments to appear in interactive commands" +msgstr "" +" allow comments to appear in interactive commands" + +#: builtins.c:792 +msgid " keyword same as -k" +msgstr " keyword same as -k" + +#: builtins.c:793 +msgid " monitor same as -m" +msgstr " monitor same as -m" + +#: builtins.c:794 +msgid " noclobber same as -C" +msgstr " noclobber same as -C" + +#: builtins.c:795 +msgid " noexec same as -n" +msgstr " noexec same as -n" + +#: builtins.c:796 +msgid " noglob same as -f" +msgstr " noglob same as -f" + +#: builtins.c:797 +msgid " nolog currently accepted but ignored" +msgstr " nolog currently accepted but ignored" + +#: builtins.c:798 +msgid " notify same as -b" +msgstr " notify same as -b" + +#: builtins.c:799 +msgid " nounset same as -u" +msgstr " nounset same as -u" + +#: builtins.c:800 +msgid " onecmd same as -t" +msgstr " onecmd same as -t" + +#: builtins.c:801 +msgid " physical same as -P" +msgstr " physical same as -P" + +#: builtins.c:802 +msgid "" +" pipefail the return value of a pipeline is the status of" +msgstr "" +" pipefail the return value of a pipeline is the status of" + +#: builtins.c:803 +msgid "" +" the last command to exit with a non-zero status," +msgstr "" +" the last command to exit with a non-zero status," + +#: builtins.c:804 +msgid "" +" or zero if no command exited with a non-zero status" +msgstr "" +" or zero if no command exited with a non-zero status" + +#: builtins.c:805 +msgid " posix change the behavior of bash where the default" +msgstr " posix change the behavior of bash where the default" + +#: builtins.c:806 +msgid " operation differs from the 1003.2 standard to" +msgstr " operation differs from the 1003.2 standard to" + +#: builtins.c:807 +msgid " match the standard" +msgstr " match the standard" + +#: builtins.c:808 +msgid " privileged same as -p" +msgstr " privileged same as -p" + +#: builtins.c:809 +msgid " verbose same as -v" +msgstr " verbose same as -v" + +#: builtins.c:811 +msgid " vi use a vi-style line editing interface" +msgstr " vi use a vi-style line editing interface" + +#: builtins.c:813 +msgid " xtrace same as -x" +msgstr " xtrace same as -x" + +#: builtins.c:814 +msgid "" +" -p Turned on whenever the real and effective user ids do not match." +msgstr "" +" -p Turned on whenever the real and effective user ids do not match." + +#: builtins.c:815 +msgid " Disables processing of the $ENV file and importing of shell" +msgstr " Disables processing of the $ENV file and importing of shell" + +#: builtins.c:816 +msgid "" +" functions. Turning this option off causes the effective uid and" +msgstr "" +" functions. Turning this option off causes the effective uid and" + +#: builtins.c:817 +msgid " gid to be set to the real uid and gid." +msgstr " gid to be set to the real uid and gid." + +#: builtins.c:818 +msgid " -t Exit after reading and executing one command." +msgstr " -t Exit after reading and executing one command." + +#: builtins.c:819 +msgid " -u Treat unset variables as an error when substituting." +msgstr " -u Treat unset variables as an error when substituting." + +#: builtins.c:820 +msgid " -v Print shell input lines as they are read." +msgstr " -v Print shell input lines as they are read." + +#: builtins.c:821 +msgid " -x Print commands and their arguments as they are executed." +msgstr " -x Print commands and their arguments as they are executed." + +#: builtins.c:823 +msgid " -B the shell will perform brace expansion" +msgstr " -B the shell will perform brace expansion" + +#: builtins.c:825 +msgid " -C If set, disallow existing regular files to be overwritten" +msgstr " -C If set, disallow existing regular files to be overwritten" + +#: builtins.c:826 +msgid " by redirection of output." +msgstr " by redirection of output." + +#: builtins.c:827 +msgid " -E If set, the ERR trap is inherited by shell functions." +msgstr " -E If set, the ERR trap is inherited by shell functions." + +#: builtins.c:829 +msgid " -H Enable ! style history substitution. This flag is on" +msgstr " -H Enable ! style history substitution. This flag is on" + +#: builtins.c:830 +msgid " by default." +msgstr " by default." + +#: builtins.c:832 +msgid " -P If set, do not follow symbolic links when executing commands" +msgstr " -P If set, do not follow symbolic links when executing commands" + +#: builtins.c:833 +msgid " such as cd which change the current directory." +msgstr " such as cd which change the current directory." + +#: builtins.c:834 +msgid " -T If set, the DEBUG trap is inherited by shell functions." +msgstr " -T If set, the DEBUG trap is inherited by shell functions." + +#: builtins.c:836 +msgid "Using + rather than - causes these flags to be turned off. The" +msgstr "Using + rather than - causes these flags to be turned off. The" + +#: builtins.c:837 +msgid "flags can also be used upon invocation of the shell. The current" +msgstr "flags can also be used upon invocation of the shell. The current" + +#: builtins.c:838 +msgid "set of flags may be found in $-. The remaining n ARGs are positional" +msgstr "set of flags may be found in $-. The remaining n ARGs are positional" + +#: builtins.c:839 +msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +msgstr "parameters and are assigned, in order, to $1, $2, .. $n. If no" + +#: builtins.c:840 +msgid "ARGs are given, all shell variables are printed." +msgstr "ARGs are given, all shell variables are printed." + +#: builtins.c:846 +msgid "For each NAME, remove the corresponding variable or function. Given" +msgstr "For each NAME, remove the corresponding variable or function. Given" + +#: builtins.c:847 +msgid "the `-v', unset will only act on variables. Given the `-f' flag," +msgstr "" +"the ‘-v’, unset will only act on variables. Given the ‘-f’ flag," + +#: builtins.c:848 +msgid "unset will only act on functions. With neither flag, unset first" +msgstr "unset will only act on functions. With neither flag, unset first" + +#: builtins.c:849 +msgid "tries to unset a variable, and if that fails, then tries to unset a" +msgstr "tries to unset a variable, and if that fails, then tries to unset a" + +#: builtins.c:850 +msgid "function. Some variables cannot be unset; also see readonly." +msgstr "function. Some variables cannot be unset; also see readonly." + +#: builtins.c:856 +msgid "NAMEs are marked for automatic export to the environment of" +msgstr "NAMEs are marked for automatic export to the environment of" + +#: builtins.c:857 +msgid "subsequently executed commands. If the -f option is given," +msgstr "subsequently executed commands. If the -f option is given," + +#: builtins.c:858 +msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +msgstr "the NAMEs refer to functions. If no NAMEs are given, or if ‘-p’" + +#: builtins.c:859 +msgid "is given, a list of all names that are exported in this shell is" +msgstr "is given, a list of all names that are exported in this shell is" + +#: builtins.c:860 +msgid "printed. An argument of `-n' says to remove the export property" +msgstr "printed. An argument of ‘-n’ says to remove the export property" + +#: builtins.c:861 +msgid "from subsequent NAMEs. An argument of `--' disables further option" +msgstr "" +"from subsequent NAMEs. An argument of ‘--’ disables further option" + +#: builtins.c:862 builtins.c:874 +msgid "processing." +msgstr "processing." + +#: builtins.c:868 +msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +msgstr "The given NAMEs are marked readonly and the values of these NAMEs may" + +#: builtins.c:869 +msgid "not be changed by subsequent assignment. If the -f option is given," +msgstr "not be changed by subsequent assignment. If the -f option is given," + +#: builtins.c:870 +msgid "then functions corresponding to the NAMEs are so marked. If no" +msgstr "then functions corresponding to the NAMEs are so marked. If no" + +#: builtins.c:871 +msgid "arguments are given, or if `-p' is given, a list of all readonly names" +msgstr "" +"arguments are given, or if ‘-p’ is given, a list of all readonly names" + +#: builtins.c:872 +msgid "is printed. The `-a' option means to treat each NAME as" +msgstr "is printed. The ‘-a’ option means to treat each NAME as" + +#: builtins.c:873 +msgid "an array variable. An argument of `--' disables further option" +msgstr "an array variable. An argument of ‘--’ disables further option" + +#: builtins.c:880 +msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +msgstr "The positional parameters from $N+1 ... are renamed to $1 ... If N is" + +#: builtins.c:881 +msgid "not given, it is assumed to be 1." +msgstr "not given, it is assumed to be 1." + +#: builtins.c:887 builtins.c:896 +msgid "Read and execute commands from FILENAME and return. The pathnames" +msgstr "Read and execute commands from FILENAME and return. The pathnames" + +#: builtins.c:888 builtins.c:897 +msgid "in $PATH are used to find the directory containing FILENAME. If any" +msgstr "in $PATH are used to find the directory containing FILENAME. If any" + +#: builtins.c:889 builtins.c:898 +msgid "ARGUMENTS are supplied, they become the positional parameters when" +msgstr "ARGUMENTS are supplied, they become the positional parameters when" + +#: builtins.c:890 builtins.c:899 +msgid "FILENAME is executed." +msgstr "FILENAME is executed." + +#: builtins.c:906 +msgid "Suspend the execution of this shell until it receives a SIGCONT" +msgstr "Suspend the execution of this shell until it receives a SIGCONT" + +#: builtins.c:907 +msgid "signal. The `-f' if specified says not to complain about this" +msgstr "signal. The ‘-f’ if specified says not to complain about this" + +#: builtins.c:908 +msgid "being a login shell if it is; just suspend anyway." +msgstr "being a login shell if it is; just suspend anyway." + +#: builtins.c:915 +msgid "Exits with a status of 0 (true) or 1 (false) depending on" +msgstr "Exits with a status of 0 (true) or 1 (false) depending on" + +#: builtins.c:916 +msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +msgstr "the evaluation of EXPR. Expressions may be unary or binary. Unary" + +#: builtins.c:917 +msgid "expressions are often used to examine the status of a file. There" +msgstr "expressions are often used to examine the status of a file. There" + +#: builtins.c:918 +msgid "are string operators as well, and numeric comparison operators." +msgstr "are string operators as well, and numeric comparison operators." + +#: builtins.c:920 +msgid "File operators:" +msgstr "File operators:" + +#: builtins.c:922 +msgid " -a FILE True if file exists." +msgstr " -a FILE True if file exists." + +#: builtins.c:923 +msgid " -b FILE True if file is block special." +msgstr " -b FILE True if file is block special." + +#: builtins.c:924 +msgid " -c FILE True if file is character special." +msgstr " -c FILE True if file is character special." + +#: builtins.c:925 +msgid " -d FILE True if file is a directory." +msgstr " -d FILE True if file is a directory." + +#: builtins.c:926 +msgid " -e FILE True if file exists." +msgstr " -e FILE True if file exists." + +#: builtins.c:927 +msgid " -f FILE True if file exists and is a regular file." +msgstr " -f FILE True if file exists and is a regular file." + +#: builtins.c:928 +msgid " -g FILE True if file is set-group-id." +msgstr " -g FILE True if file is set-group-id." + +#: builtins.c:929 +msgid " -h FILE True if file is a symbolic link." +msgstr " -h FILE True if file is a symbolic link." + +#: builtins.c:930 +msgid " -L FILE True if file is a symbolic link." +msgstr " -L FILE True if file is a symbolic link." + +#: builtins.c:931 +msgid " -k FILE True if file has its `sticky' bit set." +msgstr " -k FILE True if file has its ‘sticky’ bit set." + +#: builtins.c:932 +msgid " -p FILE True if file is a named pipe." +msgstr " -p FILE True if file is a named pipe." + +#: builtins.c:933 +msgid " -r FILE True if file is readable by you." +msgstr " -r FILE True if file is readable by you." + +#: builtins.c:934 +msgid " -s FILE True if file exists and is not empty." +msgstr " -s FILE True if file exists and is not empty." + +#: builtins.c:935 +msgid " -S FILE True if file is a socket." +msgstr " -S FILE True if file is a socket." + +#: builtins.c:936 +msgid " -t FD True if FD is opened on a terminal." +msgstr " -t FD True if FD is opened on a terminal." + +#: builtins.c:937 +msgid " -u FILE True if the file is set-user-id." +msgstr " -u FILE True if the file is set-user-id." + +#: builtins.c:938 +msgid " -w FILE True if the file is writable by you." +msgstr " -w FILE True if the file is writable by you." + +#: builtins.c:939 +msgid " -x FILE True if the file is executable by you." +msgstr " -x FILE True if the file is executable by you." + +#: builtins.c:940 +msgid " -O FILE True if the file is effectively owned by you." +msgstr " -O FILE True if the file is effectively owned by you." + +#: builtins.c:941 +msgid " -G FILE True if the file is effectively owned by your group." +msgstr "" +" -G FILE True if the file is effectively owned by your group." + +#: builtins.c:942 +msgid "" +" -N FILE True if the file has been modified since it was last read." +msgstr "" +" -N FILE True if the file has been modified since it was last read." + +#: builtins.c:944 +msgid " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" +msgstr " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" + +#: builtins.c:945 +msgid " modification date)." +msgstr " modification date)." + +#: builtins.c:947 +msgid " FILE1 -ot FILE2 True if file1 is older than file2." +msgstr " FILE1 -ot FILE2 True if file1 is older than file2." + +#: builtins.c:949 +msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +msgstr " FILE1 -ef FILE2 True if file1 is a hard link to file2." + +#: builtins.c:951 +msgid "String operators:" +msgstr "String operators:" + +#: builtins.c:953 +msgid " -z STRING True if string is empty." +msgstr " -z STRING True if string is empty." + +#: builtins.c:955 +msgid " -n STRING" +msgstr " -n STRING" + +#: builtins.c:956 +msgid " STRING True if string is not empty." +msgstr " STRING True if string is not empty." + +#: builtins.c:958 +msgid " STRING1 = STRING2" +msgstr " STRING1 = STRING2" + +#: builtins.c:959 +msgid " True if the strings are equal." +msgstr " True if the strings are equal." + +#: builtins.c:960 +msgid " STRING1 != STRING2" +msgstr " STRING1 != STRING2" + +#: builtins.c:961 +msgid " True if the strings are not equal." +msgstr " True if the strings are not equal." + +#: builtins.c:962 +msgid " STRING1 < STRING2" +msgstr " STRING1 < STRING2" + +#: builtins.c:963 +msgid "" +" True if STRING1 sorts before STRING2 lexicographically." +msgstr "" +" True if STRING1 sorts before STRING2 lexicographically." + +#: builtins.c:964 +msgid " STRING1 > STRING2" +msgstr " STRING1 > STRING2" + +#: builtins.c:965 +msgid "" +" True if STRING1 sorts after STRING2 lexicographically." +msgstr "" +" True if STRING1 sorts after STRING2 lexicographically." + +#: builtins.c:967 +msgid "Other operators:" +msgstr "Other operators:" + +#: builtins.c:969 +msgid " -o OPTION True if the shell option OPTION is enabled." +msgstr " -o OPTION True if the shell option OPTION is enabled." + +#: builtins.c:970 +msgid " ! EXPR True if expr is false." +msgstr " ! EXPR True if expr is false." + +#: builtins.c:971 +msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +msgstr " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." + +#: builtins.c:972 +msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +msgstr " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." + +#: builtins.c:974 +msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +msgstr " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," + +#: builtins.c:975 +msgid " -lt, -le, -gt, or -ge." +msgstr " -lt, -le, -gt, or -ge." + +#: builtins.c:977 +msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +msgstr "Arithmetic binary operators return true if ARG1 is equal, not-equal," + +#: builtins.c:978 +msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +msgstr "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" + +#: builtins.c:979 +msgid "than ARG2." +msgstr "than ARG2." + +#: builtins.c:985 +msgid "This is a synonym for the \"test\" builtin, but the last" +msgstr "This is a synonym for the “test” builtin, but the last" + +#: builtins.c:986 +msgid "argument must be a literal `]', to match the opening `['." +msgstr "argument must be a literal ‘]’, to match the opening ‘[’." + +#: builtins.c:992 +msgid "Print the accumulated user and system times for processes run from" +msgstr "Print the accumulated user and system times for processes run from" + +#: builtins.c:993 +msgid "the shell." +msgstr "the shell." + +#: builtins.c:999 +msgid "The command ARG is to be read and executed when the shell receives" +msgstr "The command ARG is to be read and executed when the shell receives" + +#: builtins.c:1000 +msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +msgstr "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" + +#: builtins.c:1001 +msgid "reset to their original values. If ARG is the null string each" +msgstr "reset to their original values. If ARG is the null string each" + +#: builtins.c:1002 +msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." + +#: builtins.c:1003 +msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" + +#: builtins.c:1004 +msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" +msgstr "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" + +#: builtins.c:1005 +msgid "command. If ARG is `-p' then the trap commands associated with" +msgstr "command. If ARG is ‘-p’ then the trap commands associated with" + +#: builtins.c:1006 +msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +msgstr "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" + +#: builtins.c:1007 +msgid "only `-p' is given, trap prints the list of commands associated with" +msgstr "" +"only ‘-p’ is given, trap prints the list of commands associated with" + +#: builtins.c:1008 +msgid "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " +msgstr "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " + +#: builtins.c:1009 +msgid "or a signal number. `trap -l' prints a list of signal names and their" +msgstr "" +"or a signal number. ‘trap -l’ prints a list of signal names and their" + +#: builtins.c:1010 +msgid "corresponding numbers. Note that a signal can be sent to the shell" +msgstr "corresponding numbers. Note that a signal can be sent to the shell" + +#: builtins.c:1011 +msgid "with \"kill -signal $$\"." +msgstr "with “kill -signal $$”." + +#: builtins.c:1017 +msgid "For each NAME, indicate how it would be interpreted if used as a" +msgstr "For each NAME, indicate how it would be interpreted if used as a" + +#: builtins.c:1018 +msgid "command name." +msgstr "command name." + +#: builtins.c:1020 +msgid "If the -t option is used, `type' outputs a single word which is one of" +msgstr "" +"If the -t option is used, ‘type’ outputs a single word which is one of" + +#: builtins.c:1021 +msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +msgstr "" +"‘alias’, ‘keyword’, ‘function’, ‘builtin’, ‘file" +"[0m’ or ‘’, if NAME is an" + +#: builtins.c:1022 +msgid "alias, shell reserved word, shell function, shell builtin, disk file," +msgstr "alias, shell reserved word, shell function, shell builtin, disk file," + +#: builtins.c:1023 +msgid "or unfound, respectively." +msgstr "or unfound, respectively." + +#: builtins.c:1025 +msgid "If the -p flag is used, `type' either returns the name of the disk" +msgstr "" +"If the -p flag is used, ‘type’ either returns the name of the disk" + +#: builtins.c:1026 +msgid "file that would be executed, or nothing if `type -t NAME' would not" +msgstr "" +"file that would be executed, or nothing if ‘type -t NAME’ would not" + +#: builtins.c:1027 +msgid "return `file'." +msgstr "return ‘file’." + +#: builtins.c:1029 +msgid "If the -a flag is used, `type' displays all of the places that contain" +msgstr "" +"If the -a flag is used, ‘type’ displays all of the places that contain" + +#: builtins.c:1030 +msgid "an executable named `file'. This includes aliases, builtins, and" +msgstr "" +"an executable named ‘file’. This includes aliases, builtins, and" + +#: builtins.c:1031 +msgid "functions, if and only if the -p flag is not also used." +msgstr "functions, if and only if the -p flag is not also used." + +#: builtins.c:1033 +msgid "The -f flag suppresses shell function lookup." +msgstr "The -f flag suppresses shell function lookup." + +#: builtins.c:1035 +msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," +msgstr "" +"The -P flag forces a PATH search for each NAME, even if it is an alias," + +#: builtins.c:1036 +msgid "builtin, or function, and returns the name of the disk file that would" +msgstr "builtin, or function, and returns the name of the disk file that would" + +#: builtins.c:1037 +msgid "be executed." +msgstr "be executed." + +#: builtins.c:1044 +msgid "Ulimit provides control over the resources available to processes" +msgstr "Ulimit provides control over the resources available to processes" + +#: builtins.c:1045 +msgid "started by the shell, on systems that allow such control. If an" +msgstr "started by the shell, on systems that allow such control. If an" + +#: builtins.c:1046 +msgid "option is given, it is interpreted as follows:" +msgstr "option is given, it is interpreted as follows:" + +#: builtins.c:1048 +msgid " -S\tuse the `soft' resource limit" +msgstr " -S\tuse the ‘soft’ resource limit" + +#: builtins.c:1049 +msgid " -H\tuse the `hard' resource limit" +msgstr " -H\tuse the ‘hard’ resource limit" + +#: builtins.c:1050 +msgid " -a\tall current limits are reported" +msgstr " -a\tall current limits are reported" + +#: builtins.c:1051 +msgid " -c\tthe maximum size of core files created" +msgstr " -c\tthe maximum size of core files created" + +#: builtins.c:1052 +msgid " -d\tthe maximum size of a process's data segment" +msgstr " -d\tthe maximum size of a process's data segment" + +#: builtins.c:1053 +msgid " -f\tthe maximum size of files created by the shell" +msgstr " -f\tthe maximum size of files created by the shell" + +#: builtins.c:1054 +msgid " -l\tthe maximum size a process may lock into memory" +msgstr " -l\tthe maximum size a process may lock into memory" + +#: builtins.c:1055 +msgid " -m\tthe maximum resident set size" +msgstr " -m\tthe maximum resident set size" + +#: builtins.c:1056 +msgid " -n\tthe maximum number of open file descriptors" +msgstr " -n\tthe maximum number of open file descriptors" + +#: builtins.c:1057 +msgid " -p\tthe pipe buffer size" +msgstr " -p\tthe pipe buffer size" + +#: builtins.c:1058 +msgid " -s\tthe maximum stack size" +msgstr " -s\tthe maximum stack size" + +#: builtins.c:1059 +msgid " -t\tthe maximum amount of cpu time in seconds" +msgstr " -t\tthe maximum amount of cpu time in seconds" + +#: builtins.c:1060 +msgid " -u\tthe maximum number of user processes" +msgstr " -u\tthe maximum number of user processes" + +#: builtins.c:1061 +msgid " -v\tthe size of virtual memory" +msgstr " -v\tthe size of virtual memory" + +#: builtins.c:1063 +msgid "If LIMIT is given, it is the new value of the specified resource;" +msgstr "If LIMIT is given, it is the new value of the specified resource;" + +#: builtins.c:1064 +msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" +msgstr "" +"the special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ " +"stand for" + +#: builtins.c:1065 +msgid "" +"the current soft limit, the current hard limit, and no limit, respectively." +msgstr "" +"the current soft limit, the current hard limit, and no limit, respectively." + +#: builtins.c:1066 +msgid "Otherwise, the current value of the specified resource is printed." +msgstr "Otherwise, the current value of the specified resource is printed." + +#: builtins.c:1067 +msgid "If no option is given, then -f is assumed. Values are in 1024-byte" +msgstr "If no option is given, then -f is assumed. Values are in 1024-byte" + +#: builtins.c:1068 +msgid "increments, except for -t, which is in seconds, -p, which is in" +msgstr "increments, except for -t, which is in seconds, -p, which is in" + +#: builtins.c:1069 +msgid "increments of 512 bytes, and -u, which is an unscaled number of" +msgstr "increments of 512 bytes, and -u, which is an unscaled number of" + +#: builtins.c:1070 +msgid "processes." +msgstr "processes." + +#: builtins.c:1077 +msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +msgstr "The user file-creation mask is set to MODE. If MODE is omitted, or if" + +#: builtins.c:1078 +msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +msgstr "" +"‘-S’ is supplied, the current value of the mask is printed. The ‘-S" +"[0m’" + +#: builtins.c:1079 +msgid "option makes the output symbolic; otherwise an octal number is output." +msgstr "option makes the output symbolic; otherwise an octal number is output." + +#: builtins.c:1080 +msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" +msgstr "" +"If ‘-p’ is supplied, and MODE is omitted, the output is in a form" + +#: builtins.c:1081 +msgid "that may be used as input. If MODE begins with a digit, it is" +msgstr "that may be used as input. If MODE begins with a digit, it is" + +#: builtins.c:1082 +msgid "interpreted as an octal number, otherwise it is a symbolic mode string" +msgstr "interpreted as an octal number, otherwise it is a symbolic mode string" + +#: builtins.c:1083 +msgid "like that accepted by chmod(1)." +msgstr "like that accepted by chmod(1)." + +#: builtins.c:1090 builtins.c:1102 +msgid "Wait for the specified process and report its termination status. If" +msgstr "Wait for the specified process and report its termination status. If" + +#: builtins.c:1091 builtins.c:1103 +msgid "N is not given, all currently active child processes are waited for," +msgstr "N is not given, all currently active child processes are waited for," + +#: builtins.c:1092 +msgid "and the return code is zero. N may be a process ID or a job" +msgstr "and the return code is zero. N may be a process ID or a job" + +#: builtins.c:1093 +msgid "specification; if a job spec is given, all processes in the job's" +msgstr "specification; if a job spec is given, all processes in the job's" + +#: builtins.c:1094 +msgid "pipeline are waited for." +msgstr "pipeline are waited for." + +#: builtins.c:1104 +msgid "and the return code is zero. N is a process ID; if it is not given," +msgstr "and the return code is zero. N is a process ID; if it is not given," + +#: builtins.c:1105 +msgid "all child processes of the shell are waited for." +msgstr "all child processes of the shell are waited for." + +#: builtins.c:1112 +msgid "The `for' loop executes a sequence of commands for each member in a" +msgstr "" +"The ‘for’ loop executes a sequence of commands for each member in a" + +#: builtins.c:1113 +msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +msgstr "" +"list of items. If ‘in WORDS ...;’ is not present, then ‘in “$@" +"[0m”’ is" + +#: builtins.c:1114 +msgid "assumed. For each element in WORDS, NAME is set to that element, and" +msgstr "assumed. For each element in WORDS, NAME is set to that element, and" + +#: builtins.c:1115 +msgid "the COMMANDS are executed." +msgstr "the COMMANDS are executed." + +#: builtins.c:1121 +msgid "Equivalent to" +msgstr "Equivalent to" + +#: builtins.c:1122 +msgid "\t(( EXP1 ))" +msgstr "\t(( EXP1 ))" + +#: builtins.c:1123 +msgid "\twhile (( EXP2 )); do" +msgstr "\twhile (( EXP2 )); do" + +#: builtins.c:1124 +msgid "\t\tCOMMANDS" +msgstr "\t\tCOMMANDS" + +#: builtins.c:1125 +msgid "\t\t(( EXP3 ))" +msgstr "\t\t(( EXP3 ))" + +#: builtins.c:1126 +msgid "\tdone" +msgstr "\tdone" + +#: builtins.c:1127 +msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" +msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" + +#: builtins.c:1128 +msgid "omitted, it behaves as if it evaluates to 1." +msgstr "omitted, it behaves as if it evaluates to 1." + +#: builtins.c:1134 +msgid "The WORDS are expanded, generating a list of words. The" +msgstr "The WORDS are expanded, generating a list of words. The" + +#: builtins.c:1135 +msgid "set of expanded words is printed on the standard error, each" +msgstr "set of expanded words is printed on the standard error, each" + +#: builtins.c:1136 +msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +msgstr "" +"preceded by a number. If ‘in WORDS’ is not present, ‘in “$@" +"[0m”’" + +#: builtins.c:1137 +msgid "is assumed. The PS3 prompt is then displayed and a line read" +msgstr "is assumed. The PS3 prompt is then displayed and a line read" + +#: builtins.c:1138 +msgid "from the standard input. If the line consists of the number" +msgstr "from the standard input. If the line consists of the number" + +#: builtins.c:1139 +msgid "corresponding to one of the displayed words, then NAME is set" +msgstr "corresponding to one of the displayed words, then NAME is set" + +#: builtins.c:1140 +msgid "to that word. If the line is empty, WORDS and the prompt are" +msgstr "to that word. If the line is empty, WORDS and the prompt are" + +#: builtins.c:1141 +msgid "redisplayed. If EOF is read, the command completes. Any other" +msgstr "redisplayed. If EOF is read, the command completes. Any other" + +#: builtins.c:1142 +msgid "value read causes NAME to be set to null. The line read is saved" +msgstr "value read causes NAME to be set to null. The line read is saved" + +#: builtins.c:1143 +msgid "in the variable REPLY. COMMANDS are executed after each selection" +msgstr "in the variable REPLY. COMMANDS are executed after each selection" + +#: builtins.c:1144 +msgid "until a break command is executed." +msgstr "until a break command is executed." + +#: builtins.c:1150 +msgid "Execute PIPELINE and print a summary of the real time, user CPU time," +msgstr "Execute PIPELINE and print a summary of the real time, user CPU time," + +#: builtins.c:1151 +msgid "and system CPU time spent executing PIPELINE when it terminates." +msgstr "and system CPU time spent executing PIPELINE when it terminates." + +#: builtins.c:1152 +msgid "The return status is the return status of PIPELINE. The `-p' option" +msgstr "" +"The return status is the return status of PIPELINE. The ‘-p’ option" + +#: builtins.c:1153 +msgid "prints the timing summary in a slightly different format. This uses" +msgstr "prints the timing summary in a slightly different format. This uses" + +#: builtins.c:1154 +msgid "the value of the TIMEFORMAT variable as the output format." +msgstr "the value of the TIMEFORMAT variable as the output format." + +#: builtins.c:1160 +msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN. The" + +#: builtins.c:1161 +msgid "`|' is used to separate multiple patterns." +msgstr "‘|’ is used to separate multiple patterns." + +#: builtins.c:1167 +msgid "" +"The if COMMANDS are executed. If the exit status is zero, then the then" +msgstr "" +"The if COMMANDS are executed. If the exit status is zero, then the then" + +#: builtins.c:1168 +msgid "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +msgstr "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" + +#: builtins.c:1169 +msgid "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" +msgstr "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" + +#: builtins.c:1170 +msgid "" +"are executed and the if command completes. Otherwise, the else COMMANDS" +msgstr "" +"are executed and the if command completes. Otherwise, the else COMMANDS" + +#: builtins.c:1171 +msgid "" +"are executed, if present. The exit status is the exit status of the last" +msgstr "" +"are executed, if present. The exit status is the exit status of the last" + +#: builtins.c:1172 +msgid "command executed, or zero if no condition tested true." +msgstr "command executed, or zero if no condition tested true." + +#: builtins.c:1178 builtins.c:1185 +msgid "Expand and execute COMMANDS as long as the final command in the" +msgstr "Expand and execute COMMANDS as long as the final command in the" + +#: builtins.c:1179 +msgid "`while' COMMANDS has an exit status of zero." +msgstr "‘while’ COMMANDS has an exit status of zero." + +#: builtins.c:1186 +msgid "`until' COMMANDS has an exit status which is not zero." +msgstr "‘until’ COMMANDS has an exit status which is not zero." + +#: builtins.c:1192 +msgid "Create a simple command invoked by NAME which runs COMMANDS." +msgstr "Create a simple command invoked by NAME which runs COMMANDS." + +#: builtins.c:1193 +msgid "Arguments on the command line along with NAME are passed to the" +msgstr "Arguments on the command line along with NAME are passed to the" + +#: builtins.c:1194 +msgid "function as $0 .. $n." +msgstr "function as $0 .. $n." + +#: builtins.c:1200 +msgid "Run a set of commands in a group. This is one way to redirect an" +msgstr "Run a set of commands in a group. This is one way to redirect an" + +#: builtins.c:1201 +msgid "entire set of commands." +msgstr "entire set of commands." + +#: builtins.c:1207 +msgid "This is similar to the `fg' command. Resume a stopped or background" +msgstr "" +"This is similar to the ‘fg’ command. Resume a stopped or background" + +#: builtins.c:1208 +msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +msgstr "job. If you specifiy DIGITS, then that job is used. If you specify" + +#: builtins.c:1209 +msgid "WORD, then the job whose name begins with WORD is used. Following the" +msgstr "WORD, then the job whose name begins with WORD is used. Following the" + +#: builtins.c:1210 +msgid "job specification with a `&' places the job in the background." +msgstr "job specification with a ‘&’ places the job in the background." + +#: builtins.c:1216 +msgid "The EXPRESSION is evaluated according to the rules for arithmetic" +msgstr "The EXPRESSION is evaluated according to the rules for arithmetic" + +#: builtins.c:1217 +msgid "evaluation. Equivalent to \"let EXPRESSION\"." +msgstr "evaluation. Equivalent to “let EXPRESSION”." + +#: builtins.c:1223 +msgid "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" +msgstr "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" + +#: builtins.c:1224 +msgid "" +"expression EXPRESSION. Expressions are composed of the same primaries used" +msgstr "" +"expression EXPRESSION. Expressions are composed of the same primaries used" + +#: builtins.c:1225 +msgid "" +"by the `test' builtin, and may be combined using the following operators" +msgstr "" +"by the ‘test’ builtin, and may be combined using the following " +"operators" + +#: builtins.c:1227 +msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION" +msgstr "\t( EXPRESSION )\tReturns the value of EXPRESSION" + +#: builtins.c:1228 +msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" +msgstr "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" + +#: builtins.c:1229 +msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" +msgstr "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" + +#: builtins.c:1230 +msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" +msgstr "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" + +#: builtins.c:1232 +msgid "" +"When the `==' and `!=' operators are used, the string to the right of the" +msgstr "" +"When the ‘==’ and ‘!=’ operators are used, the string to the " +"right of the" + +#: builtins.c:1233 +msgid "operator is used as a pattern and pattern matching is performed. The" +msgstr "operator is used as a pattern and pattern matching is performed. The" + +#: builtins.c:1234 +msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" +msgstr "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" + +#: builtins.c:1235 +msgid "determine the expression's value." +msgstr "determine the expression's value." + +#: builtins.c:1241 +msgid "BASH_VERSION Version information for this Bash." +msgstr "BASH_VERSION Version information for this Bash." + +#: builtins.c:1242 +msgid "CDPATH A colon separated list of directories to search" +msgstr "CDPATH A colon separated list of directories to search" + +#: builtins.c:1243 +msgid "\t\twhen the argument to `cd' is not found in the current" +msgstr "\t\twhen the argument to ‘cd’ is not found in the current" + +#: builtins.c:1244 +msgid "\t\tdirectory." +msgstr "\t\tdirectory." + +#: builtins.c:1245 +msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" +msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" + +#: builtins.c:1246 +msgid "\t\tbe ignored by pathname expansion." +msgstr "\t\tbe ignored by pathname expansion." + +#: builtins.c:1248 +msgid "" +"HISTFILE The name of the file where your command history is stored." +msgstr "" +"HISTFILE The name of the file where your command history is stored." + +#: builtins.c:1249 +msgid "HISTFILESIZE The maximum number of lines this file can contain." +msgstr "HISTFILESIZE The maximum number of lines this file can contain." + +#: builtins.c:1250 +msgid "HISTSIZE The maximum number of history lines that a running" +msgstr "HISTSIZE The maximum number of history lines that a running" + +#: builtins.c:1251 +msgid "\t\tshell can access." +msgstr "\t\tshell can access." + +#: builtins.c:1253 +msgid "HOME The complete pathname to your login directory." +msgstr "HOME The complete pathname to your login directory." + +#: builtins.c:1254 +msgid "HOSTNAME\tThe name of the current host." +msgstr "HOSTNAME\tThe name of the current host." + +#: builtins.c:1255 +msgid "HOSTTYPE The type of CPU this version of Bash is running under." +msgstr "HOSTTYPE The type of CPU this version of Bash is running under." + +#: builtins.c:1256 +msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +msgstr "IGNOREEOF Controls the action of the shell on receipt of an EOF" + +#: builtins.c:1257 +msgid "\t\tcharacter as the sole input. If set, then the value" +msgstr "\t\tcharacter as the sole input. If set, then the value" + +#: builtins.c:1258 +msgid "\t\tof it is the number of EOF characters that can be seen" +msgstr "\t\tof it is the number of EOF characters that can be seen" + +#: builtins.c:1259 +msgid "\t\tin a row on an empty line before the shell will exit" +msgstr "\t\tin a row on an empty line before the shell will exit" + +#: builtins.c:1260 +msgid "\t\t(default 10). When unset, EOF signifies the end of input." +msgstr "\t\t(default 10). When unset, EOF signifies the end of input." + +#: builtins.c:1261 +msgid "MACHTYPE\tA string describing the current system Bash is running on." +msgstr "MACHTYPE\tA string describing the current system Bash is running on." + +#: builtins.c:1262 +msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail." + +#: builtins.c:1263 +msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks" + +#: builtins.c:1264 +msgid "\t\tfor new mail." +msgstr "\t\tfor new mail." + +#: builtins.c:1265 +msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on." + +#: builtins.c:1266 +msgid "PATH A colon-separated list of directories to search when" +msgstr "PATH A colon-separated list of directories to search when" + +#: builtins.c:1267 +msgid "\t\tlooking for commands." +msgstr "\t\tlooking for commands." + +#: builtins.c:1268 +msgid "PROMPT_COMMAND A command to be executed before the printing of each" +msgstr "PROMPT_COMMAND A command to be executed before the printing of each" + +#: builtins.c:1269 +msgid "\t\tprimary prompt." +msgstr "\t\tprimary prompt." + +#: builtins.c:1270 +msgid "PS1 The primary prompt string." +msgstr "PS1 The primary prompt string." + +#: builtins.c:1271 +msgid "PS2 The secondary prompt string." +msgstr "PS2 The secondary prompt string." + +#: builtins.c:1272 +msgid "PWD\t\tThe full pathname of the current directory." +msgstr "PWD\t\tThe full pathname of the current directory." + +#: builtins.c:1273 +msgid "SHELLOPTS\tA colon-separated list of enabled shell options." +msgstr "SHELLOPTS\tA colon-separated list of enabled shell options." + +#: builtins.c:1274 +msgid "TERM The name of the current terminal type." +msgstr "TERM The name of the current terminal type." + +#: builtins.c:1275 +msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" +msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the" + +#: builtins.c:1276 +msgid "\t\t`time' reserved word." +msgstr "\t\t‘time’ reserved word." + +#: builtins.c:1277 +msgid "auto_resume Non-null means a command word appearing on a line by" +msgstr "auto_resume Non-null means a command word appearing on a line by" + +#: builtins.c:1278 +msgid "\t\titself is first looked for in the list of currently" +msgstr "\t\titself is first looked for in the list of currently" + +#: builtins.c:1279 +msgid "\t\tstopped jobs. If found there, that job is foregrounded." +msgstr "\t\tstopped jobs. If found there, that job is foregrounded." + +#: builtins.c:1280 +msgid "\t\tA value of `exact' means that the command word must" +msgstr "\t\tA value of ‘exact’ means that the command word must" + +#: builtins.c:1281 +msgid "\t\texactly match a command in the list of stopped jobs. A" +msgstr "\t\texactly match a command in the list of stopped jobs. A" + +#: builtins.c:1282 +msgid "\t\tvalue of `substring' means that the command word must" +msgstr "\t\tvalue of ‘substring’ means that the command word must" + +#: builtins.c:1283 +msgid "\t\tmatch a substring of the job. Any other value means that" +msgstr "\t\tmatch a substring of the job. Any other value means that" + +#: builtins.c:1284 +msgid "\t\tthe command must be a prefix of a stopped job." +msgstr "\t\tthe command must be a prefix of a stopped job." + +#: builtins.c:1287 +msgid "histchars Characters controlling history expansion and quick" +msgstr "histchars Characters controlling history expansion and quick" + +#: builtins.c:1288 +msgid "\t\tsubstitution. The first character is the history" +msgstr "\t\tsubstitution. The first character is the history" + +#: builtins.c:1289 +msgid "\t\tsubstitution character, usually `!'. The second is" +msgstr "\t\tsubstitution character, usually ‘!’. The second is" + +#: builtins.c:1290 +msgid "\t\tthe `quick substitution' character, usually `^'. The" +msgstr "\t\tthe ‘quick substitution’ character, usually ‘^’. The" + +#: builtins.c:1291 +msgid "\t\tthird is the `history comment' character, usually `#'." +msgstr "\t\tthird is the ‘history comment’ character, usually ‘#’." + +#: builtins.c:1293 +msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" +msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which" + +#: builtins.c:1294 +msgid "\t\tcommands should be saved on the history list." +msgstr "\t\tcommands should be saved on the history list." + +#: builtins.c:1306 +msgid "+N\tRotates the stack so that the Nth directory (counting" +msgstr "+N\tRotates the stack so that the Nth directory (counting" + +#: builtins.c:1307 +msgid "\tfrom the left of the list shown by `dirs', starting with" +msgstr "\tfrom the left of the list shown by ‘dirs’, starting with" + +#: builtins.c:1308 builtins.c:1312 +msgid "\tzero) is at the top." +msgstr "\tzero) is at the top." + +#: builtins.c:1310 +msgid "-N\tRotates the stack so that the Nth directory (counting" +msgstr "-N\tRotates the stack so that the Nth directory (counting" + +#: builtins.c:1311 +msgid "\tfrom the right of the list shown by `dirs', starting with" +msgstr "\tfrom the right of the list shown by ‘dirs’, starting with" + +#: builtins.c:1314 +msgid "-n\tsuppress the normal change of directory when adding directories" +msgstr "-n\tsuppress the normal change of directory when adding directories" + +#: builtins.c:1315 +msgid "\tto the stack, so only the stack is manipulated." +msgstr "\tto the stack, so only the stack is manipulated." + +#: builtins.c:1317 +msgid "dir\tadds DIR to the directory stack at the top, making it the" +msgstr "dir\tadds DIR to the directory stack at the top, making it the" + +#: builtins.c:1318 +msgid "\tnew current working directory." +msgstr "\tnew current working directory." + +#: builtins.c:1332 +msgid "+N\tremoves the Nth entry counting from the left of the list" +msgstr "+N\tremoves the Nth entry counting from the left of the list" + +#: builtins.c:1333 +msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +msgstr "" +"\tshown by ‘dirs’, starting with zero. For example: ‘popd +0’" + +#: builtins.c:1334 +msgid "\tremoves the first directory, `popd +1' the second." +msgstr "\tremoves the first directory, ‘popd +1’ the second." + +#: builtins.c:1336 +msgid "-N\tremoves the Nth entry counting from the right of the list" +msgstr "-N\tremoves the Nth entry counting from the right of the list" + +#: builtins.c:1337 +msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +msgstr "" +"\tshown by ‘dirs’, starting with zero. For example: ‘popd -0’" + +#: builtins.c:1338 +msgid "\tremoves the last directory, `popd -1' the next to last." +msgstr "\tremoves the last directory, ‘popd -1’ the next to last." + +#: builtins.c:1340 +msgid "-n\tsuppress the normal change of directory when removing directories" +msgstr "-n\tsuppress the normal change of directory when removing directories" + +#: builtins.c:1341 +msgid "\tfrom the stack, so only the stack is manipulated." +msgstr "\tfrom the stack, so only the stack is manipulated." + +#: builtins.c:1363 +msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by" + +#: builtins.c:1364 builtins.c:1367 +msgid "\tdirs when invoked without options, starting with zero." +msgstr "\tdirs when invoked without options, starting with zero." + +#: builtins.c:1366 +msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +msgstr "" +"-N\tdisplays the Nth entry counting from the right of the list shown by" + +#: builtins.c:1374 +msgid "Toggle the values of variables controlling optional behavior." +msgstr "Toggle the values of variables controlling optional behavior." + +#: builtins.c:1375 +msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag" + +#: builtins.c:1376 +msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +msgstr "unsets each OPTNAME. The -q flag suppresses output; the exit" + +#: builtins.c:1377 +msgid "status indicates whether each OPTNAME is set or unset. The -o" +msgstr "status indicates whether each OPTNAME is set or unset. The -o" + +#: builtins.c:1378 +msgid "option restricts the OPTNAMEs to those defined for use with" +msgstr "option restricts the OPTNAMEs to those defined for use with" + +#: builtins.c:1379 +msgid "`set -o'. With no options, or with the -p option, a list of all" +msgstr "‘set -o’. With no options, or with the -p option, a list of all" + +#: builtins.c:1380 +msgid "settable options is displayed, with an indication of whether or" +msgstr "settable options is displayed, with an indication of whether or" + +#: builtins.c:1381 +msgid "not each is set." +msgstr "not each is set." + +#: builtins.c:1387 +msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" +msgstr "" +"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" + +#: builtins.c:1388 +msgid "is a character string which contains three types of objects: plain" +msgstr "is a character string which contains three types of objects: plain" + +#: builtins.c:1389 +msgid "" +"characters, which are simply copied to standard output, character escape" +msgstr "" +"characters, which are simply copied to standard output, character escape" + +#: builtins.c:1390 +msgid "sequences which are converted and copied to the standard output, and" +msgstr "sequences which are converted and copied to the standard output, and" + +#: builtins.c:1391 +msgid "" +"format specifications, each of which causes printing of the next successive" +msgstr "" +"format specifications, each of which causes printing of the next successive" + +#: builtins.c:1392 +msgid "argument. In addition to the standard printf(1) formats, %b means to" +msgstr "argument. In addition to the standard printf(1) formats, %b means to" + +#: builtins.c:1393 +msgid "expand backslash escape sequences in the corresponding argument, and %q" +msgstr "" +"expand backslash escape sequences in the corresponding argument, and %q" + +#: builtins.c:1394 +msgid "means to quote the argument in a way that can be reused as shell input." +msgstr "" +"means to quote the argument in a way that can be reused as shell input." + +#: builtins.c:1401 +msgid "For each NAME, specify how arguments are to be completed." +msgstr "For each NAME, specify how arguments are to be completed." + +#: builtins.c:1402 +msgid "If the -p option is supplied, or if no options are supplied, existing" +msgstr "If the -p option is supplied, or if no options are supplied, existing" + +#: builtins.c:1403 +msgid "completion specifications are printed in a way that allows them to be" +msgstr "completion specifications are printed in a way that allows them to be" + +#: builtins.c:1404 +msgid "reused as input. The -r option removes a completion specification for" +msgstr "reused as input. The -r option removes a completion specification for" + +#: builtins.c:1405 +msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." +msgstr "" +"each NAME, or, if no NAMEs are supplied, all completion specifications." + +#: builtins.c:1413 +msgid "Display the possible completions depending on the options. Intended" +msgstr "Display the possible completions depending on the options. Intended" + +#: builtins.c:1414 +msgid "" +"to be used from within a shell function generating possible completions." +msgstr "" +"to be used from within a shell function generating possible completions." + +#: builtins.c:1415 +msgid "If the optional WORD argument is supplied, matches against WORD are" +msgstr "If the optional WORD argument is supplied, matches against WORD are" + +#: builtins.c:1416 +msgid "generated." +msgstr "generated." diff --git a/po.orig/en@quot.gmo b/po.orig/en@quot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..62cf0807cb661d4b41814bb5af653910ad3f2acf GIT binary patch literal 118583 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

1X=@3DbJTM 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" +msgstr "" + +#: builtins/pushd.def:652 builtins.c:1351 +msgid "Display the list of currently remembered directories. Directories" +msgstr "Display the list of currently remembered directories. Directories" + +#: builtins/pushd.def:653 builtins.c:1352 +msgid "find their way onto the list with the `pushd' command; you can get" +msgstr "find their way onto the list with the ‘pushd’ command; you can get" + +#: builtins/pushd.def:654 builtins.c:1353 +msgid "back up through the list with the `popd' command." +msgstr "back up through the list with the ‘popd’ command." + +#: builtins/pushd.def:656 builtins.c:1355 +msgid "The -l flag specifies that `dirs' should not print shorthand versions" +msgstr "The -l flag specifies that ‘dirs’ should not print shorthand versions" + +#: builtins/pushd.def:657 builtins.c:1356 +msgid "of directories which are relative to your home directory. This means" +msgstr "of directories which are relative to your home directory. This means" + +#: builtins/pushd.def:658 builtins.c:1357 +msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +msgstr "that ‘~/bin’ might be displayed as ‘/homes/bfox/bin’. The -v flag" + +#: builtins/pushd.def:659 builtins.c:1358 +msgid "causes `dirs' to print the directory stack with one entry per line," +msgstr "causes ‘dirs’ to print the directory stack with one entry per line," + +#: builtins/pushd.def:660 builtins.c:1359 +msgid "prepending the directory name with its position in the stack. The -p" +msgstr "prepending the directory name with its position in the stack. The -p" + +#: builtins/pushd.def:661 builtins.c:1360 +msgid "flag does the same thing, but the stack position is not prepended." +msgstr "flag does the same thing, but the stack position is not prepended." + +#: builtins/pushd.def:662 builtins.c:1361 +msgid "The -c flag clears the directory stack by deleting all of the elements." +msgstr "" +"The -c flag clears the directory stack by deleting all of the elements." + +#: builtins/pushd.def:664 +msgid "+N displays the Nth entry counting from the left of the list shown by" +msgstr "" +"+N displays the Nth entry counting from the left of the list shown by" + +#: builtins/pushd.def:665 builtins/pushd.def:668 +msgid " dirs when invoked without options, starting with zero." +msgstr " dirs when invoked without options, starting with zero." + +#: builtins/pushd.def:667 +msgid "" +"-N displays the Nth entry counting from the right of the list shown by" +msgstr "" +"-N displays the Nth entry counting from the right of the list shown by" + +#: builtins/pushd.def:673 builtins.c:1302 +msgid "Adds a directory to the top of the directory stack, or rotates" +msgstr "Adds a directory to the top of the directory stack, or rotates" + +#: builtins/pushd.def:674 builtins.c:1303 +msgid "the stack, making the new top of the stack the current working" +msgstr "the stack, making the new top of the stack the current working" + +#: builtins/pushd.def:675 builtins.c:1304 +msgid "directory. With no arguments, exchanges the top two directories." +msgstr "directory. With no arguments, exchanges the top two directories." + +#: builtins/pushd.def:677 +msgid "+N Rotates the stack so that the Nth directory (counting" +msgstr "+N Rotates the stack so that the Nth directory (counting" + +#: builtins/pushd.def:678 +msgid " from the left of the list shown by `dirs', starting with" +msgstr " from the left of the list shown by ‘dirs’, starting with" + +#: builtins/pushd.def:679 builtins/pushd.def:683 +msgid " zero) is at the top." +msgstr " zero) is at the top." + +#: builtins/pushd.def:681 +msgid "-N Rotates the stack so that the Nth directory (counting" +msgstr "-N Rotates the stack so that the Nth directory (counting" + +#: builtins/pushd.def:682 +msgid " from the right of the list shown by `dirs', starting with" +msgstr " from the right of the list shown by ‘dirs’, starting with" + +#: builtins/pushd.def:685 +msgid "-n suppress the normal change of directory when adding directories" +msgstr "-n suppress the normal change of directory when adding directories" + +#: builtins/pushd.def:686 +msgid " to the stack, so only the stack is manipulated." +msgstr " to the stack, so only the stack is manipulated." + +#: builtins/pushd.def:688 +msgid "dir adds DIR to the directory stack at the top, making it the" +msgstr "dir adds DIR to the directory stack at the top, making it the" + +#: builtins/pushd.def:689 +msgid " new current working directory." +msgstr " new current working directory." + +#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320 +#: builtins.c:1343 +msgid "You can see the directory stack with the `dirs' command." +msgstr "You can see the directory stack with the ‘dirs’ command." + +#: builtins/pushd.def:696 builtins.c:1328 +msgid "Removes entries from the directory stack. With no arguments," +msgstr "Removes entries from the directory stack. With no arguments," + +#: builtins/pushd.def:697 builtins.c:1329 +msgid "removes the top directory from the stack, and cd's to the new" +msgstr "removes the top directory from the stack, and cd's to the new" + +#: builtins/pushd.def:698 builtins.c:1330 +msgid "top directory." +msgstr "top directory." + +#: builtins/pushd.def:700 +msgid "+N removes the Nth entry counting from the left of the list" +msgstr "+N removes the Nth entry counting from the left of the list" + +#: builtins/pushd.def:701 +msgid " shown by `dirs', starting with zero. For example: `popd +0'" +msgstr " shown by ‘dirs’, starting with zero. For example: ‘popd +0’" + +#: builtins/pushd.def:702 +msgid " removes the first directory, `popd +1' the second." +msgstr " removes the first directory, ‘popd +1’ the second." + +#: builtins/pushd.def:704 +msgid "-N removes the Nth entry counting from the right of the list" +msgstr "-N removes the Nth entry counting from the right of the list" + +#: builtins/pushd.def:705 +msgid " shown by `dirs', starting with zero. For example: `popd -0'" +msgstr " shown by ‘dirs’, starting with zero. For example: ‘popd -0’" + +#: builtins/pushd.def:706 +msgid " removes the last directory, `popd -1' the next to last." +msgstr " removes the last directory, ‘popd -1’ the next to last." + +#: builtins/pushd.def:708 +msgid "-n suppress the normal change of directory when removing directories" +msgstr "-n suppress the normal change of directory when removing directories" + +#: builtins/pushd.def:709 +msgid " from the stack, so only the stack is manipulated." +msgstr " from the stack, so only the stack is manipulated." + +#: builtins/read.def:207 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:230 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: invalid file descriptor specification" + +#: builtins/read.def:237 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: invalid file descriptor: %s" + +#: builtins/read.def:463 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:63 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:743 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:780 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: cannot unset" + +#: builtins/set.def:787 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: cannot unset: readonly %s" + +#: builtins/set.def:798 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:165 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/shift.def:66 builtins/shift.def:72 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:226 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:291 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: invalid shell option name" + +#: builtins/source.def:117 +msgid "filename argument required" +msgstr "filename argument required" + +#: builtins/source.def:137 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:93 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:103 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:231 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:252 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:272 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:297 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:318 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:338 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:332 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:358 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:387 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:425 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:112 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:226 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:279 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:165 +#, c-format +msgid "last command: %s\n" +msgstr "last command: %s\n" + +#: error.c:173 +msgid "Aborting..." +msgstr "Aborting..." + +#: error.c:260 +#, c-format +msgid "%s: warning: " +msgstr "%s: warning: " + +#: 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:175 +msgid "timed out waiting for input: auto-logout\n" +msgstr "timed out waiting for input: auto-logout\n" + +#: execute_cmd.c:466 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1036 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:3521 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:3609 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:3839 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:3876 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: cannot execute binary file" + +#: execute_cmd.c:3988 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:239 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:263 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:374 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:414 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:435 expr.c:440 expr.c:750 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:466 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:508 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:775 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:819 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:847 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:871 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1146 +msgid "invalid number" +msgstr "invalid number" + +#: expr.c:1150 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1170 +msgid "value too great for base" +msgstr "value too great for base" + +#: general.c:60 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:231 +#, 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:239 +#, 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:693 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1001 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1632 nojobs.c:648 +#, 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:1815 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:2062 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:2284 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:2293 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3037 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:298 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:314 +#, 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:740 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:817 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:820 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:839 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:845 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:942 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:957 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:963 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:175 +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:182 +#, 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:218 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p already in table as free?\n" + +#: lib/malloc/watch.c:46 +msgid "allocated" +msgstr "allocated" + +#: lib/malloc/watch.c:48 +msgid "freed" +msgstr "freed" + +#: lib/malloc/watch.c:50 +msgid "requesting resize" +msgstr "requesting resize" + +#: lib/malloc/watch.c:52 +msgid "just resized" +msgstr "just resized" + +#: lib/malloc/watch.c:54 +msgid "bug: unknown operation" +msgstr "bug: unknown operation" + +#: lib/malloc/watch.c:56 +#, c-format +msgid "malloc: watch alert: %p %s " +msgstr "malloc: watch alert: %p %s " + +#: lib/sh/fmtulong.c:101 +msgid "invalid base" +msgstr "invalid base" + +#: lib/sh/netopen.c:158 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host unknown" + +#: lib/sh/netopen.c:165 +#, c-format +msgid "%s: invalid service" +msgstr "%s: invalid service" + +#: lib/sh/netopen.c:296 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: bad network path specification" + +#: lib/sh/netopen.c:336 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: mailcheck.c:382 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:407 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:423 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:318 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:320 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:321 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:560 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:730 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2726 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:3011 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:3016 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:3020 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:3098 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:3102 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:3130 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:3134 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:3171 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:3175 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:3191 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:3195 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:3206 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:3209 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:3213 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:4400 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:4418 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:4428 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:4428 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:4490 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s” to leave the shell.\n" + +#: parse.y:4649 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:988 +#, 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:260 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:1172 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:99 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:141 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:145 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:150 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:155 +#, c-format +msgid "cannot create temp file for here document: %s" +msgstr "cannot create temp file for here document: %s" + +#: redir.c:509 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:949 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:302 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:306 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:839 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1590 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:1725 +#, 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:1727 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:1731 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:1732 +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:1747 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:1753 +#, 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:1754 +#, 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:1755 +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: sig.c:485 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: invalid operation" + +#: subst.c:1011 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:2020 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:3516 subst.c:3532 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:3563 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:3608 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:3610 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:3618 +#, c-format +msgid "cannout reset nodelay mode for fd %d" +msgstr "cannout reset nodelay mode for fd %d" + +#: subst.c:3628 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:3803 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:3832 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:3849 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:4284 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:4529 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:5209 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:5283 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:6652 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:154 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:163 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:361 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:363 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:378 test.c:787 test.c:790 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:543 test.c:830 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:905 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: trap.c:194 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:309 +#, 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:313 +#, 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:349 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:310 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:670 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:1610 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2709 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:2923 variables.c:2932 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:2938 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:3363 +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:3376 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:3442 +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:82 +msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n" +msgstr "Copyright (C) 2004 Free Software Foundation, Inc.\n" + +#: xmalloc.c:93 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:95 +#, c-format +msgid "xmalloc: cannot allocate %lu bytes" +msgstr "xmalloc: cannot allocate %lu bytes" + +#: xmalloc.c:115 +#, c-format +msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:117 +#, c-format +msgid "xrealloc: cannot allocate %lu bytes" +msgstr "xrealloc: cannot allocate %lu bytes" + +#: xmalloc.c:151 +#, 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:153 +#, c-format +msgid "xmalloc: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: cannot allocate %lu bytes" + +#: xmalloc.c:175 +#, 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:177 +#, c-format +msgid "xrealloc: %s:%d: cannot allocate %lu bytes" +msgstr "xrealloc: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:244 +msgid "`alias' with no arguments or with the -p option prints the list" +msgstr "‘alias’ with no arguments or with the -p option prints the list" + +#: builtins.c:245 +msgid "of aliases in the form alias NAME=VALUE on standard output." +msgstr "of aliases in the form alias NAME=VALUE on standard output." + +#: builtins.c:246 +msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +msgstr "Otherwise, an alias is defined for each NAME whose VALUE is given." + +#: builtins.c:247 +msgid "A trailing space in VALUE causes the next word to be checked for" +msgstr "A trailing space in VALUE causes the next word to be checked for" + +#: builtins.c:248 +msgid "alias substitution when the alias is expanded. Alias returns" +msgstr "alias substitution when the alias is expanded. Alias returns" + +#: builtins.c:249 +msgid "true unless a NAME is given for which no alias has been defined." +msgstr "true unless a NAME is given for which no alias has been defined." + +#: builtins.c:257 +msgid "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," +msgstr "" +"Remove NAMEs from the list of defined aliases. If the -a option is given," + +#: builtins.c:258 +msgid "then remove all alias definitions." +msgstr "then remove all alias definitions." + +#: builtins.c:266 +msgid "Bind a key sequence to a Readline function or a macro, or set" +msgstr "Bind a key sequence to a Readline function or a macro, or set" + +#: builtins.c:267 +msgid "a Readline variable. The non-option argument syntax is equivalent" +msgstr "a Readline variable. The non-option argument syntax is equivalent" + +#: builtins.c:268 +msgid "to that found in ~/.inputrc, but must be passed as a single argument:" +msgstr "to that found in ~/.inputrc, but must be passed as a single argument:" + +#: builtins.c:269 +msgid "bind '\"\\C-x\\C-r\": re-read-init-file'." +msgstr "bind '“\\C-x\\C-r”: re-read-init-file'." + +#: builtins.c:270 +msgid "bind accepts the following options:" +msgstr "bind accepts the following options:" + +#: builtins.c:271 +msgid "" +" -m keymap Use `keymap' as the keymap for the duration of this" +msgstr "" +" -m keymap Use ‘keymap’ as the keymap for the duration of this" + +#: builtins.c:272 +msgid " command. Acceptable keymap names are emacs," +msgstr " command. Acceptable keymap names are emacs," + +#: builtins.c:273 +msgid "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +msgstr "" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#: builtins.c:274 +msgid " vi-command, and vi-insert." +msgstr " vi-command, and vi-insert." + +#: builtins.c:275 +msgid " -l List names of functions." +msgstr " -l List names of functions." + +#: builtins.c:276 +msgid " -P List function names and bindings." +msgstr " -P List function names and bindings." + +#: builtins.c:277 +msgid " -p List functions and bindings in a form that can be" +msgstr " -p List functions and bindings in a form that can be" + +#: builtins.c:278 +msgid " reused as input." +msgstr " reused as input." + +#: builtins.c:279 +msgid " -r keyseq Remove the binding for KEYSEQ." +msgstr " -r keyseq Remove the binding for KEYSEQ." + +#: builtins.c:280 +msgid " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" +msgstr " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when" + +#: builtins.c:281 +msgid "\t\t\t\tKEYSEQ is entered." +msgstr "\t\t\t\tKEYSEQ is entered." + +#: builtins.c:282 +msgid " -f filename Read key bindings from FILENAME." +msgstr " -f filename Read key bindings from FILENAME." + +#: builtins.c:283 +msgid " -q function-name Query about which keys invoke the named function." +msgstr " -q function-name Query about which keys invoke the named function." + +#: builtins.c:284 +msgid "" +" -u function-name Unbind all keys which are bound to the named function." +msgstr "" +" -u function-name Unbind all keys which are bound to the named function." + +#: builtins.c:285 +msgid " -V List variable names and values" +msgstr " -V List variable names and values" + +#: builtins.c:286 +msgid " -v List variable names and values in a form that can" +msgstr " -v List variable names and values in a form that can" + +#: builtins.c:287 +msgid " be reused as input." +msgstr " be reused as input." + +#: builtins.c:288 +msgid "" +" -S List key sequences that invoke macros and their values" +msgstr "" +" -S List key sequences that invoke macros and their values" + +#: builtins.c:289 +msgid "" +" -s List key sequences that invoke macros and their values" +msgstr "" +" -s List key sequences that invoke macros and their values" + +#: builtins.c:290 +msgid " in a form that can be reused as input." +msgstr " in a form that can be reused as input." + +#: builtins.c:297 +msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +msgstr "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," + +#: builtins.c:298 +msgid "break N levels." +msgstr "break N levels." + +#: builtins.c:304 +msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +msgstr "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." + +#: builtins.c:305 +msgid "If N is specified, resume at the N-th enclosing loop." +msgstr "If N is specified, resume at the N-th enclosing loop." + +#: builtins.c:311 +msgid "Run a shell builtin. This is useful when you wish to rename a" +msgstr "Run a shell builtin. This is useful when you wish to rename a" + +#: builtins.c:312 +msgid "shell builtin to be a function, but need the functionality of the" +msgstr "shell builtin to be a function, but need the functionality of the" + +#: builtins.c:313 +msgid "builtin within the function itself." +msgstr "builtin within the function itself." + +#: builtins.c:334 +msgid "Change the current directory to DIR. The variable $HOME is the" +msgstr "Change the current directory to DIR. The variable $HOME is the" + +#: builtins.c:335 +msgid "default DIR. The variable CDPATH defines the search path for" +msgstr "default DIR. The variable CDPATH defines the search path for" + +#: builtins.c:336 +msgid "the directory containing DIR. Alternative directory names in CDPATH" +msgstr "the directory containing DIR. Alternative directory names in CDPATH" + +#: builtins.c:337 +msgid "are separated by a colon (:). A null directory name is the same as" +msgstr "are separated by a colon (:). A null directory name is the same as" + +#: builtins.c:338 +msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +msgstr "the current directory, i.e. ‘.’. If DIR begins with a slash (/)," + +#: builtins.c:339 +msgid "then CDPATH is not used. If the directory is not found, and the" +msgstr "then CDPATH is not used. If the directory is not found, and the" + +#: builtins.c:340 +msgid "shell option `cdable_vars' is set, then try the word as a variable" +msgstr "shell option ‘cdable_vars’ is set, then try the word as a variable" + +#: builtins.c:341 +msgid "name. If that variable has a value, then cd to the value of that" +msgstr "name. If that variable has a value, then cd to the value of that" + +#: builtins.c:342 +msgid "variable. The -P option says to use the physical directory structure" +msgstr "variable. The -P option says to use the physical directory structure" + +#: builtins.c:343 +msgid "" +"instead of following symbolic links; the -L option forces symbolic links" +msgstr "" +"instead of following symbolic links; the -L option forces symbolic links" + +#: builtins.c:344 +msgid "to be followed." +msgstr "to be followed." + +#: builtins.c:350 +msgid "Print the current working directory. With the -P option, pwd prints" +msgstr "Print the current working directory. With the -P option, pwd prints" + +#: builtins.c:351 +msgid "the physical directory, without any symbolic links; the -L option" +msgstr "the physical directory, without any symbolic links; the -L option" + +#: builtins.c:352 +msgid "makes pwd follow symbolic links." +msgstr "makes pwd follow symbolic links." + +#: builtins.c:358 +msgid "No effect; the command does nothing. A zero exit code is returned." +msgstr "No effect; the command does nothing. A zero exit code is returned." + +#: builtins.c:364 +msgid "Return a successful result." +msgstr "Return a successful result." + +#: builtins.c:370 +msgid "Return an unsuccessful result." +msgstr "Return an unsuccessful result." + +#: builtins.c:376 +msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +msgstr "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" + +#: builtins.c:377 +msgid "function called `ls', and you wish to call the command `ls', you can" +msgstr "function called ‘ls’, and you wish to call the command ‘ls’, you can" + +#: builtins.c:378 +msgid "say \"command ls\". If the -p option is given, a default value is used" +msgstr "say “command ls”. If the -p option is given, a default value is used" + +#: builtins.c:379 +msgid "for PATH that is guaranteed to find all of the standard utilities. If" +msgstr "for PATH that is guaranteed to find all of the standard utilities. If" + +#: builtins.c:380 +msgid "the -V or -v option is given, a string is printed describing COMMAND." +msgstr "the -V or -v option is given, a string is printed describing COMMAND." + +#: builtins.c:381 +msgid "The -V option produces a more verbose description." +msgstr "The -V option produces a more verbose description." + +#: builtins.c:387 +msgid "Declare variables and/or give them attributes. If no NAMEs are" +msgstr "Declare variables and/or give them attributes. If no NAMEs are" + +#: builtins.c:388 +msgid "given, then display the values of variables instead. The -p option" +msgstr "given, then display the values of variables instead. The -p option" + +#: builtins.c:389 +msgid "will display the attributes and values of each NAME." +msgstr "will display the attributes and values of each NAME." + +#: builtins.c:391 +msgid "The flags are:" +msgstr "The flags are:" + +#: builtins.c:393 +msgid " -a\tto make NAMEs arrays (if supported)" +msgstr " -a\tto make NAMEs arrays (if supported)" + +#: builtins.c:394 +msgid " -f\tto select from among function names only" +msgstr " -f\tto select from among function names only" + +#: builtins.c:395 +msgid "" +" -F\tto display function names (and line number and source file name if" +msgstr "" +" -F\tto display function names (and line number and source file name if" + +#: builtins.c:396 +msgid "\tdebugging) without definitions" +msgstr "\tdebugging) without definitions" + +#: builtins.c:397 +msgid " -i\tto make NAMEs have the `integer' attribute" +msgstr " -i\tto make NAMEs have the ‘integer’ attribute" + +#: builtins.c:398 +msgid " -r\tto make NAMEs readonly" +msgstr " -r\tto make NAMEs readonly" + +#: builtins.c:399 +msgid " -t\tto make NAMEs have the `trace' attribute" +msgstr " -t\tto make NAMEs have the ‘trace’ attribute" + +#: builtins.c:400 +msgid " -x\tto make NAMEs export" +msgstr " -x\tto make NAMEs export" + +#: builtins.c:402 +msgid "Variables with the integer attribute have arithmetic evaluation (see" +msgstr "Variables with the integer attribute have arithmetic evaluation (see" + +#: builtins.c:403 +msgid "`let') done when the variable is assigned to." +msgstr "‘let’) done when the variable is assigned to." + +#: builtins.c:405 +msgid "When displaying values of variables, -f displays a function's name" +msgstr "When displaying values of variables, -f displays a function's name" + +#: builtins.c:406 +msgid "and definition. The -F option restricts the display to function" +msgstr "and definition. The -F option restricts the display to function" + +#: builtins.c:407 +msgid "name only." +msgstr "name only." + +#: builtins.c:409 +msgid "Using `+' instead of `-' turns off the given attribute instead. When" +msgstr "Using ‘+’ instead of ‘-’ turns off the given attribute instead. When" + +#: builtins.c:410 +msgid "used in a function, makes NAMEs local, as with the `local' command." +msgstr "used in a function, makes NAMEs local, as with the ‘local’ command." + +#: builtins.c:416 +msgid "Obsolete. See `declare'." +msgstr "Obsolete. See ‘declare’." + +#: builtins.c:422 +msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +msgstr "Create a local variable called NAME, and give it VALUE. LOCAL" + +#: builtins.c:423 +msgid "can only be used within a function; it makes the variable NAME" +msgstr "can only be used within a function; it makes the variable NAME" + +#: builtins.c:424 +msgid "have a visible scope restricted to that function and its children." +msgstr "have a visible scope restricted to that function and its children." + +#: builtins.c:431 +msgid "Output the ARGs. If -n is specified, the trailing newline is" +msgstr "Output the ARGs. If -n is specified, the trailing newline is" + +#: builtins.c:432 +msgid "suppressed. If the -e option is given, interpretation of the" +msgstr "suppressed. If the -e option is given, interpretation of the" + +#: builtins.c:433 +msgid "following backslash-escaped characters is turned on:" +msgstr "following backslash-escaped characters is turned on:" + +#: builtins.c:434 +msgid "\t\\a\talert (bell)" +msgstr "\t\\a\talert (bell)" + +#: builtins.c:435 +msgid "\t\\b\tbackspace" +msgstr "\t\\b\tbackspace" + +#: builtins.c:436 +msgid "\t\\c\tsuppress trailing newline" +msgstr "\t\\c\tsuppress trailing newline" + +#: builtins.c:437 +msgid "\t\\E\tescape character" +msgstr "\t\\E\tescape character" + +#: builtins.c:438 +msgid "\t\\f\tform feed" +msgstr "\t\\f\tform feed" + +#: builtins.c:439 +msgid "\t\\n\tnew line" +msgstr "\t\\n\tnew line" + +#: builtins.c:440 +msgid "\t\\r\tcarriage return" +msgstr "\t\\r\tcarriage return" + +#: builtins.c:441 +msgid "\t\\t\thorizontal tab" +msgstr "\t\\t\thorizontal tab" + +#: builtins.c:442 +msgid "\t\\v\tvertical tab" +msgstr "\t\\v\tvertical tab" + +#: builtins.c:443 +msgid "\t\\\\\tbackslash" +msgstr "\t\\\\\tbackslash" + +#: builtins.c:444 +msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +msgstr "\t\\num\tthe character whose ASCII code is NUM (octal)." + +#: builtins.c:446 +msgid "You can explicitly turn off the interpretation of the above characters" +msgstr "You can explicitly turn off the interpretation of the above characters" + +#: builtins.c:447 +msgid "with the -E option." +msgstr "with the -E option." + +#: builtins.c:455 +msgid "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." +msgstr "" +"Output the ARGs. If -n is specified, the trailing newline is suppressed." + +#: builtins.c:462 +msgid "Enable and disable builtin shell commands. This allows" +msgstr "Enable and disable builtin shell commands. This allows" + +#: builtins.c:463 +msgid "you to use a disk command which has the same name as a shell" +msgstr "you to use a disk command which has the same name as a shell" + +#: builtins.c:464 +msgid "builtin without specifying a full pathname. If -n is used, the" +msgstr "builtin without specifying a full pathname. If -n is used, the" + +#: builtins.c:465 +msgid "NAMEs become disabled; otherwise NAMEs are enabled. For example," +msgstr "NAMEs become disabled; otherwise NAMEs are enabled. For example," + +#: builtins.c:466 +msgid "to use the `test' found in $PATH instead of the shell builtin" +msgstr "to use the ‘test’ found in $PATH instead of the shell builtin" + +#: builtins.c:467 +msgid "version, type `enable -n test'. On systems supporting dynamic" +msgstr "version, type ‘enable -n test’. On systems supporting dynamic" + +#: builtins.c:468 +msgid "loading, the -f option may be used to load new builtins from the" +msgstr "loading, the -f option may be used to load new builtins from the" + +#: builtins.c:469 +msgid "shared object FILENAME. The -d option will delete a builtin" +msgstr "shared object FILENAME. The -d option will delete a builtin" + +#: builtins.c:470 +msgid "previously loaded with -f. If no non-option names are given, or" +msgstr "previously loaded with -f. If no non-option names are given, or" + +#: builtins.c:471 +msgid "the -p option is supplied, a list of builtins is printed. The" +msgstr "the -p option is supplied, a list of builtins is printed. The" + +#: builtins.c:472 +msgid "-a option means to print every builtin with an indication of whether" +msgstr "-a option means to print every builtin with an indication of whether" + +#: builtins.c:473 +msgid "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" +msgstr "" +"or not it is enabled. The -s option restricts the output to the POSIX.2" + +#: builtins.c:474 +msgid "" +"`special' builtins. The -n option displays a list of all disabled builtins." +msgstr "" +"‘special’ builtins. The -n option displays a list of all disabled builtins." + +#: builtins.c:480 +msgid "Read ARGs as input to the shell and execute the resulting command(s)." +msgstr "Read ARGs as input to the shell and execute the resulting command(s)." + +#: builtins.c:486 +msgid "Getopts is used by shell procedures to parse positional parameters." +msgstr "Getopts is used by shell procedures to parse positional parameters." + +#: builtins.c:488 +msgid "OPTSTRING contains the option letters to be recognized; if a letter" +msgstr "OPTSTRING contains the option letters to be recognized; if a letter" + +#: builtins.c:489 +msgid "is followed by a colon, the option is expected to have an argument," +msgstr "is followed by a colon, the option is expected to have an argument," + +#: builtins.c:490 +msgid "which should be separated from it by white space." +msgstr "which should be separated from it by white space." + +#: builtins.c:492 +msgid "Each time it is invoked, getopts will place the next option in the" +msgstr "Each time it is invoked, getopts will place the next option in the" + +#: builtins.c:493 +msgid "shell variable $name, initializing name if it does not exist, and" +msgstr "shell variable $name, initializing name if it does not exist, and" + +#: builtins.c:494 +msgid "the index of the next argument to be processed into the shell" +msgstr "the index of the next argument to be processed into the shell" + +#: builtins.c:495 +msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +msgstr "variable OPTIND. OPTIND is initialized to 1 each time the shell or" + +#: builtins.c:496 +msgid "a shell script is invoked. When an option requires an argument," +msgstr "a shell script is invoked. When an option requires an argument," + +#: builtins.c:497 +msgid "getopts places that argument into the shell variable OPTARG." +msgstr "getopts places that argument into the shell variable OPTARG." + +#: builtins.c:499 +msgid "getopts reports errors in one of two ways. If the first character" +msgstr "getopts reports errors in one of two ways. If the first character" + +#: builtins.c:500 +msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +msgstr "of OPTSTRING is a colon, getopts uses silent error reporting. In" + +#: builtins.c:501 +msgid "this mode, no error messages are printed. If an invalid option is" +msgstr "this mode, no error messages are printed. If an invalid option is" + +#: builtins.c:502 +msgid "seen, getopts places the option character found into OPTARG. If a" +msgstr "seen, getopts places the option character found into OPTARG. If a" + +#: builtins.c:503 +msgid "required argument is not found, getopts places a ':' into NAME and" +msgstr "required argument is not found, getopts places a ‘:’ into NAME and" + +#: builtins.c:504 +msgid "sets OPTARG to the option character found. If getopts is not in" +msgstr "sets OPTARG to the option character found. If getopts is not in" + +#: builtins.c:505 +msgid "silent mode, and an invalid option is seen, getopts places '?' into" +msgstr "silent mode, and an invalid option is seen, getopts places ‘?’ into" + +#: builtins.c:506 +msgid "NAME and unsets OPTARG. If a required argument is not found, a '?'" +msgstr "NAME and unsets OPTARG. If a required argument is not found, a ‘?’" + +#: builtins.c:507 +msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +msgstr "is placed in NAME, OPTARG is unset, and a diagnostic message is" + +#: builtins.c:508 +msgid "printed." +msgstr "printed." + +#: builtins.c:510 +msgid "If the shell variable OPTERR has the value 0, getopts disables the" +msgstr "If the shell variable OPTERR has the value 0, getopts disables the" + +#: builtins.c:511 +msgid "printing of error messages, even if the first character of" +msgstr "printing of error messages, even if the first character of" + +#: builtins.c:512 +msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +msgstr "OPTSTRING is not a colon. OPTERR has the value 1 by default." + +#: builtins.c:514 +msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +msgstr "Getopts normally parses the positional parameters ($0 - $9), but if" + +#: builtins.c:515 +msgid "more arguments are given, they are parsed instead." +msgstr "more arguments are given, they are parsed instead." + +#: builtins.c:521 +msgid "Exec FILE, replacing this shell with the specified program." +msgstr "Exec FILE, replacing this shell with the specified program." + +#: builtins.c:522 +msgid "If FILE is not specified, the redirections take effect in this" +msgstr "If FILE is not specified, the redirections take effect in this" + +#: builtins.c:523 +msgid "shell. If the first argument is `-l', then place a dash in the" +msgstr "shell. If the first argument is ‘-l’, then place a dash in the" + +#: builtins.c:524 +msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +msgstr "zeroth arg passed to FILE, as login does. If the ‘-c’ option" + +#: builtins.c:525 +msgid "is supplied, FILE is executed with a null environment. The `-a'" +msgstr "is supplied, FILE is executed with a null environment. The ‘-a’" + +#: builtins.c:526 +msgid "option means to make set argv[0] of the executed process to NAME." +msgstr "option means to make set argv[0] of the executed process to NAME." + +#: builtins.c:527 +msgid "If the file cannot be executed and the shell is not interactive," +msgstr "If the file cannot be executed and the shell is not interactive," + +#: builtins.c:528 +msgid "then the shell exits, unless the shell option `execfail' is set." +msgstr "then the shell exits, unless the shell option ‘execfail’ is set." + +#: builtins.c:534 +msgid "Exit the shell with a status of N. If N is omitted, the exit status" +msgstr "Exit the shell with a status of N. If N is omitted, the exit status" + +#: builtins.c:535 +msgid "is that of the last command executed." +msgstr "is that of the last command executed." + +#: builtins.c:541 +msgid "Logout of a login shell." +msgstr "Logout of a login shell." + +#: builtins.c:548 +msgid "" +"fc is used to list or edit and re-execute commands from the history list." +msgstr "" +"fc is used to list or edit and re-execute commands from the history list." + +#: builtins.c:549 +msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +msgstr "FIRST and LAST can be numbers specifying the range, or FIRST can be a" + +#: builtins.c:550 +msgid "string, which means the most recent command beginning with that" +msgstr "string, which means the most recent command beginning with that" + +#: builtins.c:551 +msgid "string." +msgstr "string." + +#: builtins.c:553 +msgid "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +msgstr "" +" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," + +#: builtins.c:554 +msgid " then vi." +msgstr " then vi." + +#: builtins.c:556 +msgid " -l means list lines instead of editing." +msgstr " -l means list lines instead of editing." + +#: builtins.c:557 +msgid " -n means no line numbers listed." +msgstr " -n means no line numbers listed." + +#: builtins.c:558 +msgid "" +" -r means reverse the order of the lines (making it newest listed first)." +msgstr "" +" -r means reverse the order of the lines (making it newest listed first)." + +#: builtins.c:560 +msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +msgstr "With the ‘fc -s [pat=rep ...] [command]’ format, the command is" + +#: builtins.c:561 +msgid "re-executed after the substitution OLD=NEW is performed." +msgstr "re-executed after the substitution OLD=NEW is performed." + +#: builtins.c:563 +msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +msgstr "A useful alias to use with this is r='fc -s', so that typing ‘r cc’" + +#: builtins.c:564 +msgid "runs the last command beginning with `cc' and typing `r' re-executes" +msgstr "runs the last command beginning with ‘cc’ and typing ‘r’ re-executes" + +#: builtins.c:565 +msgid "the last command." +msgstr "the last command." + +#: builtins.c:573 +msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +msgstr "Place JOB_SPEC in the foreground, and make it the current job. If" + +#: builtins.c:574 +msgid "JOB_SPEC is not present, the shell's notion of the current job is" +msgstr "JOB_SPEC is not present, the shell's notion of the current job is" + +#: builtins.c:575 +msgid "used." +msgstr "used." + +#: builtins.c:583 +msgid "Place JOB_SPEC in the background, as if it had been started with" +msgstr "Place JOB_SPEC in the background, as if it had been started with" + +#: builtins.c:584 +msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +msgstr "‘&’. If JOB_SPEC is not present, the shell's notion of the current" + +#: builtins.c:585 +msgid "job is used." +msgstr "job is used." + +#: builtins.c:592 +msgid "For each NAME, the full pathname of the command is determined and" +msgstr "For each NAME, the full pathname of the command is determined and" + +#: builtins.c:593 +msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +msgstr "remembered. If the -p option is supplied, PATHNAME is used as the" + +#: builtins.c:594 +msgid "full pathname of NAME, and no path search is performed. The -r" +msgstr "full pathname of NAME, and no path search is performed. The -r" + +#: builtins.c:595 +msgid "option causes the shell to forget all remembered locations. The -d" +msgstr "option causes the shell to forget all remembered locations. The -d" + +#: builtins.c:596 +msgid "option causes the shell to forget the remembered location of each NAME." +msgstr "" +"option causes the shell to forget the remembered location of each NAME." + +#: builtins.c:597 +msgid "If the -t option is supplied the full pathname to which each NAME" +msgstr "If the -t option is supplied the full pathname to which each NAME" + +#: builtins.c:598 +msgid "corresponds is printed. If multiple NAME arguments are supplied with" +msgstr "corresponds is printed. If multiple NAME arguments are supplied with" + +#: builtins.c:599 +msgid "-t, the NAME is printed before the hashed full pathname. The -l option" +msgstr "" +"-t, the NAME is printed before the hashed full pathname. The -l option" + +#: builtins.c:600 +msgid "causes output to be displayed in a format that may be reused as input." +msgstr "causes output to be displayed in a format that may be reused as input." + +#: builtins.c:601 +msgid "" +"If no arguments are given, information about remembered commands is " +"displayed." +msgstr "" +"If no arguments are given, information about remembered commands is " +"displayed." + +#: builtins.c:608 +msgid "Display helpful information about builtin commands. If PATTERN is" +msgstr "Display helpful information about builtin commands. If PATTERN is" + +#: builtins.c:609 +msgid "specified, gives detailed help on all commands matching PATTERN," +msgstr "specified, gives detailed help on all commands matching PATTERN," + +#: builtins.c:610 +msgid "otherwise a list of the builtins is printed. The -s option" +msgstr "otherwise a list of the builtins is printed. The -s option" + +#: builtins.c:611 +msgid "restricts the output for each builtin command matching PATTERN to" +msgstr "restricts the output for each builtin command matching PATTERN to" + +#: builtins.c:612 +msgid "a short usage synopsis." +msgstr "a short usage synopsis." + +#: builtins.c:620 +msgid "Display the history list with line numbers. Lines listed with" +msgstr "Display the history list with line numbers. Lines listed with" + +#: builtins.c:621 +msgid "with a `*' have been modified. Argument of N says to list only" +msgstr "with a ‘*’ have been modified. Argument of N says to list only" + +#: builtins.c:622 +msgid "the last N lines. The `-c' option causes the history list to be" +msgstr "the last N lines. The ‘-c’ option causes the history list to be" + +#: builtins.c:623 +msgid "cleared by deleting all of the entries. The `-d' option deletes" +msgstr "cleared by deleting all of the entries. The ‘-d’ option deletes" + +#: builtins.c:624 +msgid "the history entry at offset OFFSET. The `-w' option writes out the" +msgstr "the history entry at offset OFFSET. The ‘-w’ option writes out the" + +#: builtins.c:625 +msgid "current history to the history file; `-r' means to read the file and" +msgstr "current history to the history file; ‘-r’ means to read the file and" + +#: builtins.c:626 +msgid "append the contents to the history list instead. `-a' means" +msgstr "append the contents to the history list instead. ‘-a’ means" + +#: builtins.c:627 +msgid "to append history lines from this session to the history file." +msgstr "to append history lines from this session to the history file." + +#: builtins.c:628 +msgid "Argument `-n' means to read all history lines not already read" +msgstr "Argument ‘-n’ means to read all history lines not already read" + +#: builtins.c:629 +msgid "from the history file and append them to the history list." +msgstr "from the history file and append them to the history list." + +#: builtins.c:631 +msgid "If FILENAME is given, then that is used as the history file else" +msgstr "If FILENAME is given, then that is used as the history file else" + +#: builtins.c:632 +msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +msgstr "if $HISTFILE has a value, that is used, else ~/.bash_history." + +#: builtins.c:633 +msgid "If the -s option is supplied, the non-option ARGs are appended to" +msgstr "If the -s option is supplied, the non-option ARGs are appended to" + +#: builtins.c:634 +msgid "the history list as a single entry. The -p option means to perform" +msgstr "the history list as a single entry. The -p option means to perform" + +#: builtins.c:635 +msgid "history expansion on each ARG and display the result, without storing" +msgstr "history expansion on each ARG and display the result, without storing" + +#: builtins.c:636 +msgid "anything in the history list." +msgstr "anything in the history list." + +#: builtins.c:638 +msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used" +msgstr "If the $HISTTIMEFORMAT variable is set and not null, its value is used" + +#: builtins.c:639 +msgid "as a format string for strftime(3) to print the time stamp associated" +msgstr "as a format string for strftime(3) to print the time stamp associated" + +#: builtins.c:640 +msgid "" +"with each displayed history entry. No time stamps are printed otherwise." +msgstr "" +"with each displayed history entry. No time stamps are printed otherwise." + +#: builtins.c:648 +msgid "Lists the active jobs. The -l option lists process id's in addition" +msgstr "Lists the active jobs. The -l option lists process id's in addition" + +#: builtins.c:649 +msgid "to the normal information; the -p option lists process id's only." +msgstr "to the normal information; the -p option lists process id's only." + +#: builtins.c:650 +msgid "If -n is given, only processes that have changed status since the last" +msgstr "If -n is given, only processes that have changed status since the last" + +#: builtins.c:651 +msgid "notification are printed. JOBSPEC restricts output to that job. The" +msgstr "notification are printed. JOBSPEC restricts output to that job. The" + +#: builtins.c:652 +msgid "-r and -s options restrict output to running and stopped jobs only," +msgstr "-r and -s options restrict output to running and stopped jobs only," + +#: builtins.c:653 +msgid "respectively. Without options, the status of all active jobs is" +msgstr "respectively. Without options, the status of all active jobs is" + +#: builtins.c:654 +msgid "printed. If -x is given, COMMAND is run after all job specifications" +msgstr "printed. If -x is given, COMMAND is run after all job specifications" + +#: builtins.c:655 +msgid "" +"that appear in ARGS have been replaced with the process ID of that job's" +msgstr "" +"that appear in ARGS have been replaced with the process ID of that job's" + +#: builtins.c:656 +msgid "process group leader." +msgstr "process group leader." + +#: builtins.c:664 +msgid "" +"By default, removes each JOBSPEC argument from the table of active jobs." +msgstr "" +"By default, removes each JOBSPEC argument from the table of active jobs." + +#: builtins.c:665 +msgid "" +"If the -h option is given, the job is not removed from the table, but is" +msgstr "" +"If the -h option is given, the job is not removed from the table, but is" + +#: builtins.c:666 +msgid "marked so that SIGHUP is not sent to the job if the shell receives a" +msgstr "marked so that SIGHUP is not sent to the job if the shell receives a" + +#: builtins.c:667 +msgid "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" +msgstr "" +"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all" + +#: builtins.c:668 +msgid "" +"jobs from the job table; the -r option means to remove only running jobs." +msgstr "" +"jobs from the job table; the -r option means to remove only running jobs." + +#: builtins.c:675 +msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +msgstr "Send the processes named by PID (or JOB) the signal SIGSPEC. If" + +#: builtins.c:676 +msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +msgstr "SIGSPEC is not present, then SIGTERM is assumed. An argument of ‘-l’" + +#: builtins.c:677 +msgid "lists the signal names; if arguments follow `-l' they are assumed to" +msgstr "lists the signal names; if arguments follow ‘-l’ they are assumed to" + +#: builtins.c:678 +msgid "be signal numbers for which names should be listed. Kill is a shell" +msgstr "be signal numbers for which names should be listed. Kill is a shell" + +#: builtins.c:679 +msgid "builtin for two reasons: it allows job IDs to be used instead of" +msgstr "builtin for two reasons: it allows job IDs to be used instead of" + +#: builtins.c:680 +msgid "process IDs, and, if you have reached the limit on processes that" +msgstr "process IDs, and, if you have reached the limit on processes that" + +#: builtins.c:681 +msgid "you can create, you don't have to start a process to kill another one." +msgstr "you can create, you don't have to start a process to kill another one." + +#: builtins.c:687 +msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +msgstr "Each ARG is an arithmetic expression to be evaluated. Evaluation" + +#: builtins.c:688 +msgid "is done in fixed-width integers with no check for overflow, though" +msgstr "is done in fixed-width integers with no check for overflow, though" + +#: builtins.c:689 +msgid "division by 0 is trapped and flagged as an error. The following" +msgstr "division by 0 is trapped and flagged as an error. The following" + +#: builtins.c:690 +msgid "list of operators is grouped into levels of equal-precedence operators." +msgstr "" +"list of operators is grouped into levels of equal-precedence operators." + +#: builtins.c:691 +msgid "The levels are listed in order of decreasing precedence." +msgstr "The levels are listed in order of decreasing precedence." + +#: builtins.c:693 +msgid "\tid++, id--\tvariable post-increment, post-decrement" +msgstr "\tid++, id--\tvariable post-increment, post-decrement" + +#: builtins.c:694 +msgid "\t++id, --id\tvariable pre-increment, pre-decrement" +msgstr "\t++id, --id\tvariable pre-increment, pre-decrement" + +#: builtins.c:695 +msgid "\t-, +\t\tunary minus, plus" +msgstr "\t-, +\t\tunary minus, plus" + +#: builtins.c:696 +msgid "\t!, ~\t\tlogical and bitwise negation" +msgstr "\t!, ~\t\tlogical and bitwise negation" + +#: builtins.c:697 +msgid "\t**\t\texponentiation" +msgstr "\t**\t\texponentiation" + +#: builtins.c:698 +msgid "\t*, /, %\t\tmultiplication, division, remainder" +msgstr "\t*, /, %\t\tmultiplication, division, remainder" + +#: builtins.c:699 +msgid "\t+, -\t\taddition, subtraction" +msgstr "\t+, -\t\taddition, subtraction" + +#: builtins.c:700 +msgid "\t<<, >>\t\tleft and right bitwise shifts" +msgstr "\t<<, >>\t\tleft and right bitwise shifts" + +#: builtins.c:701 +msgid "\t<=, >=, <, >\tcomparison" +msgstr "\t<=, >=, <, >\tcomparison" + +#: builtins.c:702 +msgid "\t==, !=\t\tequality, inequality" +msgstr "\t==, !=\t\tequality, inequality" + +#: builtins.c:703 +msgid "\t&\t\tbitwise AND" +msgstr "\t&\t\tbitwise AND" + +#: builtins.c:704 +msgid "\t^\t\tbitwise XOR" +msgstr "\t^\t\tbitwise XOR" + +#: builtins.c:705 +msgid "\t|\t\tbitwise OR" +msgstr "\t|\t\tbitwise OR" + +#: builtins.c:706 +msgid "\t&&\t\tlogical AND" +msgstr "\t&&\t\tlogical AND" + +#: builtins.c:707 +msgid "\t||\t\tlogical OR" +msgstr "\t||\t\tlogical OR" + +#: builtins.c:708 +msgid "\texpr ? expr : expr" +msgstr "\texpr ? expr : expr" + +#: builtins.c:709 +msgid "\t\t\tconditional operator" +msgstr "\t\t\tconditional operator" + +#: builtins.c:710 +msgid "\t=, *=, /=, %=," +msgstr "\t=, *=, /=, %=," + +#: builtins.c:711 +msgid "\t+=, -=, <<=, >>=," +msgstr "\t+=, -=, <<=, >>=," + +#: builtins.c:712 +msgid "\t&=, ^=, |=\tassignment" +msgstr "\t&=, ^=, |=\tassignment" + +#: builtins.c:714 +msgid "Shell variables are allowed as operands. The name of the variable" +msgstr "Shell variables are allowed as operands. The name of the variable" + +#: builtins.c:715 +msgid "is replaced by its value (coerced to a fixed-width integer) within" +msgstr "is replaced by its value (coerced to a fixed-width integer) within" + +#: builtins.c:716 +msgid "an expression. The variable need not have its integer attribute" +msgstr "an expression. The variable need not have its integer attribute" + +#: builtins.c:717 +msgid "turned on to be used in an expression." +msgstr "turned on to be used in an expression." + +#: builtins.c:719 +msgid "Operators are evaluated in order of precedence. Sub-expressions in" +msgstr "Operators are evaluated in order of precedence. Sub-expressions in" + +#: builtins.c:720 +msgid "parentheses are evaluated first and may override the precedence" +msgstr "parentheses are evaluated first and may override the precedence" + +#: builtins.c:721 +msgid "rules above." +msgstr "rules above." + +#: builtins.c:723 +msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +msgstr "If the last ARG evaluates to 0, let returns 1; 0 is returned" + +#: builtins.c:724 +msgid "otherwise." +msgstr "otherwise." + +#: builtins.c:730 +msgid "" +"One line is read from the standard input, or from file descriptor FD if the" +msgstr "" +"One line is read from the standard input, or from file descriptor FD if the" + +#: builtins.c:731 +msgid "" +"-u option is supplied, and the first word is assigned to the first NAME," +msgstr "" +"-u option is supplied, and the first word is assigned to the first NAME," + +#: builtins.c:732 +msgid "" +"the second word to the second NAME, and so on, with leftover words assigned" +msgstr "" +"the second word to the second NAME, and so on, with leftover words assigned" + +#: builtins.c:733 +msgid "" +"to the last NAME. Only the characters found in $IFS are recognized as word" +msgstr "" +"to the last NAME. Only the characters found in $IFS are recognized as word" + +#: builtins.c:734 +msgid "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" +msgstr "" +"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY" + +#: builtins.c:735 +msgid "variable. If the -r option is given, this signifies `raw' input, and" +msgstr "variable. If the -r option is given, this signifies ‘raw’ input, and" + +#: builtins.c:736 +msgid "backslash escaping is disabled. The -d option causes read to continue" +msgstr "backslash escaping is disabled. The -d option causes read to continue" + +#: builtins.c:737 +msgid "" +"until the first character of DELIM is read, rather than newline. If the -p" +msgstr "" +"until the first character of DELIM is read, rather than newline. If the -p" + +#: builtins.c:738 +msgid "" +"option is supplied, the string PROMPT is output without a trailing newline" +msgstr "" +"option is supplied, the string PROMPT is output without a trailing newline" + +#: builtins.c:739 +msgid "" +"before attempting to read. If -a is supplied, the words read are assigned" +msgstr "" +"before attempting to read. If -a is supplied, the words read are assigned" + +#: builtins.c:740 +msgid "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" +msgstr "" +"to sequential indices of ARRAY, starting at zero. If -e is supplied and" + +#: builtins.c:741 +msgid "" +"the shell is interactive, readline is used to obtain the line. If -n is" +msgstr "" +"the shell is interactive, readline is used to obtain the line. If -n is" + +#: builtins.c:742 +msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS" +msgstr "supplied with a non-zero NCHARS argument, read returns after NCHARS" + +#: builtins.c:743 +msgid "characters have been read. The -s option causes input coming from a" +msgstr "characters have been read. The -s option causes input coming from a" + +#: builtins.c:744 +msgid "terminal to not be echoed." +msgstr "terminal to not be echoed." + +#: builtins.c:746 +msgid "" +"The -t option causes read to time out and return failure if a complete line" +msgstr "" +"The -t option causes read to time out and return failure if a complete line" + +#: builtins.c:747 +msgid "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," +msgstr "" +"of input is not read within TIMEOUT seconds. If the TMOUT variable is set," + +#: builtins.c:748 +msgid "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" +msgstr "" +"its value is the default timeout. The return code is zero, unless end-of-" +"file" + +#: builtins.c:749 +msgid "" +"is encountered, read times out, or an invalid file descriptor is supplied as" +msgstr "" +"is encountered, read times out, or an invalid file descriptor is supplied as" + +#: builtins.c:750 +msgid "the argument to -u." +msgstr "the argument to -u." + +#: builtins.c:756 +msgid "Causes a function to exit with the return value specified by N. If N" +msgstr "Causes a function to exit with the return value specified by N. If N" + +#: builtins.c:757 +msgid "is omitted, the return status is that of the last command." +msgstr "is omitted, the return status is that of the last command." + +#: builtins.c:763 +msgid " -a Mark variables which are modified or created for export." +msgstr " -a Mark variables which are modified or created for export." + +#: builtins.c:764 +msgid " -b Notify of job termination immediately." +msgstr " -b Notify of job termination immediately." + +#: builtins.c:765 +msgid " -e Exit immediately if a command exits with a non-zero status." +msgstr " -e Exit immediately if a command exits with a non-zero status." + +#: builtins.c:766 +msgid " -f Disable file name generation (globbing)." +msgstr " -f Disable file name generation (globbing)." + +#: builtins.c:767 +msgid " -h Remember the location of commands as they are looked up." +msgstr " -h Remember the location of commands as they are looked up." + +#: builtins.c:768 +msgid " -k All assignment arguments are placed in the environment for a" +msgstr " -k All assignment arguments are placed in the environment for a" + +#: builtins.c:769 +msgid " command, not just those that precede the command name." +msgstr " command, not just those that precede the command name." + +#: builtins.c:770 +msgid " -m Job control is enabled." +msgstr " -m Job control is enabled." + +#: builtins.c:771 +msgid " -n Read commands but do not execute them." +msgstr " -n Read commands but do not execute them." + +#: builtins.c:772 +msgid " -o option-name" +msgstr " -o option-name" + +#: builtins.c:773 +msgid " Set the variable corresponding to option-name:" +msgstr " Set the variable corresponding to option-name:" + +#: builtins.c:774 +msgid " allexport same as -a" +msgstr " allexport same as -a" + +#: builtins.c:775 +msgid " braceexpand same as -B" +msgstr " braceexpand same as -B" + +#: builtins.c:777 +msgid " emacs use an emacs-style line editing interface" +msgstr " emacs use an emacs-style line editing interface" + +#: builtins.c:779 +msgid " errexit same as -e" +msgstr " errexit same as -e" + +#: builtins.c:780 +msgid " errtrace same as -E" +msgstr " errtrace same as -E" + +#: builtins.c:781 +msgid " functrace same as -T" +msgstr " functrace same as -T" + +#: builtins.c:782 +msgid " hashall same as -h" +msgstr " hashall same as -h" + +#: builtins.c:784 +msgid " histexpand same as -H" +msgstr " histexpand same as -H" + +#: builtins.c:787 +msgid " history enable command history" +msgstr " history enable command history" + +#: builtins.c:789 +msgid " ignoreeof the shell will not exit upon reading EOF" +msgstr " ignoreeof the shell will not exit upon reading EOF" + +#: builtins.c:790 +msgid " interactive-comments" +msgstr " interactive-comments" + +#: builtins.c:791 +msgid "" +" allow comments to appear in interactive commands" +msgstr "" +" allow comments to appear in interactive commands" + +#: builtins.c:792 +msgid " keyword same as -k" +msgstr " keyword same as -k" + +#: builtins.c:793 +msgid " monitor same as -m" +msgstr " monitor same as -m" + +#: builtins.c:794 +msgid " noclobber same as -C" +msgstr " noclobber same as -C" + +#: builtins.c:795 +msgid " noexec same as -n" +msgstr " noexec same as -n" + +#: builtins.c:796 +msgid " noglob same as -f" +msgstr " noglob same as -f" + +#: builtins.c:797 +msgid " nolog currently accepted but ignored" +msgstr " nolog currently accepted but ignored" + +#: builtins.c:798 +msgid " notify same as -b" +msgstr " notify same as -b" + +#: builtins.c:799 +msgid " nounset same as -u" +msgstr " nounset same as -u" + +#: builtins.c:800 +msgid " onecmd same as -t" +msgstr " onecmd same as -t" + +#: builtins.c:801 +msgid " physical same as -P" +msgstr " physical same as -P" + +#: builtins.c:802 +msgid "" +" pipefail the return value of a pipeline is the status of" +msgstr "" +" pipefail the return value of a pipeline is the status of" + +#: builtins.c:803 +msgid "" +" the last command to exit with a non-zero status," +msgstr "" +" the last command to exit with a non-zero status," + +#: builtins.c:804 +msgid "" +" or zero if no command exited with a non-zero status" +msgstr "" +" or zero if no command exited with a non-zero status" + +#: builtins.c:805 +msgid " posix change the behavior of bash where the default" +msgstr " posix change the behavior of bash where the default" + +#: builtins.c:806 +msgid " operation differs from the 1003.2 standard to" +msgstr " operation differs from the 1003.2 standard to" + +#: builtins.c:807 +msgid " match the standard" +msgstr " match the standard" + +#: builtins.c:808 +msgid " privileged same as -p" +msgstr " privileged same as -p" + +#: builtins.c:809 +msgid " verbose same as -v" +msgstr " verbose same as -v" + +#: builtins.c:811 +msgid " vi use a vi-style line editing interface" +msgstr " vi use a vi-style line editing interface" + +#: builtins.c:813 +msgid " xtrace same as -x" +msgstr " xtrace same as -x" + +#: builtins.c:814 +msgid "" +" -p Turned on whenever the real and effective user ids do not match." +msgstr "" +" -p Turned on whenever the real and effective user ids do not match." + +#: builtins.c:815 +msgid " Disables processing of the $ENV file and importing of shell" +msgstr " Disables processing of the $ENV file and importing of shell" + +#: builtins.c:816 +msgid "" +" functions. Turning this option off causes the effective uid and" +msgstr "" +" functions. Turning this option off causes the effective uid and" + +#: builtins.c:817 +msgid " gid to be set to the real uid and gid." +msgstr " gid to be set to the real uid and gid." + +#: builtins.c:818 +msgid " -t Exit after reading and executing one command." +msgstr " -t Exit after reading and executing one command." + +#: builtins.c:819 +msgid " -u Treat unset variables as an error when substituting." +msgstr " -u Treat unset variables as an error when substituting." + +#: builtins.c:820 +msgid " -v Print shell input lines as they are read." +msgstr " -v Print shell input lines as they are read." + +#: builtins.c:821 +msgid " -x Print commands and their arguments as they are executed." +msgstr " -x Print commands and their arguments as they are executed." + +#: builtins.c:823 +msgid " -B the shell will perform brace expansion" +msgstr " -B the shell will perform brace expansion" + +#: builtins.c:825 +msgid " -C If set, disallow existing regular files to be overwritten" +msgstr " -C If set, disallow existing regular files to be overwritten" + +#: builtins.c:826 +msgid " by redirection of output." +msgstr " by redirection of output." + +#: builtins.c:827 +msgid " -E If set, the ERR trap is inherited by shell functions." +msgstr " -E If set, the ERR trap is inherited by shell functions." + +#: builtins.c:829 +msgid " -H Enable ! style history substitution. This flag is on" +msgstr " -H Enable ! style history substitution. This flag is on" + +#: builtins.c:830 +msgid " by default." +msgstr " by default." + +#: builtins.c:832 +msgid " -P If set, do not follow symbolic links when executing commands" +msgstr " -P If set, do not follow symbolic links when executing commands" + +#: builtins.c:833 +msgid " such as cd which change the current directory." +msgstr " such as cd which change the current directory." + +#: builtins.c:834 +msgid " -T If set, the DEBUG trap is inherited by shell functions." +msgstr " -T If set, the DEBUG trap is inherited by shell functions." + +#: builtins.c:836 +msgid "Using + rather than - causes these flags to be turned off. The" +msgstr "Using + rather than - causes these flags to be turned off. The" + +#: builtins.c:837 +msgid "flags can also be used upon invocation of the shell. The current" +msgstr "flags can also be used upon invocation of the shell. The current" + +#: builtins.c:838 +msgid "set of flags may be found in $-. The remaining n ARGs are positional" +msgstr "set of flags may be found in $-. The remaining n ARGs are positional" + +#: builtins.c:839 +msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +msgstr "parameters and are assigned, in order, to $1, $2, .. $n. If no" + +#: builtins.c:840 +msgid "ARGs are given, all shell variables are printed." +msgstr "ARGs are given, all shell variables are printed." + +#: builtins.c:846 +msgid "For each NAME, remove the corresponding variable or function. Given" +msgstr "For each NAME, remove the corresponding variable or function. Given" + +#: builtins.c:847 +msgid "the `-v', unset will only act on variables. Given the `-f' flag," +msgstr "the ‘-v’, unset will only act on variables. Given the ‘-f’ flag," + +#: builtins.c:848 +msgid "unset will only act on functions. With neither flag, unset first" +msgstr "unset will only act on functions. With neither flag, unset first" + +#: builtins.c:849 +msgid "tries to unset a variable, and if that fails, then tries to unset a" +msgstr "tries to unset a variable, and if that fails, then tries to unset a" + +#: builtins.c:850 +msgid "function. Some variables cannot be unset; also see readonly." +msgstr "function. Some variables cannot be unset; also see readonly." + +#: builtins.c:856 +msgid "NAMEs are marked for automatic export to the environment of" +msgstr "NAMEs are marked for automatic export to the environment of" + +#: builtins.c:857 +msgid "subsequently executed commands. If the -f option is given," +msgstr "subsequently executed commands. If the -f option is given," + +#: builtins.c:858 +msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +msgstr "the NAMEs refer to functions. If no NAMEs are given, or if ‘-p’" + +#: builtins.c:859 +msgid "is given, a list of all names that are exported in this shell is" +msgstr "is given, a list of all names that are exported in this shell is" + +#: builtins.c:860 +msgid "printed. An argument of `-n' says to remove the export property" +msgstr "printed. An argument of ‘-n’ says to remove the export property" + +#: builtins.c:861 +msgid "from subsequent NAMEs. An argument of `--' disables further option" +msgstr "from subsequent NAMEs. An argument of ‘--’ disables further option" + +#: builtins.c:862 builtins.c:874 +msgid "processing." +msgstr "processing." + +#: builtins.c:868 +msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +msgstr "The given NAMEs are marked readonly and the values of these NAMEs may" + +#: builtins.c:869 +msgid "not be changed by subsequent assignment. If the -f option is given," +msgstr "not be changed by subsequent assignment. If the -f option is given," + +#: builtins.c:870 +msgid "then functions corresponding to the NAMEs are so marked. If no" +msgstr "then functions corresponding to the NAMEs are so marked. If no" + +#: builtins.c:871 +msgid "arguments are given, or if `-p' is given, a list of all readonly names" +msgstr "arguments are given, or if ‘-p’ is given, a list of all readonly names" + +#: builtins.c:872 +msgid "is printed. The `-a' option means to treat each NAME as" +msgstr "is printed. The ‘-a’ option means to treat each NAME as" + +#: builtins.c:873 +msgid "an array variable. An argument of `--' disables further option" +msgstr "an array variable. An argument of ‘--’ disables further option" + +#: builtins.c:880 +msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +msgstr "The positional parameters from $N+1 ... are renamed to $1 ... If N is" + +#: builtins.c:881 +msgid "not given, it is assumed to be 1." +msgstr "not given, it is assumed to be 1." + +#: builtins.c:887 builtins.c:896 +msgid "Read and execute commands from FILENAME and return. The pathnames" +msgstr "Read and execute commands from FILENAME and return. The pathnames" + +#: builtins.c:888 builtins.c:897 +msgid "in $PATH are used to find the directory containing FILENAME. If any" +msgstr "in $PATH are used to find the directory containing FILENAME. If any" + +#: builtins.c:889 builtins.c:898 +msgid "ARGUMENTS are supplied, they become the positional parameters when" +msgstr "ARGUMENTS are supplied, they become the positional parameters when" + +#: builtins.c:890 builtins.c:899 +msgid "FILENAME is executed." +msgstr "FILENAME is executed." + +#: builtins.c:906 +msgid "Suspend the execution of this shell until it receives a SIGCONT" +msgstr "Suspend the execution of this shell until it receives a SIGCONT" + +#: builtins.c:907 +msgid "signal. The `-f' if specified says not to complain about this" +msgstr "signal. The ‘-f’ if specified says not to complain about this" + +#: builtins.c:908 +msgid "being a login shell if it is; just suspend anyway." +msgstr "being a login shell if it is; just suspend anyway." + +#: builtins.c:915 +msgid "Exits with a status of 0 (true) or 1 (false) depending on" +msgstr "Exits with a status of 0 (true) or 1 (false) depending on" + +#: builtins.c:916 +msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +msgstr "the evaluation of EXPR. Expressions may be unary or binary. Unary" + +#: builtins.c:917 +msgid "expressions are often used to examine the status of a file. There" +msgstr "expressions are often used to examine the status of a file. There" + +#: builtins.c:918 +msgid "are string operators as well, and numeric comparison operators." +msgstr "are string operators as well, and numeric comparison operators." + +#: builtins.c:920 +msgid "File operators:" +msgstr "File operators:" + +#: builtins.c:922 +msgid " -a FILE True if file exists." +msgstr " -a FILE True if file exists." + +#: builtins.c:923 +msgid " -b FILE True if file is block special." +msgstr " -b FILE True if file is block special." + +#: builtins.c:924 +msgid " -c FILE True if file is character special." +msgstr " -c FILE True if file is character special." + +#: builtins.c:925 +msgid " -d FILE True if file is a directory." +msgstr " -d FILE True if file is a directory." + +#: builtins.c:926 +msgid " -e FILE True if file exists." +msgstr " -e FILE True if file exists." + +#: builtins.c:927 +msgid " -f FILE True if file exists and is a regular file." +msgstr " -f FILE True if file exists and is a regular file." + +#: builtins.c:928 +msgid " -g FILE True if file is set-group-id." +msgstr " -g FILE True if file is set-group-id." + +#: builtins.c:929 +msgid " -h FILE True if file is a symbolic link." +msgstr " -h FILE True if file is a symbolic link." + +#: builtins.c:930 +msgid " -L FILE True if file is a symbolic link." +msgstr " -L FILE True if file is a symbolic link." + +#: builtins.c:931 +msgid " -k FILE True if file has its `sticky' bit set." +msgstr " -k FILE True if file has its ‘sticky’ bit set." + +#: builtins.c:932 +msgid " -p FILE True if file is a named pipe." +msgstr " -p FILE True if file is a named pipe." + +#: builtins.c:933 +msgid " -r FILE True if file is readable by you." +msgstr " -r FILE True if file is readable by you." + +#: builtins.c:934 +msgid " -s FILE True if file exists and is not empty." +msgstr " -s FILE True if file exists and is not empty." + +#: builtins.c:935 +msgid " -S FILE True if file is a socket." +msgstr " -S FILE True if file is a socket." + +#: builtins.c:936 +msgid " -t FD True if FD is opened on a terminal." +msgstr " -t FD True if FD is opened on a terminal." + +#: builtins.c:937 +msgid " -u FILE True if the file is set-user-id." +msgstr " -u FILE True if the file is set-user-id." + +#: builtins.c:938 +msgid " -w FILE True if the file is writable by you." +msgstr " -w FILE True if the file is writable by you." + +#: builtins.c:939 +msgid " -x FILE True if the file is executable by you." +msgstr " -x FILE True if the file is executable by you." + +#: builtins.c:940 +msgid " -O FILE True if the file is effectively owned by you." +msgstr " -O FILE True if the file is effectively owned by you." + +#: builtins.c:941 +msgid " -G FILE True if the file is effectively owned by your group." +msgstr "" +" -G FILE True if the file is effectively owned by your group." + +#: builtins.c:942 +msgid "" +" -N FILE True if the file has been modified since it was last read." +msgstr "" +" -N FILE True if the file has been modified since it was last read." + +#: builtins.c:944 +msgid " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" +msgstr " FILE1 -nt FILE2 True if file1 is newer than file2 (according to" + +#: builtins.c:945 +msgid " modification date)." +msgstr " modification date)." + +#: builtins.c:947 +msgid " FILE1 -ot FILE2 True if file1 is older than file2." +msgstr " FILE1 -ot FILE2 True if file1 is older than file2." + +#: builtins.c:949 +msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +msgstr " FILE1 -ef FILE2 True if file1 is a hard link to file2." + +#: builtins.c:951 +msgid "String operators:" +msgstr "String operators:" + +#: builtins.c:953 +msgid " -z STRING True if string is empty." +msgstr " -z STRING True if string is empty." + +#: builtins.c:955 +msgid " -n STRING" +msgstr " -n STRING" + +#: builtins.c:956 +msgid " STRING True if string is not empty." +msgstr " STRING True if string is not empty." + +#: builtins.c:958 +msgid " STRING1 = STRING2" +msgstr " STRING1 = STRING2" + +#: builtins.c:959 +msgid " True if the strings are equal." +msgstr " True if the strings are equal." + +#: builtins.c:960 +msgid " STRING1 != STRING2" +msgstr " STRING1 != STRING2" + +#: builtins.c:961 +msgid " True if the strings are not equal." +msgstr " True if the strings are not equal." + +#: builtins.c:962 +msgid " STRING1 < STRING2" +msgstr " STRING1 < STRING2" + +#: builtins.c:963 +msgid "" +" True if STRING1 sorts before STRING2 lexicographically." +msgstr "" +" True if STRING1 sorts before STRING2 lexicographically." + +#: builtins.c:964 +msgid " STRING1 > STRING2" +msgstr " STRING1 > STRING2" + +#: builtins.c:965 +msgid "" +" True if STRING1 sorts after STRING2 lexicographically." +msgstr "" +" True if STRING1 sorts after STRING2 lexicographically." + +#: builtins.c:967 +msgid "Other operators:" +msgstr "Other operators:" + +#: builtins.c:969 +msgid " -o OPTION True if the shell option OPTION is enabled." +msgstr " -o OPTION True if the shell option OPTION is enabled." + +#: builtins.c:970 +msgid " ! EXPR True if expr is false." +msgstr " ! EXPR True if expr is false." + +#: builtins.c:971 +msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +msgstr " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." + +#: builtins.c:972 +msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +msgstr " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." + +#: builtins.c:974 +msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +msgstr " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," + +#: builtins.c:975 +msgid " -lt, -le, -gt, or -ge." +msgstr " -lt, -le, -gt, or -ge." + +#: builtins.c:977 +msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +msgstr "Arithmetic binary operators return true if ARG1 is equal, not-equal," + +#: builtins.c:978 +msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +msgstr "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" + +#: builtins.c:979 +msgid "than ARG2." +msgstr "than ARG2." + +#: builtins.c:985 +msgid "This is a synonym for the \"test\" builtin, but the last" +msgstr "This is a synonym for the “test” builtin, but the last" + +#: builtins.c:986 +msgid "argument must be a literal `]', to match the opening `['." +msgstr "argument must be a literal ‘]’, to match the opening ‘[’." + +#: builtins.c:992 +msgid "Print the accumulated user and system times for processes run from" +msgstr "Print the accumulated user and system times for processes run from" + +#: builtins.c:993 +msgid "the shell." +msgstr "the shell." + +#: builtins.c:999 +msgid "The command ARG is to be read and executed when the shell receives" +msgstr "The command ARG is to be read and executed when the shell receives" + +#: builtins.c:1000 +msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +msgstr "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" + +#: builtins.c:1001 +msgid "reset to their original values. If ARG is the null string each" +msgstr "reset to their original values. If ARG is the null string each" + +#: builtins.c:1002 +msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." + +#: builtins.c:1003 +msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" + +#: builtins.c:1004 +msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" +msgstr "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" + +#: builtins.c:1005 +msgid "command. If ARG is `-p' then the trap commands associated with" +msgstr "command. If ARG is ‘-p’ then the trap commands associated with" + +#: builtins.c:1006 +msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +msgstr "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" + +#: builtins.c:1007 +msgid "only `-p' is given, trap prints the list of commands associated with" +msgstr "only ‘-p’ is given, trap prints the list of commands associated with" + +#: builtins.c:1008 +msgid "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " +msgstr "" +"each signal number. Each SIGNAL_SPEC is either a signal name in " + +#: builtins.c:1009 +msgid "or a signal number. `trap -l' prints a list of signal names and their" +msgstr "or a signal number. ‘trap -l’ prints a list of signal names and their" + +#: builtins.c:1010 +msgid "corresponding numbers. Note that a signal can be sent to the shell" +msgstr "corresponding numbers. Note that a signal can be sent to the shell" + +#: builtins.c:1011 +msgid "with \"kill -signal $$\"." +msgstr "with “kill -signal $$”." + +#: builtins.c:1017 +msgid "For each NAME, indicate how it would be interpreted if used as a" +msgstr "For each NAME, indicate how it would be interpreted if used as a" + +#: builtins.c:1018 +msgid "command name." +msgstr "command name." + +#: builtins.c:1020 +msgid "If the -t option is used, `type' outputs a single word which is one of" +msgstr "If the -t option is used, ‘type’ outputs a single word which is one of" + +#: builtins.c:1021 +msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +msgstr "‘alias’, ‘keyword’, ‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an" + +#: builtins.c:1022 +msgid "alias, shell reserved word, shell function, shell builtin, disk file," +msgstr "alias, shell reserved word, shell function, shell builtin, disk file," + +#: builtins.c:1023 +msgid "or unfound, respectively." +msgstr "or unfound, respectively." + +#: builtins.c:1025 +msgid "If the -p flag is used, `type' either returns the name of the disk" +msgstr "If the -p flag is used, ‘type’ either returns the name of the disk" + +#: builtins.c:1026 +msgid "file that would be executed, or nothing if `type -t NAME' would not" +msgstr "file that would be executed, or nothing if ‘type -t NAME’ would not" + +#: builtins.c:1027 +msgid "return `file'." +msgstr "return ‘file’." + +#: builtins.c:1029 +msgid "If the -a flag is used, `type' displays all of the places that contain" +msgstr "If the -a flag is used, ‘type’ displays all of the places that contain" + +#: builtins.c:1030 +msgid "an executable named `file'. This includes aliases, builtins, and" +msgstr "an executable named ‘file’. This includes aliases, builtins, and" + +#: builtins.c:1031 +msgid "functions, if and only if the -p flag is not also used." +msgstr "functions, if and only if the -p flag is not also used." + +#: builtins.c:1033 +msgid "The -f flag suppresses shell function lookup." +msgstr "The -f flag suppresses shell function lookup." + +#: builtins.c:1035 +msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," +msgstr "" +"The -P flag forces a PATH search for each NAME, even if it is an alias," + +#: builtins.c:1036 +msgid "builtin, or function, and returns the name of the disk file that would" +msgstr "builtin, or function, and returns the name of the disk file that would" + +#: builtins.c:1037 +msgid "be executed." +msgstr "be executed." + +#: builtins.c:1044 +msgid "Ulimit provides control over the resources available to processes" +msgstr "Ulimit provides control over the resources available to processes" + +#: builtins.c:1045 +msgid "started by the shell, on systems that allow such control. If an" +msgstr "started by the shell, on systems that allow such control. If an" + +#: builtins.c:1046 +msgid "option is given, it is interpreted as follows:" +msgstr "option is given, it is interpreted as follows:" + +#: builtins.c:1048 +msgid " -S\tuse the `soft' resource limit" +msgstr " -S\tuse the ‘soft’ resource limit" + +#: builtins.c:1049 +msgid " -H\tuse the `hard' resource limit" +msgstr " -H\tuse the ‘hard’ resource limit" + +#: builtins.c:1050 +msgid " -a\tall current limits are reported" +msgstr " -a\tall current limits are reported" + +#: builtins.c:1051 +msgid " -c\tthe maximum size of core files created" +msgstr " -c\tthe maximum size of core files created" + +#: builtins.c:1052 +msgid " -d\tthe maximum size of a process's data segment" +msgstr " -d\tthe maximum size of a process's data segment" + +#: builtins.c:1053 +msgid " -f\tthe maximum size of files created by the shell" +msgstr " -f\tthe maximum size of files created by the shell" + +#: builtins.c:1054 +msgid " -l\tthe maximum size a process may lock into memory" +msgstr " -l\tthe maximum size a process may lock into memory" + +#: builtins.c:1055 +msgid " -m\tthe maximum resident set size" +msgstr " -m\tthe maximum resident set size" + +#: builtins.c:1056 +msgid " -n\tthe maximum number of open file descriptors" +msgstr " -n\tthe maximum number of open file descriptors" + +#: builtins.c:1057 +msgid " -p\tthe pipe buffer size" +msgstr " -p\tthe pipe buffer size" + +#: builtins.c:1058 +msgid " -s\tthe maximum stack size" +msgstr " -s\tthe maximum stack size" + +#: builtins.c:1059 +msgid " -t\tthe maximum amount of cpu time in seconds" +msgstr " -t\tthe maximum amount of cpu time in seconds" + +#: builtins.c:1060 +msgid " -u\tthe maximum number of user processes" +msgstr " -u\tthe maximum number of user processes" + +#: builtins.c:1061 +msgid " -v\tthe size of virtual memory" +msgstr " -v\tthe size of virtual memory" + +#: builtins.c:1063 +msgid "If LIMIT is given, it is the new value of the specified resource;" +msgstr "If LIMIT is given, it is the new value of the specified resource;" + +#: builtins.c:1064 +msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" +msgstr "the special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ stand for" + +#: builtins.c:1065 +msgid "" +"the current soft limit, the current hard limit, and no limit, respectively." +msgstr "" +"the current soft limit, the current hard limit, and no limit, respectively." + +#: builtins.c:1066 +msgid "Otherwise, the current value of the specified resource is printed." +msgstr "Otherwise, the current value of the specified resource is printed." + +#: builtins.c:1067 +msgid "If no option is given, then -f is assumed. Values are in 1024-byte" +msgstr "If no option is given, then -f is assumed. Values are in 1024-byte" + +#: builtins.c:1068 +msgid "increments, except for -t, which is in seconds, -p, which is in" +msgstr "increments, except for -t, which is in seconds, -p, which is in" + +#: builtins.c:1069 +msgid "increments of 512 bytes, and -u, which is an unscaled number of" +msgstr "increments of 512 bytes, and -u, which is an unscaled number of" + +#: builtins.c:1070 +msgid "processes." +msgstr "processes." + +#: builtins.c:1077 +msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +msgstr "The user file-creation mask is set to MODE. If MODE is omitted, or if" + +#: builtins.c:1078 +msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +msgstr "‘-S’ is supplied, the current value of the mask is printed. The ‘-S’" + +#: builtins.c:1079 +msgid "option makes the output symbolic; otherwise an octal number is output." +msgstr "option makes the output symbolic; otherwise an octal number is output." + +#: builtins.c:1080 +msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" +msgstr "If ‘-p’ is supplied, and MODE is omitted, the output is in a form" + +#: builtins.c:1081 +msgid "that may be used as input. If MODE begins with a digit, it is" +msgstr "that may be used as input. If MODE begins with a digit, it is" + +#: builtins.c:1082 +msgid "interpreted as an octal number, otherwise it is a symbolic mode string" +msgstr "interpreted as an octal number, otherwise it is a symbolic mode string" + +#: builtins.c:1083 +msgid "like that accepted by chmod(1)." +msgstr "like that accepted by chmod(1)." + +#: builtins.c:1090 builtins.c:1102 +msgid "Wait for the specified process and report its termination status. If" +msgstr "Wait for the specified process and report its termination status. If" + +#: builtins.c:1091 builtins.c:1103 +msgid "N is not given, all currently active child processes are waited for," +msgstr "N is not given, all currently active child processes are waited for," + +#: builtins.c:1092 +msgid "and the return code is zero. N may be a process ID or a job" +msgstr "and the return code is zero. N may be a process ID or a job" + +#: builtins.c:1093 +msgid "specification; if a job spec is given, all processes in the job's" +msgstr "specification; if a job spec is given, all processes in the job's" + +#: builtins.c:1094 +msgid "pipeline are waited for." +msgstr "pipeline are waited for." + +#: builtins.c:1104 +msgid "and the return code is zero. N is a process ID; if it is not given," +msgstr "and the return code is zero. N is a process ID; if it is not given," + +#: builtins.c:1105 +msgid "all child processes of the shell are waited for." +msgstr "all child processes of the shell are waited for." + +#: builtins.c:1112 +msgid "The `for' loop executes a sequence of commands for each member in a" +msgstr "The ‘for’ loop executes a sequence of commands for each member in a" + +#: builtins.c:1113 +msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +msgstr "list of items. If ‘in WORDS ...;’ is not present, then ‘in “$@”’ is" + +#: builtins.c:1114 +msgid "assumed. For each element in WORDS, NAME is set to that element, and" +msgstr "assumed. For each element in WORDS, NAME is set to that element, and" + +#: builtins.c:1115 +msgid "the COMMANDS are executed." +msgstr "the COMMANDS are executed." + +#: builtins.c:1121 +msgid "Equivalent to" +msgstr "Equivalent to" + +#: builtins.c:1122 +msgid "\t(( EXP1 ))" +msgstr "\t(( EXP1 ))" + +#: builtins.c:1123 +msgid "\twhile (( EXP2 )); do" +msgstr "\twhile (( EXP2 )); do" + +#: builtins.c:1124 +msgid "\t\tCOMMANDS" +msgstr "\t\tCOMMANDS" + +#: builtins.c:1125 +msgid "\t\t(( EXP3 ))" +msgstr "\t\t(( EXP3 ))" + +#: builtins.c:1126 +msgid "\tdone" +msgstr "\tdone" + +#: builtins.c:1127 +msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" +msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" + +#: builtins.c:1128 +msgid "omitted, it behaves as if it evaluates to 1." +msgstr "omitted, it behaves as if it evaluates to 1." + +#: builtins.c:1134 +msgid "The WORDS are expanded, generating a list of words. The" +msgstr "The WORDS are expanded, generating a list of words. The" + +#: builtins.c:1135 +msgid "set of expanded words is printed on the standard error, each" +msgstr "set of expanded words is printed on the standard error, each" + +#: builtins.c:1136 +msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +msgstr "preceded by a number. If ‘in WORDS’ is not present, ‘in “$@”’" + +#: builtins.c:1137 +msgid "is assumed. The PS3 prompt is then displayed and a line read" +msgstr "is assumed. The PS3 prompt is then displayed and a line read" + +#: builtins.c:1138 +msgid "from the standard input. If the line consists of the number" +msgstr "from the standard input. If the line consists of the number" + +#: builtins.c:1139 +msgid "corresponding to one of the displayed words, then NAME is set" +msgstr "corresponding to one of the displayed words, then NAME is set" + +#: builtins.c:1140 +msgid "to that word. If the line is empty, WORDS and the prompt are" +msgstr "to that word. If the line is empty, WORDS and the prompt are" + +#: builtins.c:1141 +msgid "redisplayed. If EOF is read, the command completes. Any other" +msgstr "redisplayed. If EOF is read, the command completes. Any other" + +#: builtins.c:1142 +msgid "value read causes NAME to be set to null. The line read is saved" +msgstr "value read causes NAME to be set to null. The line read is saved" + +#: builtins.c:1143 +msgid "in the variable REPLY. COMMANDS are executed after each selection" +msgstr "in the variable REPLY. COMMANDS are executed after each selection" + +#: builtins.c:1144 +msgid "until a break command is executed." +msgstr "until a break command is executed." + +#: builtins.c:1150 +msgid "Execute PIPELINE and print a summary of the real time, user CPU time," +msgstr "Execute PIPELINE and print a summary of the real time, user CPU time," + +#: builtins.c:1151 +msgid "and system CPU time spent executing PIPELINE when it terminates." +msgstr "and system CPU time spent executing PIPELINE when it terminates." + +#: builtins.c:1152 +msgid "The return status is the return status of PIPELINE. The `-p' option" +msgstr "The return status is the return status of PIPELINE. The ‘-p’ option" + +#: builtins.c:1153 +msgid "prints the timing summary in a slightly different format. This uses" +msgstr "prints the timing summary in a slightly different format. This uses" + +#: builtins.c:1154 +msgid "the value of the TIMEFORMAT variable as the output format." +msgstr "the value of the TIMEFORMAT variable as the output format." + +#: builtins.c:1160 +msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN. The" + +#: builtins.c:1161 +msgid "`|' is used to separate multiple patterns." +msgstr "‘|’ is used to separate multiple patterns." + +#: builtins.c:1167 +msgid "" +"The if COMMANDS are executed. If the exit status is zero, then the then" +msgstr "" +"The if COMMANDS are executed. If the exit status is zero, then the then" + +#: builtins.c:1168 +msgid "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +msgstr "" +"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" + +#: builtins.c:1169 +msgid "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" +msgstr "" +"in turn, and if the exit status is zero, the corresponding then COMMANDS" + +#: builtins.c:1170 +msgid "" +"are executed and the if command completes. Otherwise, the else COMMANDS" +msgstr "" +"are executed and the if command completes. Otherwise, the else COMMANDS" + +#: builtins.c:1171 +msgid "" +"are executed, if present. The exit status is the exit status of the last" +msgstr "" +"are executed, if present. The exit status is the exit status of the last" + +#: builtins.c:1172 +msgid "command executed, or zero if no condition tested true." +msgstr "command executed, or zero if no condition tested true." + +#: builtins.c:1178 builtins.c:1185 +msgid "Expand and execute COMMANDS as long as the final command in the" +msgstr "Expand and execute COMMANDS as long as the final command in the" + +#: builtins.c:1179 +msgid "`while' COMMANDS has an exit status of zero." +msgstr "‘while’ COMMANDS has an exit status of zero." + +#: builtins.c:1186 +msgid "`until' COMMANDS has an exit status which is not zero." +msgstr "‘until’ COMMANDS has an exit status which is not zero." + +#: builtins.c:1192 +msgid "Create a simple command invoked by NAME which runs COMMANDS." +msgstr "Create a simple command invoked by NAME which runs COMMANDS." + +#: builtins.c:1193 +msgid "Arguments on the command line along with NAME are passed to the" +msgstr "Arguments on the command line along with NAME are passed to the" + +#: builtins.c:1194 +msgid "function as $0 .. $n." +msgstr "function as $0 .. $n." + +#: builtins.c:1200 +msgid "Run a set of commands in a group. This is one way to redirect an" +msgstr "Run a set of commands in a group. This is one way to redirect an" + +#: builtins.c:1201 +msgid "entire set of commands." +msgstr "entire set of commands." + +#: builtins.c:1207 +msgid "This is similar to the `fg' command. Resume a stopped or background" +msgstr "This is similar to the ‘fg’ command. Resume a stopped or background" + +#: builtins.c:1208 +msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +msgstr "job. If you specifiy DIGITS, then that job is used. If you specify" + +#: builtins.c:1209 +msgid "WORD, then the job whose name begins with WORD is used. Following the" +msgstr "WORD, then the job whose name begins with WORD is used. Following the" + +#: builtins.c:1210 +msgid "job specification with a `&' places the job in the background." +msgstr "job specification with a ‘&’ places the job in the background." + +#: builtins.c:1216 +msgid "The EXPRESSION is evaluated according to the rules for arithmetic" +msgstr "The EXPRESSION is evaluated according to the rules for arithmetic" + +#: builtins.c:1217 +msgid "evaluation. Equivalent to \"let EXPRESSION\"." +msgstr "evaluation. Equivalent to “let EXPRESSION”." + +#: builtins.c:1223 +msgid "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" +msgstr "" +"Returns a status of 0 or 1 depending on the evaluation of the conditional" + +#: builtins.c:1224 +msgid "" +"expression EXPRESSION. Expressions are composed of the same primaries used" +msgstr "" +"expression EXPRESSION. Expressions are composed of the same primaries used" + +#: builtins.c:1225 +msgid "" +"by the `test' builtin, and may be combined using the following operators" +msgstr "" +"by the ‘test’ builtin, and may be combined using the following operators" + +#: builtins.c:1227 +msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION" +msgstr "\t( EXPRESSION )\tReturns the value of EXPRESSION" + +#: builtins.c:1228 +msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" +msgstr "\t! EXPRESSION\tTrue if EXPRESSION is false; else false" + +#: builtins.c:1229 +msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" +msgstr "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false" + +#: builtins.c:1230 +msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" +msgstr "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false" + +#: builtins.c:1232 +msgid "" +"When the `==' and `!=' operators are used, the string to the right of the" +msgstr "" +"When the ‘==’ and ‘!=’ operators are used, the string to the right of the" + +#: builtins.c:1233 +msgid "operator is used as a pattern and pattern matching is performed. The" +msgstr "operator is used as a pattern and pattern matching is performed. The" + +#: builtins.c:1234 +msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" +msgstr "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to" + +#: builtins.c:1235 +msgid "determine the expression's value." +msgstr "determine the expression's value." + +#: builtins.c:1241 +msgid "BASH_VERSION Version information for this Bash." +msgstr "BASH_VERSION Version information for this Bash." + +#: builtins.c:1242 +msgid "CDPATH A colon separated list of directories to search" +msgstr "CDPATH A colon separated list of directories to search" + +#: builtins.c:1243 +msgid "\t\twhen the argument to `cd' is not found in the current" +msgstr "\t\twhen the argument to ‘cd’ is not found in the current" + +#: builtins.c:1244 +msgid "\t\tdirectory." +msgstr "\t\tdirectory." + +#: builtins.c:1245 +msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" +msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" + +#: builtins.c:1246 +msgid "\t\tbe ignored by pathname expansion." +msgstr "\t\tbe ignored by pathname expansion." + +#: builtins.c:1248 +msgid "" +"HISTFILE The name of the file where your command history is stored." +msgstr "" +"HISTFILE The name of the file where your command history is stored." + +#: builtins.c:1249 +msgid "HISTFILESIZE The maximum number of lines this file can contain." +msgstr "HISTFILESIZE The maximum number of lines this file can contain." + +#: builtins.c:1250 +msgid "HISTSIZE The maximum number of history lines that a running" +msgstr "HISTSIZE The maximum number of history lines that a running" + +#: builtins.c:1251 +msgid "\t\tshell can access." +msgstr "\t\tshell can access." + +#: builtins.c:1253 +msgid "HOME The complete pathname to your login directory." +msgstr "HOME The complete pathname to your login directory." + +#: builtins.c:1254 +msgid "HOSTNAME\tThe name of the current host." +msgstr "HOSTNAME\tThe name of the current host." + +#: builtins.c:1255 +msgid "HOSTTYPE The type of CPU this version of Bash is running under." +msgstr "HOSTTYPE The type of CPU this version of Bash is running under." + +#: builtins.c:1256 +msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +msgstr "IGNOREEOF Controls the action of the shell on receipt of an EOF" + +#: builtins.c:1257 +msgid "\t\tcharacter as the sole input. If set, then the value" +msgstr "\t\tcharacter as the sole input. If set, then the value" + +#: builtins.c:1258 +msgid "\t\tof it is the number of EOF characters that can be seen" +msgstr "\t\tof it is the number of EOF characters that can be seen" + +#: builtins.c:1259 +msgid "\t\tin a row on an empty line before the shell will exit" +msgstr "\t\tin a row on an empty line before the shell will exit" + +#: builtins.c:1260 +msgid "\t\t(default 10). When unset, EOF signifies the end of input." +msgstr "\t\t(default 10). When unset, EOF signifies the end of input." + +#: builtins.c:1261 +msgid "MACHTYPE\tA string describing the current system Bash is running on." +msgstr "MACHTYPE\tA string describing the current system Bash is running on." + +#: builtins.c:1262 +msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail." + +#: builtins.c:1263 +msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks" + +#: builtins.c:1264 +msgid "\t\tfor new mail." +msgstr "\t\tfor new mail." + +#: builtins.c:1265 +msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on." + +#: builtins.c:1266 +msgid "PATH A colon-separated list of directories to search when" +msgstr "PATH A colon-separated list of directories to search when" + +#: builtins.c:1267 +msgid "\t\tlooking for commands." +msgstr "\t\tlooking for commands." + +#: builtins.c:1268 +msgid "PROMPT_COMMAND A command to be executed before the printing of each" +msgstr "PROMPT_COMMAND A command to be executed before the printing of each" + +#: builtins.c:1269 +msgid "\t\tprimary prompt." +msgstr "\t\tprimary prompt." + +#: builtins.c:1270 +msgid "PS1 The primary prompt string." +msgstr "PS1 The primary prompt string." + +#: builtins.c:1271 +msgid "PS2 The secondary prompt string." +msgstr "PS2 The secondary prompt string." + +#: builtins.c:1272 +msgid "PWD\t\tThe full pathname of the current directory." +msgstr "PWD\t\tThe full pathname of the current directory." + +#: builtins.c:1273 +msgid "SHELLOPTS\tA colon-separated list of enabled shell options." +msgstr "SHELLOPTS\tA colon-separated list of enabled shell options." + +#: builtins.c:1274 +msgid "TERM The name of the current terminal type." +msgstr "TERM The name of the current terminal type." + +#: builtins.c:1275 +msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" +msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the" + +#: builtins.c:1276 +msgid "\t\t`time' reserved word." +msgstr "\t\t‘time’ reserved word." + +#: builtins.c:1277 +msgid "auto_resume Non-null means a command word appearing on a line by" +msgstr "auto_resume Non-null means a command word appearing on a line by" + +#: builtins.c:1278 +msgid "\t\titself is first looked for in the list of currently" +msgstr "\t\titself is first looked for in the list of currently" + +#: builtins.c:1279 +msgid "\t\tstopped jobs. If found there, that job is foregrounded." +msgstr "\t\tstopped jobs. If found there, that job is foregrounded." + +#: builtins.c:1280 +msgid "\t\tA value of `exact' means that the command word must" +msgstr "\t\tA value of ‘exact’ means that the command word must" + +#: builtins.c:1281 +msgid "\t\texactly match a command in the list of stopped jobs. A" +msgstr "\t\texactly match a command in the list of stopped jobs. A" + +#: builtins.c:1282 +msgid "\t\tvalue of `substring' means that the command word must" +msgstr "\t\tvalue of ‘substring’ means that the command word must" + +#: builtins.c:1283 +msgid "\t\tmatch a substring of the job. Any other value means that" +msgstr "\t\tmatch a substring of the job. Any other value means that" + +#: builtins.c:1284 +msgid "\t\tthe command must be a prefix of a stopped job." +msgstr "\t\tthe command must be a prefix of a stopped job." + +#: builtins.c:1287 +msgid "histchars Characters controlling history expansion and quick" +msgstr "histchars Characters controlling history expansion and quick" + +#: builtins.c:1288 +msgid "\t\tsubstitution. The first character is the history" +msgstr "\t\tsubstitution. The first character is the history" + +#: builtins.c:1289 +msgid "\t\tsubstitution character, usually `!'. The second is" +msgstr "\t\tsubstitution character, usually ‘!’. The second is" + +#: builtins.c:1290 +msgid "\t\tthe `quick substitution' character, usually `^'. The" +msgstr "\t\tthe ‘quick substitution’ character, usually ‘^’. The" + +#: builtins.c:1291 +msgid "\t\tthird is the `history comment' character, usually `#'." +msgstr "\t\tthird is the ‘history comment’ character, usually ‘#’." + +#: builtins.c:1293 +msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" +msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which" + +#: builtins.c:1294 +msgid "\t\tcommands should be saved on the history list." +msgstr "\t\tcommands should be saved on the history list." + +#: builtins.c:1306 +msgid "+N\tRotates the stack so that the Nth directory (counting" +msgstr "+N\tRotates the stack so that the Nth directory (counting" + +#: builtins.c:1307 +msgid "\tfrom the left of the list shown by `dirs', starting with" +msgstr "\tfrom the left of the list shown by ‘dirs’, starting with" + +#: builtins.c:1308 builtins.c:1312 +msgid "\tzero) is at the top." +msgstr "\tzero) is at the top." + +#: builtins.c:1310 +msgid "-N\tRotates the stack so that the Nth directory (counting" +msgstr "-N\tRotates the stack so that the Nth directory (counting" + +#: builtins.c:1311 +msgid "\tfrom the right of the list shown by `dirs', starting with" +msgstr "\tfrom the right of the list shown by ‘dirs’, starting with" + +#: builtins.c:1314 +msgid "-n\tsuppress the normal change of directory when adding directories" +msgstr "-n\tsuppress the normal change of directory when adding directories" + +#: builtins.c:1315 +msgid "\tto the stack, so only the stack is manipulated." +msgstr "\tto the stack, so only the stack is manipulated." + +#: builtins.c:1317 +msgid "dir\tadds DIR to the directory stack at the top, making it the" +msgstr "dir\tadds DIR to the directory stack at the top, making it the" + +#: builtins.c:1318 +msgid "\tnew current working directory." +msgstr "\tnew current working directory." + +#: builtins.c:1332 +msgid "+N\tremoves the Nth entry counting from the left of the list" +msgstr "+N\tremoves the Nth entry counting from the left of the list" + +#: builtins.c:1333 +msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +msgstr "\tshown by ‘dirs’, starting with zero. For example: ‘popd +0’" + +#: builtins.c:1334 +msgid "\tremoves the first directory, `popd +1' the second." +msgstr "\tremoves the first directory, ‘popd +1’ the second." + +#: builtins.c:1336 +msgid "-N\tremoves the Nth entry counting from the right of the list" +msgstr "-N\tremoves the Nth entry counting from the right of the list" + +#: builtins.c:1337 +msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +msgstr "\tshown by ‘dirs’, starting with zero. For example: ‘popd -0’" + +#: builtins.c:1338 +msgid "\tremoves the last directory, `popd -1' the next to last." +msgstr "\tremoves the last directory, ‘popd -1’ the next to last." + +#: builtins.c:1340 +msgid "-n\tsuppress the normal change of directory when removing directories" +msgstr "-n\tsuppress the normal change of directory when removing directories" + +#: builtins.c:1341 +msgid "\tfrom the stack, so only the stack is manipulated." +msgstr "\tfrom the stack, so only the stack is manipulated." + +#: builtins.c:1363 +msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by" + +#: builtins.c:1364 builtins.c:1367 +msgid "\tdirs when invoked without options, starting with zero." +msgstr "\tdirs when invoked without options, starting with zero." + +#: builtins.c:1366 +msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +msgstr "" +"-N\tdisplays the Nth entry counting from the right of the list shown by" + +#: builtins.c:1374 +msgid "Toggle the values of variables controlling optional behavior." +msgstr "Toggle the values of variables controlling optional behavior." + +#: builtins.c:1375 +msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag" + +#: builtins.c:1376 +msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +msgstr "unsets each OPTNAME. The -q flag suppresses output; the exit" + +#: builtins.c:1377 +msgid "status indicates whether each OPTNAME is set or unset. The -o" +msgstr "status indicates whether each OPTNAME is set or unset. The -o" + +#: builtins.c:1378 +msgid "option restricts the OPTNAMEs to those defined for use with" +msgstr "option restricts the OPTNAMEs to those defined for use with" + +#: builtins.c:1379 +msgid "`set -o'. With no options, or with the -p option, a list of all" +msgstr "‘set -o’. With no options, or with the -p option, a list of all" + +#: builtins.c:1380 +msgid "settable options is displayed, with an indication of whether or" +msgstr "settable options is displayed, with an indication of whether or" + +#: builtins.c:1381 +msgid "not each is set." +msgstr "not each is set." + +#: builtins.c:1387 +msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" +msgstr "" +"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" + +#: builtins.c:1388 +msgid "is a character string which contains three types of objects: plain" +msgstr "is a character string which contains three types of objects: plain" + +#: builtins.c:1389 +msgid "" +"characters, which are simply copied to standard output, character escape" +msgstr "" +"characters, which are simply copied to standard output, character escape" + +#: builtins.c:1390 +msgid "sequences which are converted and copied to the standard output, and" +msgstr "sequences which are converted and copied to the standard output, and" + +#: builtins.c:1391 +msgid "" +"format specifications, each of which causes printing of the next successive" +msgstr "" +"format specifications, each of which causes printing of the next successive" + +#: builtins.c:1392 +msgid "argument. In addition to the standard printf(1) formats, %b means to" +msgstr "argument. In addition to the standard printf(1) formats, %b means to" + +#: builtins.c:1393 +msgid "expand backslash escape sequences in the corresponding argument, and %q" +msgstr "" +"expand backslash escape sequences in the corresponding argument, and %q" + +#: builtins.c:1394 +msgid "means to quote the argument in a way that can be reused as shell input." +msgstr "" +"means to quote the argument in a way that can be reused as shell input." + +#: builtins.c:1401 +msgid "For each NAME, specify how arguments are to be completed." +msgstr "For each NAME, specify how arguments are to be completed." + +#: builtins.c:1402 +msgid "If the -p option is supplied, or if no options are supplied, existing" +msgstr "If the -p option is supplied, or if no options are supplied, existing" + +#: builtins.c:1403 +msgid "completion specifications are printed in a way that allows them to be" +msgstr "completion specifications are printed in a way that allows them to be" + +#: builtins.c:1404 +msgid "reused as input. The -r option removes a completion specification for" +msgstr "reused as input. The -r option removes a completion specification for" + +#: builtins.c:1405 +msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." +msgstr "" +"each NAME, or, if no NAMEs are supplied, all completion specifications." + +#: builtins.c:1413 +msgid "Display the possible completions depending on the options. Intended" +msgstr "Display the possible completions depending on the options. Intended" + +#: builtins.c:1414 +msgid "" +"to be used from within a shell function generating possible completions." +msgstr "" +"to be used from within a shell function generating possible completions." + +#: builtins.c:1415 +msgid "If the optional WORD argument is supplied, matches against WORD are" +msgstr "If the optional WORD argument is supplied, matches against WORD are" + +#: builtins.c:1416 +msgid "generated." +msgstr "generated." diff --git a/po.orig/insert-header.sin b/po.orig/insert-header.sin new file mode 100644 index 000000000..b26de01f6 --- /dev/null +++ b/po.orig/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/po.orig/quot.sed b/po.orig/quot.sed new file mode 100644 index 000000000..0122c4631 --- /dev/null +++ b/po.orig/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/po.orig/readline.po b/po.orig/readline.po new file mode 100644 index 000000000..3519812af --- /dev/null +++ b/po.orig/readline.po @@ -0,0 +1,133 @@ +#: lib/readline/bind.c:878 +#, c-format +msgid "readline: %s: line %d: %s\n" +msgstr "" + +#: lib/readline/bind.c:881 +#, c-format +msgid "readline: %s\n" +msgstr "" + +#: lib/readline/bind.c:994 +msgid "$else found without matching $if" +msgstr "" + +#: lib/readline/bind.c:1024 +msgid "$endif without matching $if" +msgstr "" + +#: lib/readline/bind.c:1101 +msgid "unknown parser directive" +msgstr "" + +#: lib/readline/bind.c:1162 +msgid "no closing `\"' in key binding" +msgstr "" + +#: lib/readline/bind.c:1977 +#, c-format +msgid "# %s (not bound)\n" +msgstr "" + +#: lib/readline/bind.c:1995 +#, c-format +msgid "%s is not bound to any keys\n" +msgstr "" + +#: lib/readline/bind.c:2001 +#, c-format +msgid "%s can be found on " +msgstr "" + +#: lib/readline/bind.c:2128 +#, c-format +msgid "%s is set to `%s'\n" +msgstr "" + +#: lib/readline/bind.c:2146 +#, c-format +msgid "bell-style is set to `%s'\n" +msgstr "" + +#: lib/readline/bind.c:2152 +#, c-format +msgid "comment-begin is set to `%s'\n" +msgstr "" + +#: lib/readline/bind.c:2158 +#, c-format +msgid "completion-query-items is set to `%d'\n" +msgstr "" + +#: lib/readline/bind.c:2164 +#, c-format +msgid "editing-mode is set to `%s'\n" +msgstr "" + +#: lib/readline/bind.c:2176 +#, c-format +msgid "isearch-terminators is set to \"%s\"\n" +msgstr "" + +#: lib/readline/bind.c:2188 +#, c-format +msgid "keymap is set to `%s'\n" +msgstr "" + +#: lib/readline/callback.c:105 +msgid "readline: readline_callback_read_char() called with no handler!\r\n" +msgstr "" + +#: lib/readline/complete.c:1342 +#, c-format +msgid "Display all %d possibilities? (y or n)" +msgstr "" + +#: lib/readline/complete.c:1681 +#, c-format +msgid "" +"\r\n" +"readline: bad value %d for what_to_do in rl_complete\n" +msgstr "" + +#: lib/readline/display.c:1924 +#, c-format +msgid "readline: debug: insert_some_chars: count (%d) != col (%d)\n" +msgstr "" + +#: lib/readline/histexpand.c:377 +msgid "event not found" +msgstr "" + +#: lib/readline/histexpand.c:381 +msgid "bad word specifier" +msgstr "" + +#: lib/readline/histexpand.c:385 +msgid "substitution failed" +msgstr "" + +#: lib/readline/histexpand.c:389 +msgid "unrecognized history modifier" +msgstr "" + +#: lib/readline/histexpand.c:393 +msgid "no previous substitution" +msgstr "" + +#: lib/readline/histexpand.c:397 +msgid "unknown expansion error" +msgstr "" + +#: lib/readline/rltty.c:464 +#, c-format +msgid "readline: warning: %s\n" +msgstr "" + +#: lib/readline/rltty.c:475 +msgid "turning on OPOST for terminal\r" +msgstr "" + +#: lib/readline/rltty.c:501 +msgid "turning off output flushing" +msgstr "" diff --git a/po.orig/remove-potcdate.sin b/po.orig/remove-potcdate.sin new file mode 100644 index 000000000..2436c49e7 --- /dev/null +++ b/po.orig/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/po.tar b/po.tar new file mode 100644 index 0000000000000000000000000000000000000000..d259db57ad23473790e507774971bca3f3dc8b07 GIT binary patch literal 1218560 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

ODQEPLyFCn5 zb02yRU?R8}3-(5r;MjuY`a-Nm5#D{F<#D4*_8v`g|8pa_mG6q|HmVnZ+n?YTK@)X! zJ@~b%kO@OilVSR#aO^!;-$-!nq=wUZHzek%Fvc$g`5-V@nDf!@&Myc%1sr^OrmdPy zFQOluL5+poF&1!RtoBQZAuuRDKFC?}7c$k0{!ESBuBkj_pnL^~LzyL~SR2E==G{>J zKKc;iBFpGsQAMn837^4o=_=I46=q@i7E?k&xQtR8iCRcFHDe_=8(?Q!}{;Y(?Xe>lY)vm48B@{$1s~atV7GQBz zZjs4wXxY#Cjfr=xRU{+qL_~zew97|#yaHfwt&BbzX(Cs__bQ^xw zMgkII#1Swm2PmX;1L_2!TWP4!u%L*s(o2}=MM;JH8XaM^P^iQUvRS;00(^mkIW+y# zp}vqTeJkc$o{q(ajydC!sShF(uda%11r8m!o) zev0&!RoH-AvzZe$63yY4F{7~aY)6K{!=vPWR#KrYR7j$@xwn7~dhtS_U3Tc;yTs&bo>lwg@- zpTd4)DT@=WUk(_-kS~;-gbOaLRqOmni1nH6NVKCcSU_R&LLtW za3lVS5=$*u5m1ELO&Gw8o2p=-p)%8HCeM(?Wr9#9K2rW$Ypv@c9T(?&!_o*IX)y)O z9RkxSgPO?cDwcb2gEq+at+gTaAqh#!)tJhJAU1N!Xp<%G!TO> ztMRHh-IWF7!l%eiW;ur{PGPu!-hl2U2q-|v!u0h0uWP?)YFkWU$Dw@#^RM9S@|rEy6w=On1euvW^~Wf7eZKwYnWA zI0WQY0W0H<3eH-{i%decL?e^X%KH%^eMsep&P<1zl{B>#JZvo{*x{H7D9{LBiiWFG z3a2oz(N;oK(zZ$opatuX){*_S9 zgeA*;Z)F39Mc)M&KSlj82(Qd7Q&{AgW08tuiA=(fuDTeiF!o~|NMQ9K{S#@SfQK8B zrbm9UAXlK=PWIlsd-H(>Ba z_v41?Cq4d?87MvSGm=mt)l1n%J=IyCjqjiVGKq&p`FkOVg#l7M5o(RHd{9uvYF|Li7Hzx)biu(Sg?yF7 zKNMyKE=`E07@e}lODwXgxsv(Gma43#zs$8}B*DzLvLg2^b)%jg&n%OdZSA{o9 zjxyLN^ft3A;V=lGBKj0874|)vPmXveI|9pz^*A}oI6>3?2uzk=mj}PWh-^B84J)9Q z8Iyr{u=~T&^A|7C4&r@snRHCiOuPhKyF=-VTDTKS&M{6$j%mM7W!$Qf(=h;y(v^O_ zJ;HPoJ`~^mIV?0faga_oaE%f~)o*vnZPk@2Z(lKiG!`y#)|k1t%=1ZYOq+0f*mbB1 z7YBMoDe3|QC-{MWV*Asc zwNLTsH%#cxpJ|J7(MrnnwqoJh)k1V2N)sOP$8}0)*iKI|4C_rFivD6i5CU9{lySVF zbe*JXEbCquqfA%;TN>;%!BW|XmMprHM4VC*$rQ3QUsB75{w##>coz9bfE%skqJ>}w z$^}Z|j+L(*Uw^vg z?c{g`w&>N`*N;2q^vaLTib#q=j1OiC!{my#Odr92V9IY7s0B%F6@ZfcvjUtK1fKeJ zW&{76CCC4`dolvqIb?E)sz&@GdVCjRs^#62Vet`tvK8;Rv9cF$>`ode&f%u)%A#cth3B?s(5#;}C=} z)RiG9JiVDY&WTVYxKLnhnR@&tn0>8?85=lG-*>uP;)MG$k=pgqS=NY+Ck?fyoFYhJCJ?2>f?0o#_2^76@ceNX}P!>ZLV2`;{&cKA??-@qO zpW>k3mDnb#dw4oVo;LJ7;`kBn8dM44>cqGJtgb++WuQ^P%aluB{6TNvzs@2msn80M z219u8`!8M`>>TRW`#}*CC<#xF_>2cb#5Rx_%?E6>3b->OuM}%=#9K7TKSl^y`w~wA zA?u)mD|G58?2+(~_PO6l>H+zvuT(%(hn(OPKD#VIY1WBIgbhpxM!z1X0oc24iP&?ustd&VrOF>?fPNnRkR!^JwOfU+LqMnzQRg~Wg`WX zbZW?brlP$$1sgC$7)m-y?qhiQkoGJUuVd7m*kyp11ek%2CRj0CK&GuNqdHV zR^aC_eaE{^qHiA}M;sEOpc03P zmVNI?IAJ3t?|=cyRf72X~Vjl@VWYZd4>Ed?5c zxW`b9V|gO$w2S%mw;F*sZHbQ+?e2)}JxhrD#PH$<1D_6QPM~?C!P@~Le_}~c8DC)I zsjg1J(PiKPZJdbTLz$9Ll!o6KmL3A2k`aJzJ)3$s?P>aQ+5i#){4C;nUhl>YxCL0e z5U(jj9l5hrE4$u#O85`5#W=D?me)ExcO*r`d;& zhz!A)tg!2;(uwA1W!0`*t_h(Q=YFqYhW9Q(C6AfXJtby<4(>b}G-Bu*7ROLYu7l+M zHd0+Kj|WDx37I}3?EpOVXb9f>UV%H+bU;c+wBtYxwj6Tgo#Sn(*QOe4C>Zv?Pr)(T zPSR%NRfIMBo`a1(F7b#~bMr?|1g5Wmp zPNC??KzVTJ-hKzCro7MHxpSMp&ywSBIwp|dZ8Z!7f){8q@q7A;$vO9H1D%i834x5r zmqX$L!`>B>Dj4ucps(EF$L7BSCr@*~rTZwb)8%q|*%XEe*Uj>HPL(ba;ZCr6EfBkt^yUArfzkR94B}xaX9vl>t4znr}^T>2&s0IC3I1sZ5 z13vwNjLq=kkrBO<@~Pnr5&bnR@}-L6!1e{EHH_owso2N9DN+(g*=rQhEv%H0am(GS zX#rW8ba#;cOv}=C0<7K0kaVxNmQMTYw_fcZrq7skKYgA7tH{RM+P!prBi-0Y)*o!& zyPvK-SX=W4rmu5i9=P_nm)^`y52x9r9K*)Fojer{K9pP5GDv^mivg}z z4^Kw3TdxsGn*LOtjt1%X^V2dtEFfuln!@Awr_;&2S4>ZDy&BJ_**JaS&3d2(y}*y< zla0p-{rO~Nl6>_fSzmp8%l$tv`-wCkR$4J3IUfqVdg&NNA8)xO|L-q5zZ~rR3xVCR z@Tdo0TboCXw56q$6$m)pOIBCmgXBTi*H(qIl`C_=iVd3@(b?cWz%cQprKiD%|L_0! zU-?IGPW<sg$sa|c~B+Nl3y*XgkypoBg4G_ zKt_nnngpCg9pE%c$(Vfv>)VmYfT2V9ny2JbR=N3b&+N^@!FnEjuY^x3+CFf6!rS+g2tbhUKYgo37-^Gt` zcgQX+bVo{6xwFcZlK~5j_!oZlW&bB! z);D11uDM}6xP0A`|LzwKryc38GmfpTyQdSfHDOu}ik`KW-@~Zo=S_np)W7{J8vpgjIg| zf$RDOsM5MQ+p2+l!Regwz|;>%c`3&M(fVvMx*(lYedoVS#y71W0%&JxwH+;7EV+r=O2R>5XXh zcIeKUKVjikQfeh2=5F{FCY!x)Dl{`>D?^YEYl z$E}KYti_$M;s7%If827(RsRUS!#gv2a{-ZH(t>J~UENaPDHrJ9)yFDUijmr;%6i@V zSG|n@ADk7}G*cm@loIyQtO2n@Xr!wft6@WDtXbaNP`A0ICSuUW0|PVWQ!LiTd1zE( zxM=1)>tA&#{4JFS)#cCU`7D#ay(jRoo4g;v|5BJ~SG1%Qr&rYAUUwfiJIY_5Zr4s>n)H;IDbmxt@krSjslIaE&paUgp^P$px8c|2kE4EZI?XQ5$Q}QT zme|$#vZg}09KTGk5I*Y+L{eUP7De{h)EW4NWi>tw$|#{Xk6gCxzOV@`ninmPNz zG2gq|K$8!1D$`L$DyCCj8z3b18|sQac8DxZ`7XqGK?qF9+!{ zhtV;>y#(3sxSg~37^r;UyAH?vSUU#X7U~?uv}J7&?<$%_7!Sz(7S5}QagG@hJ0mJO zri=zxG;Sd*xT!43(E%d(8{gVH7mo^W?D#1YA9EfZGbxxFAUft**hCzWF;Q57FEkB;$%TmO7eZD$r8quGt< zm{;*Jql+AJ#JX8Pze9Xvvpopzsoo_s|KZZGLF7Z*1c`g)vp~6h8+&epa zKL=*MKt?K6nA*kx7dflFT4zK?<2{9qb6ZbC>T7&(J^P)l;{qZRE-$WZ%w3$b$lF3y z!MHVYC1(_UAg1eRg^~*HIVO)NfyLP)(9|=~vD}+KWMR!m1RjxwPDg_{*+^p!lG}77 z91*UI2yFl8`x0X}BdZ2el+!Tw_A_(UIx*wat|wpJdB~5Ii0J zEJWIYj1k=(EKZ?H!qYhj>cS! zclQUP=xQ+ZaOH!n9WqwF zN@x{Vdd6z-cvLEHr#!Bgjop>5W-&sQyS8`zEh-pFGSL8a>m$kE2T15;B{7O{Yx`gP zz_@`|=8YE|?rmUBqLnVlwnZLpdSD+nU{9}l+y|d}U`793&J#I3jE52eVn1gvLBwvX zYZdmQWY8Y-3DIFm@>4c_XLw3O!Joba$h2UVmy$E&DaduMz9}kk{I;JS^fS`NOY!R#fKA=wCjgzeF0LA4li&b1d#As+VcbbCz#`kG{5j!`~QP zW6*dF&2V>0@U8rd%ug{GM(2Futyi{>GzSblWTV0}p_(omv?#9#HE0_*dnv=l`-vV` zRMW+0si{UyVmebGv!Is;mOhkxtjc9R)t!WaURkuv^4X`?K0rT1Qe6B}F>%r}5ICnA zblOM_%Z;J_3A|pMc+>^->v`GS8s;*+N5(P>aIKfp2*kOqR{c{(Ub{@GG| z1x6bBeG)YiQmCk2RAC6^b#s!SbZdAe;NI~vEIjr=zAaba&l&!Qtkz#ojqyj`jHjXp!kI8 zwI{${i1RSo)yjArpp6yorM&56#P zs6$C5F%M`;KI_HvdbsNaA|7Eh(M!l=|B$75e#HR9x1n{fd@QsJFiQ#vguTzGg3z8H z>>wx)<&!^Ubik4Xmkle@`z2zpr1jNL{n$ z)B5Q6C|3$gq3SW1CCgkiz;C&MPg-3;yEnS@-+2nhXNICdGukL|>8%S&TtmLDmjA8m*GCH3`@J722AE!4>^X?c6jMgp`39adV#>Gj z;@Qsg-9ttf!JqrDsU?v(MaP=PqN%;$SPwpmRI2K*=5Ug$f+y>AI$Fx;m?jL-?Lb3cGuL91H35YEY#gwsw+ zyruxqU4g+WbfK$`?7M;o0;|TI7goZD8b?4c*>x)0LjQ1ohTD?cr&g540?ry$Iz#AB z@`jj?8cda-tc@e9@us;u!`PVt+k>-R^6yQF&C|EoI)zM(#4N@_=TlQ4Kf-5sas4Zg z-*$7l3!3>`2;Zgj!2V^PLj^0+KhT`>y%8yS6*3*@X?SbX%EJ>G4g3vn+Yc!1>FdCP z#y!MaCEz5sSGG7ZXV<(~jO5l{>%8_*-b_wJ(FUJJa4t^>0asl0WZr+~yl8k;(9Flm zO_1;EXdk4)6X#A1Jl6oGϦ?iC9P6izp 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�r>KVtC*R?`ox15 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\n" "Language-Team: LANGUAGE \n" @@ -43,35 +43,30 @@ msgstr "" msgid "%s: cannot assign to non-numeric index" msgstr "" -#: bashhist.c:321 +#: bashhist.c:322 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:2791 +#: bashline.c:2916 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:2840 +#: bashline.c:2965 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:2869 +#: bashline.c:2994 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:2903 +#: bashline.c:3028 #, c-format msgid "%s: missing colon separator" msgstr "" -#: builtins/alias.def:123 -#, c-format -msgid "`%s': invalid alias name" -msgstr "" - #: builtins/bind.def:194 #, c-format msgid "`%s': invalid keymap name" @@ -130,19 +125,14 @@ msgstr "" msgid "current one; the top frame is frame 0." msgstr "" -#: builtins/cd.def:188 +#: builtins/cd.def:190 msgid "HOME not set" msgstr "" -#: builtins/cd.def:200 +#: builtins/cd.def:202 msgid "OLDPWD not set" msgstr "" -#: builtins/cd.def:357 -#, c-format -msgid "write error: %s" -msgstr "" - #: builtins/common.c:133 test.c:921 msgid "too many arguments" msgstr "" @@ -172,7 +162,7 @@ msgstr "" msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:194 general.c:229 general.c:234 +#: builtins/common.c:194 general.c:231 general.c:236 #, c-format msgid "`%s': not a valid identifier" msgstr "" @@ -239,12 +229,17 @@ msgstr "" msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:486 +#: builtins/common.c:276 +#, c-format +msgid "write error: %s" +msgstr "" + +#: builtins/common.c:484 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:553 builtins/common.c:555 +#: builtins/common.c:548 builtins/common.c:550 #, c-format msgid "%s: ambiguous job spec" msgstr "" @@ -275,7 +270,7 @@ msgstr "" msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:307 execute_cmd.c:3949 +#: builtins/declare.def:307 execute_cmd.c:3969 #, c-format msgid "%s: readonly function" msgstr "" @@ -309,17 +304,17 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395 +#: builtins/evalfile.c:129 execute_cmd.c:3841 shell.c:1396 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:133 +#: builtins/evalfile.c:134 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:141 +#: builtins/evalfile.c:142 #, c-format msgid "%s: file is too large" msgstr "" @@ -337,20 +332,20 @@ msgstr "" msgid "There are stopped jobs.\n" msgstr "" -#: builtins/fc.def:252 +#: builtins/fc.def:254 msgid "no command found" msgstr "" -#: builtins/fc.def:317 +#: builtins/fc.def:319 msgid "history specification" msgstr "" -#: builtins/fc.def:338 +#: builtins/fc.def:340 #, c-format msgid "%s: cannot open temp file: %s" msgstr "" -#: builtins/fg_bg.def:133 +#: builtins/fg_bg.def:145 #, c-format msgid "job %d started without job control" msgstr "" @@ -430,7 +425,7 @@ msgstr "" msgid "Unknown error" msgstr "" -#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511 +#: builtins/let.def:94 builtins/let.def:119 expr.c:497 expr.c:512 msgid "expression expected" msgstr "" @@ -439,12 +434,12 @@ msgstr "" msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:408 +#: builtins/printf.def:423 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:601 +#: builtins/printf.def:629 msgid "missing hex digit for \\x" msgstr "" @@ -456,43 +451,43 @@ msgstr "" msgid "" msgstr "" -#: builtins/pushd.def:652 builtins.c:1351 +#: builtins/pushd.def:652 builtins.c:1350 msgid "Display the list of currently remembered directories. Directories" msgstr "" -#: builtins/pushd.def:653 builtins.c:1352 +#: builtins/pushd.def:653 builtins.c:1351 msgid "find their way onto the list with the `pushd' command; you can get" msgstr "" -#: builtins/pushd.def:654 builtins.c:1353 +#: builtins/pushd.def:654 builtins.c:1352 msgid "back up through the list with the `popd' command." msgstr "" -#: builtins/pushd.def:656 builtins.c:1355 +#: builtins/pushd.def:656 builtins.c:1354 msgid "The -l flag specifies that `dirs' should not print shorthand versions" msgstr "" -#: builtins/pushd.def:657 builtins.c:1356 +#: builtins/pushd.def:657 builtins.c:1355 msgid "of directories which are relative to your home directory. This means" msgstr "" -#: builtins/pushd.def:658 builtins.c:1357 +#: builtins/pushd.def:658 builtins.c:1356 msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" msgstr "" -#: builtins/pushd.def:659 builtins.c:1358 +#: builtins/pushd.def:659 builtins.c:1357 msgid "causes `dirs' to print the directory stack with one entry per line," msgstr "" -#: builtins/pushd.def:660 builtins.c:1359 +#: builtins/pushd.def:660 builtins.c:1358 msgid "prepending the directory name with its position in the stack. The -p" msgstr "" -#: builtins/pushd.def:661 builtins.c:1360 +#: builtins/pushd.def:661 builtins.c:1359 msgid "flag does the same thing, but the stack position is not prepended." msgstr "" -#: builtins/pushd.def:662 builtins.c:1361 +#: builtins/pushd.def:662 builtins.c:1360 msgid "The -c flag clears the directory stack by deleting all of the elements." msgstr "" @@ -509,15 +504,15 @@ msgid "" "-N displays the Nth entry counting from the right of the list shown by" msgstr "" -#: builtins/pushd.def:673 builtins.c:1302 +#: builtins/pushd.def:673 builtins.c:1301 msgid "Adds a directory to the top of the directory stack, or rotates" msgstr "" -#: builtins/pushd.def:674 builtins.c:1303 +#: builtins/pushd.def:674 builtins.c:1302 msgid "the stack, making the new top of the stack the current working" msgstr "" -#: builtins/pushd.def:675 builtins.c:1304 +#: builtins/pushd.def:675 builtins.c:1303 msgid "directory. With no arguments, exchanges the top two directories." msgstr "" @@ -557,20 +552,20 @@ msgstr "" msgid " new current working directory." msgstr "" -#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320 -#: builtins.c:1343 +#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1319 +#: builtins.c:1342 msgid "You can see the directory stack with the `dirs' command." msgstr "" -#: builtins/pushd.def:696 builtins.c:1328 +#: builtins/pushd.def:696 builtins.c:1327 msgid "Removes entries from the directory stack. With no arguments," msgstr "" -#: builtins/pushd.def:697 builtins.c:1329 +#: builtins/pushd.def:697 builtins.c:1328 msgid "removes the top directory from the stack, and cd's to the new" msgstr "" -#: builtins/pushd.def:698 builtins.c:1330 +#: builtins/pushd.def:698 builtins.c:1329 msgid "top directory." msgstr "" @@ -684,32 +679,32 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "" -#: builtins/type.def:231 +#: builtins/type.def:232 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:252 +#: builtins/type.def:253 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:272 +#: builtins/type.def:273 #, c-format msgid "%s is a function\n" msgstr "" -#: builtins/type.def:297 +#: builtins/type.def:298 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:318 +#: builtins/type.def:319 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:338 +#: builtins/type.def:339 #, c-format msgid "%s is hashed (%s)\n" msgstr "" @@ -743,7 +738,7 @@ msgstr "" msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:279 +#: builtins/umask.def:281 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" @@ -787,98 +782,98 @@ msgstr "" msgid "timed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:466 +#: execute_cmd.c:467 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1036 +#: execute_cmd.c:1037 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:3521 +#: execute_cmd.c:3541 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:3609 +#: execute_cmd.c:3629 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:3839 +#: execute_cmd.c:3859 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:3876 +#: execute_cmd.c:3896 #, c-format msgid "%s: cannot execute binary file" msgstr "" -#: execute_cmd.c:3988 +#: execute_cmd.c:4008 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:239 +#: expr.c:240 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:263 +#: expr.c:264 msgid "recursion stack underflow" msgstr "" -#: expr.c:374 +#: expr.c:375 msgid "syntax error in expression" msgstr "" -#: expr.c:414 +#: expr.c:415 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:435 expr.c:440 expr.c:750 +#: expr.c:436 expr.c:441 expr.c:751 msgid "division by 0" msgstr "" -#: expr.c:466 +#: expr.c:467 msgid "bug: bad expassign token" msgstr "" -#: expr.c:508 +#: expr.c:509 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:775 +#: expr.c:776 msgid "exponent less than 0" msgstr "" -#: expr.c:819 +#: expr.c:821 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:847 +#: expr.c:849 msgid "missing `)'" msgstr "" -#: expr.c:871 +#: expr.c:892 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1146 +#: expr.c:1178 msgid "invalid number" msgstr "" -#: expr.c:1150 +#: expr.c:1182 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1170 +#: expr.c:1202 msgid "value too great for base" msgstr "" -#: general.c:60 +#: general.c:62 msgid "getcwd: cannot access parent directories" msgstr "" @@ -892,42 +887,42 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:693 +#: jobs.c:694 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1001 +#: jobs.c:1002 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1632 nojobs.c:648 +#: jobs.c:1633 nojobs.c:648 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:1815 +#: jobs.c:1821 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2062 +#: jobs.c:2068 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2284 +#: jobs.c:2290 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:2293 +#: jobs.c:2299 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3037 +#: jobs.c:3043 msgid "no job control in this shell" msgstr "" @@ -1063,12 +1058,12 @@ msgstr "" msgid "syntax error: `((%s))'" msgstr "" -#: make_cmd.c:560 +#: make_cmd.c:561 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:730 +#: make_cmd.c:731 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" @@ -1142,34 +1137,34 @@ msgstr "" msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:4400 +#: parse.y:4409 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:4418 +#: parse.y:4427 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:4428 +#: parse.y:4437 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:4428 +#: parse.y:4437 msgid "syntax error" msgstr "" -#: parse.y:4490 +#: parse.y:4499 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:4649 +#: parse.y:4658 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:988 +#: pcomplete.c:998 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1179,12 +1174,12 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:260 +#: print_cmd.c:261 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:1172 +#: print_cmd.c:1211 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" @@ -1234,124 +1229,124 @@ msgstr "" msgid "%c%c: invalid option" msgstr "" -#: shell.c:1590 +#: shell.c:1591 msgid "I have no name!" msgstr "" -#: shell.c:1725 +#: shell.c:1726 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1727 +#: shell.c:1728 msgid "GNU long options:\n" msgstr "" -#: shell.c:1731 +#: shell.c:1732 msgid "Shell options:\n" msgstr "" -#: shell.c:1732 +#: shell.c:1733 msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1747 +#: shell.c:1748 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1753 +#: shell.c:1754 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1754 +#: shell.c:1755 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1755 +#: shell.c:1756 msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:485 +#: sig.c:490 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" -#: subst.c:1011 +#: subst.c:1046 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2020 +#: subst.c:2053 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:3516 subst.c:3532 +#: subst.c:3880 subst.c:3896 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:3563 +#: subst.c:3927 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:3608 +#: subst.c:3972 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:3610 +#: subst.c:3974 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:3618 +#: subst.c:3982 #, c-format msgid "cannout reset nodelay mode for fd %d" msgstr "" -#: subst.c:3628 +#: subst.c:3992 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:3803 +#: subst.c:4167 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:3832 +#: subst.c:4196 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:3849 +#: subst.c:4213 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:4284 +#: subst.c:4671 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:4529 +#: subst.c:4937 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:5209 +#: subst.c:5667 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:5283 +#: subst.c:5741 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:6652 +#: subst.c:7110 #, c-format msgid "no match: %s" msgstr "" @@ -1408,43 +1403,43 @@ msgstr "" msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:310 +#: variables.c:314 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:670 +#: variables.c:674 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1610 +#: variables.c:1617 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2709 +#: variables.c:2724 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:2923 variables.c:2932 +#: variables.c:2938 variables.c:2947 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:2938 +#: variables.c:2953 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3363 +#: variables.c:3378 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3376 +#: variables.c:3391 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:3442 +#: variables.c:3457 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" @@ -3271,470 +3266,471 @@ msgid "The command ARG is to be read and executed when the shell receives" msgstr "" #: builtins.c:1000 -msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +msgid "signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC" msgstr "" #: builtins.c:1001 -msgid "reset to their original values. If ARG is the null string each" +msgid "is supplied) or `-', each specified signal is reset to its original" msgstr "" #: builtins.c:1002 -msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +msgid "value. If ARG is the null string each SIGNAL_SPEC is ignored by the" msgstr "" #: builtins.c:1003 -msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +msgid "shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0)" msgstr "" #: builtins.c:1004 -msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" +msgid "the command ARG is executed on exit from the shell. If a SIGNAL_SPEC" msgstr "" #: builtins.c:1005 -msgid "command. If ARG is `-p' then the trap commands associated with" +msgid "" +"is DEBUG, ARG is executed after every simple command. If the`-p' option" msgstr "" #: builtins.c:1006 -msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +msgid "is supplied then the trap commands associated with each SIGNAL_SPEC are" msgstr "" #: builtins.c:1007 -msgid "only `-p' is given, trap prints the list of commands associated with" +msgid "displayed. If no arguments are supplied or if only `-p' is given, trap" msgstr "" #: builtins.c:1008 msgid "" -"each signal number. Each SIGNAL_SPEC is either a signal name in " +"prints the list of commands associated with each signal. Each SIGNAL_SPEC" msgstr "" #: builtins.c:1009 -msgid "or a signal number. `trap -l' prints a list of signal names and their" +msgid "is either a signal name in or a signal number. Signal names" msgstr "" #: builtins.c:1010 -msgid "corresponding numbers. Note that a signal can be sent to the shell" +msgid "are case insensitive and the SIG prefix is optional. `trap -l' prints" msgstr "" #: builtins.c:1011 -msgid "with \"kill -signal $$\"." +msgid "a list of signal names and their corresponding numbers. Note that a" msgstr "" -#: builtins.c:1017 -msgid "For each NAME, indicate how it would be interpreted if used as a" +#: builtins.c:1012 +msgid "signal can be sent to the shell with \"kill -signal $$\"." msgstr "" #: builtins.c:1018 +msgid "For each NAME, indicate how it would be interpreted if used as a" +msgstr "" + +#: builtins.c:1019 msgid "command name." msgstr "" -#: builtins.c:1020 +#: builtins.c:1021 msgid "If the -t option is used, `type' outputs a single word which is one of" msgstr "" -#: builtins.c:1021 +#: builtins.c:1022 msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" msgstr "" -#: builtins.c:1022 +#: builtins.c:1023 msgid "alias, shell reserved word, shell function, shell builtin, disk file," msgstr "" -#: builtins.c:1023 +#: builtins.c:1024 msgid "or unfound, respectively." msgstr "" -#: builtins.c:1025 +#: builtins.c:1026 msgid "If the -p flag is used, `type' either returns the name of the disk" msgstr "" -#: builtins.c:1026 +#: builtins.c:1027 msgid "file that would be executed, or nothing if `type -t NAME' would not" msgstr "" -#: builtins.c:1027 +#: builtins.c:1028 msgid "return `file'." msgstr "" -#: builtins.c:1029 +#: builtins.c:1030 msgid "If the -a flag is used, `type' displays all of the places that contain" msgstr "" -#: builtins.c:1030 +#: builtins.c:1031 msgid "an executable named `file'. This includes aliases, builtins, and" msgstr "" -#: builtins.c:1031 +#: builtins.c:1032 msgid "functions, if and only if the -p flag is not also used." msgstr "" -#: builtins.c:1033 +#: builtins.c:1034 msgid "The -f flag suppresses shell function lookup." msgstr "" -#: builtins.c:1035 +#: builtins.c:1036 msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," msgstr "" -#: builtins.c:1036 +#: builtins.c:1037 msgid "builtin, or function, and returns the name of the disk file that would" msgstr "" -#: builtins.c:1037 +#: builtins.c:1038 msgid "be executed." msgstr "" -#: builtins.c:1044 +#: builtins.c:1045 msgid "Ulimit provides control over the resources available to processes" msgstr "" -#: builtins.c:1045 +#: builtins.c:1046 msgid "started by the shell, on systems that allow such control. If an" msgstr "" -#: builtins.c:1046 +#: builtins.c:1047 msgid "option is given, it is interpreted as follows:" msgstr "" -#: builtins.c:1048 +#: builtins.c:1049 msgid " -S\tuse the `soft' resource limit" msgstr "" -#: builtins.c:1049 +#: builtins.c:1050 msgid " -H\tuse the `hard' resource limit" msgstr "" -#: builtins.c:1050 +#: builtins.c:1051 msgid " -a\tall current limits are reported" msgstr "" -#: builtins.c:1051 +#: builtins.c:1052 msgid " -c\tthe maximum size of core files created" msgstr "" -#: builtins.c:1052 +#: builtins.c:1053 msgid " -d\tthe maximum size of a process's data segment" msgstr "" -#: builtins.c:1053 +#: builtins.c:1054 msgid " -f\tthe maximum size of files created by the shell" msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid " -l\tthe maximum size a process may lock into memory" msgstr "" -#: builtins.c:1055 +#: builtins.c:1056 msgid " -m\tthe maximum resident set size" msgstr "" -#: builtins.c:1056 +#: builtins.c:1057 msgid " -n\tthe maximum number of open file descriptors" msgstr "" -#: builtins.c:1057 +#: builtins.c:1058 msgid " -p\tthe pipe buffer size" msgstr "" -#: builtins.c:1058 +#: builtins.c:1059 msgid " -s\tthe maximum stack size" msgstr "" -#: builtins.c:1059 +#: builtins.c:1060 msgid " -t\tthe maximum amount of cpu time in seconds" msgstr "" -#: builtins.c:1060 +#: builtins.c:1061 msgid " -u\tthe maximum number of user processes" msgstr "" -#: builtins.c:1061 +#: builtins.c:1062 msgid " -v\tthe size of virtual memory" msgstr "" -#: builtins.c:1063 +#: builtins.c:1064 msgid "If LIMIT is given, it is the new value of the specified resource;" msgstr "" -#: builtins.c:1064 +#: builtins.c:1065 msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" msgstr "" -#: builtins.c:1065 +#: builtins.c:1066 msgid "" "the current soft limit, the current hard limit, and no limit, respectively." msgstr "" -#: builtins.c:1066 +#: builtins.c:1067 msgid "Otherwise, the current value of the specified resource is printed." msgstr "" -#: builtins.c:1067 +#: builtins.c:1068 msgid "If no option is given, then -f is assumed. Values are in 1024-byte" msgstr "" -#: builtins.c:1068 +#: builtins.c:1069 msgid "increments, except for -t, which is in seconds, -p, which is in" msgstr "" -#: builtins.c:1069 +#: builtins.c:1070 msgid "increments of 512 bytes, and -u, which is an unscaled number of" msgstr "" -#: builtins.c:1070 +#: builtins.c:1071 msgid "processes." msgstr "" -#: builtins.c:1077 +#: builtins.c:1078 msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" msgstr "" -#: builtins.c:1078 +#: builtins.c:1079 msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" msgstr "" -#: builtins.c:1079 +#: builtins.c:1080 msgid "option makes the output symbolic; otherwise an octal number is output." msgstr "" -#: builtins.c:1080 +#: builtins.c:1081 msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" msgstr "" -#: builtins.c:1081 +#: builtins.c:1082 msgid "that may be used as input. If MODE begins with a digit, it is" msgstr "" -#: builtins.c:1082 +#: builtins.c:1083 msgid "interpreted as an octal number, otherwise it is a symbolic mode string" msgstr "" -#: builtins.c:1083 +#: builtins.c:1084 msgid "like that accepted by chmod(1)." msgstr "" -#: builtins.c:1090 builtins.c:1102 +#: builtins.c:1091 builtins.c:1103 msgid "Wait for the specified process and report its termination status. If" msgstr "" -#: builtins.c:1091 builtins.c:1103 +#: builtins.c:1092 builtins.c:1104 msgid "N is not given, all currently active child processes are waited for," msgstr "" -#: builtins.c:1092 +#: builtins.c:1093 msgid "and the return code is zero. N may be a process ID or a job" msgstr "" -#: builtins.c:1093 +#: builtins.c:1094 msgid "specification; if a job spec is given, all processes in the job's" msgstr "" -#: builtins.c:1094 +#: builtins.c:1095 msgid "pipeline are waited for." msgstr "" -#: builtins.c:1104 +#: builtins.c:1105 msgid "and the return code is zero. N is a process ID; if it is not given," msgstr "" -#: builtins.c:1105 +#: builtins.c:1106 msgid "all child processes of the shell are waited for." msgstr "" -#: builtins.c:1112 +#: builtins.c:1113 msgid "The `for' loop executes a sequence of commands for each member in a" msgstr "" -#: builtins.c:1113 +#: builtins.c:1114 msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" msgstr "" -#: builtins.c:1114 +#: builtins.c:1115 msgid "assumed. For each element in WORDS, NAME is set to that element, and" msgstr "" -#: builtins.c:1115 +#: builtins.c:1116 msgid "the COMMANDS are executed." msgstr "" -#: builtins.c:1121 +#: builtins.c:1122 msgid "Equivalent to" msgstr "" -#: builtins.c:1122 +#: builtins.c:1123 msgid "\t(( EXP1 ))" msgstr "" -#: builtins.c:1123 +#: builtins.c:1124 msgid "\twhile (( EXP2 )); do" msgstr "" -#: builtins.c:1124 +#: builtins.c:1125 msgid "\t\tCOMMANDS" msgstr "" -#: builtins.c:1125 +#: builtins.c:1126 msgid "\t\t(( EXP3 ))" msgstr "" -#: builtins.c:1126 +#: builtins.c:1127 msgid "\tdone" msgstr "" -#: builtins.c:1127 +#: builtins.c:1128 msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" msgstr "" -#: builtins.c:1128 +#: builtins.c:1129 msgid "omitted, it behaves as if it evaluates to 1." msgstr "" -#: builtins.c:1134 +#: builtins.c:1135 msgid "The WORDS are expanded, generating a list of words. The" msgstr "" -#: builtins.c:1135 +#: builtins.c:1136 msgid "set of expanded words is printed on the standard error, each" msgstr "" -#: builtins.c:1136 +#: builtins.c:1137 msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" msgstr "" -#: builtins.c:1137 +#: builtins.c:1138 msgid "is assumed. The PS3 prompt is then displayed and a line read" msgstr "" -#: builtins.c:1138 +#: builtins.c:1139 msgid "from the standard input. If the line consists of the number" msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "corresponding to one of the displayed words, then NAME is set" msgstr "" -#: builtins.c:1140 +#: builtins.c:1141 msgid "to that word. If the line is empty, WORDS and the prompt are" msgstr "" -#: builtins.c:1141 +#: builtins.c:1142 msgid "redisplayed. If EOF is read, the command completes. Any other" msgstr "" -#: builtins.c:1142 +#: builtins.c:1143 msgid "value read causes NAME to be set to null. The line read is saved" msgstr "" -#: builtins.c:1143 +#: builtins.c:1144 msgid "in the variable REPLY. COMMANDS are executed after each selection" msgstr "" -#: builtins.c:1144 +#: builtins.c:1145 msgid "until a break command is executed." msgstr "" -#: builtins.c:1150 +#: builtins.c:1151 msgid "Execute PIPELINE and print a summary of the real time, user CPU time," msgstr "" -#: builtins.c:1151 +#: builtins.c:1152 msgid "and system CPU time spent executing PIPELINE when it terminates." msgstr "" -#: builtins.c:1152 +#: builtins.c:1153 msgid "The return status is the return status of PIPELINE. The `-p' option" msgstr "" -#: builtins.c:1153 +#: builtins.c:1154 msgid "prints the timing summary in a slightly different format. This uses" msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "the value of the TIMEFORMAT variable as the output format." msgstr "" -#: builtins.c:1160 +#: builtins.c:1161 msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "`|' is used to separate multiple patterns." msgstr "" -#: builtins.c:1167 +#: builtins.c:1168 msgid "" "The if COMMANDS are executed. If the exit status is zero, then the then" msgstr "" -#: builtins.c:1168 +#: builtins.c:1169 msgid "" "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" msgstr "" -#: builtins.c:1169 +#: builtins.c:1170 msgid "" "in turn, and if the exit status is zero, the corresponding then COMMANDS" msgstr "" -#: builtins.c:1170 +#: builtins.c:1171 msgid "" "are executed and the if command completes. Otherwise, the else COMMANDS" msgstr "" -#: builtins.c:1171 +#: builtins.c:1172 msgid "" "are executed, if present. The exit status is the exit status of the last" msgstr "" -#: builtins.c:1172 +#: builtins.c:1173 msgid "command executed, or zero if no condition tested true." msgstr "" -#: builtins.c:1178 builtins.c:1185 +#: builtins.c:1179 builtins.c:1186 msgid "Expand and execute COMMANDS as long as the final command in the" msgstr "" -#: builtins.c:1179 +#: builtins.c:1180 msgid "`while' COMMANDS has an exit status of zero." msgstr "" -#: builtins.c:1186 +#: builtins.c:1187 msgid "`until' COMMANDS has an exit status which is not zero." msgstr "" -#: builtins.c:1192 +#: builtins.c:1193 msgid "Create a simple command invoked by NAME which runs COMMANDS." msgstr "" -#: builtins.c:1193 +#: builtins.c:1194 msgid "Arguments on the command line along with NAME are passed to the" msgstr "" -#: builtins.c:1194 +#: builtins.c:1195 msgid "function as $0 .. $n." msgstr "" -#: builtins.c:1200 +#: builtins.c:1201 msgid "Run a set of commands in a group. This is one way to redirect an" msgstr "" -#: builtins.c:1201 +#: builtins.c:1202 msgid "entire set of commands." msgstr "" -#: builtins.c:1207 -msgid "This is similar to the `fg' command. Resume a stopped or background" -msgstr "" - #: builtins.c:1208 -msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +msgid "This is similar to the `fg' command. Resume a stopped or background" msgstr "" #: builtins.c:1209 -msgid "WORD, then the job whose name begins with WORD is used. Following the" +msgid "job specified by %JOBSPEC. Following the job specification with a `&'" msgstr "" #: builtins.c:1210 -msgid "job specification with a `&' places the job in the background." +msgid "places the job in the background." msgstr "" #: builtins.c:1216 @@ -3798,377 +3794,373 @@ msgid "BASH_VERSION Version information for this Bash." msgstr "" #: builtins.c:1242 -msgid "CDPATH A colon separated list of directories to search" +msgid "CDPATH A colon-separated list of directories to search" msgstr "" #: builtins.c:1243 -msgid "\t\twhen the argument to `cd' is not found in the current" +msgid "\t\tfor directries given as arguments to `cd'." msgstr "" #: builtins.c:1244 -msgid "\t\tdirectory." -msgstr "" - -#: builtins.c:1245 msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" msgstr "" -#: builtins.c:1246 +#: builtins.c:1245 msgid "\t\tbe ignored by pathname expansion." msgstr "" -#: builtins.c:1248 +#: builtins.c:1247 msgid "" "HISTFILE The name of the file where your command history is stored." msgstr "" -#: builtins.c:1249 +#: builtins.c:1248 msgid "HISTFILESIZE The maximum number of lines this file can contain." msgstr "" -#: builtins.c:1250 +#: builtins.c:1249 msgid "HISTSIZE The maximum number of history lines that a running" msgstr "" -#: builtins.c:1251 +#: builtins.c:1250 msgid "\t\tshell can access." msgstr "" -#: builtins.c:1253 +#: builtins.c:1252 msgid "HOME The complete pathname to your login directory." msgstr "" -#: builtins.c:1254 +#: builtins.c:1253 msgid "HOSTNAME\tThe name of the current host." msgstr "" -#: builtins.c:1255 +#: builtins.c:1254 msgid "HOSTTYPE The type of CPU this version of Bash is running under." msgstr "" -#: builtins.c:1256 +#: builtins.c:1255 msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" msgstr "" -#: builtins.c:1257 +#: builtins.c:1256 msgid "\t\tcharacter as the sole input. If set, then the value" msgstr "" -#: builtins.c:1258 +#: builtins.c:1257 msgid "\t\tof it is the number of EOF characters that can be seen" msgstr "" -#: builtins.c:1259 +#: builtins.c:1258 msgid "\t\tin a row on an empty line before the shell will exit" msgstr "" -#: builtins.c:1260 +#: builtins.c:1259 msgid "\t\t(default 10). When unset, EOF signifies the end of input." msgstr "" -#: builtins.c:1261 +#: builtins.c:1260 msgid "MACHTYPE\tA string describing the current system Bash is running on." msgstr "" -#: builtins.c:1262 +#: builtins.c:1261 msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." msgstr "" -#: builtins.c:1263 +#: builtins.c:1262 msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" msgstr "" -#: builtins.c:1264 +#: builtins.c:1263 msgid "\t\tfor new mail." msgstr "" -#: builtins.c:1265 +#: builtins.c:1264 msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." msgstr "" -#: builtins.c:1266 +#: builtins.c:1265 msgid "PATH A colon-separated list of directories to search when" msgstr "" -#: builtins.c:1267 +#: builtins.c:1266 msgid "\t\tlooking for commands." msgstr "" -#: builtins.c:1268 +#: builtins.c:1267 msgid "PROMPT_COMMAND A command to be executed before the printing of each" msgstr "" -#: builtins.c:1269 +#: builtins.c:1268 msgid "\t\tprimary prompt." msgstr "" -#: builtins.c:1270 +#: builtins.c:1269 msgid "PS1 The primary prompt string." msgstr "" -#: builtins.c:1271 +#: builtins.c:1270 msgid "PS2 The secondary prompt string." msgstr "" -#: builtins.c:1272 +#: builtins.c:1271 msgid "PWD\t\tThe full pathname of the current directory." msgstr "" -#: builtins.c:1273 +#: builtins.c:1272 msgid "SHELLOPTS\tA colon-separated list of enabled shell options." msgstr "" -#: builtins.c:1274 +#: builtins.c:1273 msgid "TERM The name of the current terminal type." msgstr "" -#: builtins.c:1275 +#: builtins.c:1274 msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" msgstr "" -#: builtins.c:1276 +#: builtins.c:1275 msgid "\t\t`time' reserved word." msgstr "" -#: builtins.c:1277 +#: builtins.c:1276 msgid "auto_resume Non-null means a command word appearing on a line by" msgstr "" -#: builtins.c:1278 +#: builtins.c:1277 msgid "\t\titself is first looked for in the list of currently" msgstr "" -#: builtins.c:1279 +#: builtins.c:1278 msgid "\t\tstopped jobs. If found there, that job is foregrounded." msgstr "" -#: builtins.c:1280 +#: builtins.c:1279 msgid "\t\tA value of `exact' means that the command word must" msgstr "" -#: builtins.c:1281 +#: builtins.c:1280 msgid "\t\texactly match a command in the list of stopped jobs. A" msgstr "" -#: builtins.c:1282 +#: builtins.c:1281 msgid "\t\tvalue of `substring' means that the command word must" msgstr "" -#: builtins.c:1283 +#: builtins.c:1282 msgid "\t\tmatch a substring of the job. Any other value means that" msgstr "" -#: builtins.c:1284 +#: builtins.c:1283 msgid "\t\tthe command must be a prefix of a stopped job." msgstr "" -#: builtins.c:1287 +#: builtins.c:1286 msgid "histchars Characters controlling history expansion and quick" msgstr "" -#: builtins.c:1288 +#: builtins.c:1287 msgid "\t\tsubstitution. The first character is the history" msgstr "" -#: builtins.c:1289 +#: builtins.c:1288 msgid "\t\tsubstitution character, usually `!'. The second is" msgstr "" -#: builtins.c:1290 +#: builtins.c:1289 msgid "\t\tthe `quick substitution' character, usually `^'. The" msgstr "" -#: builtins.c:1291 +#: builtins.c:1290 msgid "\t\tthird is the `history comment' character, usually `#'." msgstr "" -#: builtins.c:1293 +#: builtins.c:1292 msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" msgstr "" -#: builtins.c:1294 +#: builtins.c:1293 msgid "\t\tcommands should be saved on the history list." msgstr "" -#: builtins.c:1306 +#: builtins.c:1305 msgid "+N\tRotates the stack so that the Nth directory (counting" msgstr "" -#: builtins.c:1307 +#: builtins.c:1306 msgid "\tfrom the left of the list shown by `dirs', starting with" msgstr "" -#: builtins.c:1308 builtins.c:1312 +#: builtins.c:1307 builtins.c:1311 msgid "\tzero) is at the top." msgstr "" -#: builtins.c:1310 +#: builtins.c:1309 msgid "-N\tRotates the stack so that the Nth directory (counting" msgstr "" -#: builtins.c:1311 +#: builtins.c:1310 msgid "\tfrom the right of the list shown by `dirs', starting with" msgstr "" -#: builtins.c:1314 +#: builtins.c:1313 msgid "-n\tsuppress the normal change of directory when adding directories" msgstr "" -#: builtins.c:1315 +#: builtins.c:1314 msgid "\tto the stack, so only the stack is manipulated." msgstr "" -#: builtins.c:1317 +#: builtins.c:1316 msgid "dir\tadds DIR to the directory stack at the top, making it the" msgstr "" -#: builtins.c:1318 +#: builtins.c:1317 msgid "\tnew current working directory." msgstr "" -#: builtins.c:1332 +#: builtins.c:1331 msgid "+N\tremoves the Nth entry counting from the left of the list" msgstr "" -#: builtins.c:1333 +#: builtins.c:1332 msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" msgstr "" -#: builtins.c:1334 +#: builtins.c:1333 msgid "\tremoves the first directory, `popd +1' the second." msgstr "" -#: builtins.c:1336 +#: builtins.c:1335 msgid "-N\tremoves the Nth entry counting from the right of the list" msgstr "" -#: builtins.c:1337 +#: builtins.c:1336 msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" msgstr "" -#: builtins.c:1338 +#: builtins.c:1337 msgid "\tremoves the last directory, `popd -1' the next to last." msgstr "" -#: builtins.c:1340 +#: builtins.c:1339 msgid "-n\tsuppress the normal change of directory when removing directories" msgstr "" -#: builtins.c:1341 +#: builtins.c:1340 msgid "\tfrom the stack, so only the stack is manipulated." msgstr "" -#: builtins.c:1363 +#: builtins.c:1362 msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" msgstr "" -#: builtins.c:1364 builtins.c:1367 +#: builtins.c:1363 builtins.c:1366 msgid "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins.c:1366 +#: builtins.c:1365 msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" msgstr "" -#: builtins.c:1374 +#: builtins.c:1373 msgid "Toggle the values of variables controlling optional behavior." msgstr "" -#: builtins.c:1375 +#: builtins.c:1374 msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" msgstr "" -#: builtins.c:1376 +#: builtins.c:1375 msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" msgstr "" -#: builtins.c:1377 +#: builtins.c:1376 msgid "status indicates whether each OPTNAME is set or unset. The -o" msgstr "" -#: builtins.c:1378 +#: builtins.c:1377 msgid "option restricts the OPTNAMEs to those defined for use with" msgstr "" -#: builtins.c:1379 +#: builtins.c:1378 msgid "`set -o'. With no options, or with the -p option, a list of all" msgstr "" -#: builtins.c:1380 +#: builtins.c:1379 msgid "settable options is displayed, with an indication of whether or" msgstr "" -#: builtins.c:1381 +#: builtins.c:1380 msgid "not each is set." msgstr "" -#: builtins.c:1387 +#: builtins.c:1386 msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" msgstr "" -#: builtins.c:1388 +#: builtins.c:1387 msgid "is a character string which contains three types of objects: plain" msgstr "" -#: builtins.c:1389 +#: builtins.c:1388 msgid "" "characters, which are simply copied to standard output, character escape" msgstr "" -#: builtins.c:1390 +#: builtins.c:1389 msgid "sequences which are converted and copied to the standard output, and" msgstr "" -#: builtins.c:1391 +#: builtins.c:1390 msgid "" "format specifications, each of which causes printing of the next successive" msgstr "" -#: builtins.c:1392 +#: builtins.c:1391 msgid "argument. In addition to the standard printf(1) formats, %b means to" msgstr "" -#: builtins.c:1393 +#: builtins.c:1392 msgid "expand backslash escape sequences in the corresponding argument, and %q" msgstr "" -#: builtins.c:1394 +#: builtins.c:1393 msgid "means to quote the argument in a way that can be reused as shell input." msgstr "" -#: builtins.c:1401 +#: builtins.c:1400 msgid "For each NAME, specify how arguments are to be completed." msgstr "" -#: builtins.c:1402 +#: builtins.c:1401 msgid "If the -p option is supplied, or if no options are supplied, existing" msgstr "" -#: builtins.c:1403 +#: builtins.c:1402 msgid "completion specifications are printed in a way that allows them to be" msgstr "" -#: builtins.c:1404 +#: builtins.c:1403 msgid "reused as input. The -r option removes a completion specification for" msgstr "" -#: builtins.c:1405 +#: builtins.c:1404 msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." msgstr "" -#: builtins.c:1413 +#: builtins.c:1412 msgid "Display the possible completions depending on the options. Intended" msgstr "" -#: builtins.c:1414 +#: builtins.c:1413 msgid "" "to be used from within a shell function generating possible completions." msgstr "" -#: builtins.c:1415 +#: builtins.c:1414 msgid "If the optional WORD argument is supplied, matches against WORD are" msgstr "" -#: builtins.c:1416 +#: builtins.c:1415 msgid "generated." msgstr "" diff --git a/po/diffs b/po/diffs new file mode 100644 index 000000000..de6c1eb65 --- /dev/null +++ b/po/diffs @@ -0,0 +1,2938 @@ +*** ../po.orig/bash.pot Fri Apr 30 22:40:24 2004 +--- bash.pot Thu Sep 9 17:59:44 2004 +*************** +*** 16,25 **** + #: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952 + #: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973 +! #: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028 +! #: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062 +! #: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309 +! #: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331 +! #: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354 +! #: builtins.c:1362 builtins.c:1365 + #, fuzzy + msgid "" +--- 16,25 ---- + #: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952 + #: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973 +! #: builtins.c:976 builtins.c:1020 builtins.c:1025 builtins.c:1029 +! #: builtins.c:1033 builtins.c:1035 builtins.c:1048 builtins.c:1063 +! #: builtins.c:1226 builtins.c:1231 builtins.c:1304 builtins.c:1308 +! #: builtins.c:1312 builtins.c:1315 builtins.c:1318 builtins.c:1330 +! #: builtins.c:1334 builtins.c:1338 builtins.c:1341 builtins.c:1353 +! #: builtins.c:1361 builtins.c:1364 + #, fuzzy + msgid "" +*************** +*** 27,31 **** + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: bug-bash@gnu.org\n" +! "POT-Creation-Date: 2003-12-22 15:34-0500\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" +--- 27,31 ---- + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: bug-bash@gnu.org\n" +! "POT-Creation-Date: 2004-09-09 17:59-0400\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" +*************** +*** 44,76 **** + msgstr "" + +! #: bashhist.c:321 + #, c-format + msgid "%s: cannot create: %s" + msgstr "" + +! #: bashline.c:2791 + msgid "bash_execute_unix_command: cannot find keymap for command" + msgstr "" + +! #: bashline.c:2840 + #, c-format + msgid "%s: first non-whitespace character is not `\"'" + msgstr "" + +! #: bashline.c:2869 + #, c-format + msgid "no closing `%c' in %s" + msgstr "" + +! #: bashline.c:2903 + #, c-format + msgid "%s: missing colon separator" + msgstr "" + +- #: builtins/alias.def:123 +- #, c-format +- msgid "`%s': invalid alias name" +- msgstr "" +- + #: builtins/bind.def:194 + #, c-format +--- 44,71 ---- + msgstr "" + +! #: bashhist.c:322 + #, c-format + msgid "%s: cannot create: %s" + msgstr "" + +! #: bashline.c:2916 + msgid "bash_execute_unix_command: cannot find keymap for command" + msgstr "" + +! #: bashline.c:2965 + #, c-format + msgid "%s: first non-whitespace character is not `\"'" + msgstr "" + +! #: bashline.c:2994 + #, c-format + msgid "no closing `%c' in %s" + msgstr "" + +! #: bashline.c:3028 + #, c-format + msgid "%s: missing colon separator" + msgstr "" + + #: builtins/bind.def:194 + #, c-format +*************** +*** 131,147 **** + msgstr "" + +! #: builtins/cd.def:188 + msgid "HOME not set" + msgstr "" + +! #: builtins/cd.def:200 + msgid "OLDPWD not set" + msgstr "" + +- #: builtins/cd.def:357 +- #, c-format +- msgid "write error: %s" +- msgstr "" +- + #: builtins/common.c:133 test.c:921 + msgid "too many arguments" +--- 126,137 ---- + msgstr "" + +! #: builtins/cd.def:190 + msgid "HOME not set" + msgstr "" + +! #: builtins/cd.def:202 + msgid "OLDPWD not set" + msgstr "" + + #: builtins/common.c:133 test.c:921 + msgid "too many arguments" +*************** +*** 173,177 **** + msgstr "" + +! #: builtins/common.c:194 general.c:229 general.c:234 + #, c-format + msgid "`%s': not a valid identifier" +--- 163,167 ---- + msgstr "" + +! #: builtins/common.c:194 general.c:231 general.c:236 + #, c-format + msgid "`%s': not a valid identifier" +*************** +*** 240,249 **** + msgstr "" + +! #: builtins/common.c:486 + #, c-format + msgid "%s: error retrieving current directory: %s: %s\n" + msgstr "" + +! #: builtins/common.c:553 builtins/common.c:555 + #, c-format + msgid "%s: ambiguous job spec" +--- 230,244 ---- + msgstr "" + +! #: builtins/common.c:276 +! #, c-format +! msgid "write error: %s" +! msgstr "" +! +! #: builtins/common.c:484 + #, c-format + msgid "%s: error retrieving current directory: %s: %s\n" + msgstr "" + +! #: builtins/common.c:548 builtins/common.c:550 + #, c-format + msgid "%s: ambiguous job spec" +*************** +*** 276,280 **** + msgstr "" + +! #: builtins/declare.def:307 execute_cmd.c:3949 + #, c-format + msgid "%s: readonly function" +--- 271,275 ---- + msgstr "" + +! #: builtins/declare.def:307 execute_cmd.c:3969 + #, c-format + msgid "%s: readonly function" +*************** +*** 310,324 **** + msgstr "" + +! #: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395 + #, c-format + msgid "%s: is a directory" + msgstr "" + +! #: builtins/evalfile.c:133 + #, c-format + msgid "%s: not a regular file" + msgstr "" + +! #: builtins/evalfile.c:141 + #, c-format + msgid "%s: file is too large" +--- 305,319 ---- + msgstr "" + +! #: builtins/evalfile.c:129 execute_cmd.c:3841 shell.c:1396 + #, c-format + msgid "%s: is a directory" + msgstr "" + +! #: builtins/evalfile.c:134 + #, c-format + msgid "%s: not a regular file" + msgstr "" + +! #: builtins/evalfile.c:142 + #, c-format + msgid "%s: file is too large" +*************** +*** 338,355 **** + msgstr "" + +! #: builtins/fc.def:252 + msgid "no command found" + msgstr "" + +! #: builtins/fc.def:317 + msgid "history specification" + msgstr "" + +! #: builtins/fc.def:338 + #, c-format + msgid "%s: cannot open temp file: %s" + msgstr "" + +! #: builtins/fg_bg.def:133 + #, c-format + msgid "job %d started without job control" +--- 333,350 ---- + msgstr "" + +! #: builtins/fc.def:254 + msgid "no command found" + msgstr "" + +! #: builtins/fc.def:319 + msgid "history specification" + msgstr "" + +! #: builtins/fc.def:340 + #, c-format + msgid "%s: cannot open temp file: %s" + msgstr "" + +! #: builtins/fg_bg.def:145 + #, c-format + msgid "job %d started without job control" +*************** +*** 431,435 **** + msgstr "" + +! #: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511 + msgid "expression expected" + msgstr "" +--- 426,430 ---- + msgstr "" + +! #: builtins/let.def:94 builtins/let.def:119 expr.c:497 expr.c:512 + msgid "expression expected" + msgstr "" +*************** +*** 440,449 **** + msgstr "" + +! #: builtins/printf.def:408 + #, c-format + msgid "`%c': invalid format character" + msgstr "" + +! #: builtins/printf.def:601 + msgid "missing hex digit for \\x" + msgstr "" +--- 435,444 ---- + msgstr "" + +! #: builtins/printf.def:423 + #, c-format + msgid "`%c': invalid format character" + msgstr "" + +! #: builtins/printf.def:629 + msgid "missing hex digit for \\x" + msgstr "" +*************** +*** 457,497 **** + msgstr "" + +! #: builtins/pushd.def:652 builtins.c:1351 + msgid "Display the list of currently remembered directories. Directories" + msgstr "" + +! #: builtins/pushd.def:653 builtins.c:1352 + msgid "find their way onto the list with the `pushd' command; you can get" + msgstr "" + +! #: builtins/pushd.def:654 builtins.c:1353 + msgid "back up through the list with the `popd' command." + msgstr "" + +! #: builtins/pushd.def:656 builtins.c:1355 + msgid "The -l flag specifies that `dirs' should not print shorthand versions" + msgstr "" + +! #: builtins/pushd.def:657 builtins.c:1356 + msgid "of directories which are relative to your home directory. This means" + msgstr "" + +! #: builtins/pushd.def:658 builtins.c:1357 + msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" + msgstr "" + +! #: builtins/pushd.def:659 builtins.c:1358 + msgid "causes `dirs' to print the directory stack with one entry per line," + msgstr "" + +! #: builtins/pushd.def:660 builtins.c:1359 + msgid "prepending the directory name with its position in the stack. The -p" + msgstr "" + +! #: builtins/pushd.def:661 builtins.c:1360 + msgid "flag does the same thing, but the stack position is not prepended." + msgstr "" + +! #: builtins/pushd.def:662 builtins.c:1361 + msgid "The -c flag clears the directory stack by deleting all of the elements." + msgstr "" +--- 452,492 ---- + msgstr "" + +! #: builtins/pushd.def:652 builtins.c:1350 + msgid "Display the list of currently remembered directories. Directories" + msgstr "" + +! #: builtins/pushd.def:653 builtins.c:1351 + msgid "find their way onto the list with the `pushd' command; you can get" + msgstr "" + +! #: builtins/pushd.def:654 builtins.c:1352 + msgid "back up through the list with the `popd' command." + msgstr "" + +! #: builtins/pushd.def:656 builtins.c:1354 + msgid "The -l flag specifies that `dirs' should not print shorthand versions" + msgstr "" + +! #: builtins/pushd.def:657 builtins.c:1355 + msgid "of directories which are relative to your home directory. This means" + msgstr "" + +! #: builtins/pushd.def:658 builtins.c:1356 + msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" + msgstr "" + +! #: builtins/pushd.def:659 builtins.c:1357 + msgid "causes `dirs' to print the directory stack with one entry per line," + msgstr "" + +! #: builtins/pushd.def:660 builtins.c:1358 + msgid "prepending the directory name with its position in the stack. The -p" + msgstr "" + +! #: builtins/pushd.def:661 builtins.c:1359 + msgid "flag does the same thing, but the stack position is not prepended." + msgstr "" + +! #: builtins/pushd.def:662 builtins.c:1360 + msgid "The -c flag clears the directory stack by deleting all of the elements." + msgstr "" +*************** +*** 510,522 **** + msgstr "" + +! #: builtins/pushd.def:673 builtins.c:1302 + msgid "Adds a directory to the top of the directory stack, or rotates" + msgstr "" + +! #: builtins/pushd.def:674 builtins.c:1303 + msgid "the stack, making the new top of the stack the current working" + msgstr "" + +! #: builtins/pushd.def:675 builtins.c:1304 + msgid "directory. With no arguments, exchanges the top two directories." + msgstr "" +--- 505,517 ---- + msgstr "" + +! #: builtins/pushd.def:673 builtins.c:1301 + msgid "Adds a directory to the top of the directory stack, or rotates" + msgstr "" + +! #: builtins/pushd.def:674 builtins.c:1302 + msgid "the stack, making the new top of the stack the current working" + msgstr "" + +! #: builtins/pushd.def:675 builtins.c:1303 + msgid "directory. With no arguments, exchanges the top two directories." + msgstr "" +*************** +*** 558,575 **** + msgstr "" + +! #: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320 +! #: builtins.c:1343 + msgid "You can see the directory stack with the `dirs' command." + msgstr "" + +! #: builtins/pushd.def:696 builtins.c:1328 + msgid "Removes entries from the directory stack. With no arguments," + msgstr "" + +! #: builtins/pushd.def:697 builtins.c:1329 + msgid "removes the top directory from the stack, and cd's to the new" + msgstr "" + +! #: builtins/pushd.def:698 builtins.c:1330 + msgid "top directory." + msgstr "" +--- 553,570 ---- + msgstr "" + +! #: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1319 +! #: builtins.c:1342 + msgid "You can see the directory stack with the `dirs' command." + msgstr "" + +! #: builtins/pushd.def:696 builtins.c:1327 + msgid "Removes entries from the directory stack. With no arguments," + msgstr "" + +! #: builtins/pushd.def:697 builtins.c:1328 + msgid "removes the top directory from the stack, and cd's to the new" + msgstr "" + +! #: builtins/pushd.def:698 builtins.c:1329 + msgid "top directory." + msgstr "" +*************** +*** 685,714 **** + msgstr "" + +! #: builtins/type.def:231 + #, c-format + msgid "%s is aliased to `%s'\n" + msgstr "" + +! #: builtins/type.def:252 + #, c-format + msgid "%s is a shell keyword\n" + msgstr "" + +! #: builtins/type.def:272 + #, c-format + msgid "%s is a function\n" + msgstr "" + +! #: builtins/type.def:297 + #, c-format + msgid "%s is a shell builtin\n" + msgstr "" + +! #: builtins/type.def:318 + #, c-format + msgid "%s is %s\n" + msgstr "" + +! #: builtins/type.def:338 + #, c-format + msgid "%s is hashed (%s)\n" +--- 680,709 ---- + msgstr "" + +! #: builtins/type.def:232 + #, c-format + msgid "%s is aliased to `%s'\n" + msgstr "" + +! #: builtins/type.def:253 + #, c-format + msgid "%s is a shell keyword\n" + msgstr "" + +! #: builtins/type.def:273 + #, c-format + msgid "%s is a function\n" + msgstr "" + +! #: builtins/type.def:298 + #, c-format + msgid "%s is a shell builtin\n" + msgstr "" + +! #: builtins/type.def:319 + #, c-format + msgid "%s is %s\n" + msgstr "" + +! #: builtins/type.def:339 + #, c-format + msgid "%s is hashed (%s)\n" +*************** +*** 744,748 **** + msgstr "" + +! #: builtins/umask.def:279 + #, c-format + msgid "`%c': invalid symbolic mode character" +--- 739,743 ---- + msgstr "" + +! #: builtins/umask.def:281 + #, c-format + msgid "`%c': invalid symbolic mode character" +*************** +*** 788,883 **** + msgstr "" + +! #: execute_cmd.c:466 + #, c-format + msgid "cannot redirect standard input from /dev/null: %s" + msgstr "" + +! #: execute_cmd.c:1036 + #, c-format + msgid "TIMEFORMAT: `%c': invalid format character" + msgstr "" + +! #: execute_cmd.c:3521 + #, c-format + msgid "%s: restricted: cannot specify `/' in command names" + msgstr "" + +! #: execute_cmd.c:3609 + #, c-format + msgid "%s: command not found" + msgstr "" + +! #: execute_cmd.c:3839 + #, c-format + msgid "%s: %s: bad interpreter" + msgstr "" + +! #: execute_cmd.c:3876 + #, c-format + msgid "%s: cannot execute binary file" + msgstr "" + +! #: execute_cmd.c:3988 + #, c-format + msgid "cannot duplicate fd %d to fd %d" + msgstr "" + +! #: expr.c:239 + msgid "expression recursion level exceeded" + msgstr "" + +! #: expr.c:263 + msgid "recursion stack underflow" + msgstr "" + +! #: expr.c:374 + msgid "syntax error in expression" + msgstr "" + +! #: expr.c:414 + msgid "attempted assignment to non-variable" + msgstr "" + +! #: expr.c:435 expr.c:440 expr.c:750 + msgid "division by 0" + msgstr "" + +! #: expr.c:466 + msgid "bug: bad expassign token" + msgstr "" + +! #: expr.c:508 + msgid "`:' expected for conditional expression" + msgstr "" + +! #: expr.c:775 + msgid "exponent less than 0" + msgstr "" + +! #: expr.c:819 + msgid "identifier expected after pre-increment or pre-decrement" + msgstr "" + +! #: expr.c:847 + msgid "missing `)'" + msgstr "" + +! #: expr.c:871 + msgid "syntax error: operand expected" + msgstr "" + +! #: expr.c:1146 + msgid "invalid number" + msgstr "" + +! #: expr.c:1150 + msgid "invalid arithmetic base" + msgstr "" + +! #: expr.c:1170 + msgid "value too great for base" + msgstr "" + +! #: general.c:60 + msgid "getcwd: cannot access parent directories" + msgstr "" +--- 783,878 ---- + msgstr "" + +! #: execute_cmd.c:467 + #, c-format + msgid "cannot redirect standard input from /dev/null: %s" + msgstr "" + +! #: execute_cmd.c:1037 + #, c-format + msgid "TIMEFORMAT: `%c': invalid format character" + msgstr "" + +! #: execute_cmd.c:3541 + #, c-format + msgid "%s: restricted: cannot specify `/' in command names" + msgstr "" + +! #: execute_cmd.c:3629 + #, c-format + msgid "%s: command not found" + msgstr "" + +! #: execute_cmd.c:3859 + #, c-format + msgid "%s: %s: bad interpreter" + msgstr "" + +! #: execute_cmd.c:3896 + #, c-format + msgid "%s: cannot execute binary file" + msgstr "" + +! #: execute_cmd.c:4008 + #, c-format + msgid "cannot duplicate fd %d to fd %d" + msgstr "" + +! #: expr.c:240 + msgid "expression recursion level exceeded" + msgstr "" + +! #: expr.c:264 + msgid "recursion stack underflow" + msgstr "" + +! #: expr.c:375 + msgid "syntax error in expression" + msgstr "" + +! #: expr.c:415 + msgid "attempted assignment to non-variable" + msgstr "" + +! #: expr.c:436 expr.c:441 expr.c:751 + msgid "division by 0" + msgstr "" + +! #: expr.c:467 + msgid "bug: bad expassign token" + msgstr "" + +! #: expr.c:509 + msgid "`:' expected for conditional expression" + msgstr "" + +! #: expr.c:776 + msgid "exponent less than 0" + msgstr "" + +! #: expr.c:821 + msgid "identifier expected after pre-increment or pre-decrement" + msgstr "" + +! #: expr.c:849 + msgid "missing `)'" + msgstr "" + +! #: expr.c:892 + msgid "syntax error: operand expected" + msgstr "" + +! #: expr.c:1178 + msgid "invalid number" + msgstr "" + +! #: expr.c:1182 + msgid "invalid arithmetic base" + msgstr "" + +! #: expr.c:1202 + msgid "value too great for base" + msgstr "" + +! #: general.c:62 + msgid "getcwd: cannot access parent directories" + msgstr "" +*************** +*** 893,932 **** + msgstr "" + +! #: jobs.c:693 + #, c-format + msgid "deleting stopped job %d with process group %ld" + msgstr "" + +! #: jobs.c:1001 + #, c-format + msgid "describe_pid: %ld: no such pid" + msgstr "" + +! #: jobs.c:1632 nojobs.c:648 + #, c-format + msgid "wait: pid %ld is not a child of this shell" + msgstr "" + +! #: jobs.c:1815 + #, c-format + msgid "wait_for: No record of process %ld" + msgstr "" + +! #: jobs.c:2062 + #, c-format + msgid "wait_for_job: job %d is stopped" + msgstr "" + +! #: jobs.c:2284 + #, c-format + msgid "%s: job has terminated" + msgstr "" + +! #: jobs.c:2293 + #, c-format + msgid "%s: job %d already in background" + msgstr "" + +! #: jobs.c:3037 + msgid "no job control in this shell" + msgstr "" +--- 888,927 ---- + msgstr "" + +! #: jobs.c:694 + #, c-format + msgid "deleting stopped job %d with process group %ld" + msgstr "" + +! #: jobs.c:1002 + #, c-format + msgid "describe_pid: %ld: no such pid" + msgstr "" + +! #: jobs.c:1633 nojobs.c:648 + #, c-format + msgid "wait: pid %ld is not a child of this shell" + msgstr "" + +! #: jobs.c:1821 + #, c-format + msgid "wait_for: No record of process %ld" + msgstr "" + +! #: jobs.c:2068 + #, c-format + msgid "wait_for_job: job %d is stopped" + msgstr "" + +! #: jobs.c:2290 + #, c-format + msgid "%s: job has terminated" + msgstr "" + +! #: jobs.c:2299 + #, c-format + msgid "%s: job %d already in background" + msgstr "" + +! #: jobs.c:3043 + msgid "no job control in this shell" + msgstr "" +*************** +*** 1064,1073 **** + msgstr "" + +! #: make_cmd.c:560 + #, c-format + msgid "make_here_document: bad instruction type %d" + msgstr "" + +! #: make_cmd.c:730 + #, c-format + msgid "make_redirection: redirection instruction `%d' out of range" +--- 1059,1068 ---- + msgstr "" + +! #: make_cmd.c:561 + #, c-format + msgid "make_here_document: bad instruction type %d" + msgstr "" + +! #: make_cmd.c:731 + #, c-format + msgid "make_redirection: redirection instruction `%d' out of range" +*************** +*** 1143,1174 **** + msgstr "" + +! #: parse.y:4400 + #, c-format + msgid "syntax error near unexpected token `%s'" + msgstr "" + +! #: parse.y:4418 + #, c-format + msgid "syntax error near `%s'" + msgstr "" + +! #: parse.y:4428 + msgid "syntax error: unexpected end of file" + msgstr "" + +! #: parse.y:4428 + msgid "syntax error" + msgstr "" + +! #: parse.y:4490 + #, c-format + msgid "Use \"%s\" to leave the shell.\n" + msgstr "" + +! #: parse.y:4649 + msgid "unexpected EOF while looking for matching `)'" + msgstr "" + +! #: pcomplete.c:988 + #, c-format + msgid "completion: function `%s' not found" +--- 1138,1169 ---- + msgstr "" + +! #: parse.y:4409 + #, c-format + msgid "syntax error near unexpected token `%s'" + msgstr "" + +! #: parse.y:4427 + #, c-format + msgid "syntax error near `%s'" + msgstr "" + +! #: parse.y:4437 + msgid "syntax error: unexpected end of file" + msgstr "" + +! #: parse.y:4437 + msgid "syntax error" + msgstr "" + +! #: parse.y:4499 + #, c-format + msgid "Use \"%s\" to leave the shell.\n" + msgstr "" + +! #: parse.y:4658 + msgid "unexpected EOF while looking for matching `)'" + msgstr "" + +! #: pcomplete.c:998 + #, c-format + msgid "completion: function `%s' not found" +*************** +*** 1180,1189 **** + msgstr "" + +! #: print_cmd.c:260 + #, c-format + msgid "print_command: bad connector `%d'" + msgstr "" + +! #: print_cmd.c:1172 + #, c-format + msgid "cprintf: `%c': invalid format character" +--- 1175,1184 ---- + msgstr "" + +! #: print_cmd.c:261 + #, c-format + msgid "print_command: bad connector `%d'" + msgstr "" + +! #: print_cmd.c:1211 + #, c-format + msgid "cprintf: `%c': invalid format character" +*************** +*** 1235,1243 **** + msgstr "" + +! #: shell.c:1590 + msgid "I have no name!" + msgstr "" + +! #: shell.c:1725 + #, c-format + msgid "" +--- 1230,1238 ---- + msgstr "" + +! #: shell.c:1591 + msgid "I have no name!" + msgstr "" + +! #: shell.c:1726 + #, c-format + msgid "" +*************** +*** 1246,1356 **** + msgstr "" + +! #: shell.c:1727 + msgid "GNU long options:\n" + msgstr "" + +! #: shell.c:1731 + msgid "Shell options:\n" + msgstr "" + +! #: shell.c:1732 + msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" + msgstr "" + +! #: shell.c:1747 + #, c-format + msgid "\t-%s or -o option\n" + msgstr "" + +! #: shell.c:1753 + #, c-format + msgid "Type `%s -c \"help set\"' for more information about shell options.\n" + msgstr "" + +! #: shell.c:1754 + #, c-format + msgid "Type `%s -c help' for more information about shell builtin commands.\n" + msgstr "" + +! #: shell.c:1755 + msgid "Use the `bashbug' command to report bugs.\n" + msgstr "" + +! #: sig.c:485 + #, c-format + msgid "sigprocmask: %d: invalid operation" + msgstr "" + +! #: subst.c:1011 + #, c-format + msgid "bad substitution: no closing `%s' in %s" + msgstr "" + +! #: subst.c:2020 + #, c-format + msgid "%s: cannot assign list to array member" + msgstr "" + +! #: subst.c:3516 subst.c:3532 + msgid "cannot make pipe for process substitution" + msgstr "" + +! #: subst.c:3563 + msgid "cannot make child for process substitution" + msgstr "" + +! #: subst.c:3608 + #, c-format + msgid "cannot open named pipe %s for reading" + msgstr "" + +! #: subst.c:3610 + #, c-format + msgid "cannot open named pipe %s for writing" + msgstr "" + +! #: subst.c:3618 + #, c-format + msgid "cannout reset nodelay mode for fd %d" + msgstr "" + +! #: subst.c:3628 + #, c-format + msgid "cannot duplicate named pipe %s as fd %d" + msgstr "" + +! #: subst.c:3803 + msgid "cannot make pipe for command substitution" + msgstr "" + +! #: subst.c:3832 + msgid "cannot make child for command substitution" + msgstr "" + +! #: subst.c:3849 + msgid "command_substitute: cannot duplicate pipe as fd 1" + msgstr "" + +! #: subst.c:4284 + #, c-format + msgid "%s: parameter null or not set" + msgstr "" + +! #: subst.c:4529 + #, c-format + msgid "%s: substring expression < 0" + msgstr "" + +! #: subst.c:5209 + #, c-format + msgid "%s: bad substitution" + msgstr "" + +! #: subst.c:5283 + #, c-format + msgid "$%s: cannot assign in this way" + msgstr "" + +! #: subst.c:6652 + #, c-format + msgid "no match: %s" +--- 1241,1351 ---- + msgstr "" + +! #: shell.c:1728 + msgid "GNU long options:\n" + msgstr "" + +! #: shell.c:1732 + msgid "Shell options:\n" + msgstr "" + +! #: shell.c:1733 + msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" + msgstr "" + +! #: shell.c:1748 + #, c-format + msgid "\t-%s or -o option\n" + msgstr "" + +! #: shell.c:1754 + #, c-format + msgid "Type `%s -c \"help set\"' for more information about shell options.\n" + msgstr "" + +! #: shell.c:1755 + #, c-format + msgid "Type `%s -c help' for more information about shell builtin commands.\n" + msgstr "" + +! #: shell.c:1756 + msgid "Use the `bashbug' command to report bugs.\n" + msgstr "" + +! #: sig.c:490 + #, c-format + msgid "sigprocmask: %d: invalid operation" + msgstr "" + +! #: subst.c:1046 + #, c-format + msgid "bad substitution: no closing `%s' in %s" + msgstr "" + +! #: subst.c:2053 + #, c-format + msgid "%s: cannot assign list to array member" + msgstr "" + +! #: subst.c:3880 subst.c:3896 + msgid "cannot make pipe for process substitution" + msgstr "" + +! #: subst.c:3927 + msgid "cannot make child for process substitution" + msgstr "" + +! #: subst.c:3972 + #, c-format + msgid "cannot open named pipe %s for reading" + msgstr "" + +! #: subst.c:3974 + #, c-format + msgid "cannot open named pipe %s for writing" + msgstr "" + +! #: subst.c:3982 + #, c-format + msgid "cannout reset nodelay mode for fd %d" + msgstr "" + +! #: subst.c:3992 + #, c-format + msgid "cannot duplicate named pipe %s as fd %d" + msgstr "" + +! #: subst.c:4167 + msgid "cannot make pipe for command substitution" + msgstr "" + +! #: subst.c:4196 + msgid "cannot make child for command substitution" + msgstr "" + +! #: subst.c:4213 + msgid "command_substitute: cannot duplicate pipe as fd 1" + msgstr "" + +! #: subst.c:4671 + #, c-format + msgid "%s: parameter null or not set" + msgstr "" + +! #: subst.c:4937 + #, c-format + msgid "%s: substring expression < 0" + msgstr "" + +! #: subst.c:5667 + #, c-format + msgid "%s: bad substitution" + msgstr "" + +! #: subst.c:5741 + #, c-format + msgid "$%s: cannot assign in this way" + msgstr "" + +! #: subst.c:7110 + #, c-format + msgid "no match: %s" +*************** +*** 1409,1449 **** + msgstr "" + +! #: variables.c:310 + #, c-format + msgid "error importing function definition for `%s'" + msgstr "" + +! #: variables.c:670 + #, c-format + msgid "shell level (%d) too high, resetting to 1" + msgstr "" + +! #: variables.c:1610 + msgid "make_local_variable: no function context at current scope" + msgstr "" + +! #: variables.c:2709 + msgid "all_local_variables: no function context at current scope" + msgstr "" + +! #: variables.c:2923 variables.c:2932 + #, c-format + msgid "invalid character %d in exportstr for %s" + msgstr "" + +! #: variables.c:2938 + #, c-format + msgid "no `=' in exportstr for %s" + msgstr "" + +! #: variables.c:3363 + msgid "pop_var_context: head of shell_variables not a function context" + msgstr "" + +! #: variables.c:3376 + msgid "pop_var_context: no global_variables context" + msgstr "" + +! #: variables.c:3442 + msgid "pop_scope: head of shell_variables not a temporary environment scope" + msgstr "" +--- 1404,1444 ---- + msgstr "" + +! #: variables.c:314 + #, c-format + msgid "error importing function definition for `%s'" + msgstr "" + +! #: variables.c:674 + #, c-format + msgid "shell level (%d) too high, resetting to 1" + msgstr "" + +! #: variables.c:1617 + msgid "make_local_variable: no function context at current scope" + msgstr "" + +! #: variables.c:2724 + msgid "all_local_variables: no function context at current scope" + msgstr "" + +! #: variables.c:2938 variables.c:2947 + #, c-format + msgid "invalid character %d in exportstr for %s" + msgstr "" + +! #: variables.c:2953 + #, c-format + msgid "no `=' in exportstr for %s" + msgstr "" + +! #: variables.c:3378 + msgid "pop_var_context: head of shell_variables not a function context" + msgstr "" + +! #: variables.c:3391 + msgid "pop_var_context: no global_variables context" + msgstr "" + +! #: variables.c:3457 + msgid "pop_scope: head of shell_variables not a temporary environment scope" + msgstr "" +*************** +*** 3272,3739 **** + + #: builtins.c:1000 +! msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" + msgstr "" + + #: builtins.c:1001 +! msgid "reset to their original values. If ARG is the null string each" + msgstr "" + + #: builtins.c:1002 +! msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." + msgstr "" + + #: builtins.c:1003 +! msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" + msgstr "" + + #: builtins.c:1004 +! msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every" + msgstr "" + + #: builtins.c:1005 +! msgid "command. If ARG is `-p' then the trap commands associated with" + msgstr "" + + #: builtins.c:1006 +! msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" + msgstr "" + + #: builtins.c:1007 +! msgid "only `-p' is given, trap prints the list of commands associated with" + msgstr "" + + #: builtins.c:1008 + msgid "" +! "each signal number. Each SIGNAL_SPEC is either a signal name in " + msgstr "" + + #: builtins.c:1009 +! msgid "or a signal number. `trap -l' prints a list of signal names and their" + msgstr "" + + #: builtins.c:1010 +! msgid "corresponding numbers. Note that a signal can be sent to the shell" + msgstr "" + + #: builtins.c:1011 +! msgid "with \"kill -signal $$\"." + msgstr "" + +! #: builtins.c:1017 +! msgid "For each NAME, indicate how it would be interpreted if used as a" + msgstr "" + + #: builtins.c:1018 + msgid "command name." + msgstr "" + +! #: builtins.c:1020 + msgid "If the -t option is used, `type' outputs a single word which is one of" + msgstr "" + +! #: builtins.c:1021 + msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" + msgstr "" + +! #: builtins.c:1022 + msgid "alias, shell reserved word, shell function, shell builtin, disk file," + msgstr "" + +! #: builtins.c:1023 + msgid "or unfound, respectively." + msgstr "" + +! #: builtins.c:1025 + msgid "If the -p flag is used, `type' either returns the name of the disk" + msgstr "" + +! #: builtins.c:1026 + msgid "file that would be executed, or nothing if `type -t NAME' would not" + msgstr "" + +! #: builtins.c:1027 + msgid "return `file'." + msgstr "" + +! #: builtins.c:1029 + msgid "If the -a flag is used, `type' displays all of the places that contain" + msgstr "" + +! #: builtins.c:1030 + msgid "an executable named `file'. This includes aliases, builtins, and" + msgstr "" + +! #: builtins.c:1031 + msgid "functions, if and only if the -p flag is not also used." + msgstr "" + +! #: builtins.c:1033 + msgid "The -f flag suppresses shell function lookup." + msgstr "" + +! #: builtins.c:1035 + msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," + msgstr "" + +! #: builtins.c:1036 + msgid "builtin, or function, and returns the name of the disk file that would" + msgstr "" + +! #: builtins.c:1037 + msgid "be executed." + msgstr "" + +! #: builtins.c:1044 + msgid "Ulimit provides control over the resources available to processes" + msgstr "" + +! #: builtins.c:1045 + msgid "started by the shell, on systems that allow such control. If an" + msgstr "" + +! #: builtins.c:1046 + msgid "option is given, it is interpreted as follows:" + msgstr "" + +! #: builtins.c:1048 + msgid " -S\tuse the `soft' resource limit" + msgstr "" + +! #: builtins.c:1049 + msgid " -H\tuse the `hard' resource limit" + msgstr "" + +! #: builtins.c:1050 + msgid " -a\tall current limits are reported" + msgstr "" + +! #: builtins.c:1051 + msgid " -c\tthe maximum size of core files created" + msgstr "" + +! #: builtins.c:1052 + msgid " -d\tthe maximum size of a process's data segment" + msgstr "" + +! #: builtins.c:1053 + msgid " -f\tthe maximum size of files created by the shell" + msgstr "" + +! #: builtins.c:1054 + msgid " -l\tthe maximum size a process may lock into memory" + msgstr "" + +! #: builtins.c:1055 + msgid " -m\tthe maximum resident set size" + msgstr "" + +! #: builtins.c:1056 + msgid " -n\tthe maximum number of open file descriptors" + msgstr "" + +! #: builtins.c:1057 + msgid " -p\tthe pipe buffer size" + msgstr "" + +! #: builtins.c:1058 + msgid " -s\tthe maximum stack size" + msgstr "" + +! #: builtins.c:1059 + msgid " -t\tthe maximum amount of cpu time in seconds" + msgstr "" + +! #: builtins.c:1060 + msgid " -u\tthe maximum number of user processes" + msgstr "" + +! #: builtins.c:1061 + msgid " -v\tthe size of virtual memory" + msgstr "" + +! #: builtins.c:1063 + msgid "If LIMIT is given, it is the new value of the specified resource;" + msgstr "" + +! #: builtins.c:1064 + msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" + msgstr "" + +! #: builtins.c:1065 + msgid "" + "the current soft limit, the current hard limit, and no limit, respectively." + msgstr "" + +! #: builtins.c:1066 + msgid "Otherwise, the current value of the specified resource is printed." + msgstr "" + +! #: builtins.c:1067 + msgid "If no option is given, then -f is assumed. Values are in 1024-byte" + msgstr "" + +! #: builtins.c:1068 + msgid "increments, except for -t, which is in seconds, -p, which is in" + msgstr "" + +! #: builtins.c:1069 + msgid "increments of 512 bytes, and -u, which is an unscaled number of" + msgstr "" + +! #: builtins.c:1070 + msgid "processes." + msgstr "" + +! #: builtins.c:1077 + msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" + msgstr "" + +! #: builtins.c:1078 + msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" + msgstr "" + +! #: builtins.c:1079 + msgid "option makes the output symbolic; otherwise an octal number is output." + msgstr "" + +! #: builtins.c:1080 + msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" + msgstr "" + +! #: builtins.c:1081 + msgid "that may be used as input. If MODE begins with a digit, it is" + msgstr "" + +! #: builtins.c:1082 + msgid "interpreted as an octal number, otherwise it is a symbolic mode string" + msgstr "" + +! #: builtins.c:1083 + msgid "like that accepted by chmod(1)." + msgstr "" + +! #: builtins.c:1090 builtins.c:1102 + msgid "Wait for the specified process and report its termination status. If" + msgstr "" + +! #: builtins.c:1091 builtins.c:1103 + msgid "N is not given, all currently active child processes are waited for," + msgstr "" + +! #: builtins.c:1092 + msgid "and the return code is zero. N may be a process ID or a job" + msgstr "" + +! #: builtins.c:1093 + msgid "specification; if a job spec is given, all processes in the job's" + msgstr "" + +! #: builtins.c:1094 + msgid "pipeline are waited for." + msgstr "" + +! #: builtins.c:1104 + msgid "and the return code is zero. N is a process ID; if it is not given," + msgstr "" + +! #: builtins.c:1105 + msgid "all child processes of the shell are waited for." + msgstr "" + +! #: builtins.c:1112 + msgid "The `for' loop executes a sequence of commands for each member in a" + msgstr "" + +! #: builtins.c:1113 + msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" + msgstr "" + +! #: builtins.c:1114 + msgid "assumed. For each element in WORDS, NAME is set to that element, and" + msgstr "" + +! #: builtins.c:1115 + msgid "the COMMANDS are executed." + msgstr "" + +! #: builtins.c:1121 + msgid "Equivalent to" + msgstr "" + +! #: builtins.c:1122 + msgid "\t(( EXP1 ))" + msgstr "" + +! #: builtins.c:1123 + msgid "\twhile (( EXP2 )); do" + msgstr "" + +! #: builtins.c:1124 + msgid "\t\tCOMMANDS" + msgstr "" + +! #: builtins.c:1125 + msgid "\t\t(( EXP3 ))" + msgstr "" + +! #: builtins.c:1126 + msgid "\tdone" + msgstr "" + +! #: builtins.c:1127 + msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" + msgstr "" + +! #: builtins.c:1128 + msgid "omitted, it behaves as if it evaluates to 1." + msgstr "" + +! #: builtins.c:1134 + msgid "The WORDS are expanded, generating a list of words. The" + msgstr "" + +! #: builtins.c:1135 + msgid "set of expanded words is printed on the standard error, each" + msgstr "" + +! #: builtins.c:1136 + msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" + msgstr "" + +! #: builtins.c:1137 + msgid "is assumed. The PS3 prompt is then displayed and a line read" + msgstr "" + +! #: builtins.c:1138 + msgid "from the standard input. If the line consists of the number" + msgstr "" + +! #: builtins.c:1139 + msgid "corresponding to one of the displayed words, then NAME is set" + msgstr "" + +! #: builtins.c:1140 + msgid "to that word. If the line is empty, WORDS and the prompt are" + msgstr "" + +! #: builtins.c:1141 + msgid "redisplayed. If EOF is read, the command completes. Any other" + msgstr "" + +! #: builtins.c:1142 + msgid "value read causes NAME to be set to null. The line read is saved" + msgstr "" + +! #: builtins.c:1143 + msgid "in the variable REPLY. COMMANDS are executed after each selection" + msgstr "" + +! #: builtins.c:1144 + msgid "until a break command is executed." + msgstr "" + +! #: builtins.c:1150 + msgid "Execute PIPELINE and print a summary of the real time, user CPU time," + msgstr "" + +! #: builtins.c:1151 + msgid "and system CPU time spent executing PIPELINE when it terminates." + msgstr "" + +! #: builtins.c:1152 + msgid "The return status is the return status of PIPELINE. The `-p' option" + msgstr "" + +! #: builtins.c:1153 + msgid "prints the timing summary in a slightly different format. This uses" + msgstr "" + +! #: builtins.c:1154 + msgid "the value of the TIMEFORMAT variable as the output format." + msgstr "" + +! #: builtins.c:1160 + msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" + msgstr "" + +! #: builtins.c:1161 + msgid "`|' is used to separate multiple patterns." + msgstr "" + +! #: builtins.c:1167 + msgid "" + "The if COMMANDS are executed. If the exit status is zero, then the then" + msgstr "" + +! #: builtins.c:1168 + msgid "" + "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" + msgstr "" + +! #: builtins.c:1169 + msgid "" + "in turn, and if the exit status is zero, the corresponding then COMMANDS" + msgstr "" + +! #: builtins.c:1170 + msgid "" + "are executed and the if command completes. Otherwise, the else COMMANDS" + msgstr "" + +! #: builtins.c:1171 + msgid "" + "are executed, if present. The exit status is the exit status of the last" + msgstr "" + +! #: builtins.c:1172 + msgid "command executed, or zero if no condition tested true." + msgstr "" + +! #: builtins.c:1178 builtins.c:1185 + msgid "Expand and execute COMMANDS as long as the final command in the" + msgstr "" + +! #: builtins.c:1179 + msgid "`while' COMMANDS has an exit status of zero." + msgstr "" + +! #: builtins.c:1186 + msgid "`until' COMMANDS has an exit status which is not zero." + msgstr "" + +! #: builtins.c:1192 + msgid "Create a simple command invoked by NAME which runs COMMANDS." + msgstr "" + +! #: builtins.c:1193 + msgid "Arguments on the command line along with NAME are passed to the" + msgstr "" + +! #: builtins.c:1194 + msgid "function as $0 .. $n." + msgstr "" + +! #: builtins.c:1200 + msgid "Run a set of commands in a group. This is one way to redirect an" + msgstr "" + +! #: builtins.c:1201 + msgid "entire set of commands." + msgstr "" + +- #: builtins.c:1207 +- msgid "This is similar to the `fg' command. Resume a stopped or background" +- msgstr "" +- + #: builtins.c:1208 +! msgid "job. If you specifiy DIGITS, then that job is used. If you specify" + msgstr "" + + #: builtins.c:1209 +! msgid "WORD, then the job whose name begins with WORD is used. Following the" + msgstr "" + + #: builtins.c:1210 +! msgid "job specification with a `&' places the job in the background." + msgstr "" + +--- 3267,3735 ---- + + #: builtins.c:1000 +! msgid "signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC" + msgstr "" + + #: builtins.c:1001 +! msgid "is supplied) or `-', each specified signal is reset to its original" + msgstr "" + + #: builtins.c:1002 +! msgid "value. If ARG is the null string each SIGNAL_SPEC is ignored by the" + msgstr "" + + #: builtins.c:1003 +! msgid "shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0)" + msgstr "" + + #: builtins.c:1004 +! msgid "the command ARG is executed on exit from the shell. If a SIGNAL_SPEC" + msgstr "" + + #: builtins.c:1005 +! msgid "" +! "is DEBUG, ARG is executed after every simple command. If the`-p' option" + msgstr "" + + #: builtins.c:1006 +! msgid "is supplied then the trap commands associated with each SIGNAL_SPEC are" + msgstr "" + + #: builtins.c:1007 +! msgid "displayed. If no arguments are supplied or if only `-p' is given, trap" + msgstr "" + + #: builtins.c:1008 + msgid "" +! "prints the list of commands associated with each signal. Each SIGNAL_SPEC" + msgstr "" + + #: builtins.c:1009 +! msgid "is either a signal name in or a signal number. Signal names" + msgstr "" + + #: builtins.c:1010 +! msgid "are case insensitive and the SIG prefix is optional. `trap -l' prints" + msgstr "" + + #: builtins.c:1011 +! msgid "a list of signal names and their corresponding numbers. Note that a" + msgstr "" + +! #: builtins.c:1012 +! msgid "signal can be sent to the shell with \"kill -signal $$\"." + msgstr "" + + #: builtins.c:1018 ++ msgid "For each NAME, indicate how it would be interpreted if used as a" ++ msgstr "" ++ ++ #: builtins.c:1019 + msgid "command name." + msgstr "" + +! #: builtins.c:1021 + msgid "If the -t option is used, `type' outputs a single word which is one of" + msgstr "" + +! #: builtins.c:1022 + msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" + msgstr "" + +! #: builtins.c:1023 + msgid "alias, shell reserved word, shell function, shell builtin, disk file," + msgstr "" + +! #: builtins.c:1024 + msgid "or unfound, respectively." + msgstr "" + +! #: builtins.c:1026 + msgid "If the -p flag is used, `type' either returns the name of the disk" + msgstr "" + +! #: builtins.c:1027 + msgid "file that would be executed, or nothing if `type -t NAME' would not" + msgstr "" + +! #: builtins.c:1028 + msgid "return `file'." + msgstr "" + +! #: builtins.c:1030 + msgid "If the -a flag is used, `type' displays all of the places that contain" + msgstr "" + +! #: builtins.c:1031 + msgid "an executable named `file'. This includes aliases, builtins, and" + msgstr "" + +! #: builtins.c:1032 + msgid "functions, if and only if the -p flag is not also used." + msgstr "" + +! #: builtins.c:1034 + msgid "The -f flag suppresses shell function lookup." + msgstr "" + +! #: builtins.c:1036 + msgid "The -P flag forces a PATH search for each NAME, even if it is an alias," + msgstr "" + +! #: builtins.c:1037 + msgid "builtin, or function, and returns the name of the disk file that would" + msgstr "" + +! #: builtins.c:1038 + msgid "be executed." + msgstr "" + +! #: builtins.c:1045 + msgid "Ulimit provides control over the resources available to processes" + msgstr "" + +! #: builtins.c:1046 + msgid "started by the shell, on systems that allow such control. If an" + msgstr "" + +! #: builtins.c:1047 + msgid "option is given, it is interpreted as follows:" + msgstr "" + +! #: builtins.c:1049 + msgid " -S\tuse the `soft' resource limit" + msgstr "" + +! #: builtins.c:1050 + msgid " -H\tuse the `hard' resource limit" + msgstr "" + +! #: builtins.c:1051 + msgid " -a\tall current limits are reported" + msgstr "" + +! #: builtins.c:1052 + msgid " -c\tthe maximum size of core files created" + msgstr "" + +! #: builtins.c:1053 + msgid " -d\tthe maximum size of a process's data segment" + msgstr "" + +! #: builtins.c:1054 + msgid " -f\tthe maximum size of files created by the shell" + msgstr "" + +! #: builtins.c:1055 + msgid " -l\tthe maximum size a process may lock into memory" + msgstr "" + +! #: builtins.c:1056 + msgid " -m\tthe maximum resident set size" + msgstr "" + +! #: builtins.c:1057 + msgid " -n\tthe maximum number of open file descriptors" + msgstr "" + +! #: builtins.c:1058 + msgid " -p\tthe pipe buffer size" + msgstr "" + +! #: builtins.c:1059 + msgid " -s\tthe maximum stack size" + msgstr "" + +! #: builtins.c:1060 + msgid " -t\tthe maximum amount of cpu time in seconds" + msgstr "" + +! #: builtins.c:1061 + msgid " -u\tthe maximum number of user processes" + msgstr "" + +! #: builtins.c:1062 + msgid " -v\tthe size of virtual memory" + msgstr "" + +! #: builtins.c:1064 + msgid "If LIMIT is given, it is the new value of the specified resource;" + msgstr "" + +! #: builtins.c:1065 + msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for" + msgstr "" + +! #: builtins.c:1066 + msgid "" + "the current soft limit, the current hard limit, and no limit, respectively." + msgstr "" + +! #: builtins.c:1067 + msgid "Otherwise, the current value of the specified resource is printed." + msgstr "" + +! #: builtins.c:1068 + msgid "If no option is given, then -f is assumed. Values are in 1024-byte" + msgstr "" + +! #: builtins.c:1069 + msgid "increments, except for -t, which is in seconds, -p, which is in" + msgstr "" + +! #: builtins.c:1070 + msgid "increments of 512 bytes, and -u, which is an unscaled number of" + msgstr "" + +! #: builtins.c:1071 + msgid "processes." + msgstr "" + +! #: builtins.c:1078 + msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" + msgstr "" + +! #: builtins.c:1079 + msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" + msgstr "" + +! #: builtins.c:1080 + msgid "option makes the output symbolic; otherwise an octal number is output." + msgstr "" + +! #: builtins.c:1081 + msgid "If `-p' is supplied, and MODE is omitted, the output is in a form" + msgstr "" + +! #: builtins.c:1082 + msgid "that may be used as input. If MODE begins with a digit, it is" + msgstr "" + +! #: builtins.c:1083 + msgid "interpreted as an octal number, otherwise it is a symbolic mode string" + msgstr "" + +! #: builtins.c:1084 + msgid "like that accepted by chmod(1)." + msgstr "" + +! #: builtins.c:1091 builtins.c:1103 + msgid "Wait for the specified process and report its termination status. If" + msgstr "" + +! #: builtins.c:1092 builtins.c:1104 + msgid "N is not given, all currently active child processes are waited for," + msgstr "" + +! #: builtins.c:1093 + msgid "and the return code is zero. N may be a process ID or a job" + msgstr "" + +! #: builtins.c:1094 + msgid "specification; if a job spec is given, all processes in the job's" + msgstr "" + +! #: builtins.c:1095 + msgid "pipeline are waited for." + msgstr "" + +! #: builtins.c:1105 + msgid "and the return code is zero. N is a process ID; if it is not given," + msgstr "" + +! #: builtins.c:1106 + msgid "all child processes of the shell are waited for." + msgstr "" + +! #: builtins.c:1113 + msgid "The `for' loop executes a sequence of commands for each member in a" + msgstr "" + +! #: builtins.c:1114 + msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" + msgstr "" + +! #: builtins.c:1115 + msgid "assumed. For each element in WORDS, NAME is set to that element, and" + msgstr "" + +! #: builtins.c:1116 + msgid "the COMMANDS are executed." + msgstr "" + +! #: builtins.c:1122 + msgid "Equivalent to" + msgstr "" + +! #: builtins.c:1123 + msgid "\t(( EXP1 ))" + msgstr "" + +! #: builtins.c:1124 + msgid "\twhile (( EXP2 )); do" + msgstr "" + +! #: builtins.c:1125 + msgid "\t\tCOMMANDS" + msgstr "" + +! #: builtins.c:1126 + msgid "\t\t(( EXP3 ))" + msgstr "" + +! #: builtins.c:1127 + msgid "\tdone" + msgstr "" + +! #: builtins.c:1128 + msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is" + msgstr "" + +! #: builtins.c:1129 + msgid "omitted, it behaves as if it evaluates to 1." + msgstr "" + +! #: builtins.c:1135 + msgid "The WORDS are expanded, generating a list of words. The" + msgstr "" + +! #: builtins.c:1136 + msgid "set of expanded words is printed on the standard error, each" + msgstr "" + +! #: builtins.c:1137 + msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" + msgstr "" + +! #: builtins.c:1138 + msgid "is assumed. The PS3 prompt is then displayed and a line read" + msgstr "" + +! #: builtins.c:1139 + msgid "from the standard input. If the line consists of the number" + msgstr "" + +! #: builtins.c:1140 + msgid "corresponding to one of the displayed words, then NAME is set" + msgstr "" + +! #: builtins.c:1141 + msgid "to that word. If the line is empty, WORDS and the prompt are" + msgstr "" + +! #: builtins.c:1142 + msgid "redisplayed. If EOF is read, the command completes. Any other" + msgstr "" + +! #: builtins.c:1143 + msgid "value read causes NAME to be set to null. The line read is saved" + msgstr "" + +! #: builtins.c:1144 + msgid "in the variable REPLY. COMMANDS are executed after each selection" + msgstr "" + +! #: builtins.c:1145 + msgid "until a break command is executed." + msgstr "" + +! #: builtins.c:1151 + msgid "Execute PIPELINE and print a summary of the real time, user CPU time," + msgstr "" + +! #: builtins.c:1152 + msgid "and system CPU time spent executing PIPELINE when it terminates." + msgstr "" + +! #: builtins.c:1153 + msgid "The return status is the return status of PIPELINE. The `-p' option" + msgstr "" + +! #: builtins.c:1154 + msgid "prints the timing summary in a slightly different format. This uses" + msgstr "" + +! #: builtins.c:1155 + msgid "the value of the TIMEFORMAT variable as the output format." + msgstr "" + +! #: builtins.c:1161 + msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" + msgstr "" + +! #: builtins.c:1162 + msgid "`|' is used to separate multiple patterns." + msgstr "" + +! #: builtins.c:1168 + msgid "" + "The if COMMANDS are executed. If the exit status is zero, then the then" + msgstr "" + +! #: builtins.c:1169 + msgid "" + "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" + msgstr "" + +! #: builtins.c:1170 + msgid "" + "in turn, and if the exit status is zero, the corresponding then COMMANDS" + msgstr "" + +! #: builtins.c:1171 + msgid "" + "are executed and the if command completes. Otherwise, the else COMMANDS" + msgstr "" + +! #: builtins.c:1172 + msgid "" + "are executed, if present. The exit status is the exit status of the last" + msgstr "" + +! #: builtins.c:1173 + msgid "command executed, or zero if no condition tested true." + msgstr "" + +! #: builtins.c:1179 builtins.c:1186 + msgid "Expand and execute COMMANDS as long as the final command in the" + msgstr "" + +! #: builtins.c:1180 + msgid "`while' COMMANDS has an exit status of zero." + msgstr "" + +! #: builtins.c:1187 + msgid "`until' COMMANDS has an exit status which is not zero." + msgstr "" + +! #: builtins.c:1193 + msgid "Create a simple command invoked by NAME which runs COMMANDS." + msgstr "" + +! #: builtins.c:1194 + msgid "Arguments on the command line along with NAME are passed to the" + msgstr "" + +! #: builtins.c:1195 + msgid "function as $0 .. $n." + msgstr "" + +! #: builtins.c:1201 + msgid "Run a set of commands in a group. This is one way to redirect an" + msgstr "" + +! #: builtins.c:1202 + msgid "entire set of commands." + msgstr "" + + #: builtins.c:1208 +! msgid "This is similar to the `fg' command. Resume a stopped or background" + msgstr "" + + #: builtins.c:1209 +! msgid "job specified by %JOBSPEC. Following the job specification with a `&'" + msgstr "" + + #: builtins.c:1210 +! msgid "places the job in the background." + msgstr "" + +*************** +*** 3799,4174 **** + + #: builtins.c:1242 +! msgid "CDPATH A colon separated list of directories to search" + msgstr "" + + #: builtins.c:1243 +! msgid "\t\twhen the argument to `cd' is not found in the current" + msgstr "" + + #: builtins.c:1244 +- msgid "\t\tdirectory." +- msgstr "" +- +- #: builtins.c:1245 + msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" + msgstr "" + +! #: builtins.c:1246 + msgid "\t\tbe ignored by pathname expansion." + msgstr "" + +! #: builtins.c:1248 + msgid "" + "HISTFILE The name of the file where your command history is stored." + msgstr "" + +! #: builtins.c:1249 + msgid "HISTFILESIZE The maximum number of lines this file can contain." + msgstr "" + +! #: builtins.c:1250 + msgid "HISTSIZE The maximum number of history lines that a running" + msgstr "" + +! #: builtins.c:1251 + msgid "\t\tshell can access." + msgstr "" + +! #: builtins.c:1253 + msgid "HOME The complete pathname to your login directory." + msgstr "" + +! #: builtins.c:1254 + msgid "HOSTNAME\tThe name of the current host." + msgstr "" + +! #: builtins.c:1255 + msgid "HOSTTYPE The type of CPU this version of Bash is running under." + msgstr "" + +! #: builtins.c:1256 + msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" + msgstr "" + +! #: builtins.c:1257 + msgid "\t\tcharacter as the sole input. If set, then the value" + msgstr "" + +! #: builtins.c:1258 + msgid "\t\tof it is the number of EOF characters that can be seen" + msgstr "" + +! #: builtins.c:1259 + msgid "\t\tin a row on an empty line before the shell will exit" + msgstr "" + +! #: builtins.c:1260 + msgid "\t\t(default 10). When unset, EOF signifies the end of input." + msgstr "" + +! #: builtins.c:1261 + msgid "MACHTYPE\tA string describing the current system Bash is running on." + msgstr "" + +! #: builtins.c:1262 + msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." + msgstr "" + +! #: builtins.c:1263 + msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" + msgstr "" + +! #: builtins.c:1264 + msgid "\t\tfor new mail." + msgstr "" + +! #: builtins.c:1265 + msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." + msgstr "" + +! #: builtins.c:1266 + msgid "PATH A colon-separated list of directories to search when" + msgstr "" + +! #: builtins.c:1267 + msgid "\t\tlooking for commands." + msgstr "" + +! #: builtins.c:1268 + msgid "PROMPT_COMMAND A command to be executed before the printing of each" + msgstr "" + +! #: builtins.c:1269 + msgid "\t\tprimary prompt." + msgstr "" + +! #: builtins.c:1270 + msgid "PS1 The primary prompt string." + msgstr "" + +! #: builtins.c:1271 + msgid "PS2 The secondary prompt string." + msgstr "" + +! #: builtins.c:1272 + msgid "PWD\t\tThe full pathname of the current directory." + msgstr "" + +! #: builtins.c:1273 + msgid "SHELLOPTS\tA colon-separated list of enabled shell options." + msgstr "" + +! #: builtins.c:1274 + msgid "TERM The name of the current terminal type." + msgstr "" + +! #: builtins.c:1275 + msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" + msgstr "" + +! #: builtins.c:1276 + msgid "\t\t`time' reserved word." + msgstr "" + +! #: builtins.c:1277 + msgid "auto_resume Non-null means a command word appearing on a line by" + msgstr "" + +! #: builtins.c:1278 + msgid "\t\titself is first looked for in the list of currently" + msgstr "" + +! #: builtins.c:1279 + msgid "\t\tstopped jobs. If found there, that job is foregrounded." + msgstr "" + +! #: builtins.c:1280 + msgid "\t\tA value of `exact' means that the command word must" + msgstr "" + +! #: builtins.c:1281 + msgid "\t\texactly match a command in the list of stopped jobs. A" + msgstr "" + +! #: builtins.c:1282 + msgid "\t\tvalue of `substring' means that the command word must" + msgstr "" + +! #: builtins.c:1283 + msgid "\t\tmatch a substring of the job. Any other value means that" + msgstr "" + +! #: builtins.c:1284 + msgid "\t\tthe command must be a prefix of a stopped job." + msgstr "" + +! #: builtins.c:1287 + msgid "histchars Characters controlling history expansion and quick" + msgstr "" + +! #: builtins.c:1288 + msgid "\t\tsubstitution. The first character is the history" + msgstr "" + +! #: builtins.c:1289 + msgid "\t\tsubstitution character, usually `!'. The second is" + msgstr "" + +! #: builtins.c:1290 + msgid "\t\tthe `quick substitution' character, usually `^'. The" + msgstr "" + +! #: builtins.c:1291 + msgid "\t\tthird is the `history comment' character, usually `#'." + msgstr "" + +! #: builtins.c:1293 + msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" + msgstr "" + +! #: builtins.c:1294 + msgid "\t\tcommands should be saved on the history list." + msgstr "" + +! #: builtins.c:1306 + msgid "+N\tRotates the stack so that the Nth directory (counting" + msgstr "" + +! #: builtins.c:1307 + msgid "\tfrom the left of the list shown by `dirs', starting with" + msgstr "" + +! #: builtins.c:1308 builtins.c:1312 + msgid "\tzero) is at the top." + msgstr "" + +! #: builtins.c:1310 + msgid "-N\tRotates the stack so that the Nth directory (counting" + msgstr "" + +! #: builtins.c:1311 + msgid "\tfrom the right of the list shown by `dirs', starting with" + msgstr "" + +! #: builtins.c:1314 + msgid "-n\tsuppress the normal change of directory when adding directories" + msgstr "" + +! #: builtins.c:1315 + msgid "\tto the stack, so only the stack is manipulated." + msgstr "" + +! #: builtins.c:1317 + msgid "dir\tadds DIR to the directory stack at the top, making it the" + msgstr "" + +! #: builtins.c:1318 + msgid "\tnew current working directory." + msgstr "" + +! #: builtins.c:1332 + msgid "+N\tremoves the Nth entry counting from the left of the list" + msgstr "" + +! #: builtins.c:1333 + msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" + msgstr "" + +! #: builtins.c:1334 + msgid "\tremoves the first directory, `popd +1' the second." + msgstr "" + +! #: builtins.c:1336 + msgid "-N\tremoves the Nth entry counting from the right of the list" + msgstr "" + +! #: builtins.c:1337 + msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" + msgstr "" + +! #: builtins.c:1338 + msgid "\tremoves the last directory, `popd -1' the next to last." + msgstr "" + +! #: builtins.c:1340 + msgid "-n\tsuppress the normal change of directory when removing directories" + msgstr "" + +! #: builtins.c:1341 + msgid "\tfrom the stack, so only the stack is manipulated." + msgstr "" + +! #: builtins.c:1363 + msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" + msgstr "" + +! #: builtins.c:1364 builtins.c:1367 + msgid "\tdirs when invoked without options, starting with zero." + msgstr "" + +! #: builtins.c:1366 + msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" + msgstr "" + +! #: builtins.c:1374 + msgid "Toggle the values of variables controlling optional behavior." + msgstr "" + +! #: builtins.c:1375 + msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" + msgstr "" + +! #: builtins.c:1376 + msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" + msgstr "" + +! #: builtins.c:1377 + msgid "status indicates whether each OPTNAME is set or unset. The -o" + msgstr "" + +! #: builtins.c:1378 + msgid "option restricts the OPTNAMEs to those defined for use with" + msgstr "" + +! #: builtins.c:1379 + msgid "`set -o'. With no options, or with the -p option, a list of all" + msgstr "" + +! #: builtins.c:1380 + msgid "settable options is displayed, with an indication of whether or" + msgstr "" + +! #: builtins.c:1381 + msgid "not each is set." + msgstr "" + +! #: builtins.c:1387 + msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" + msgstr "" + +! #: builtins.c:1388 + msgid "is a character string which contains three types of objects: plain" + msgstr "" + +! #: builtins.c:1389 + msgid "" + "characters, which are simply copied to standard output, character escape" + msgstr "" + +! #: builtins.c:1390 + msgid "sequences which are converted and copied to the standard output, and" + msgstr "" + +! #: builtins.c:1391 + msgid "" + "format specifications, each of which causes printing of the next successive" + msgstr "" + +! #: builtins.c:1392 + msgid "argument. In addition to the standard printf(1) formats, %b means to" + msgstr "" + +! #: builtins.c:1393 + msgid "expand backslash escape sequences in the corresponding argument, and %q" + msgstr "" + +! #: builtins.c:1394 + msgid "means to quote the argument in a way that can be reused as shell input." + msgstr "" + +! #: builtins.c:1401 + msgid "For each NAME, specify how arguments are to be completed." + msgstr "" + +! #: builtins.c:1402 + msgid "If the -p option is supplied, or if no options are supplied, existing" + msgstr "" + +! #: builtins.c:1403 + msgid "completion specifications are printed in a way that allows them to be" + msgstr "" + +! #: builtins.c:1404 + msgid "reused as input. The -r option removes a completion specification for" + msgstr "" + +! #: builtins.c:1405 + msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." + msgstr "" + +! #: builtins.c:1413 + msgid "Display the possible completions depending on the options. Intended" + msgstr "" + +! #: builtins.c:1414 + msgid "" + "to be used from within a shell function generating possible completions." + msgstr "" + +! #: builtins.c:1415 + msgid "If the optional WORD argument is supplied, matches against WORD are" + msgstr "" + +! #: builtins.c:1416 + msgid "generated." + msgstr "" +--- 3795,4166 ---- + + #: builtins.c:1242 +! msgid "CDPATH A colon-separated list of directories to search" + msgstr "" + + #: builtins.c:1243 +! msgid "\t\tfor directries given as arguments to `cd'." + msgstr "" + + #: builtins.c:1244 + msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to" + msgstr "" + +! #: builtins.c:1245 + msgid "\t\tbe ignored by pathname expansion." + msgstr "" + +! #: builtins.c:1247 + msgid "" + "HISTFILE The name of the file where your command history is stored." + msgstr "" + +! #: builtins.c:1248 + msgid "HISTFILESIZE The maximum number of lines this file can contain." + msgstr "" + +! #: builtins.c:1249 + msgid "HISTSIZE The maximum number of history lines that a running" + msgstr "" + +! #: builtins.c:1250 + msgid "\t\tshell can access." + msgstr "" + +! #: builtins.c:1252 + msgid "HOME The complete pathname to your login directory." + msgstr "" + +! #: builtins.c:1253 + msgid "HOSTNAME\tThe name of the current host." + msgstr "" + +! #: builtins.c:1254 + msgid "HOSTTYPE The type of CPU this version of Bash is running under." + msgstr "" + +! #: builtins.c:1255 + msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" + msgstr "" + +! #: builtins.c:1256 + msgid "\t\tcharacter as the sole input. If set, then the value" + msgstr "" + +! #: builtins.c:1257 + msgid "\t\tof it is the number of EOF characters that can be seen" + msgstr "" + +! #: builtins.c:1258 + msgid "\t\tin a row on an empty line before the shell will exit" + msgstr "" + +! #: builtins.c:1259 + msgid "\t\t(default 10). When unset, EOF signifies the end of input." + msgstr "" + +! #: builtins.c:1260 + msgid "MACHTYPE\tA string describing the current system Bash is running on." + msgstr "" + +! #: builtins.c:1261 + msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." + msgstr "" + +! #: builtins.c:1262 + msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" + msgstr "" + +! #: builtins.c:1263 + msgid "\t\tfor new mail." + msgstr "" + +! #: builtins.c:1264 + msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." + msgstr "" + +! #: builtins.c:1265 + msgid "PATH A colon-separated list of directories to search when" + msgstr "" + +! #: builtins.c:1266 + msgid "\t\tlooking for commands." + msgstr "" + +! #: builtins.c:1267 + msgid "PROMPT_COMMAND A command to be executed before the printing of each" + msgstr "" + +! #: builtins.c:1268 + msgid "\t\tprimary prompt." + msgstr "" + +! #: builtins.c:1269 + msgid "PS1 The primary prompt string." + msgstr "" + +! #: builtins.c:1270 + msgid "PS2 The secondary prompt string." + msgstr "" + +! #: builtins.c:1271 + msgid "PWD\t\tThe full pathname of the current directory." + msgstr "" + +! #: builtins.c:1272 + msgid "SHELLOPTS\tA colon-separated list of enabled shell options." + msgstr "" + +! #: builtins.c:1273 + msgid "TERM The name of the current terminal type." + msgstr "" + +! #: builtins.c:1274 + msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the" + msgstr "" + +! #: builtins.c:1275 + msgid "\t\t`time' reserved word." + msgstr "" + +! #: builtins.c:1276 + msgid "auto_resume Non-null means a command word appearing on a line by" + msgstr "" + +! #: builtins.c:1277 + msgid "\t\titself is first looked for in the list of currently" + msgstr "" + +! #: builtins.c:1278 + msgid "\t\tstopped jobs. If found there, that job is foregrounded." + msgstr "" + +! #: builtins.c:1279 + msgid "\t\tA value of `exact' means that the command word must" + msgstr "" + +! #: builtins.c:1280 + msgid "\t\texactly match a command in the list of stopped jobs. A" + msgstr "" + +! #: builtins.c:1281 + msgid "\t\tvalue of `substring' means that the command word must" + msgstr "" + +! #: builtins.c:1282 + msgid "\t\tmatch a substring of the job. Any other value means that" + msgstr "" + +! #: builtins.c:1283 + msgid "\t\tthe command must be a prefix of a stopped job." + msgstr "" + +! #: builtins.c:1286 + msgid "histchars Characters controlling history expansion and quick" + msgstr "" + +! #: builtins.c:1287 + msgid "\t\tsubstitution. The first character is the history" + msgstr "" + +! #: builtins.c:1288 + msgid "\t\tsubstitution character, usually `!'. The second is" + msgstr "" + +! #: builtins.c:1289 + msgid "\t\tthe `quick substitution' character, usually `^'. The" + msgstr "" + +! #: builtins.c:1290 + msgid "\t\tthird is the `history comment' character, usually `#'." + msgstr "" + +! #: builtins.c:1292 + msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which" + msgstr "" + +! #: builtins.c:1293 + msgid "\t\tcommands should be saved on the history list." + msgstr "" + +! #: builtins.c:1305 + msgid "+N\tRotates the stack so that the Nth directory (counting" + msgstr "" + +! #: builtins.c:1306 + msgid "\tfrom the left of the list shown by `dirs', starting with" + msgstr "" + +! #: builtins.c:1307 builtins.c:1311 + msgid "\tzero) is at the top." + msgstr "" + +! #: builtins.c:1309 + msgid "-N\tRotates the stack so that the Nth directory (counting" + msgstr "" + +! #: builtins.c:1310 + msgid "\tfrom the right of the list shown by `dirs', starting with" + msgstr "" + +! #: builtins.c:1313 + msgid "-n\tsuppress the normal change of directory when adding directories" + msgstr "" + +! #: builtins.c:1314 + msgid "\tto the stack, so only the stack is manipulated." + msgstr "" + +! #: builtins.c:1316 + msgid "dir\tadds DIR to the directory stack at the top, making it the" + msgstr "" + +! #: builtins.c:1317 + msgid "\tnew current working directory." + msgstr "" + +! #: builtins.c:1331 + msgid "+N\tremoves the Nth entry counting from the left of the list" + msgstr "" + +! #: builtins.c:1332 + msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" + msgstr "" + +! #: builtins.c:1333 + msgid "\tremoves the first directory, `popd +1' the second." + msgstr "" + +! #: builtins.c:1335 + msgid "-N\tremoves the Nth entry counting from the right of the list" + msgstr "" + +! #: builtins.c:1336 + msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" + msgstr "" + +! #: builtins.c:1337 + msgid "\tremoves the last directory, `popd -1' the next to last." + msgstr "" + +! #: builtins.c:1339 + msgid "-n\tsuppress the normal change of directory when removing directories" + msgstr "" + +! #: builtins.c:1340 + msgid "\tfrom the stack, so only the stack is manipulated." + msgstr "" + +! #: builtins.c:1362 + msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" + msgstr "" + +! #: builtins.c:1363 builtins.c:1366 + msgid "\tdirs when invoked without options, starting with zero." + msgstr "" + +! #: builtins.c:1365 + msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" + msgstr "" + +! #: builtins.c:1373 + msgid "Toggle the values of variables controlling optional behavior." + msgstr "" + +! #: builtins.c:1374 + msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" + msgstr "" + +! #: builtins.c:1375 + msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" + msgstr "" + +! #: builtins.c:1376 + msgid "status indicates whether each OPTNAME is set or unset. The -o" + msgstr "" + +! #: builtins.c:1377 + msgid "option restricts the OPTNAMEs to those defined for use with" + msgstr "" + +! #: builtins.c:1378 + msgid "`set -o'. With no options, or with the -p option, a list of all" + msgstr "" + +! #: builtins.c:1379 + msgid "settable options is displayed, with an indication of whether or" + msgstr "" + +! #: builtins.c:1380 + msgid "not each is set." + msgstr "" + +! #: builtins.c:1386 + msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT" + msgstr "" + +! #: builtins.c:1387 + msgid "is a character string which contains three types of objects: plain" + msgstr "" + +! #: builtins.c:1388 + msgid "" + "characters, which are simply copied to standard output, character escape" + msgstr "" + +! #: builtins.c:1389 + msgid "sequences which are converted and copied to the standard output, and" + msgstr "" + +! #: builtins.c:1390 + msgid "" + "format specifications, each of which causes printing of the next successive" + msgstr "" + +! #: builtins.c:1391 + msgid "argument. In addition to the standard printf(1) formats, %b means to" + msgstr "" + +! #: builtins.c:1392 + msgid "expand backslash escape sequences in the corresponding argument, and %q" + msgstr "" + +! #: builtins.c:1393 + msgid "means to quote the argument in a way that can be reused as shell input." + msgstr "" + +! #: builtins.c:1400 + msgid "For each NAME, specify how arguments are to be completed." + msgstr "" + +! #: builtins.c:1401 + msgid "If the -p option is supplied, or if no options are supplied, existing" + msgstr "" + +! #: builtins.c:1402 + msgid "completion specifications are printed in a way that allows them to be" + msgstr "" + +! #: builtins.c:1403 + msgid "reused as input. The -r option removes a completion specification for" + msgstr "" + +! #: builtins.c:1404 + msgid "each NAME, or, if no NAMEs are supplied, all completion specifications." + msgstr "" + +! #: builtins.c:1412 + msgid "Display the possible completions depending on the options. Intended" + msgstr "" + +! #: builtins.c:1413 + msgid "" + "to be used from within a shell function generating possible completions." + msgstr "" + +! #: builtins.c:1414 + msgid "If the optional WORD argument is supplied, matches against WORD are" + msgstr "" + +! #: builtins.c:1415 + msgid "generated." + msgstr "" diff --git a/subst.c b/subst.c index 0e3d7326a..d69a6684d 100644 --- a/subst.c +++ b/subst.c @@ -4899,8 +4899,9 @@ verify_substring_values (value, substr, vtype, e1p, e2p) #if defined (ARRAY_VARS) case VT_ARRAYVAR: a = (ARRAY *)value; - /* For arrays, the first value deals with array indices. */ - len = array_max_index (a); /* arrays index from 0 to n - 1 */ + /* For arrays, the first value deals with array indices. Negative + offsets count from one past the array's maximum index. */ + len = array_max_index (a) + (*e1p < 0); /* arrays index from 0 to n - 1 */ break; #endif } diff --git a/support/mkversion.sh b/support/mkversion.sh index a42eb7807..6aca944fe 100644 --- a/support/mkversion.sh +++ b/support/mkversion.sh @@ -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 diff --git a/support/mkversion.sh.save1 b/support/mkversion.sh.save1 new file mode 100644 index 000000000..a42eb7807 --- /dev/null +++ b/support/mkversion.sh.save1 @@ -0,0 +1,164 @@ +#! /bin/sh + +# Simple program to make new version numbers for the shell. +# Big deal, but it was getting out of hand to do everything +# in the makefile. This creates a file named by the -o option, +# otherwise everything is echoed to the standard output. + +# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +PROGNAME=`basename $0` +USAGE="$PROGNAME [-b] [-S srcdir] -d version -p patchlevel [-s status] [-o outfile]" + +source_dir="." + +while [ $# -gt 0 ]; do + case "$1" in + -o) shift; OUTFILE=$1; shift ;; + -b) shift; inc_build=yes ;; + -s) shift; rel_status=$1; shift ;; + -p) shift; patch_level=$1; shift ;; + -d) shift; dist_version=$1; shift ;; + -S) shift; source_dir="$1"; shift ;; + *) echo "$PROGNAME: usage: $USAGE" >&2 ; exit 2 ;; + esac +done + +# Required arguments +if [ -z "$dist_version" ]; then + echo "${PROGNAME}: required argument -d missing" >&2 + echo "$PROGNAME: usage: $USAGE" >&2 + exit 1 +fi + +#if [ -z "$patch_level" ]; then +# echo "${PROGNAME}: required argument -p missing" >&2 +# echo "$PROGNAME: usage: $USAGE" >&2 +# exit 1 +#fi + +# Defaults +if [ -z "$rel_status" ]; then + rel_status="release" +fi + +build_ver= +if [ -r .build ]; then + build_ver=`cat .build` +fi +if [ -z "$build_ver" ]; then + build_ver=0 +fi + +# increment the build version if that's what's required + +if [ -n "$inc_build" ]; then + build_ver=`expr $build_ver + 1` +fi + +# what's the patch level? +if [ -z "$patch_level" ]; then + patchlevel_h=$source_dir/patchlevel.h + if [ -s $patchlevel_h ]; then + patch_level=`cat $patchlevel_h | grep '^#define[ ]*PATCHLEVEL' | awk '{print $NF}'` + fi +fi +if [ -z "$patch_level" ]; then + patch_level=0 +fi + +# If we have an output file specified, make it the standard output +if [ -n "$OUTFILE" ]; then + if exec >$OUTFILE; then + : + else + echo "${PROGNAME}: cannot redirect standard output to $OUTFILE" >&2 + exit 1 + fi +fi + +# Output the leading comment. +echo "/* Version control for the shell. This file gets changed when you say" +echo " \`make version.h' to the Makefile. It is created by mkversion. */" + +# Output the distribution version. Single numbers are converted to x.00. +# Allow, as a special case, `[:digit:].[:digit:][:digit:][:alpha:]' for +# intermediate versions (e.g., `2.05a'). +# Any characters other than digits and `.' are invalid. +case "$dist_version" in +[0-9].[0-9][0-9][a-z]) ;; # special case +*[!0-9.]*) echo "mkversion.sh: ${dist_version}: bad distribution version" >&2 + exit 1 ;; +*.*) ;; +*) dist_version=${dist_version}.00 ;; +esac + +dist_major=`echo $dist_version | sed 's:\..*$::'` +[ -z "${dist_major}" ] && dist_major=0 + +dist_minor=`echo $dist_version | sed 's:^.*\.::'` +case "$dist_minor" in +"") dist_minor=00 ;; +[a-z]) dist_minor=00${dist_minor} ;; +?) dist_minor=0${dist_minor} ;; +*) ;; +esac + +#float_dist=`echo $dist_version | awk '{printf "%.2f\n", $1}'` +float_dist=${dist_major}.${dist_minor} + +echo +echo "/* The distribution version number of this shell. */" +echo "#define DISTVERSION \"${float_dist}\"" + +# Output the patch level +#echo +#echo "/* The patch level of this version of the shell. */" +#echo "#define PATCHLEVEL ${patch_level}" + +# Output the build version +echo +echo "/* The last built version of this shell. */" +echo "#define BUILDVERSION ${build_ver}" + +# Output the release status +echo +echo "/* The release status of this shell. */" +echo "#define RELSTATUS \"${rel_status}\"" + +# Output the SCCS version string +sccs_string="${float_dist}.${patch_level}(${build_ver}) ${rel_status} GNU" +echo +echo "/* A version string for use by sccs and the what command. */" +echo "#define SCCSVERSION \"@(#)Bash version ${sccs_string}\"" + +# extern function declarations +#echo +#echo '/* Functions from version.c. */' +#echo 'extern char *shell_version_string __P((void));' +#echo 'extern void show_shell_version __P((int));' + +if [ -n "$inc_build" ]; then + # Make sure we can write to .build + if [ -f .build ] && [ ! -w .build ]; then + echo "$PROGNAME: cannot write to .build, not incrementing build version" >&2 + else + echo "$build_ver" > .build + fi +fi + +exit 0 diff --git a/support/mkversion.sh~ b/support/mkversion.sh~ new file mode 100644 index 000000000..a42eb7807 --- /dev/null +++ b/support/mkversion.sh~ @@ -0,0 +1,164 @@ +#! /bin/sh + +# Simple program to make new version numbers for the shell. +# Big deal, but it was getting out of hand to do everything +# in the makefile. This creates a file named by the -o option, +# otherwise everything is echoed to the standard output. + +# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +PROGNAME=`basename $0` +USAGE="$PROGNAME [-b] [-S srcdir] -d version -p patchlevel [-s status] [-o outfile]" + +source_dir="." + +while [ $# -gt 0 ]; do + case "$1" in + -o) shift; OUTFILE=$1; shift ;; + -b) shift; inc_build=yes ;; + -s) shift; rel_status=$1; shift ;; + -p) shift; patch_level=$1; shift ;; + -d) shift; dist_version=$1; shift ;; + -S) shift; source_dir="$1"; shift ;; + *) echo "$PROGNAME: usage: $USAGE" >&2 ; exit 2 ;; + esac +done + +# Required arguments +if [ -z "$dist_version" ]; then + echo "${PROGNAME}: required argument -d missing" >&2 + echo "$PROGNAME: usage: $USAGE" >&2 + exit 1 +fi + +#if [ -z "$patch_level" ]; then +# echo "${PROGNAME}: required argument -p missing" >&2 +# echo "$PROGNAME: usage: $USAGE" >&2 +# exit 1 +#fi + +# Defaults +if [ -z "$rel_status" ]; then + rel_status="release" +fi + +build_ver= +if [ -r .build ]; then + build_ver=`cat .build` +fi +if [ -z "$build_ver" ]; then + build_ver=0 +fi + +# increment the build version if that's what's required + +if [ -n "$inc_build" ]; then + build_ver=`expr $build_ver + 1` +fi + +# what's the patch level? +if [ -z "$patch_level" ]; then + patchlevel_h=$source_dir/patchlevel.h + if [ -s $patchlevel_h ]; then + patch_level=`cat $patchlevel_h | grep '^#define[ ]*PATCHLEVEL' | awk '{print $NF}'` + fi +fi +if [ -z "$patch_level" ]; then + patch_level=0 +fi + +# If we have an output file specified, make it the standard output +if [ -n "$OUTFILE" ]; then + if exec >$OUTFILE; then + : + else + echo "${PROGNAME}: cannot redirect standard output to $OUTFILE" >&2 + exit 1 + fi +fi + +# Output the leading comment. +echo "/* Version control for the shell. This file gets changed when you say" +echo " \`make version.h' to the Makefile. It is created by mkversion. */" + +# Output the distribution version. Single numbers are converted to x.00. +# Allow, as a special case, `[:digit:].[:digit:][:digit:][:alpha:]' for +# intermediate versions (e.g., `2.05a'). +# Any characters other than digits and `.' are invalid. +case "$dist_version" in +[0-9].[0-9][0-9][a-z]) ;; # special case +*[!0-9.]*) echo "mkversion.sh: ${dist_version}: bad distribution version" >&2 + exit 1 ;; +*.*) ;; +*) dist_version=${dist_version}.00 ;; +esac + +dist_major=`echo $dist_version | sed 's:\..*$::'` +[ -z "${dist_major}" ] && dist_major=0 + +dist_minor=`echo $dist_version | sed 's:^.*\.::'` +case "$dist_minor" in +"") dist_minor=00 ;; +[a-z]) dist_minor=00${dist_minor} ;; +?) dist_minor=0${dist_minor} ;; +*) ;; +esac + +#float_dist=`echo $dist_version | awk '{printf "%.2f\n", $1}'` +float_dist=${dist_major}.${dist_minor} + +echo +echo "/* The distribution version number of this shell. */" +echo "#define DISTVERSION \"${float_dist}\"" + +# Output the patch level +#echo +#echo "/* The patch level of this version of the shell. */" +#echo "#define PATCHLEVEL ${patch_level}" + +# Output the build version +echo +echo "/* The last built version of this shell. */" +echo "#define BUILDVERSION ${build_ver}" + +# Output the release status +echo +echo "/* The release status of this shell. */" +echo "#define RELSTATUS \"${rel_status}\"" + +# Output the SCCS version string +sccs_string="${float_dist}.${patch_level}(${build_ver}) ${rel_status} GNU" +echo +echo "/* A version string for use by sccs and the what command. */" +echo "#define SCCSVERSION \"@(#)Bash version ${sccs_string}\"" + +# extern function declarations +#echo +#echo '/* Functions from version.c. */' +#echo 'extern char *shell_version_string __P((void));' +#echo 'extern void show_shell_version __P((int));' + +if [ -n "$inc_build" ]; then + # Make sure we can write to .build + if [ -f .build ] && [ ! -w .build ]; then + echo "$PROGNAME: cannot write to .build, not incrementing build version" >&2 + else + echo "$build_ver" > .build + fi +fi + +exit 0 diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST index 72ec06a2c..3efcf32d6 100755 --- a/tests/RUN-ONE-TEST +++ b/tests/RUN-ONE-TEST @@ -1,4 +1,4 @@ -BUILD_DIR=/usr/local/build/bash/bash-current +BUILD_DIR=/usr/local/build/chet/bash/bash-current THIS_SH=$BUILD_DIR/bash PATH=$PATH:$BUILD_DIR diff --git a/tests/array.right b/tests/array.right index f0c456e58..fa2ae2ac6 100644 --- a/tests/array.right +++ b/tests/array.right @@ -170,8 +170,8 @@ too many elements -- expect three five seven three five seven positive offset - expect five seven five seven -negative offset - expect five seven -five seven +negative offset to unset element - expect seven +seven positive offset 2 - expect seven seven negative offset 2 - expect seven diff --git a/tests/array.tests b/tests/array.tests index db02c895d..4f5d830dc 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -322,7 +322,7 @@ echo ${av[@]:3:5} # how about too many elements? echo positive offset - expect five seven echo ${av[@]:5:2} -echo negative offset - expect five seven +echo negative offset to unset element - expect seven echo ${av[@]: -2:2} echo positive offset 2 - expect seven -- 2.47.3