diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | ChangeLog | 125 | ||||
-rw-r--r-- | Checklist | 10 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | NEWS | 24 | ||||
-rw-r--r-- | README | 23 | ||||
-rw-r--r-- | README_d/ChangeLog | 8 | ||||
-rw-r--r-- | README_d/README.gcc-3 | 11 | ||||
-rw-r--r-- | README_d/README.pc | 2 | ||||
-rw-r--r-- | array.c | 4 | ||||
-rw-r--r-- | awk.h | 5 | ||||
-rw-r--r-- | awkgram.c | 4 | ||||
-rw-r--r-- | awkgram.y | 4 | ||||
-rw-r--r-- | awklib/ChangeLog | 9 | ||||
-rw-r--r-- | awklib/Makefile.am | 1 | ||||
-rw-r--r-- | awklib/Makefile.in | 1 | ||||
-rw-r--r-- | awklib/eg/data/BBS-list | 11 | ||||
-rw-r--r-- | awklib/eg/data/mail-list | 11 | ||||
-rw-r--r-- | awklib/eg/lib/quicksort.awk | 3 | ||||
-rw-r--r-- | awklib/eg/prog/cut.awk | 2 | ||||
-rw-r--r-- | builtin.c | 44 | ||||
-rw-r--r-- | cmd.h | 5 | ||||
-rw-r--r-- | command.c | 2 | ||||
-rw-r--r-- | command.y | 2 | ||||
-rwxr-xr-x | configure | 75 | ||||
-rw-r--r-- | configure.ac | 13 | ||||
-rw-r--r-- | debug.c | 2 | ||||
-rw-r--r-- | dfa.c | 537 | ||||
-rw-r--r-- | dfa.h | 10 | ||||
-rw-r--r-- | doc/ChangeLog | 76 | ||||
-rw-r--r-- | doc/awkcard.in | 13 | ||||
-rw-r--r-- | doc/gawk.1 | 11 | ||||
-rw-r--r-- | doc/gawk.info | 3205 | ||||
-rw-r--r-- | doc/gawk.texi | 2020 | ||||
-rw-r--r-- | doc/gawktexi.in | 2012 | ||||
-rw-r--r-- | doc/texinfo.tex | 49 | ||||
-rw-r--r-- | ext.c | 8 | ||||
-rw-r--r-- | extension/ChangeLog | 55 | ||||
-rw-r--r-- | extension/Makefile.am | 2 | ||||
-rw-r--r-- | extension/Makefile.in | 2 | ||||
-rw-r--r-- | extension/build-aux/ChangeLog | 4 | ||||
-rw-r--r-- | extension/configh.in | 20 | ||||
-rwxr-xr-x | extension/configure | 233 | ||||
-rw-r--r-- | extension/configure.ac | 10 | ||||
-rw-r--r-- | extension/filefuncs.c | 8 | ||||
-rw-r--r-- | extension/gawkfts.c | 4 | ||||
-rw-r--r-- | extension/inplace.c | 8 | ||||
-rw-r--r-- | extension/m4/ChangeLog | 4 | ||||
-rw-r--r-- | extension/readdir.c | 10 | ||||
-rw-r--r-- | extension/readfile.3am | 20 | ||||
-rw-r--r-- | extension/readfile.c | 151 | ||||
-rw-r--r-- | extension/revtwoway.c | 6 | ||||
-rw-r--r-- | extension/rwarray.c | 8 | ||||
-rw-r--r-- | extension/testext.c | 6 | ||||
-rw-r--r-- | extension/time.c | 6 | ||||
-rw-r--r-- | gawkapi.c | 125 | ||||
-rw-r--r-- | gawkapi.h | 26 | ||||
-rw-r--r-- | helpers/ChangeLog | 13 | ||||
-rwxr-xr-x | helpers/quoteconvert2.sh | 49 | ||||
-rw-r--r-- | helpers/scanfmt.c | 22 | ||||
-rw-r--r-- | helpers/tryfmt.c | 23 | ||||
-rw-r--r-- | interpret.h | 2 | ||||
-rw-r--r-- | io.c | 8 | ||||
-rw-r--r-- | m4/ChangeLog | 10 | ||||
-rw-r--r-- | m4/readline.m4 | 6 | ||||
-rw-r--r-- | main.c | 4 | ||||
-rw-r--r-- | missing_d/ChangeLog | 4 | ||||
-rw-r--r-- | pc/ChangeLog | 4 | ||||
-rw-r--r-- | pc/Makefile | 11 | ||||
-rw-r--r-- | pc/Makefile.tst | 2 | ||||
-rw-r--r-- | pc/config.h | 6 | ||||
-rw-r--r-- | po/ChangeLog | 4 | ||||
-rw-r--r-- | po/ca.gmo | bin | 43102 -> 83005 bytes | |||
-rw-r--r-- | po/ca.po | 1263 | ||||
-rw-r--r-- | po/da.gmo | bin | 42270 -> 42160 bytes | |||
-rw-r--r-- | po/da.po | 1157 | ||||
-rw-r--r-- | po/de.gmo | bin | 45338 -> 45199 bytes | |||
-rw-r--r-- | po/de.po | 1159 | ||||
-rw-r--r-- | po/es.gmo | bin | 44713 -> 44600 bytes | |||
-rw-r--r-- | po/es.po | 1157 | ||||
-rw-r--r-- | po/fi.gmo | bin | 84555 -> 84555 bytes | |||
-rw-r--r-- | po/fi.po | 692 | ||||
-rw-r--r-- | po/fr.gmo | bin | 85628 -> 85628 bytes | |||
-rw-r--r-- | po/fr.po | 702 | ||||
-rw-r--r-- | po/gawk.pot | 316 | ||||
-rw-r--r-- | po/it.gmo | bin | 81018 -> 81018 bytes | |||
-rw-r--r-- | po/it.po | 318 | ||||
-rw-r--r-- | po/ja.gmo | bin | 47970 -> 47970 bytes | |||
-rw-r--r-- | po/ja.po | 1158 | ||||
-rw-r--r-- | po/ms.gmo | bin | 1184 -> 1184 bytes | |||
-rw-r--r-- | po/ms.po | 1153 | ||||
-rw-r--r-- | po/nl.gmo | bin | 80863 -> 80863 bytes | |||
-rw-r--r-- | po/nl.po | 630 | ||||
-rw-r--r-- | po/pl.gmo | bin | 70599 -> 71101 bytes | |||
-rw-r--r-- | po/pl.po | 1167 | ||||
-rw-r--r-- | po/sv.gmo | bin | 80916 -> 80916 bytes | |||
-rw-r--r-- | po/sv.po | 571 | ||||
-rw-r--r-- | po/vi.gmo | bin | 93025 -> 93025 bytes | |||
-rw-r--r-- | po/vi.po | 657 | ||||
-rw-r--r-- | posix/ChangeLog | 4 | ||||
-rw-r--r-- | regcomp.c | 2 | ||||
-rw-r--r-- | regex_internal.c | 15 | ||||
-rw-r--r-- | test/ChangeLog | 27 | ||||
-rw-r--r-- | test/Makefile.am | 16 | ||||
-rw-r--r-- | test/Makefile.in | 16 | ||||
-rw-r--r-- | test/readfile2.awk | 12 | ||||
-rw-r--r-- | test/readfile2.ok | 21 | ||||
-rw-r--r-- | test/regrange.ok | 2 | ||||
-rw-r--r-- | vms/ChangeLog | 8 | ||||
-rw-r--r-- | vms/descrip.mms | 2 | ||||
-rw-r--r-- | vms/vax/ChangeLog | 4 | ||||
-rw-r--r-- | vms/vmsbuild.com | 5 |
113 files changed, 12577 insertions, 8880 deletions
@@ -5,6 +5,7 @@ # Directories autom4te.cache .deps +*.dSYM # Single files. Makefile @@ -1,3 +1,128 @@ +2014-04-11 Arnold D. Robbins <arnold@skeeve.com> + + * io.c (closemabyesocket): Define if not defined, e.g. building + without socket code. Thanks to dave.gma@googlemail.com (Dave Sines) + for the report. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * README: Update. + * configure.ac: Bump version. + +2014-04-03 Arnold D. Robbins <arnold@skeeve.com> + + * regcomp.c (parse_bracket_exp): Move a call to `re_free' inside + an ifdef. Makes the code marginally cleaner. + +2014-03-30 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Sync with GNU grep. + +2014-03-28 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Remove duplicate AC_HEADER_TIME and rearrange + order of macros some. May help on older systems. + +2014-03-23 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Move include of dfa.h around for correct building + on Irix. Thanks to Nelson H.F. Beebe for the report. + + Unrelated: + + * .gitignore: Simplify .dSYM pattern for Mac OS X. + +2014-03-21 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c (using_simple_locale): Add ifdefs in case there is no + locale support at all. Thanks to Scott Deifik for the report. + + Unrelated: + + * main.c (UPDATE_YEAR): Set to 2014. + +2014-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * .gitignore: Add .dSYM directories for Mac OS X. + Thanks to Hermann Peifer for the suggestion. + +2014-03-10 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.h, dfa.c: Sync with grep. Yet again. + * regex_internal.c (built_wcs_upper_buffer, build_upper_buffer): + Fixes from GNULIB for mixed case matching on Mac OS X. + + Unrelated: + + * builtin.c (format_tree): Smarten handling of %' flag. Always + pass it in for floating point formats. Then only add the + thousands_sep if there is one. Also, allow for thousands_sep + to be a string, not just one character. Thanks to Michal Jaegermann + for the report. + +2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * gawkapi.c (api_impl): Add memory allocation function pointers. + * gawkapi.h (GAWK_API_MINOR_VERSION): Bump. + (gawk_api_t): Add memory allocation function pointers api_malloc, + api_calloc, api_realloc, and api_free. + (gawk_malloc, gawk_calloc, gawk_realloc, gawk_free): New macros. + (emalloc): Replace malloc with gawk_malloc. + (erealloc): Replace erealloc with gawk_erealloc. + +2014-03-05 Arnold D. Robbins <arnold@skeeve.com> + + Straighten out enumerated types some more. + + * awk.h (add_srcfile): Fix type of first parameter. + * awkgram.y (add_srcfile, do_add_srcfile): Ditto. + * cmd.h (A_NONE): New enum nametypeval. + * command.y (argtab): Use it in final value. + * ext.c (make_builtin): Use awk_false, awk_true. + * io.c (init_output_wrapper): Use awk_false. + + Unrelated: + + * debug.c (do_commands): Initialize num to silence warnings. + Thanks to Michal Jaegermann. + + Unrelated: + + * builtin.c (do_mktime): Change lint warning for minutes to + check against 59, not 60. Thanks to Hermann Peifer for the report. + +2014-03-03 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Sync with grep. Yet again. + +2014-02-28 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Sync with grep. Looks like good improvement with + respect to bracket expressions. + +2014-02-27 Arnold D. Robbins <arnold@skeeve.com> + + Fixes for enum/int mismatches as warned by some compilers. + + * awk.h (ANONE): New enum for array sorting. + * array.c (assoc_list): Use it. + * builtin.c (format_tree): New MP_NONE value. + * gawkapi.c: Use awk_false and awk_true everywhere instead of + false and true. + +2014-02-26 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Set up do-nothing extension/Makefile on + MirBSD also. + +2014-02-21 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.h, dfa.c (parse_bracket_exp): Sync with grep. + 2014-02-20 Arnold D. Robbins <arnold@skeeve.com> * regex.h, regex.c, regex_internal.c, regex_internal.h: Sync @@ -1,4 +1,4 @@ -Sun Apr 21 23:14:21 IDT 2013 +Fri Apr 4 11:43:29 IDT 2014 ============================ A checklist for making releases @@ -12,20 +12,18 @@ README_d/* edited VMS/* version stuff up to date vms/vmsbuild.com vms/descrip.mms - vms/vms-conf.h: update VERSION and PACKAGE_VERSION NEWS is up to date Any new options have been added to usage function All paper work signed and sent in All files checked in Version information is correct in - version.c doc/gawk.1 doc/awkcard.in - doc/gawk.texi + doc/gawktexi.in doc/gawkinet.texi extension/configure.ac doc/texinfo.tex is up to date -doc/gawk.texi is up to date +doc/gawktexi.in is up to date doc/gawkinet.texi is up to date doc/gawk.1 is up to date doc/awkcard.in is up to date @@ -43,6 +41,8 @@ Testing on compile with tcc compile with clang + compile 32 bit tests - clang and gcc + configure --disable-lint configure --disable-nls configure --with-whiny-user-strftime diff --git a/Makefile.am b/Makefile.am index a8acdc48..6e5715d7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2013 the Free Software Foundation, Inc. +# Copyright (C) 2000-2014 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. diff --git a/Makefile.in b/Makefile.in index 4fed13ff..2abf5b46 100644 --- a/Makefile.in +++ b/Makefile.in @@ -17,7 +17,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2013 the Free Software Foundation, Inc. +# Copyright (C) 2000-2014 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -20,7 +20,7 @@ Changes from 4.1.0 to 4.1.1 --------------------------- 1. The "stat" extension now includes a "devbsize" element which indicates - the units for the "nblocks" element + the units for the "nblocks" element. 2. The extension facility now works on MinGW. Many of the extensions can be built and used directly. @@ -41,14 +41,26 @@ Changes from 4.1.0 to 4.1.1 libtool 2.4.2.418. 10. The configure script now accepts a --disable-extensions option, -which disables checking for and building the extensions. + which disables checking for and building the extensions. 11. The VMS port has been considerably improved. In particular config.h -is now generated by a DCL script. Also, the extension facility works -and several of the extensions can be built and used. Currently, the -extension facility only works on Alpha and Itanium. + is now generated by a DCL script. Also, the extension facility works + and several of the extensions can be built and used. Currently, the + extension facility only works on Alpha and Itanium. -XXX. A number of bugs have been fixed. See the ChangeLog. +12. The API now provides functions pointers for malloc(), calloc(), + realloc() and free(), to insure that the same memory allocation + functions are always used. This bumps the minor version by one. + +13. The printf quote flag now works correctly in locales with a different + decimal point character but without a thousands separator character. + If the thousands separator is a string, it will be correctly added + to decimal numbers. + +14. The readfile extension now has an input parser that will read whole + files as a single record. + +15. A number of bugs have been fixed. See the ChangeLog. Changes from 4.0.2 to 4.1.0 --------------------------- @@ -7,19 +7,21 @@ README: -This is GNU Awk 4.1.0. It is upwardly compatible with Brian Kernighan's +This is GNU Awk 4.1.1. It is upwardly compatible with Brian Kernighan's version of Unix awk. It is almost completely compliant with the 2008 POSIX 1003.1 standard for awk. (See the note below about POSIX.) -This is a major new release. See NEWS and ChangeLog for details. +This is a bug-fix release. See NEWS and ChangeLog for details. -Work to be done is described briefly in the TODO file. Changes in this -version are summarized in the NEWS file. +Work to be done is described briefly in the TODO file, which is available +only in the 'master' branch in the Git repo. + +Changes in this version are summarized in the NEWS file. Read the file POSIX.STD for a discussion of issues where the standard says one thing but gawk does something different. -To format the documentation with TeX, use at least version 2013-03-19.11 +To format the documentation with TeX, use at least version 2014-03-18.17 of texinfo.tex. There is a usable copy of texinfo.tex in the doc directory. INSTALLATION: @@ -45,9 +47,12 @@ Automake. After successful compilation, do `make check' to run the test suite. There should be no output from the `cmp' invocations except in the cases where there are small differences in floating point values, and -possibly in the case of strftime. Several of the tests ignore errors -on purpose; those are not a problem. If there are other differences, -please investigate and report the problem. +possibly in the case of strftime. There may be differences based on +installed (or not installed) locales and the quality of multibyte +character support on your system. + +Several of the tests ignore errors on purpose; those are not a problem. +If there are other differences, please investigate and report the problem. PRINTING THE MANUAL @@ -65,7 +70,7 @@ the section in the manual on reporting bugs. Note that comp.lang.awk is about the worst place to post a gawk bug report. Please, use the mechanisms outlined in the manual. -Email should be sent to bug-gawk@gnu.org. This is now a separate mailing +Email should be sent to bug-gawk@gnu.org. This is a separate mailing list at GNU Central. The advantage to using this address is that bug reports are archived at GNU Central. diff --git a/README_d/ChangeLog b/README_d/ChangeLog index a31eca7c..6bc828d9 100644 --- a/README_d/ChangeLog +++ b/README_d/ChangeLog @@ -1,3 +1,11 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-02 Arnold D. Robbins <arnold@skeeve.com> + + * README.gcc-3: New file. + 2014-01-22 Arnold D. Robbins <arnold@skeeve.com> * README.solaris: Updated. diff --git a/README_d/README.gcc-3 b/README_d/README.gcc-3 new file mode 100644 index 00000000..c76a9af7 --- /dev/null +++ b/README_d/README.gcc-3 @@ -0,0 +1,11 @@ +Wed Apr 2 21:29:17 IDT 2014 +============================ + +I have had a report that on a GNU/Linux system using gcc 3.3.6 (32 bit) +that the aasort test fails. Compiling without -O builds a gawk that +does pass all tests. + +Caveat Emptor. + +Arnold Robbins +arnold@skeeve.com diff --git a/README_d/README.pc b/README_d/README.pc index 32a81fc1..63ba473e 100644 --- a/README_d/README.pc +++ b/README_d/README.pc @@ -18,7 +18,7 @@ The `configure' step takes a long time, but works otherwise. ******************************** N O T E ******************************* * The `|&' operator only works when gawk is compiled for Cygwin or for * -* MinGW. Neither * socket support nor two-way pipes work in any other * +* MinGW. Neither socket support nor two-way pipes work in any other * * Windows environment! * ************************************************************************ @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -1279,7 +1279,7 @@ assoc_list(NODE *symbol, const char *sort_str, sort_context_t sort_ctxt) INSTRUCTION *code = NULL; extern int currule; int save_rule = 0; - assoc_kind_t assoc_kind = 0; + assoc_kind_t assoc_kind = ANONE; elem_size = 1; @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -1328,6 +1328,7 @@ if (--val) \ /* array.c */ typedef enum { SORTED_IN = 1, ASORT, ASORTI } sort_context_t; typedef enum { + ANONE = 0x00, /* "unused" value */ AINDEX = 0x001, /* list of indices */ AVALUE = 0x002, /* list of values */ AINUM = 0x004, /* numeric index */ @@ -1372,7 +1373,7 @@ extern const char *getfname(NODE *(*)(int)); extern NODE *stopme(int nargs); extern void shadow_funcs(void); extern int check_special(const char *name); -extern SRCFILE *add_srcfile(int stype, char *src, SRCFILE *curr, bool *already_included, int *errcode); +extern SRCFILE *add_srcfile(enum srctype stype, char *src, SRCFILE *curr, bool *already_included, int *errcode); extern void register_deferred_variable(const char *name, NODE *(*load_func)(void)); extern int files_are_same(char *path, SRCFILE *src); extern void valinfo(NODE *n, Func_print print_func, FILE *fp); @@ -4687,7 +4687,7 @@ parse_program(INSTRUCTION **pcode) /* do_add_srcfile --- add one item to srcfiles */ static SRCFILE * -do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile) +do_add_srcfile(enum srctype stype, char *src, char *path, SRCFILE *thisfile) { SRCFILE *s; @@ -4709,7 +4709,7 @@ do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile) */ SRCFILE * -add_srcfile(int stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode) +add_srcfile(enum srctype stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode) { SRCFILE *s; struct stat sbuf; @@ -2348,7 +2348,7 @@ parse_program(INSTRUCTION **pcode) /* do_add_srcfile --- add one item to srcfiles */ static SRCFILE * -do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile) +do_add_srcfile(enum srctype stype, char *src, char *path, SRCFILE *thisfile) { SRCFILE *s; @@ -2370,7 +2370,7 @@ do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile) */ SRCFILE * -add_srcfile(int stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode) +add_srcfile(enum srctype stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode) { SRCFILE *s; struct stat sbuf; diff --git a/awklib/ChangeLog b/awklib/ChangeLog index e47d37b2..6ef0bbde 100644 --- a/awklib/ChangeLog +++ b/awklib/ChangeLog @@ -1,3 +1,12 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (clean-local): Clean up .dSYM directories for Mac OS X. + Thanks to Hermann Piefer for the suggestion. + 2013-05-09 Arnold D. Robbins <arnold@skeeve.com> * 4.1.0: Release tar ball made. diff --git a/awklib/Makefile.am b/awklib/Makefile.am index b10fa644..6ffbea81 100644 --- a/awklib/Makefile.am +++ b/awklib/Makefile.am @@ -62,6 +62,7 @@ uninstall-local: clean-local: rm -f $(AUXAWK) igawk *.exe rm -fr eg.old + rm -fr grcat.dSYM pwcat.dSYM $(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi cd $(srcdir) && \ diff --git a/awklib/Makefile.in b/awklib/Makefile.in index 15e6c24d..d32ae04a 100644 --- a/awklib/Makefile.in +++ b/awklib/Makefile.in @@ -715,6 +715,7 @@ uninstall-local: clean-local: rm -f $(AUXAWK) igawk *.exe rm -fr eg.old + rm -fr grcat.dSYM pwcat.dSYM $(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi cd $(srcdir) && \ diff --git a/awklib/eg/data/BBS-list b/awklib/eg/data/BBS-list deleted file mode 100644 index 1007417f..00000000 --- a/awklib/eg/data/BBS-list +++ /dev/null @@ -1,11 +0,0 @@ -aardvark 555-5553 1200/300 B -alpo-net 555-3412 2400/1200/300 A -barfly 555-7685 1200/300 A -bites 555-1675 2400/1200/300 A -camelot 555-0542 300 C -core 555-2912 1200/300 C -fooey 555-1234 2400/1200/300 B -foot 555-6699 1200/300 B -macfoo 555-6480 1200/300 A -sdace 555-3430 2400/1200/300 A -sabafoo 555-2127 1200/300 C diff --git a/awklib/eg/data/mail-list b/awklib/eg/data/mail-list new file mode 100644 index 00000000..37ff350a --- /dev/null +++ b/awklib/eg/data/mail-list @@ -0,0 +1,11 @@ +Amelia 555-5553 amelia.zodiacusque@gmail.com F +Anthony 555-3412 anthony.asserturo@hotmail.com A +Becky 555-7685 becky.algebrarum@gmail.com A +Bill 555-1675 bill.drowning@hotmail.com A +Broderick 555-0542 broderick.aliquotiens@yahoo.com R +Camilla 555-2912 camilla.infusarum@skynet.be R +Fabius 555-1234 fabius.undevicesimus@ucb.edu F +Julie 555-6699 julie.perscrutabor@skeeve.com F +Martin 555-6480 martin.codicibus@hotmail.com A +Samuel 555-3430 samuel.lanceolis@shu.edu A +Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R diff --git a/awklib/eg/lib/quicksort.awk b/awklib/eg/lib/quicksort.awk index 7a635d6f..43357ac6 100644 --- a/awklib/eg/lib/quicksort.awk +++ b/awklib/eg/lib/quicksort.awk @@ -1,8 +1,9 @@ # quicksort.awk --- Quicksort algorithm, with user-supplied # comparison function # -# Arnold Robbins, arnoldskeeve.com, Public Domain +# Arnold Robbins, arnold@skeeve.com, Public Domain # January 2009 + # quicksort --- C.A.R. Hoare's quick sort algorithm. See Wikipedia # or almost any algorithms or computer science text # diff --git a/awklib/eg/prog/cut.awk b/awklib/eg/prog/cut.awk index 16b4bdaa..1399411e 100644 --- a/awklib/eg/prog/cut.awk +++ b/awklib/eg/prog/cut.awk @@ -86,7 +86,7 @@ function set_fieldlist( n, m, i, j, k, f, g) } nfields = j - 1 } -function set_charlist( field, i, j, f, g, t, +function set_charlist( field, i, j, f, g, n, m, t, filler, last, len) { field = 1 # count total fields @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -719,7 +719,7 @@ format_tree( mpz_ptr zi; mpfr_ptr mf; #endif - enum { MP_INT_WITH_PREC = 1, MP_INT_WITHOUT_PREC, MP_FLOAT } fmt_type; + enum { MP_NONE = 0, MP_INT_WITH_PREC = 1, MP_INT_WITHOUT_PREC, MP_FLOAT } fmt_type; static const char sp[] = " "; static const char zero_string[] = "0"; @@ -817,7 +817,7 @@ format_tree( mf = NULL; zi = NULL; #endif - fmt_type = 0; + fmt_type = MP_NONE; lj = alt = big_flag = bigbig_flag = small_flag = false; fill = sp; @@ -994,9 +994,7 @@ check_pos: goto check_pos; case '\'': #if defined(HAVE_LOCALE_H) - /* allow quote_flag if there is a thousands separator. */ - if (loc.thousands_sep[0] != '\0') - quote_flag = true; + quote_flag = true; goto check_pos; #else goto retry; @@ -1196,6 +1194,9 @@ out0: } if (i < 1) goto out_of_range; +#if defined(HAVE_LOCALE_H) + quote_flag = (quote_flag && loc.thousands_sep[0] != 0); +#endif chp = &cpbufs[1].buf[i-1]; ii = jj = 0; do { @@ -1203,8 +1204,14 @@ out0: chp--; i--; #if defined(HAVE_LOCALE_H) if (quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) { - if (i) /* only add if more digits coming */ - PREPEND(loc.thousands_sep[0]); /* XXX - assumption it's one char */ + if (i) { /* only add if more digits coming */ + int k; + const char *ts = loc.thousands_sep; + + for (k = strlen(ts) - 1; k >= 0; k--) { + PREPEND(ts[k]); + } + } if (loc.grouping[ii+1] == 0) jj = 0; /* keep using current val in loc.grouping[ii] */ else if (loc.grouping[ii+1] == CHAR_MAX) @@ -1360,6 +1367,9 @@ mpf1: #ifdef HAVE_MPFR int0: #endif +#if defined(HAVE_LOCALE_H) + quote_flag = (quote_flag && loc.thousands_sep[0] != 0); +#endif /* * When to fill with zeroes is of course not simple. * First: No zero fill if left-justifying. @@ -1378,8 +1388,14 @@ mpf1: uval /= base; #if defined(HAVE_LOCALE_H) if (base == 10 && quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) { - if (uval) /* only add if more digits coming */ - PREPEND(loc.thousands_sep[0]); /* XXX --- assumption it's one char */ + if (uval) { /* only add if more digits coming */ + int k; + const char *ts = loc.thousands_sep; + + for (k = strlen(ts) - 1; k >= 0; k--) { + PREPEND(ts[k]); + } + } if (loc.grouping[ii+1] == 0) jj = 0; /* keep using current val in loc.grouping[ii] */ else if (loc.grouping[ii+1] == CHAR_MAX) @@ -1999,10 +2015,10 @@ do_mktime(int nargs) & hour, & minute, & second, & dst); - if (do_lint /* Ready? Set! Go: */ - && ( (second < 0 || second > 60) - || (minute < 0 || minute > 60) - || (hour < 0 || hour > 23) + if ( do_lint /* Ready? Set! Go: */ + && ( (second < 0 || second > 60) + || (minute < 0 || minute > 59) + || (hour < 0 || hour > 23) /* FIXME ISO 8601 allows 24 ? */ || (day < 1 || day > 31) || (month < 1 || month > 12) )) lintwarn(_("mktime: at least one of the values is out of the default range")); @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2010, 2011, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2004, 2010, 2011, 2013, 2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -109,7 +109,8 @@ enum argtype { /* non-number arguments to commands */ enum nametypeval { - A_ARGS = 1, + A_NONE = 0, + A_ARGS, A_BREAK, A_DEL, A_DISPLAY, @@ -2667,7 +2667,7 @@ struct argtoken argtab[] = { { "sources", D_info, A_SOURCES }, { "variables", D_info, A_VARIABLES }, { "watch", D_info, A_WATCH }, - { NULL, D_illegal, 0 }, + { NULL, D_illegal, A_NONE }, }; @@ -916,7 +916,7 @@ struct argtoken argtab[] = { { "sources", D_info, A_SOURCES }, { "variables", D_info, A_VARIABLES }, { "watch", D_info, A_WATCH }, - { NULL, D_illegal, 0 }, + { NULL, D_illegal, A_NONE }, }; @@ -8102,6 +8102,22 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi +for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ + netdb.h netinet/in.h stdarg.h stddef.h string.h \ + sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ + termios.h stropts.h wchar.h wctype.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : @@ -8383,22 +8399,6 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi -for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ - netdb.h netinet/in.h stdarg.h stddef.h string.h \ - sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ - termios.h stropts.h wchar.h wctype.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - if test "$ac_cv_header_string_h" = yes then @@ -10068,9 +10068,7 @@ if test "x$enable_extensions" != "xno"; then extensions_supported=no case $host_os in - mirbsd*) - : ;; - openedition*) # OS/390 z/OS POSIX layer + mirbsd* | openedition*) # OS/390 z/OS POSIX layer cat << \EOF > extension/Makefile all dist check clean distclean install uninstall distcheck: @exit 0 @@ -10469,6 +10467,10 @@ $as_echo "$_found_readline" >&6; } LIBS=$_readline_save_libs if test $_found_readline = yes ; then + case $host_os in + *bsd* ) _combo="$_combo -ltermcap" + ;; + esac $as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h @@ -10614,41 +10616,6 @@ _ACEOF fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : diff --git a/configure.ac b/configure.ac index ee100054..9c39db76 100644 --- a/configure.ac +++ b/configure.ac @@ -137,14 +137,14 @@ AM_LANGINFO_CODESET gt_LC_MESSAGES dnl checks for header files -AC_HEADER_STDC -AC_HEADER_STDBOOL -AC_HEADER_SYS_WAIT -AC_HEADER_TIME AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ netdb.h netinet/in.h stdarg.h stddef.h string.h \ sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h) +AC_HEADER_STDC +AC_HEADER_STDBOOL +AC_HEADER_SYS_WAIT +AC_HEADER_TIME if test "$ac_cv_header_string_h" = yes then @@ -290,9 +290,7 @@ if test "x$enable_extensions" != "xno"; then dnl On MirBSD (and probably other systems), don't even try. case $host_os in - mirbsd*) - : ;; - openedition*) # OS/390 z/OS POSIX layer + mirbsd* | openedition*) # OS/390 z/OS POSIX layer cat << \EOF > extension/Makefile all dist check clean distclean install uninstall distcheck: @exit 0 @@ -380,7 +378,6 @@ GNUPG_CHECK_MPFR dnl checks for structure members AC_CHECK_MEMBERS([struct stat.st_blksize]) -AC_HEADER_TIME AC_STRUCT_TM AC_STRUCT_TIMEZONE @@ -4852,7 +4852,7 @@ do_commands(CMDARG *arg, int cmd) struct commands_item *c; if (cmd == D_commands) { - int num, type; + int num = -1, type; if (arg == NULL) type = has_break_or_watch_point(&num, true); else { @@ -43,8 +43,15 @@ #include "missing_d/gawkbool.h" #endif /* HAVE_STDBOOL_H */ -#include "dfa.h" - +/* Gawk doesn't use Gnulib, so don't assume that setlocale and + static_assert are present. */ +#ifndef LC_ALL +# define setlocale(category, locale) NULL +#endif +#ifndef static_assert +# define static_assert(cond, diagnostic) \ + extern int (*foo (void)) [!!sizeof (struct { int foo: (cond) ? 8 : -1; })] +#endif #define STREQ(a, b) (strcmp (a, b) == 0) @@ -84,6 +91,8 @@ #include "xalloc.h" +#include "dfa.h" + #ifdef GAWK static int is_blank (int c) @@ -130,7 +139,7 @@ typedef unsigned int charclass[CHARCLASS_INTS]; /* Convert a possibly-signed character to an unsigned character. This is a bit safer than casting to unsigned char, since it catches some type errors that the cast doesn't. */ -static inline unsigned char +static unsigned char to_uchar (char ch) { return ch; @@ -219,7 +228,8 @@ enum EMPTY = NOTCHAR, /* EMPTY is a terminal symbol that matches the empty string. */ - BACKREF, /* BACKREF is generated by \<digit>; it + BACKREF, /* BACKREF is generated by \<digit> + or by any other construct that is not completely handled. If the scanner detects a transition on backref, it returns a kind of "semi-success" indicating that @@ -402,6 +412,14 @@ struct dfa size_t nmultibyte_prop; int *multibyte_prop; +#if MBS_SUPPORT + /* A table indexed by byte values that contains the corresponding wide + character (if any) for that byte. WEOF means the byte is the + leading byte of a multibyte character. Invalid and null bytes are + mapped to themselves. */ + wint_t mbrtowc_cache[NOTCHAR]; +#endif + /* Array of the bracket expression in the DFA. */ struct mb_char_classes *mbcsets; size_t nmbcsets; @@ -504,6 +522,64 @@ static void regexp (void); } \ while (false) +static void +dfambcache (struct dfa *d) +{ +#if MBS_SUPPORT + int i; + for (i = CHAR_MIN; i <= CHAR_MAX; ++i) + { + char c = i; + unsigned char uc = i; + mbstate_t s = { 0 }; + wchar_t wc; + wint_t wi; + switch (mbrtowc (&wc, &c, 1, &s)) + { + default: wi = wc; break; + case (size_t) -2: wi = WEOF; break; + case (size_t) -1: wi = uc; break; + } + d->mbrtowc_cache[uc] = wi; + } +#endif +} + +#if MBS_SUPPORT +/* Given the dfa D, store into *PWC the result of converting the + leading bytes of the multibyte buffer S of length N bytes, updating + the conversion state in *MBS. On conversion error, convert just a + single byte as-is. Return the number of bytes converted. + + This differs from mbrtowc (PWC, S, N, MBS) as follows: + + * Extra arg D, containing an mbrtowc_cache for speed. + * N must be at least 1. + * S[N - 1] must be a sentinel byte. + * Shift encodings are not supported. + * The return value is always in the range 1..N. + * *MBS is always valid afterwards. + * *PWC is always set to something. */ +static size_t +mbs_to_wchar (struct dfa *d, wchar_t *pwc, char const *s, size_t n, + mbstate_t *mbs) +{ + unsigned char uc = s[0]; + wint_t wc = d->mbrtowc_cache[uc]; + + if (wc == WEOF) + { + size_t nbytes = mbrtowc (pwc, s, n, mbs); + if (0 < nbytes && nbytes < (size_t) -2) + return nbytes; + memset (mbs, 0, sizeof *mbs); + wc = uc; + } + + *pwc = wc; + return 1; +} +#endif #ifdef DEBUG @@ -731,67 +807,39 @@ dfasyntax (reg_syntax_t bits, int fold, unsigned char eol) this may happen when folding case in weird Turkish locales where dotless i/dotted I are not included in the chosen character set. Return whether a bit was set in the charclass. */ -#if MBS_SUPPORT static bool setbit_wc (wint_t wc, charclass c) { +#if MBS_SUPPORT int b = wctob (wc); if (b == EOF) return false; setbit (b, c); return true; -} - -/* Set a bit in the charclass for the given single byte character, - if it is valid in the current character set. */ -static void -setbit_c (int b, charclass c) -{ - /* Do nothing if b is invalid in this character set. */ - if (MB_CUR_MAX > 1 && btowc (b) == WEOF) - return; - setbit (b, c); -} #else -# define setbit_c setbit -static inline bool -setbit_wc (wint_t wc, charclass c) -{ abort (); /*NOTREACHED*/ return false; -} #endif +} -/* Like setbit_c, but if case is folded, set both cases of a letter. For - MB_CUR_MAX > 1, the resulting charset is only used as an optimization, - and the caller takes care of setting the appropriate field of struct - mb_char_classes. */ +/* Set a bit for B and its case variants in the charclass C. + MB_CUR_MAX must be 1. */ static void setbit_case_fold_c (int b, charclass c) { - if (MB_CUR_MAX > 1) - { - wint_t wc = btowc (b); - if (wc == WEOF) - return; - setbit (b, c); - if (case_fold && iswalpha (wc)) - setbit_wc (iswupper (wc) ? towlower (wc) : towupper (wc), c); - } - else - { - setbit (b, c); - if (case_fold && isalpha (b)) - setbit_c (isupper (b) ? tolower (b) : toupper (b), c); - } + int ub = toupper (b); + int i; + for (i = 0; i < NOTCHAR; i++) + if (toupper (i) == ub) + setbit (i, c); } /* UTF-8 encoding allows some optimizations that we can't otherwise assume in a multibyte encoding. */ -static inline int +int using_utf8 (void) { static int utf8 = -1; @@ -811,6 +859,46 @@ using_utf8 (void) return utf8; } +/* Return true if the current locale is known to be a unibyte locale + without multicharacter collating sequences and where range + comparisons simply use the native encoding. These locales can be + processed more efficiently. */ + +static bool +using_simple_locale (void) +{ + /* True if the native character set is known to be compatible with + the C locale. The following test isn't perfect, but it's good + enough in practice, as only ASCII and EBCDIC are in common use + and this test correctly accepts ASCII and rejects EBCDIC. */ + enum { native_c_charset = + ('\b' == 8 && '\t' == 9 && '\n' == 10 && '\v' == 11 && '\f' == 12 + && '\r' == 13 && ' ' == 32 && '!' == 33 && '"' == 34 && '#' == 35 + && '%' == 37 && '&' == 38 && '\'' == 39 && '(' == 40 && ')' == 41 + && '*' == 42 && '+' == 43 && ',' == 44 && '-' == 45 && '.' == 46 + && '/' == 47 && '0' == 48 && '9' == 57 && ':' == 58 && ';' == 59 + && '<' == 60 && '=' == 61 && '>' == 62 && '?' == 63 && 'A' == 65 + && 'Z' == 90 && '[' == 91 && '\\' == 92 && ']' == 93 && '^' == 94 + && '_' == 95 && 'a' == 97 && 'z' == 122 && '{' == 123 && '|' == 124 + && '}' == 125 && '~' == 126) + }; + + if (! native_c_charset || MB_CUR_MAX > 1) + return false; + else + { + static int unibyte_c = -1; + if (unibyte_c < 0) + { + char const *locale = setlocale (LC_ALL, NULL); + unibyte_c = (!locale + || STREQ (locale, "C") + || STREQ (locale, "POSIX")); + } + return unibyte_c; + } +} + /* Lexical analyzer. All the dross that deals with the obnoxious GNU Regex syntax bits is located here. The poor, suffering reader is referred to the GNU Regex documentation for the @@ -827,7 +915,7 @@ static int minrep, maxrep; /* Repeat counts for {m,n}. */ static int cur_mb_len = 1; /* Length of the multibyte representation of wctok. */ /* These variables are used only if (MB_CUR_MAX > 1). */ -static mbstate_t mbs; /* Mbstate for mbrlen. */ +static mbstate_t mbs; /* mbstate for mbrtowc. */ static wchar_t wctok; /* Wide character representation of the current multibyte character. */ static unsigned char *mblen_buf;/* Correspond to the input buffer in dfaexec. @@ -864,32 +952,18 @@ static unsigned char const *buf_end; /* reference to end in dfaexec. */ else \ { \ wchar_t _wc; \ - cur_mb_len = mbrtowc (&_wc, lexptr, lexleft, &mbs); \ - if (cur_mb_len <= 0) \ - { \ - cur_mb_len = 1; \ - --lexleft; \ - (wc) = (c) = to_uchar (*lexptr++); \ - } \ - else \ - { \ - lexptr += cur_mb_len; \ - lexleft -= cur_mb_len; \ - (wc) = _wc; \ - (c) = wctob (wc); \ - } \ + size_t nbytes = mbs_to_wchar (dfa, &_wc, lexptr, lexleft, &mbs); \ + cur_mb_len = nbytes; \ + (wc) = _wc; \ + (c) = nbytes == 1 ? to_uchar (*lexptr) : EOF; \ + lexptr += nbytes; \ + lexleft -= nbytes; \ } \ } while (0) -# define FETCH(c, eoferr) \ - do { \ - wint_t wc; \ - FETCH_WC (c, wc, eoferr); \ - } while (0) - #else /* Note that characters become unsigned here. */ -# define FETCH(c, eoferr) \ +# define FETCH_WC(c, unused, eoferr) \ do { \ if (! lexleft) \ { \ @@ -902,14 +976,56 @@ static unsigned char const *buf_end; /* reference to end in dfaexec. */ --lexleft; \ } while (0) -# define FETCH_WC(c, unused, eoferr) FETCH (c, eoferr) - #endif /* MBS_SUPPORT */ #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif +/* The set of wchar_t values C such that there's a useful locale + somewhere where C != towupper (C) && C != towlower (towupper (C)). + For example, 0x00B5 (U+00B5 MICRO SIGN) is in this table, because + towupper (0x00B5) == 0x039C (U+039C GREEK CAPITAL LETTER MU), and + towlower (0x039C) == 0x03BC (U+03BC GREEK SMALL LETTER MU). */ +static short const lonesome_lower[] = + { + 0x00B5, 0x0131, 0x017F, 0x01C5, 0x01C8, 0x01CB, 0x01F2, 0x0345, + 0x03C2, 0x03D0, 0x03D1, 0x03D5, 0x03D6, 0x03F0, 0x03F1, + + /* U+03F2 GREEK LUNATE SIGMA SYMBOL lacks a specific uppercase + counterpart in locales predating Unicode 4.0.0 (April 2003). */ + 0x03F2, + + 0x03F5, 0x1E9B, 0x1FBE, + }; + +static_assert ((sizeof lonesome_lower / sizeof *lonesome_lower + 2 + == CASE_FOLDED_BUFSIZE), + "CASE_FOLDED_BUFSIZE is wrong"); + +/* Find the characters equal to C after case-folding, other than C + itself, and store them into FOLDED. Return the number of characters + stored. */ +int +case_folded_counterparts (wchar_t c, wchar_t folded[CASE_FOLDED_BUFSIZE]) +{ + int i; + int n = 0; + wint_t uc = towupper (c); + wint_t lc = towlower (uc); + if (uc != c) + folded[n++] = uc; + if (lc != uc && lc != c && towupper (lc) == uc) + folded[n++] = lc; + for (i = 0; i < sizeof lonesome_lower / sizeof *lonesome_lower; i++) + { + wint_t li = lonesome_lower[i]; + if (li != lc && li != uc && li != c && towupper (li) == uc) + folded[n++] = li; + } + return n; +} + typedef int predicate (int); /* The following list maps the names of the Posix named character classes @@ -928,7 +1044,7 @@ static const struct dfa_ctype prednames[] = { {"upper", isupper, false}, {"lower", islower, false}, {"digit", isdigit, true}, - {"xdigit", isxdigit, true}, + {"xdigit", isxdigit, false}, {"space", isspace, false}, {"punct", ispunct, false}, {"alnum", isalnum, false}, @@ -959,6 +1075,10 @@ parse_bracket_exp (void) int c, c1, c2; charclass ccl; + /* True if this is a bracket expression that dfaexec is known to + process correctly. */ + bool known_bracket_exp = true; + /* Used to warn about [:space:]. Bit 0 = first character is a colon. Bit 1 = last character is a colon. @@ -1000,6 +1120,7 @@ parse_bracket_exp (void) { FETCH_WC (c, wc, _("unbalanced [")); invert = 1; + known_bracket_exp = using_simple_locale (); } else invert = 0; @@ -1014,16 +1135,14 @@ parse_bracket_exp (void) we just treat it as a bunch of ordinary characters. We can do this because we assume regex has checked for syntax errors before dfa is ever called. */ - if (c == '[' && (syntax_bits & RE_CHAR_CLASSES)) + if (c == '[') { #define MAX_BRACKET_STRING_LEN 32 char str[MAX_BRACKET_STRING_LEN + 1]; FETCH_WC (c1, wc1, _("unbalanced [")); - /* If pattern contains '[[:', '[[.', or '[[='. */ - if (c1 == ':' - /* TODO: handle '[[.' and '[[=' also for MB_CUR_MAX == 1. */ - || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '='))) + if ((c1 == ':' && (syntax_bits & RE_CHAR_CLASSES)) + || c1 == '.' || c1 == '=') { size_t len = 0; for (;;) @@ -1042,7 +1161,10 @@ parse_bracket_exp (void) /* Fetch bracket. */ FETCH_WC (c, wc, _("unbalanced [")); if (c1 == ':') - /* build character class. */ + /* Build character class. POSIX allows character + classes to match multicharacter collating elements, + but the regex code does not support that, so do not + worry about that possibility. */ { char const *class = (case_fold && (STREQ (str, "upper") @@ -1064,30 +1186,11 @@ parse_bracket_exp (void) for (c2 = 0; c2 < NOTCHAR; ++c2) if (pred->func (c2)) - setbit_case_fold_c (c2, ccl); + setbit (c2, ccl); } + else + known_bracket_exp = false; - else if (MBS_SUPPORT && (c1 == '=' || c1 == '.')) - { - char *elem = xmemdup (str, len + 1); - - if (c1 == '=') - /* build equivalence class. */ - { - REALLOC_IF_NECESSARY (work_mbc->equivs, - equivs_al, work_mbc->nequivs + 1); - work_mbc->equivs[work_mbc->nequivs++] = elem; - } - - if (c1 == '.') - /* build collating element. */ - { - REALLOC_IF_NECESSARY (work_mbc->coll_elems, - coll_elems_al, - work_mbc->ncoll_elems + 1); - work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem; - } - } colon_warning_state |= 8; /* Fetch new lookahead character. */ @@ -1109,105 +1212,96 @@ parse_bracket_exp (void) /* build range characters. */ { FETCH_WC (c2, wc2, _("unbalanced [")); - if (c2 == ']') + + /* A bracket expression like [a-[.aa.]] matches an unknown set. + Treat it like [-a[.aa.]] while parsing it, and + remember that the set is unknown. */ + if (c2 == '[' && *lexptr == '.') { - /* In the case [x-], the - is an ordinary hyphen, - which is left in c1, the lookahead character. */ - lexptr -= cur_mb_len; - lexleft += cur_mb_len; + known_bracket_exp = false; + c2 = ']'; } - } - if (c1 == '-' && c2 != ']') - { - if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) - FETCH_WC (c2, wc2, _("unbalanced [")); - - if (MB_CUR_MAX > 1) + if (c2 != ']') { - /* When case folding map a range, say [m-z] (or even [M-z]) - to the pair of ranges, [m-z] [M-Z]. */ - REALLOC_IF_NECESSARY (work_mbc->range_sts, - range_sts_al, work_mbc->nranges + 1); - REALLOC_IF_NECESSARY (work_mbc->range_ends, - range_ends_al, work_mbc->nranges + 1); - work_mbc->range_sts[work_mbc->nranges] = - case_fold ? towlower (wc) : (wchar_t) wc; - work_mbc->range_ends[work_mbc->nranges++] = - case_fold ? towlower (wc2) : (wchar_t) wc2; - - if (case_fold && (iswalpha (wc) || iswalpha (wc2))) + if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) + FETCH_WC (c2, wc2, _("unbalanced [")); + + if (MB_CUR_MAX > 1) { + /* When case folding map a range, say [m-z] (or even [M-z]) + to the pair of ranges, [m-z] [M-Z]. Although this code + is wrong in multiple ways, it's never used in practice. + FIXME: Remove this (and related) unused code. */ REALLOC_IF_NECESSARY (work_mbc->range_sts, range_sts_al, work_mbc->nranges + 1); - work_mbc->range_sts[work_mbc->nranges] = towupper (wc); REALLOC_IF_NECESSARY (work_mbc->range_ends, range_ends_al, work_mbc->nranges + 1); - work_mbc->range_ends[work_mbc->nranges++] = towupper (wc2); - } - } - else - { -#ifdef GAWK - c1 = c; - if (case_fold) - { - c1 = tolower (c1); - c2 = tolower (c2); + work_mbc->range_sts[work_mbc->nranges] = + case_fold ? towlower (wc) : (wchar_t) wc; + work_mbc->range_ends[work_mbc->nranges++] = + case_fold ? towlower (wc2) : (wchar_t) wc2; + + if (case_fold && (iswalpha (wc) || iswalpha (wc2))) + { + REALLOC_IF_NECESSARY (work_mbc->range_sts, + range_sts_al, work_mbc->nranges + 1); + work_mbc->range_sts[work_mbc->nranges] = towupper (wc); + REALLOC_IF_NECESSARY (work_mbc->range_ends, + range_ends_al, work_mbc->nranges + 1); + work_mbc->range_ends[work_mbc->nranges++] = towupper (wc2); + } } - for (c = c1; c <= c2; c++) - setbit_case_fold_c (c, ccl); -#else - /* Defer to the system regex library about the meaning - of range expressions. */ - regex_t re; - char pattern[6] = { '[', 0, '-', 0, ']', 0 }; - char subject[2] = { 0, 0 }; - c1 = c; - if (case_fold) + else if (using_simple_locale ()) { - c1 = tolower (c1); - c2 = tolower (c2); + for (c1 = c; c1 <= c2; c1++) + setbit (c1, ccl); + if (case_fold) + { + int uc = toupper (c); + int uc2 = toupper (c2); + for (c1 = 0; c1 < NOTCHAR; c1++) + { + int uc1 = toupper (c1); + if (uc <= uc1 && uc1 <= uc2) + setbit (c1, ccl); + } + } } + else + known_bracket_exp = false; - pattern[1] = c1; - pattern[3] = c2; - regcomp (&re, pattern, REG_NOSUB); - for (c = 0; c < NOTCHAR; ++c) - { - if ((case_fold && isupper (c))) - continue; - subject[0] = c; - if (regexec (&re, subject, 0, NULL, 0) != REG_NOMATCH) - setbit_case_fold_c (c, ccl); - } - regfree (&re); -#endif + colon_warning_state |= 8; + FETCH_WC (c1, wc1, _("unbalanced [")); + continue; } - colon_warning_state |= 8; - FETCH_WC (c1, wc1, _("unbalanced [")); - continue; + /* In the case [x-], the - is an ordinary hyphen, + which is left in c1, the lookahead character. */ + lexptr -= cur_mb_len; + lexleft += cur_mb_len; } colon_warning_state |= (c == ':') ? 2 : 4; if (MB_CUR_MAX == 1) { - setbit_case_fold_c (c, ccl); + if (case_fold) + setbit_case_fold_c (c, ccl); + else + setbit (c, ccl); continue; } - if (case_fold && iswalpha (wc)) + if (case_fold) { - wc = towlower (wc); - if (!setbit_wc (wc, ccl)) - { - REALLOC_IF_NECESSARY (work_mbc->chars, chars_al, - work_mbc->nchars + 1); - work_mbc->chars[work_mbc->nchars++] = wc; - } - wc = towupper (wc); + wchar_t folded[CASE_FOLDED_BUFSIZE]; + int i, n = case_folded_counterparts (wc, folded); + REALLOC_IF_NECESSARY (work_mbc->chars, chars_al, + work_mbc->nchars + n); + for (i = 0; i < n; i++) + if (!setbit_wc (folded[i], ccl)) + work_mbc->chars[work_mbc->nchars++] = folded[i]; } if (!setbit_wc (wc, ccl)) { @@ -1221,6 +1315,9 @@ parse_bracket_exp (void) if (colon_warning_state == 7) dfawarn (_("character class syntax is [[:space:]], not [:space:]")); + if (! known_bracket_exp) + return BACKREF; + if (MB_CUR_MAX > 1) { static charclass zeroclass; @@ -1256,14 +1353,9 @@ lex (void) "if (backslash) ...". */ for (i = 0; i < 2; ++i) { - if (MB_CUR_MAX > 1) - { - FETCH_WC (c, wctok, NULL); - if ((int) c == EOF) - goto normal_char; - } - else - FETCH (c, NULL); + FETCH_WC (c, wctok, NULL); + if (c == (unsigned int) EOF) + goto normal_char; switch (c) { @@ -1638,10 +1730,11 @@ addtok (token t) work_mbc->nchars = 0; } - /* UTF-8 allows treating a simple, non-inverted MBCSET like a CSET. */ + /* If the MBCSET is non-inverted and doesn't include neither + character classes including multibyte characters, range + expressions, equivalence classes nor collating elements, + it can be replaced to a simple CSET. */ if (work_mbc->invert - || (!using_utf8 () && work_mbc->cset != -1) - || work_mbc->nchars != 0 || work_mbc->nch_classes != 0 || work_mbc->nranges != 0 || work_mbc->nequivs != 0 || work_mbc->ncoll_elems != 0) @@ -1656,7 +1749,6 @@ addtok (token t) that the mbcset is empty now. Do nothing in that case. */ if (work_mbc->cset != -1) { - assert (using_utf8 ()); addtok (CSET + work_mbc->cset); if (need_or) addtok (OR); @@ -1680,16 +1772,19 @@ static void addtok_wc (wint_t wc) { unsigned char buf[MB_LEN_MAX]; - mbstate_t s; + mbstate_t s = { 0 }; int i; - memset (&s, 0, sizeof s); - cur_mb_len = wcrtomb ((char *) buf, wc, &s); + size_t stored_bytes = wcrtomb ((char *) buf, wc, &s); - /* This is merely stop-gap. When cur_mb_len is 0 or negative, - buf[0] is undefined, yet skipping the addtok_mb call altogether - can result in heap corruption. */ - if (cur_mb_len <= 0) - buf[0] = 0; + if (stored_bytes != (size_t) -1) + cur_mb_len = stored_bytes; + else + { + /* This is merely stop-gap. buf[0] is undefined, yet skipping + the addtok_mb call altogether can corrupt the heap. */ + cur_mb_len = 1; + buf[0] = 0; + } addtok_mb (buf[0], cur_mb_len == 1 ? 3 : 1); for (i = 1; i < cur_mb_len; i++) @@ -1794,17 +1889,19 @@ add_utf8_anychar (void) static void atom (void) { - if (0) - { - /* empty */ - } - else if (MBS_SUPPORT && tok == WCHAR) + if (MBS_SUPPORT && tok == WCHAR) { - addtok_wc (case_fold ? towlower (wctok) : wctok); - if (case_fold && iswalpha (wctok)) + addtok_wc (wctok); + + if (case_fold) { - addtok_wc (towupper (wctok)); - addtok (OR); + wchar_t folded[CASE_FOLDED_BUFSIZE]; + int i, n = case_folded_counterparts (wctok, folded); + for (i = 0; i < n; i++) + { + addtok_wc (folded[i]); + addtok (OR); + } } tok = lex (); @@ -3308,43 +3405,26 @@ transit_state (struct dfa *d, state_num s, unsigned char const **pp) /* Initialize mblen_buf and inputwcs with data from the next line. */ static void -prepare_wc_buf (const char *begin, const char *end) +prepare_wc_buf (struct dfa *d, const char *begin, const char *end) { #if MBS_SUPPORT unsigned char eol = eolbyte; - size_t remain_bytes, i; + size_t i; + size_t ilim = end - begin + 1; buf_begin = (unsigned char *) begin; - remain_bytes = 0; - for (i = 0; i < end - begin + 1; i++) + for (i = 0; i < ilim; i++) { - if (remain_bytes == 0) - { - remain_bytes - = mbrtowc (inputwcs + i, begin + i, end - begin - i + 1, &mbs); - if (remain_bytes < 1 - || remain_bytes == (size_t) -1 - || remain_bytes == (size_t) -2 - || (remain_bytes == 1 && inputwcs[i] == (wchar_t) begin[i])) - { - remain_bytes = 0; - inputwcs[i] = (wchar_t) begin[i]; - mblen_buf[i] = 0; - if (begin[i] == eol) - break; - } - else - { - mblen_buf[i] = remain_bytes; - remain_bytes--; - } - } - else + size_t nbytes = mbs_to_wchar (d, inputwcs + i, begin + i, ilim - i, &mbs); + mblen_buf[i] = nbytes - (nbytes == 1); + if (begin[i] == eol) + break; + while (--nbytes != 0) { - mblen_buf[i] = remain_bytes; + i++; + mblen_buf[i] = nbytes; inputwcs[i] = 0; - remain_bytes--; } } @@ -3391,7 +3471,7 @@ dfaexec (struct dfa *d, char const *begin, char *end, MALLOC (mblen_buf, end - begin + 2); MALLOC (inputwcs, end - begin + 2); memset (&mbs, 0, sizeof (mbstate_t)); - prepare_wc_buf ((const char *) p, end); + prepare_wc_buf (d, (const char *) p, end); } for (;;) @@ -3481,7 +3561,7 @@ dfaexec (struct dfa *d, char const *begin, char *end, ++*count; if (d->mb_cur_max > 1) - prepare_wc_buf ((const char *) p, end); + prepare_wc_buf (d, (const char *) p, end); } /* Check if we've run off the end of the buffer. */ @@ -3600,6 +3680,7 @@ void dfacomp (char const *s, size_t len, struct dfa *d, int searchflag) { dfainit (d); + dfambcache (d); dfaparse (s, len, d); dfamust (d); dfaoptimize (d); @@ -99,3 +99,13 @@ extern void dfawarn (const char *); takes a single argument, a NUL-terminated string describing the error. The user must supply a dfaerror. */ extern _Noreturn void dfaerror (const char *); + +extern int using_utf8 (void); + +/* Maximum number of characters that can be the case-folded + counterparts of a single character, not counting the character + itself. This is 1 for towupper, 1 for towlower, and 1 for each + entry in LONESOME_LOWER; see dfa.c. */ +enum { CASE_FOLDED_BUFSIZE = 1 + 1 + 19 }; + +extern int case_folded_counterparts (wchar_t, wchar_t[CASE_FOLDED_BUFSIZE]); diff --git a/doc/ChangeLog b/doc/ChangeLog index 52574058..d4f6881b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,79 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * texinfo.tex: Update to latest. + * awkcard.in: Update copyright, patchlevel in download. + * gawktexi.in: Update patchlevel, update month, spell check. + +2014-03-30 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Cleanups to docbook, finish math stuff. + +2014-03-28 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Minor cleanups to the indexing. + + Unrelated: + + * gawktexi.in: Merge in changes needed for creating valid + DocBook XML. Works with post-5.2 Texinfo and dblatex! + +2014-03-27 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Finish the massive indexing improvements such that + functions are indexed the way I want in TeX and the way Eli + wants in Info. + + Unrelated: + + * gawktexi.in: Add a note in extension chapter that lookup of + PROCINFO can fail. + +2014-03-27 Eli Zaretskii <eliz@gnu.org> + + * gawktexi.in: First round of massive indexing improvements. + +2014-03-27 Antonio Giovanni Colombo <azc100@gmail.com> + + * gawktexi.in: Redo all the examples using BBS-list to a different + file that doesn't use out-of-date concepts. + +2014-03-10 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Finish indexing improvements. (For now, anyway.) + + Unrelated: + + * gawk.1: Document the quote flag! (Better late than never.) + * awkcard.in: Update documentation of quote flag. + +2014-03-08 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Minor edits to the discussion of the memory allocation + functions. + +2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * gawktexi.in: Document new extension API functions api_malloc, + api_calloc, api_realloc, and api_free. + +2014-03-07 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Indexing improvements. + +2014-03-02 John E. Malmberg <wb8tyw@qsl.net> + + * gawktexi.in: Remove paragraph about obsolete VMS + compilers. Update reference about building PCSI kit. + +2014-02-27 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Lots of small fixes throughout, update of + profiling output. Finished fixes needed before a release. + 2014-02-20 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Add a quote to the alarm clock program. diff --git a/doc/awkcard.in b/doc/awkcard.in index 610032b7..ca28f0a7 100644 --- a/doc/awkcard.in +++ b/doc/awkcard.in @@ -1,7 +1,7 @@ .\" AWK Reference Card --- Arnold Robbins, arnold@skeeve.com .\" .\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, -.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 +.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014 .\" Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of @@ -100,7 +100,7 @@ Brian Kernighan and Michael Brennan who reviewed it. \*(CD .SL .nf -\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2013 +\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2014 Free Software Foundation, Inc. .nf .BT @@ -1493,7 +1493,8 @@ Only has an effect when the field width is wider than the value to be printed. T} \*(CB\*(FC'\*(FR T{ -Use the locale's thousands separator for \*(FC%d\fP, \*(FC%i\fP, and \*(FC%u\fP.\*(CD +Use the locale's thousands separator and decimal +point characters.\*(CD T} \*(FIwidth\fP T{ Pad the field to this width. The field is normally @@ -1938,7 +1939,7 @@ to use the current domain.\*(CB .ES .nf \*(CDHost: \*(FCftp.gnu.org\*(FR -File: \*(FC/gnu/gawk/gawk-4.1.0.tar.gz\fP +File: \*(FC/gnu/gawk/gawk-4.1.1.tar.gz\fP .in +.2i .fi GNU \*(AK (\*(GK). There may be a later version. @@ -1968,8 +1969,8 @@ maintains it.\*(CX .\" --- Copying Permissions .ES .fi -\*(CDCopyright \(co 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -2007, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +\*(CDCopyright \(co 1996\(en2005, +2007, 2009\(en2014 Free Software Foundation, Inc. .sp .5 Permission is granted to make and distribute verbatim copies of this reference card provided the copyright notice and this permission notice @@ -13,7 +13,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "Jan 28 2014" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Mar 08 2014" "Free Software Foundation" "Utility Commands" .SH NAME gawk \- pattern scanning and processing language .SH SYNOPSIS @@ -2454,6 +2454,15 @@ This applies only to the numeric output formats. This flag only has an effect when the field width is wider than the value to be printed. .TP +.B ' +A single quote character instructs +.I gawk +to insert the locale's thousands-separator character +into decimal numbers, and to also use the locale's +decimal point character with floating point formats. +This requires correct locale support in the C library +and in the definition of the current locale. +.TP .I width The field should be padded to this width. The field is normally padded with spaces. With the diff --git a/doc/gawk.info b/doc/gawk.info index 5deb6482..aad73f7a 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -9,13 +9,12 @@ START-INFO-DIR-ENTRY * awk: (gawk)Invoking gawk. Text scanning and processing. END-INFO-DIR-ENTRY - Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014 + Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014 Free Software Foundation, Inc. This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's -Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU +Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU implementation of AWK. Permission is granted to copy, distribute and/or modify this document @@ -41,13 +40,12 @@ General Introduction This file documents `awk', a program that you can use to select particular records in a file and perform operations upon them. - Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014 + Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014 Free Software Foundation, Inc. This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's -Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU +Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU implementation of AWK. Permission is granted to copy, distribute and/or modify this document @@ -522,6 +520,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with `gawk'. @@ -584,7 +583,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) version of `awk'. * POSIX/GNU:: The extensions in `gawk' not in POSIX `awk'. -* Feature History:: The history of the features in `gawk'. +* Feature History:: The history of the features in + `gawk'. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -1766,30 +1766,30 @@ File: gawk.info, Node: Sample Data Files, Next: Very Simple, Prev: Running ga =============================== Many of the examples in this Info file take their input from two sample -data files. The first, `BBS-list', represents a list of computer -bulletin board systems together with information about those systems. +data files. The first, `mail-list', represents a list of peoples' names +together with their email addresses and information about those people. The second data file, called `inventory-shipped', contains information about monthly shipments. In both files, each line is considered to be one "record". - In the data file `BBS-list', each record contains the name of a -computer bulletin board, its phone number, the board's baud rate(s), -and a code for the number of hours it is operational. An `A' in the -last column means the board operates 24 hours a day. A `B' in the last -column means the board only operates on evening and weekend hours. A -`C' means the board operates only on weekends: - - aardvark 555-5553 1200/300 B - alpo-net 555-3412 2400/1200/300 A - barfly 555-7685 1200/300 A - bites 555-1675 2400/1200/300 A - camelot 555-0542 300 C - core 555-2912 1200/300 C - fooey 555-1234 2400/1200/300 B - foot 555-6699 1200/300 B - macfoo 555-6480 1200/300 A - sdace 555-3430 2400/1200/300 A - sabafoo 555-2127 1200/300 C + In the data file `mail-list', each record contains the name of a +person, his/her phone number, his/her email-address, and a code for +their relationship with the author of the list. An `A' in the last +column means that the person is an acquaintance. An `F' in the last +column means that the person is a friend. An `R' means that the person +is a relative: + + Amelia 555-5553 amelia.zodiacusque@gmail.com F + Anthony 555-3412 anthony.asserturo@hotmail.com A + Becky 555-7685 becky.algebrarum@gmail.com A + Bill 555-1675 bill.drowning@hotmail.com A + Broderick 555-0542 broderick.aliquotiens@yahoo.com R + Camilla 555-2912 camilla.infusarum@skynet.be R + Fabius 555-1234 fabius.undevicesimus@ucb.edu F + Julie 555-6699 julie.perscrutabor@skeeve.com F + Martin 555-6480 martin.codicibus@hotmail.com A + Samuel 555-3430 samuel.lanceolis@shu.edu A + Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R The data file `inventory-shipped' represents information about shipments during the year. Each record contains the month, the number @@ -1826,32 +1826,32 @@ File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files, ======================== The following command runs a simple `awk' program that searches the -input file `BBS-list' for the character string `foo' (a grouping of +input file `mail-list' for the character string `li' (a grouping of characters is usually called a "string"; the term "string" is based on similar usage in English, such as "a string of pearls," or "a string of cars in a train"): - awk '/foo/ { print $0 }' BBS-list + awk '/li/ { print $0 }' mail-list -When lines containing `foo' are found, they are printed because +When lines containing `li' are found, they are printed because `print $0' means print the current line. (Just `print' by itself means the same thing, so we could have written that instead.) - You will notice that slashes (`/') surround the string `foo' in the -`awk' program. The slashes indicate that `foo' is the pattern to -search for. This type of pattern is called a "regular expression", -which is covered in more detail later (*note Regexp::). The pattern is -allowed to match parts of words. There are single quotes around the -`awk' program so that the shell won't interpret any of it as special -shell characters. + You will notice that slashes (`/') surround the string `li' in the +`awk' program. The slashes indicate that `li' is the pattern to search +for. This type of pattern is called a "regular expression", which is +covered in more detail later (*note Regexp::). The pattern is allowed +to match parts of words. There are single quotes around the `awk' +program so that the shell won't interpret any of it as special shell +characters. Here is what this program prints: - $ awk '/foo/ { print $0 }' BBS-list - -| fooey 555-1234 2400/1200/300 B - -| foot 555-6699 1200/300 B - -| macfoo 555-6480 1200/300 A - -| sabafoo 555-2127 1200/300 C + $ awk '/li/ { print $0 }' mail-list + -| Amelia 555-5553 amelia.zodiacusque@gmail.com F + -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R + -| Julie 555-6699 julie.perscrutabor@skeeve.com F + -| Samuel 555-3430 samuel.lanceolis@shu.edu A In an `awk' rule, either the pattern or the action can be omitted, but not both. If the pattern is omitted, then the action is performed @@ -1860,7 +1860,7 @@ is to print all lines that match the pattern. Thus, we could leave out the action (the `print' statement and the curly braces) in the previous example and the result would be the same: -`awk' prints all lines matching the pattern `foo'. By comparison, +`awk' prints all lines matching the pattern `li'. By comparison, omitting the `print' statement but retaining the curly braces makes an empty action that does nothing (i.e., no lines are printed). @@ -1966,25 +1966,19 @@ the string `21'. If a line contains both strings, it is printed twice, once by each rule. This is what happens if we run this program on our two sample data -files, `BBS-list' and `inventory-shipped': +files, `mail-list' and `inventory-shipped': $ awk '/12/ { print $0 } - > /21/ { print $0 }' BBS-list inventory-shipped - -| aardvark 555-5553 1200/300 B - -| alpo-net 555-3412 2400/1200/300 A - -| barfly 555-7685 1200/300 A - -| bites 555-1675 2400/1200/300 A - -| core 555-2912 1200/300 C - -| fooey 555-1234 2400/1200/300 B - -| foot 555-6699 1200/300 B - -| macfoo 555-6480 1200/300 A - -| sdace 555-3430 2400/1200/300 A - -| sabafoo 555-2127 1200/300 C - -| sabafoo 555-2127 1200/300 C + > /21/ { print $0 }' mail-list inventory-shipped + -| Anthony 555-3412 anthony.asserturo@hotmail.com A + -| Camilla 555-2912 camilla.infusarum@skynet.be R + -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F + -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R + -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R -| Jan 21 36 64 620 -| Apr 21 70 74 514 -Note how the line beginning with `sabafoo' in `BBS-list' was printed +Note how the line beginning with `Jean-Paul' in `mail-list' was printed twice, once for each rule. @@ -2060,7 +2054,7 @@ Most often, each line in an `awk' program is a separate statement or separate rule, like this: awk '/12/ { print $0 } - /21/ { print $0 }' BBS-list inventory-shipped + /21/ { print $0 }' mail-list inventory-shipped However, `gawk' ignores newlines after any of the following symbols and keywords: @@ -2480,7 +2474,7 @@ The following list describes options mandated by the POSIX standard: `--bignum' Force arbitrary precision arithmetic on numbers. This option has no effect if `gawk' is not compiled to use the GNU MPFR and MP - libraries (*note Arbitrary Precision Arithmetic::). + libraries (*note Gawk and MPFR::). `-n' `--non-decimal-data' @@ -2748,13 +2742,14 @@ on the command-line with the `-f' option. In most `awk' implementations, you must supply a precise path name for each program file, unless the file is in the current directory. But in `gawk', if the file name supplied to the `-f' or `-i' options does not contain a -`/', then `gawk' searches a list of directories (called the "search -path"), one by one, looking for a file with the specified name. +directory separator `/', then `gawk' searches a list of directories +(called the "search path"), one by one, looking for a file with the +specified name. The search path is a string consisting of directory names separated by -colons. `gawk' gets its search path from the `AWKPATH' environment +colons(1). `gawk' gets its search path from the `AWKPATH' environment variable. If that variable does not exist, `gawk' uses a default path, -`.:/usr/local/share/awk'.(1) +`.:/usr/local/share/awk'.(2) The search path feature is particularly useful for building libraries of useful `awk' functions. The library files can be placed in a @@ -2795,7 +2790,9 @@ found, and `gawk' no longer needs to use `AWKPATH'. ---------- Footnotes ---------- - (1) Your version of `gawk' may use a different directory; it will + (1) Semicolons on MS-Windows and MS-DOS. + + (2) Your version of `gawk' may use a different directory; it will depend upon how `gawk' was built and installed. The actual directory is the value of `$(datadir)' generated when `gawk' was configured. You probably don't need to worry about this, though. @@ -3105,14 +3102,14 @@ A regular expression can be used as a pattern by enclosing it in slashes. Then the regular expression is tested against the entire text of each record. (Normally, it only needs to match some part of the text in order to succeed.) For example, the following prints the -second field of each record that contains the string `foo' anywhere in +second field of each record that contains the string `li' anywhere in it: - $ awk '/foo/ { print $2 }' BBS-list - -| 555-1234 + $ awk '/li/ { print $2 }' mail-list + -| 555-5553 + -| 555-0542 -| 555-6699 - -| 555-6480 - -| 555-2127 + -| 555-3430 Regular expressions can also be used in matching expressions. These expressions allow you to specify the string to match against; it need @@ -3920,67 +3917,82 @@ processed, so that the very first record is read with the proper separator. To do this, use the special `BEGIN' pattern (*note BEGIN/END::). For example: - awk 'BEGIN { RS = "/" } - { print $0 }' BBS-list - -changes the value of `RS' to `"/"', before reading any input. This is -a string whose first character is a slash; as a result, records are -separated by slashes. Then the input file is read, and the second rule -in the `awk' program (the action with no pattern) prints each record. -Because each `print' statement adds a newline at the end of its output, -this `awk' program copies the input with each slash changed to a -newline. Here are the results of running the program on `BBS-list': - - $ awk 'BEGIN { RS = "/" } - > { print $0 }' BBS-list - -| aardvark 555-5553 1200 - -| 300 B - -| alpo-net 555-3412 2400 - -| 1200 - -| 300 A - -| barfly 555-7685 1200 - -| 300 A - -| bites 555-1675 2400 - -| 1200 - -| 300 A - -| camelot 555-0542 300 C - -| core 555-2912 1200 - -| 300 C - -| fooey 555-1234 2400 - -| 1200 - -| 300 B - -| foot 555-6699 1200 - -| 300 B - -| macfoo 555-6480 1200 - -| 300 A - -| sdace 555-3430 2400 - -| 1200 - -| 300 A - -| sabafoo 555-2127 1200 - -| 300 C + awk 'BEGIN { RS = "u" } + { print $0 }' mail-list + +changes the value of `RS' to `u', before reading any input. This is a +string whose first character is the letter "u;" as a result, records +are separated by the letter "u." Then the input file is read, and the +second rule in the `awk' program (the action with no pattern) prints +each record. Because each `print' statement adds a newline at the end +of its output, this `awk' program copies the input with each `u' +changed to a newline. Here are the results of running the program on +`mail-list': + + $ awk 'BEGIN { RS = "u" } + > { print $0 }' mail-list + -| Amelia 555-5553 amelia.zodiac + -| sq + -| e@gmail.com F + -| Anthony 555-3412 anthony.assert + -| ro@hotmail.com A + -| Becky 555-7685 becky.algebrar + -| m@gmail.com A + -| Bill 555-1675 bill.drowning@hotmail.com A + -| Broderick 555-0542 broderick.aliq + -| otiens@yahoo.com R + -| Camilla 555-2912 camilla.inf + -| sar + -| m@skynet.be R + -| Fabi + -| s 555-1234 fabi + -| s. + -| ndevicesim + -| s@ + -| cb.ed + -| F + -| J + -| lie 555-6699 j + -| lie.perscr + -| tabor@skeeve.com F + -| Martin 555-6480 martin.codicib + -| s@hotmail.com A + -| Sam + -| el 555-3430 sam + -| el.lanceolis@sh + -| .ed + -| A + -| Jean-Pa + -| l 555-2127 jeanpa + -| l.campanor + -| m@ny + -| .ed + -| R -| -Note that the entry for the `camelot' BBS is not split. In the -original data file (*note Sample Data Files::), the line looks like -this: +Note that the entry for the name `Bill' is not split. In the original +data file (*note Sample Data Files::), the line looks like this: - camelot 555-0542 300 C + Bill 555-1675 bill.drowning@hotmail.com A -It has one baud rate only, so there are no slashes in the record, -unlike the others which have two or more baud rates. In fact, this -record is treated as part of the record for the `core' BBS; the newline +It contains no `u' so there is no reason to split the record, unlike +the others which have one or more occurrences of the `u'. In fact, +this record is treated as part of the previous record; the newline separating them in the output is the original newline in the data file, not the one added by `awk' when it printed the record! Another way to change the record separator is on the command line, using the variable-assignment feature (*note Other Arguments::): - awk '{ print $0 }' RS="/" BBS-list + awk '{ print $0 }' RS="u" mail-list -This sets `RS' to `/' before processing `BBS-list'. +This sets `RS' to `u' before processing `mail-list'. - Using an unusual character such as `/' for the record separator -produces correct behavior in the vast majority of cases. + Using an alphabetic character such as `u' for the record separator +is highly likely to produce strange results. Using an unusual +character such as `/' is more likely to produce correct behavior in the +majority of cases, but there are no guarantees. The moral is: Know Your +Data. There is one unusual case, that occurs when `gawk' is being fully POSIX-compliant (*note Options::). Then, the following (extreme) @@ -4149,26 +4161,24 @@ get the empty string. (If used in a numeric operation, you get zero.) field, is a special case: it represents the whole input record when you are not interested in specific fields. Here are some more examples: - $ awk '$1 ~ /foo/ { print $0 }' BBS-list - -| fooey 555-1234 2400/1200/300 B - -| foot 555-6699 1200/300 B - -| macfoo 555-6480 1200/300 A - -| sabafoo 555-2127 1200/300 C + $ awk '$1 ~ /li/ { print $0 }' mail-list + -| Amelia 555-5553 amelia.zodiacusque@gmail.com F + -| Julie 555-6699 julie.perscrutabor@skeeve.com F -This example prints each record in the file `BBS-list' whose first -field contains the string `foo'. The operator `~' is called a -"matching operator" (*note Regexp Usage::); it tests whether a string -(here, the field `$1') matches a given regular expression. +This example prints each record in the file `mail-list' whose first +field contains the string `li'. The operator `~' is called a "matching +operator" (*note Regexp Usage::); it tests whether a string (here, the +field `$1') matches a given regular expression. - By contrast, the following example looks for `foo' in _the entire + By contrast, the following example looks for `li' in _the entire record_ and prints the first field and the last field for each matching input record: - $ awk '/foo/ { print $1, $NF }' BBS-list - -| fooey B - -| foot B - -| macfoo A - -| sabafoo C + $ awk '/li/ { print $1, $NF }' mail-list + -| Amelia F + -| Broderick R + -| Julie F + -| Samuel A ---------- Footnotes ---------- @@ -4196,16 +4206,16 @@ For the twentieth record, field number 20 is printed; most likely, the record has fewer than 20 fields, so this prints a blank line. Here is another example of using expressions as field numbers: - awk '{ print $(2*2) }' BBS-list + awk '{ print $(2*2) }' mail-list `awk' evaluates the expression `(2*2)' and uses its value as the number of the field to print. The `*' sign represents multiplication, so the expression `2*2' evaluates to four. The parentheses are used so that the multiplication is done before the `$' operation; they are necessary whenever there is a binary operator in the field-number -expression. This example, then, prints the hours of operation (the -fourth field) for every line of the file `BBS-list'. (All of the `awk' -operators are listed, in order of decreasing precedence, in *note +expression. This example, then, prints the type of relationship (the +fourth field) for every line of the file `mail-list'. (All of the +`awk' operators are listed, in order of decreasing precedence, in *note Precedence::.) If the field number you compute is zero, you get the entire record. @@ -4602,53 +4612,46 @@ type `-F\t' at the shell, without any quotes, the `\' gets deleted, so TABs and not `t's. Use `-v FS="t"' or `-F"[t]"' on the command line if you really do want to separate your fields with `t's. - As an example, let's use an `awk' program file called `baud.awk' -that contains the pattern `/300/' and the action `print $1': + As an example, let's use an `awk' program file called `edu.awk' that +contains the pattern `/edu/' and the action `print $1': - /300/ { print $1 } + /edu/ { print $1 } Let's also set `FS' to be the `-' character and run the program on -the file `BBS-list'. The following command prints a list of the names -of the bulletin boards that operate at 300 baud and the first three +the file `mail-list'. The following command prints a list of the names +of the people that work at or attend a university, and the first three digits of their phone numbers: - $ awk -F- -f baud.awk BBS-list - -| aardvark 555 - -| alpo - -| barfly 555 - -| bites 555 - -| camelot 555 - -| core 555 - -| fooey 555 - -| foot 555 - -| macfoo 555 - -| sdace 555 - -| sabafoo 555 - -Note the second line of output. The second line in the original file + $ awk -F- -f edu.awk mail-list + -| Fabius 555 + -| Samuel 555 + -| Jean + +Note the third line of output. The third line in the original file looked like this: - alpo-net 555-3412 2400/1200/300 A + Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R - The `-' as part of the system's name was used as the field + The `-' as part of the person's name was used as the field separator, instead of the `-' in the phone number that was originally intended. This demonstrates why you have to be careful in choosing your field and record separators. Perhaps the most common use of a single character as the field separator occurs when processing the Unix system password file. On -many Unix systems, each user has a separate entry in the system password -file, one line per user. The information in these lines is separated -by colons. The first field is the user's login name and the second is -the user's (encrypted or shadow) password. A password file entry might -look like this: +many Unix systems, each user has a separate entry in the system +password file, one line per user. The information in these lines is +separated by colons. The first field is the user's login name and the +second is the user's encrypted or shadow password. (A shadow password +is indicated by the presence of a single `x' in the second field.) A +password file entry might look like this: - arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash + arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash The following program searches the system password file and prints -the entries for users who have no password: +the entries for users whose full name is not indicated: - awk -F: '$2 == ""' /etc/passwd + awk -F: '$5 == ""' /etc/passwd File: gawk.info, Node: Full Line Fields, Next: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators @@ -5834,13 +5837,29 @@ prints the first and second fields of each input record, separated by a semicolon, with a blank line added after each newline: $ awk 'BEGIN { OFS = ";"; ORS = "\n\n" } - > { print $1, $2 }' BBS-list - -| aardvark;555-5553 + > { print $1, $2 }' mail-list + -| Amelia;555-5553 -| - -| alpo-net;555-3412 + -| Anthony;555-3412 + -| + -| Becky;555-7685 + -| + -| Bill;555-1675 + -| + -| Broderick;555-0542 + -| + -| Camilla;555-2912 + -| + -| Fabius;555-1234 + -| + -| Julie;555-6699 + -| + -| Martin;555-6480 + -| + -| Samuel;555-3430 + -| + -| Jean-Paul;555-2127 -| - -| barfly;555-7685 - ... If the value of `ORS' does not contain a newline, the program's output runs together on a single line. @@ -6209,25 +6228,25 @@ File: gawk.info, Node: Printf Examples, Prev: Format Modifiers, Up: Printf The following simple example shows how to use `printf' to make an aligned table: - awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list + awk '{ printf "%-10s %s\n", $1, $2 }' mail-list -This command prints the names of the bulletin boards (`$1') in the file -`BBS-list' as a string of 10 characters that are left-justified. It +This command prints the names of the people (`$1') in the file +`mail-list' as a string of 10 characters that are left-justified. It also prints the phone numbers (`$2') next on the line. This produces an aligned two-column table of names and phone numbers, as shown here: - $ awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list - -| aardvark 555-5553 - -| alpo-net 555-3412 - -| barfly 555-7685 - -| bites 555-1675 - -| camelot 555-0542 - -| core 555-2912 - -| fooey 555-1234 - -| foot 555-6699 - -| macfoo 555-6480 - -| sdace 555-3430 - -| sabafoo 555-2127 + $ awk '{ printf "%-10s %s\n", $1, $2 }' mail-list + -| Amelia 555-5553 + -| Anthony 555-3412 + -| Becky 555-7685 + -| Bill 555-1675 + -| Broderick 555-0542 + -| Camilla 555-2912 + -| Fabius 555-1234 + -| Julie 555-6699 + -| Martin 555-6480 + -| Samuel 555-3430 + -| Jean-Paul 555-2127 In this case, the phone numbers had to be printed as strings because the numbers are separated by a dash. Printing the phone numbers as @@ -6245,14 +6264,14 @@ beginning of the `awk' program: awk 'BEGIN { print "Name Number" print "---- ------" } - { printf "%-10s %s\n", $1, $2 }' BBS-list + { printf "%-10s %s\n", $1, $2 }' mail-list The above example mixes `print' and `printf' statements in the same program. Using just `printf' statements can produce the same results: awk 'BEGIN { printf "%-10s %s\n", "Name", "Number" printf "%-10s %s\n", "----", "------" } - { printf "%-10s %s\n", $1, $2 }' BBS-list + { printf "%-10s %s\n", $1, $2 }' mail-list Printing each column heading with the same format specification used for the column elements ensures that the headings are aligned just like @@ -6264,7 +6283,7 @@ be emphasized by storing it in a variable, like this: awk 'BEGIN { format = "%-10s %s\n" printf format, "Name", "Number" printf format, "----", "------" } - { printf format, $1, $2 }' BBS-list + { printf format, $1, $2 }' mail-list At this point, it would be a worthwhile exercise to use the `printf' statement to line up the headings and table data for the @@ -6304,19 +6323,19 @@ work identically for `printf': the same OUTPUT-FILE do not erase OUTPUT-FILE, but append to it. (This is different from how you use redirections in shell scripts.) If OUTPUT-FILE does not exist, it is created. For example, here - is how an `awk' program can write a list of BBS names to one file - named `name-list', and a list of phone numbers to another file + is how an `awk' program can write a list of peoples' names to one + file named `name-list', and a list of phone numbers to another file named `phone-list': $ awk '{ print $2 > "phone-list" - > print $1 > "name-list" }' BBS-list + > print $1 > "name-list" }' mail-list $ cat phone-list -| 555-5553 -| 555-3412 ... $ cat name-list - -| aardvark - -| alpo-net + -| Amelia + -| Anthony ... Each output file contains one name or number per line. @@ -6337,12 +6356,12 @@ work identically for `printf': The redirection argument COMMAND is actually an `awk' expression. Its value is converted to a string whose contents give the shell command to be run. For example, the following produces two files, - one unsorted list of BBS names, and one list sorted in reverse + one unsorted list of peoples' names, and one list sorted in reverse alphabetical order: awk '{ print $1 > "names.unsorted" command = "sort -r > names.sorted" - print $1 | command }' BBS-list + print $1 | command }' mail-list The unsorted list is written with an ordinary redirection, while the sorted list is written by piping through the `sort' utility. @@ -7072,16 +7091,16 @@ assignment is performed at a time determined by its position among the input file arguments--after the processing of the preceding input file argument. For example: - awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list + awk '{ print $n }' n=4 inventory-shipped n=2 mail-list prints the value of field number `n' for all input records. Before the first file is read, the command line sets the variable `n' equal to four. This causes the fourth field to be printed in lines from `inventory-shipped'. After the first file has finished, but before the second file is started, `n' is set to two, so that the second field is -printed in lines from `BBS-list': +printed in lines from `mail-list': - $ awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list + $ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list -| 15 -| 24 ... @@ -7342,17 +7361,17 @@ a specific operator to represent it. Instead, concatenation is performed by writing expressions next to one another, with no operator. For example: - $ awk '{ print "Field number one: " $1 }' BBS-list - -| Field number one: aardvark - -| Field number one: alpo-net + $ awk '{ print "Field number one: " $1 }' mail-list + -| Field number one: Amelia + -| Field number one: Anthony ... Without the space in the string constant after the `:', the line runs together. For example: - $ awk '{ print "Field number one:" $1 }' BBS-list - -| Field number one:aardvark - -| Field number one:alpo-net + $ awk '{ print "Field number one:" $1 }' mail-list + -| Field number one:Amelia + -| Field number one:Anthony ... Because string concatenation does not have an explicit operator, it @@ -7998,9 +8017,9 @@ Boolean operators are: `BOOLEAN1 && BOOLEAN2' True if both BOOLEAN1 and BOOLEAN2 are true. For example, the following statement prints the current input record if it contains - both `2400' and `foo': + both `edu' and `li': - if ($0 ~ /2400/ && $0 ~ /foo/) print + if ($0 ~ /edu/ && $0 ~ /li/) print The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is true. This can make a difference when BOOLEAN2 contains expressions that @@ -8011,9 +8030,9 @@ Boolean operators are: `BOOLEAN1 || BOOLEAN2' True if at least one of BOOLEAN1 or BOOLEAN2 is true. For example, the following statement prints all records in the input - that contain _either_ `2400' or `foo' or both: + that contain _either_ `edu' or `li' or both: - if ($0 ~ /2400/ || $0 ~ /foo/) print + if ($0 ~ /edu/ || $0 ~ /li/) print The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is false. This can make a difference when BOOLEAN2 contains expressions that @@ -8433,56 +8452,53 @@ operand is either a constant regular expression enclosed in slashes (`/REGEXP/'), or any expression whose string value is used as a dynamic regular expression (*note Computed Regexps::). The following example prints the second field of each input record whose first field is -precisely `foo': +precisely `li': - $ awk '$1 == "foo" { print $2 }' BBS-list + $ awk '$1 == "li" { print $2 }' mail-list -(There is no output, because there is no BBS site with the exact name -`foo'.) Contrast this with the following regular expression match, -which accepts any record with a first field that contains `foo': +(There is no output, because there is no person with the exact name +`li'.) Contrast this with the following regular expression match, which +accepts any record with a first field that contains `li': - $ awk '$1 ~ /foo/ { print $2 }' BBS-list - -| 555-1234 + $ awk '$1 ~ /foo/ { print $2 }' mail-list + -| 555-5553 -| 555-6699 - -| 555-6480 - -| 555-2127 A regexp constant as a pattern is also a special case of an -expression pattern. The expression `/foo/' has the value one if `foo' -appears in the current input record. Thus, as a pattern, `/foo/' -matches any record containing `foo'. +expression pattern. The expression `/li/' has the value one if `li' +appears in the current input record. Thus, as a pattern, `/li/' matches +any record containing `li'. Boolean expressions are also commonly used as patterns. Whether the pattern matches an input record depends on whether its subexpressions match. For example, the following command prints all the records in -`BBS-list' that contain both `2400' and `foo': - - $ awk '/2400/ && /foo/' BBS-list - -| fooey 555-1234 2400/1200/300 B - - The following command prints all records in `BBS-list' that contain -_either_ `2400' or `foo' (or both, of course): - - $ awk '/2400/ || /foo/' BBS-list - -| alpo-net 555-3412 2400/1200/300 A - -| bites 555-1675 2400/1200/300 A - -| fooey 555-1234 2400/1200/300 B - -| foot 555-6699 1200/300 B - -| macfoo 555-6480 1200/300 A - -| sdace 555-3430 2400/1200/300 A - -| sabafoo 555-2127 1200/300 C - - The following command prints all records in `BBS-list' that do _not_ -contain the string `foo': - - $ awk '! /foo/' BBS-list - -| aardvark 555-5553 1200/300 B - -| alpo-net 555-3412 2400/1200/300 A - -| barfly 555-7685 1200/300 A - -| bites 555-1675 2400/1200/300 A - -| camelot 555-0542 300 C - -| core 555-2912 1200/300 C - -| sdace 555-3430 2400/1200/300 A +`mail-list' that contain both `edu' and `li': + + $ awk '/edu/ && /li/' mail-list + -| Samuel 555-3430 samuel.lanceolis@shu.edu A + + The following command prints all records in `mail-list' that contain +_either_ `edu' or `li' (or both, of course): + + $ awk '/edu/ || /li/' mail-list + -| Amelia 555-5553 amelia.zodiacusque@gmail.com F + -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R + -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F + -| Julie 555-6699 julie.perscrutabor@skeeve.com F + -| Samuel 555-3430 samuel.lanceolis@shu.edu A + -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R + + The following command prints all records in `mail-list' that do +_not_ contain the string `li': + + $ awk '! /li/' mail-list + -| Anthony 555-3412 anthony.asserturo@hotmail.com A + -| Becky 555-7685 becky.algebrarum@gmail.com A + -| Bill 555-1675 bill.drowning@hotmail.com A + -| Camilla 555-2912 camilla.infusarum@skynet.be R + -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F + -| Martin 555-6480 martin.codicibus@hotmail.com A + -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R The subexpressions of a Boolean operator in a pattern can be constant regular expressions, comparisons, or any other `awk' @@ -8559,6 +8575,10 @@ worked around; range patterns do not combine with other patterns: error--> gawk: cmd. line:1: (/1/,/2/) || /Yes/ error--> gawk: cmd. line:1: ^ syntax error + As a minor point of interest, although it is poor style, POSIX +allows you to put a newline after the comma in a range pattern. +(d.c.) + File: gawk.info, Node: BEGIN/END, Next: BEGINFILE/ENDFILE, Prev: Ranges, Up: Pattern Overview @@ -8589,19 +8609,19 @@ read. Likewise, an `END' rule is executed once only, after all the input is read. For example: $ awk ' - > BEGIN { print "Analysis of \"foo\"" } - > /foo/ { ++n } - > END { print "\"foo\" appears", n, "times." }' BBS-list - -| Analysis of "foo" - -| "foo" appears 4 times. - - This program finds the number of records in the input file `BBS-list' -that contain the string `foo'. The `BEGIN' rule prints a title for the -report. There is no need to use the `BEGIN' rule to initialize the -counter `n' to zero, since `awk' does this automatically (*note -Variables::). The second rule increments the variable `n' every time a -record containing the pattern `foo' is read. The `END' rule prints the -value of `n' at the end of the run. + > BEGIN { print "Analysis of \"li\"" } + > /li/ { ++n } + > END { print "\"li\" appears in", n, "records." }' mail-list + -| Analysis of "li" + -| "li" appears in 4 records. + + This program finds the number of records in the input file +`mail-list' that contain the string `li'. The `BEGIN' rule prints a +title for the report. There is no need to use the `BEGIN' rule to +initialize the counter `n' to zero, since `awk' does this automatically +(*note Variables::). The second rule increments the variable `n' every +time a record containing the pattern `li' is read. The `END' rule +prints the value of `n' at the end of the run. The special patterns `BEGIN' and `END' cannot be used in ranges or with Boolean operators (indeed, they cannot be used with any operators). @@ -8752,7 +8772,7 @@ File: gawk.info, Node: Empty, Prev: BEGINFILE/ENDFILE, Up: Pattern Overview An empty (i.e., nonexistent) pattern is considered to match _every_ input record. For example, the program: - awk '{ print $1 }' BBS-list + awk '{ print $1 }' mail-list prints the first field of every record. @@ -9116,9 +9136,11 @@ File: gawk.info, Node: Switch Statement, Next: Break Statement, Prev: For Sta 7.4.5 The `switch' Statement ---------------------------- -The `switch' statement allows the evaluation of an expression and the -execution of statements based on a `case' match. Case statements are -checked for a match in the order they are defined. If no suitable +This minor node describes a `gawk'-specific feature. + + The `switch' statement allows the evaluation of an expression and +the execution of statements based on a `case' match. Case statements +are checked for a match in the order they are defined. If no suitable `case' is found, the `default' section is executed, if supplied. Each `case' contains a single constant, be it numeric, string, or @@ -9377,12 +9399,12 @@ listed in `ARGV'. standard. See the Austin Group website (http://austingroupbugs.net/view.php?id=607). - The current version of the Brian Kernighan's `awk' (*note Other -Versions::) also supports `nextfile'. However, it doesn't allow the -`nextfile' statement inside function bodies (*note User-defined::). -`gawk' does; a `nextfile' inside a function body reads the next record -and starts processing it with the first rule in the program, just as -any other `nextfile' statement. + The current version of the Brian Kernighan's `awk', and `mawk' +(*note Other Versions::) also support `nextfile'. However, they don't +allow the `nextfile' statement inside function bodies (*note +User-defined::). `gawk' does; a `nextfile' inside a function body +reads the next record and starts processing it with the first rule in +the program, just as any other `nextfile' statement. File: gawk.info, Node: Exit Statement, Prev: Nextfile Statement, Up: Statements @@ -9666,13 +9688,13 @@ with a pound sign (`#'). $ awk 'BEGIN { > for (i = 0; i < ARGC; i++) > print ARGV[i] - > }' inventory-shipped BBS-list + > }' inventory-shipped mail-list -| awk -| inventory-shipped - -| BBS-list + -| mail-list `ARGV[0]' contains `awk', `ARGV[1]' contains `inventory-shipped', - and `ARGV[2]' contains `BBS-list'. The value of `ARGC' is three, + and `ARGV[2]' contains `mail-list'. The value of `ARGC' is three, one more than the index of the last element in `ARGV', because the elements are numbered from zero. @@ -9862,8 +9884,8 @@ with a pound sign (`#'). The following additional elements in the array are available to provide information about the MPFR and GMP libraries if your - version of `gawk' supports arbitrary precision numbers (*note - Arbitrary Precision Arithmetic::): + version of `gawk' supports arbitrary precision numbers (*note Gawk + and MPFR::): `PROCINFO["mpfr_version"]' The version of the GNU MPFR library. @@ -9942,7 +9964,7 @@ with a pound sign (`#'). the `delete' statement with the `SYMTAB' array. You may use an index for `SYMTAB' that is not a predefined - identifer: + identifier: SYMTAB["xxx"] = 5 print SYMTAB["xxx"] @@ -10008,13 +10030,13 @@ information contained in `ARGC' and `ARGV': $ awk 'BEGIN { > for (i = 0; i < ARGC; i++) > print ARGV[i] - > }' inventory-shipped BBS-list + > }' inventory-shipped mail-list -| awk -| inventory-shipped - -| BBS-list + -| mail-list In this example, `ARGV[0]' contains `awk', `ARGV[1]' contains -`inventory-shipped', and `ARGV[2]' contains `BBS-list'. Notice that +`inventory-shipped', and `ARGV[2]' contains `mail-list'. Notice that the `awk' program is not entered in `ARGV'. The other command-line options, with their arguments, are also not entered. This includes variable assignments done with the `-v' option (*note Options::). @@ -11261,9 +11283,10 @@ pound sign (`#'): SOURCE is duplicated into DEST. DEST is then sorted, leaving the indices of SOURCE unchanged. - When comparing strings, `IGNORECASE' affects the sorting. If the - SOURCE array contains subarrays as values (*note Arrays of - Arrays::), they will come last, after all scalar values. + When comparing strings, `IGNORECASE' affects the sorting (*note + Array Sorting Functions::). If the SOURCE array contains + subarrays as values (*note Arrays of Arrays::), they will come + last, after all scalar values. For example, if the contents of `a' are as follows: @@ -11302,7 +11325,7 @@ pound sign (`#'): `$0'. It returns the modified string as the result of the function and the original target string is _not_ changed. - `gensub()' is a general substitution function. It's purpose is to + `gensub()' is a general substitution function. Its purpose is to provide more features than the standard `sub()' and `gsub()' functions. @@ -11978,10 +12001,10 @@ parameters are enclosed in square brackets ([ ]): function--`gawk' also buffers its output and the `fflush()' function forces `gawk' to flush its buffers. - `fflush()' was added to Brian Kernighan's version of `awk' in 1994. - For over two decades, it was not part of the POSIX standard. As - of December, 2012, it was accepted for inclusion into the POSIX - standard. See the Austin Group website + `fflush()' was added to Brian Kernighan's version of `awk' in + April of 1992. For two decades, it was not part of the POSIX + standard. As of December, 2012, it was accepted for inclusion + into the POSIX standard. See the Austin Group website (http://austingroupbugs.net/view.php?id=634). POSIX standardizes `fflush()' as follows: If there is no argument, @@ -12184,7 +12207,8 @@ enclosed in square brackets ([ ]): Variables::). The default string value is `"%a %b %e %H:%M:%S %Z %Y"'. This format string produces output that is equivalent to that of the `date' utility. You can assign - a new value to `PROCINFO["strftime"]' to change the default format. + a new value to `PROCINFO["strftime"]' to change the default + format; see below for the various format directives. `systime()' Return the current time as the number of seconds since the system @@ -12597,7 +12621,7 @@ of Arrays::). traversing a multidimensional array: you can test if an element is itself an array or not. The second is inside the body of a user-defined function (not discussed yet; *note User-defined::), to -test if a paramater is an array or not. +test if a parameter is an array or not. Note, however, that using `isarray()' at the global level to test variables makes no sense. Since you are the one writing the program, you @@ -12698,7 +12722,7 @@ a parameter with the same name as the function itself. In addition, according to the POSIX standard, function parameters cannot have the same name as one of the special built-in variables (*note Built-in Variables::. Not all versions of `awk' enforce this -restriction. +restriction.) The BODY-OF-FUNCTION consists of `awk' statements. It is the most important part of the definition, because it says what the function @@ -12741,8 +12765,8 @@ function. When this happens, we say the function is "recursive". The act of a function calling itself is called "recursion". All the built-in functions return a value to their caller. -User-defined functions can do also, using the `return' statement, which -is described in detail in *note Return Statement::. Many of the +User-defined functions can do so also, using the `return' statement, +which is described in detail in *note Return Statement::. Many of the subsequent examples in this minor node use the `return' statement. In many `awk' implementations, including `gawk', the keyword @@ -12812,7 +12836,8 @@ elements in an array and start over with a new list of elements (*note Delete::). Instead of having to repeat this loop everywhere that you need to clear out an array, your program can just call `delarray'. (This guarantees portability. The use of `delete ARRAY' to delete the -contents of an entire array is a nonstandard extension.) +contents of an entire array is a recent(1) addition to the POSIX +standard.) The following is an example of a recursive function. It takes a string as an input parameter and returns the string in backwards order. @@ -12852,13 +12877,19 @@ an `awk' version of `ctime()': return strftime(format, ts) } + ---------- Footnotes ---------- + + (1) Late in 2012. + File: gawk.info, Node: Function Caveats, Next: Return Statement, Prev: Function Example, Up: User-defined 9.2.3 Calling User-Defined Functions ------------------------------------ -This section describes how to call a user-defined function. +"Calling a function" means causing the function to run and do its job. +A function call is an expression and its value is the value returned by +the function. * Menu: @@ -12872,16 +12903,12 @@ File: gawk.info, Node: Calling A Function, Next: Variable Scope, Up: Function 9.2.3.1 Writing A Function Call ............................... -"Calling a function" means causing the function to run and do its job. -A function call is an expression and its value is the value returned by -the function. - - A function call consists of the function name followed by the -arguments in parentheses. `awk' expressions are what you write in the -call for the arguments. Each time the call is executed, these -expressions are evaluated, and the values become the actual arguments. -For example, here is a call to `foo()' with three arguments (the first -being a string concatenation): +A function call consists of the function name followed by the arguments +in parentheses. `awk' expressions are what you write in the call for +the arguments. Each time the call is executed, these expressions are +evaluated, and the values become the actual arguments. For example, +here is a call to `foo()' with three arguments (the first being a +string concatenation): foo(x y, "lose", 4 * z) @@ -13276,7 +13303,7 @@ and then a closing right parenthesis, with the addition of a leading `@' character: the_func = "sum" - result = @the_func() # calls the `sum' function + result = @the_func() # calls the sum() function Here is a full program that processes the previously shown data, using indirect function calls. @@ -13427,8 +13454,8 @@ order. Next comes a sorting function. It is parameterized with the starting and ending field numbers and the comparison function. It -builds an array with the data and calls `quicksort' appropriately, and -then formats the results as a single string: +builds an array with the data and calls `quicksort()' appropriately, +and then formats the results as a single string: # do_sort --- sort the data according to `compare' # and return it as a string @@ -13628,7 +13655,7 @@ will be accidentally shared with the user's program. In addition, several of the library functions use a prefix that helps indicate what function or set of functions use the variables--for -example, `_pw_byname' in the user database routines (*note Passwd +example, `_pw_byname()' in the user database routines (*note Passwd Functions::). This convention is recommended, since it even further decreases the chance of inadvertent conflict among variable names. Note that this convention is used equally well for variable names and @@ -13879,9 +13906,9 @@ File: gawk.info, Node: Round Function, Next: Cliff Random Function, Prev: Ass The way `printf' and `sprintf()' (*note Printf::) perform rounding often depends upon the system's C `sprintf()' subroutine. On many -machines, `sprintf()' rounding is "unbiased," which means it doesn't -always round a trailing `.5' up, contrary to naive expectations. In -unbiased rounding, `.5' rounds to even, rather than always up, so 1.5 +machines, `sprintf()' rounding is "unbiased", which means it doesn't +always round a trailing .5 up, contrary to naive expectations. In +unbiased rounding, .5 rounds to even, rather than always up, so 1.5 rounds to 2 but 4.5 rounds to 4. This means that if you are using a format that does rounding (e.g., `"%.0f"'), you should check what your system does. The following function does traditional rounding; it @@ -13915,7 +13942,7 @@ might be useful if your `awk''s `printf' does unbiased rounding: } # test harness - { print $0, round($0) } + # { print $0, round($0) } File: gawk.info, Node: Cliff Random Function, Next: Ordinal Functions, Prev: Round Function, Up: General Functions @@ -13991,8 +14018,8 @@ corresponding character. Both functions are written very nicely in } } - Some explanation of the numbers used by `chr()' is worthwhile. The -most prominent character set in use today is ASCII.(1) Although an + Some explanation of the numbers used by `_ord_init()' is worthwhile. +The most prominent character set in use today is ASCII.(1) Although an 8-bit byte can hold 256 distinct values (from 0 to 255), ASCII only defines characters that use the values from 0 to 127.(2) In the now distant past, at least one minicomputer manufacturer used ASCII, but @@ -14042,7 +14069,7 @@ tests such as used here prohibitively expensive. (2) ASCII has been extended in many countries to use the values from 128 to 255 for country-specific characters. If your system uses these -extensions, you can simplify `_ord_init' to loop from 0 to 255. +extensions, you can simplify `_ord_init()' to loop from 0 to 255. File: gawk.info, Node: Join Function, Next: Getlocaltime Function, Prev: Ordinal Functions, Up: General Functions @@ -14483,7 +14510,7 @@ File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Man Occasionally, you might not want `awk' to process command-line variable assignments (*note Assignment Options::). In particular, if you have a -file name that contain an `=' character, `awk' treats the file name as +file name that contains an `=' character, `awk' treats the file name as an assignment, and does not process it. Some users have suggested an additional command-line option for @@ -14979,7 +15006,7 @@ later. The test can only be true for `gawk'. It is false if using `FS' or `FPAT', or on some other `awk' implementation. The code that checks for using `FPAT', using `using_fpat' and -`PROCINFO["FS"]' is similar. +`PROCINFO["FS"]', is similar. The main part of the function uses a loop to read database lines, split the line into fields, and then store the line into each array as @@ -14999,9 +15026,9 @@ create the element with the null string as its value: return _pw_byname[name] } - Similarly, the `getpwuid' function takes a user ID number argument. -If that user number is in the database, it returns the appropriate -line. Otherwise, it returns the null string: + Similarly, the `getpwuid()' function takes a user ID number +argument. If that user number is in the database, it returns the +appropriate line. Otherwise, it returns the null string: function getpwuid(uid) { @@ -15348,8 +15375,8 @@ index and value, use the indirect function call syntax (*note Indirect Calls::) on `process', passing it the index and the value. When calling `walk_array()', you would pass the name of a -user-defined function that expects to receive and index and a value, -and then processes the element. +user-defined function that expects to receive an index and a value, and +then processes the element. File: gawk.info, Node: Sample Programs, Next: Advanced Features, Prev: Library Functions, Up: Top @@ -15610,7 +15637,7 @@ fields to print are `$1', `$3', and `$5'. The intermediate fields are the fields to print, and `t' tracks the complete field list, including filler fields: - function set_charlist( field, i, j, f, g, t, + function set_charlist( field, i, j, f, g, n, m, t, filler, last, len) { field = 1 # count total fields @@ -16014,9 +16041,9 @@ groups in the `PROCINFO' array have the indices `"group1"' through However, we don't know in advance how many of these groups there are. This loop works by starting at one, concatenating the value with -`"group"', and then using `in' to see if that value is in the array. -Eventually, `i' is incremented past the last group in the array and the -loop exits. +`"group"', and then using `in' to see if that value is in the array +(*note Reference to Elements::). Eventually, `i' is incremented past +the last group in the array and the loop exits. The loop is also correct if there are _no_ supplementary groups; then the condition is false the first time it's tested, and the loop @@ -18536,7 +18563,8 @@ regular pipes. ---------- Footnotes ---------- - (1) This is very different from the same operator in the C shell. + (1) This is very different from the same operator in the C shell and +in Bash. File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features @@ -18674,56 +18702,64 @@ First, the `awk' program: junk Here is the `awkprof.out' that results from running the `gawk' -profiler on this program and data (this example also illustrates that -`awk' programmers sometimes have to work late): +profiler on this program and data. (This example also illustrates that +`awk' programmers sometimes get up very early in the morning to work.) - # gawk profile, created Sun Aug 13 00:00:15 2000 + # gawk profile, created Thu Feb 27 05:16:21 2014 - # BEGIN block(s) + # BEGIN block(s) - BEGIN { - 1 print "First BEGIN rule" - 1 print "Second BEGIN rule" - } + BEGIN { + 1 print "First BEGIN rule" + } - # Rule(s) + BEGIN { + 1 print "Second BEGIN rule" + } - 5 /foo/ { # 2 - 2 print "matched /foo/, gosh" - 6 for (i = 1; i <= 3; i++) { - 6 sing() - } - } + # Rule(s) - 5 { - 5 if (/foo/) { # 2 - 2 print "if is true" - 3 } else { - 3 print "else is true" - } - } + 5 /foo/ { # 2 + 2 print "matched /foo/, gosh" + 6 for (i = 1; i <= 3; i++) { + 6 sing() + } + } + + 5 { + 5 if (/foo/) { # 2 + 2 print "if is true" + 3 } else { + 3 print "else is true" + } + } - # END block(s) + # END block(s) - END { - 1 print "First END rule" - 1 print "Second END rule" - } + END { + 1 print "First END rule" + } + + END { + 1 print "Second END rule" + } - # Functions, listed alphabetically - 6 function sing(dummy) - { - 6 print "I gotta be me!" - } + # Functions, listed alphabetically + + 6 function sing(dummy) + { + 6 print "I gotta be me!" + } This example illustrates many of the basic features of profiling output. They are as follows: - * The program is printed in the order `BEGIN' rule, `BEGINFILE' rule, - pattern/action rules, `ENDFILE' rule, `END' rule and functions, - listed alphabetically. Multiple `BEGIN' and `END' rules are - merged together, as are multiple `BEGINFILE' and `ENDFILE' rules. + * The program is printed in the order `BEGIN' rules, `BEGINFILE' + rules, pattern/action rules, `ENDFILE' rules, `END' rules and + functions, listed alphabetically. Multiple `BEGIN' and `END' + rules retain their separate identities, as do multiple `BEGINFILE' + and `ENDFILE' rules. * Pattern-action rules have two counts. The first count, to the left of the rule, shows how many times the rule's pattern was @@ -18774,8 +18810,7 @@ you typed when you wrote it. This is because `gawk' creates the profiled version by "pretty printing" its internal representation of the program. The advantage to this is that `gawk' can produce a standard representation. The disadvantage is that all source-code -comments are lost, as are the distinctions among multiple `BEGIN', -`END', `BEGINFILE', and `ENDFILE' rules. Also, things such as: +comments are lost. Also, things such as: /foo/ @@ -18834,6 +18869,9 @@ by the `Ctrl-<\>' key. called this way, `gawk' "pretty prints" the program into `awkprof.out', without any execution counts. + NOTE: The `--pretty-print' option still runs your program. This + will change in the next major release. + File: gawk.info, Node: Internationalization, Next: Debugger, Prev: Advanced Features, Up: Top @@ -19127,9 +19165,9 @@ File: gawk.info, Node: Translator i18n, Next: I18N Example, Prev: Programmer =============================== Once a program's translatable strings have been marked, they must be -extracted to create the initial `.po' file. As part of translation, it -is often helpful to rearrange the order in which arguments to `printf' -are output. +extracted to create the initial `.pot' file. As part of translation, +it is often helpful to rearrange the order in which arguments to +`printf' are output. `gawk''s `--gen-pot' command-line option extracts the messages and is discussed next. After that, `printf''s ability to rearrange the @@ -19202,7 +19240,7 @@ second: $ gawk 'BEGIN { > string = "Dont Panic" - > printf _"%2$d characters live in \"%1$s\"\n", + > printf "%2$d characters live in \"%1$s\"\n", > string, length(string) > }' -| 10 characters live in "Dont Panic" @@ -19227,7 +19265,7 @@ precision capability: `gawk' does not allow you to mix regular format specifiers and those with positional specifiers in the same string: - $ gawk 'BEGIN { printf _"%d %3$s\n", 1, 2, "hi" }' + $ gawk 'BEGIN { printf "%d %3$s\n", 1, 2, "hi" }' error--> gawk: cmd. line:1: fatal: must use `count$' on all formats or none NOTE: There are some pathological cases that `gawk' may fail to @@ -19589,7 +19627,7 @@ File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample 14.2.1 How to Start the Debugger -------------------------------- -Starting the debugger is almost exactly like running `awk', except you +Starting the debugger is almost exactly like running `gawk', except you have to pass an additional option `--debug' or the corresponding short option `-D'. The file(s) containing the program and any supporting code are given on the command line as arguments to one or more `-f' @@ -19702,8 +19740,8 @@ our test input above. Let's look at `NR': -| NR = number (2) So we can see that `are_equal()' was only called for the second record -of the file. Of course, this is because our program contained a rule -for `NR == 1': +of the file. Of course, this is because our program contains a rule for +`NR == 1': NR == 1 { last = $0 @@ -21144,11 +21182,15 @@ need it. arbitrary precision arithmetic. The easiest way to find out is to look at the output of the following command: - $ gawk --version - -| GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) - -| Copyright (C) 1989, 1991-2013 Free Software Foundation. + $ ./gawk --version + -| GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) + -| Copyright (C) 1989, 1991-2014 Free Software Foundation. ... +(You may see different version numbers than what's shown here. That's +OK; what's important is to see that GNU MPFR and GNU MP are listed in +the output.) + `gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP (http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic on numbers. So if you do not see the names of these libraries in the @@ -21518,7 +21560,7 @@ floating-point value to begin with: gawk -M 'BEGIN { n = 13.0; print n % 2.0 }' - Note that for the particular example above, there is likely best to + Note that for the particular example above, it is likely best to just use the following: gawk -M 'BEGIN { n = 13; print n % 2 }' @@ -21722,6 +21764,7 @@ This (rather large) minor node describes the API in detail. * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with `gawk'. @@ -21770,6 +21813,8 @@ operations: * Symbol table access: retrieving a global variable, creating one, or changing one. + * Allocating, reallocating, and releasing memory. + * Creating and releasing cached values; this provides an efficient way to use values for multiple variables and can be a big performance win. @@ -21798,10 +21843,8 @@ operations: `EOF' `<stdio.h>' `FILE' `<stdio.h>' `NULL' `<stddef.h>' - `malloc()' `<stdlib.h>' `memcpy()' `<string.h>' `memset()' `<string.h>' - `realloc()' `<stdlib.h>' `size_t' `<sys/types.h>' `struct stat' `<sys/stat.h>' @@ -21827,7 +21870,9 @@ operations: * All pointers filled in by `gawk' are to memory managed by `gawk' and should be treated by the extension as read-only. Memory for _all_ strings passed into `gawk' from the extension _must_ come - from `malloc()' and is managed by `gawk' from then on. + from calling the API-provided function pointers `api_malloc()', + `api_calloc()' or `api_realloc()', and is managed by `gawk' from + then on. * The API defines several simple `struct's that map values as seen from `awk'. A value can be a `double', a string, or an array (as @@ -21899,7 +21944,9 @@ that use them. `} awk_string_t;' This represents a mutable string. `gawk' owns the memory pointed to if it supplied the value. Otherwise, it takes ownership of the - memory pointed to. *Such memory must come from `malloc()'!* + memory pointed to. *Such memory must come from calling the + API-provided function pointers `api_malloc()', `api_calloc()', or + `api_realloc()'!* As mentioned earlier, strings are maintained using the current multibyte encoding. @@ -22004,7 +22051,7 @@ the value. See also the entry for "Cookie" in the *note Glossary::. -File: gawk.info, Node: Requesting Values, Next: Constructor Functions, Prev: General Data Types, Up: Extension API Description +File: gawk.info, Node: Requesting Values, Next: Memory Allocation Functions, Prev: General Data Types, Up: Extension API Description 16.4.3 Requesting Values ------------------------ @@ -22037,46 +22084,43 @@ Requested: Scalar Scalar Scalar false false Table 16.1: Value Types Returned -File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Requesting Values, Up: Extension API Description +File: gawk.info, Node: Memory Allocation Functions, Next: Constructor Functions, Prev: Requesting Values, Up: Extension API Description -16.4.4 Constructor Functions and Convenience Macros ---------------------------------------------------- +16.4.4 Memory Allocation Functions and Convenience Macros +--------------------------------------------------------- -The API provides a number of "constructor" functions for creating -string and numeric values, as well as a number of convenience macros. -This node presents them all as function prototypes, in the way that -extension code would use them. +The API provides a number of "memory allocation" functions for +allocating memory that can be passed to `gawk', as well as a number of +convenience macros. -`static inline awk_value_t *' -`make_const_string(const char *string, size_t length, awk_value_t *result)' - This function creates a string value in the `awk_value_t' variable - pointed to by `result'. It expects `string' to be a C string - constant (or other string data), and automatically creates a - _copy_ of the data for storage in `result'. It returns `result'. +`void *gawk_malloc(size_t size);' + Call `gawk'-provided `api_malloc()' to allocate storage that may + be passed to `gawk'. -`static inline awk_value_t *' -`make_malloced_string(const char *string, size_t length, awk_value_t *result)' - This function creates a string value in the `awk_value_t' variable - pointed to by `result'. It expects `string' to be a `char *' value - pointing to data previously obtained from `malloc()'. The idea here - is that the data is passed directly to `gawk', which assumes - responsibility for it. It returns `result'. +`void *gawk_calloc(size_t nmemb, size_t size);' + Call `gawk'-provided `api_calloc()' to allocate storage that may + be passed to `gawk'. -`static inline awk_value_t *' -`make_null_string(awk_value_t *result)' - This specialized function creates a null string (the "undefined" - value) in the `awk_value_t' variable pointed to by `result'. It - returns `result'. +`void *gawk_realloc(void *ptr, size_t size);' + Call `gawk'-provided `api_realloc()' to allocate storage that may + be passed to `gawk'. -`static inline awk_value_t *' -`make_number(double num, awk_value_t *result)' - This function simply creates a numeric value in the `awk_value_t' - variable pointed to by `result'. +`void gawk_free(void *ptr);' + Call `gawk'-provided `api_free()' to release storage that was + allocated with `gawk_malloc()', `gawk_calloc()' or + `gawk_realloc()'. - Two convenience macros may be used for allocating storage from -`malloc()' and `realloc()'. If the allocation fails, they cause `gawk' -to exit with a fatal error message. They should be used as if they were -procedure calls that do not return a value. + The API has to provide these functions because it is possible for an +extension to be compiled and linked against a different version of the +C library than was used for the `gawk' executable.(1) If `gawk' were to +use its version of `free()' when the memory came from an unrelated +version of `malloc()', unexpected behavior would likely result. + + Two convenience macros may be used for allocating storage from the +API-provided function pointers `api_malloc()' and `api_realloc()'. If +the allocation fails, they cause `gawk' to exit with a fatal error +message. They should be used as if they were procedure calls that do +not return a value. `#define emalloc(pointer, type, size, message) ...' The arguments to this macro are as follows: @@ -22085,7 +22129,7 @@ procedure calls that do not return a value. `type' The type of the pointer variable, used to create a cast for - the call to `malloc()'. + the call to `api_malloc()'. `size' The total number of bytes to be allocated. @@ -22105,14 +22149,57 @@ procedure calls that do not return a value. make_malloced_string(message, strlen(message), & result); `#define erealloc(pointer, type, size, message) ...' - This is like `emalloc()', but it calls `realloc()', instead of - `malloc()'. The arguments are the same as for the `emalloc()' + This is like `emalloc()', but it calls `api_realloc()', instead of + `api_malloc()'. The arguments are the same as for the `emalloc()' macro. + ---------- Footnotes ---------- + + (1) This is more common on MS-Windows systems, but can happen on +Unix-like systems as well. + + +File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Memory Allocation Functions, Up: Extension API Description + +16.4.5 Constructor Functions +---------------------------- + +The API provides a number of "constructor" functions for creating +string and numeric values, as well as a number of convenience macros. +This node presents them all as function prototypes, in the way that +extension code would use them. + +`static inline awk_value_t *' +`make_const_string(const char *string, size_t length, awk_value_t *result)' + This function creates a string value in the `awk_value_t' variable + pointed to by `result'. It expects `string' to be a C string + constant (or other string data), and automatically creates a + _copy_ of the data for storage in `result'. It returns `result'. + +`static inline awk_value_t *' +`make_malloced_string(const char *string, size_t length, awk_value_t *result)' + This function creates a string value in the `awk_value_t' variable + pointed to by `result'. It expects `string' to be a `char *' value + pointing to data previously obtained from the api-provided + functions `api_malloc()', `api_calloc()' or `api_realloc()'. The + idea here is that the data is passed directly to `gawk', which + assumes responsibility for it. It returns `result'. + +`static inline awk_value_t *' +`make_null_string(awk_value_t *result)' + This specialized function creates a null string (the "undefined" + value) in the `awk_value_t' variable pointed to by `result'. It + returns `result'. + +`static inline awk_value_t *' +`make_number(double num, awk_value_t *result)' + This function simply creates a numeric value in the `awk_value_t' + variable pointed to by `result'. + File: gawk.info, Node: Registration Functions, Next: Printing Messages, Prev: Constructor Functions, Up: Extension API Description -16.4.5 Registration Functions +16.4.6 Registration Functions ----------------------------- This minor node describes the API functions for registering parts of @@ -22130,7 +22217,7 @@ your extension with `gawk'. File: gawk.info, Node: Extension Functions, Next: Exit Callback Functions, Up: Registration Functions -16.4.5.1 Registering An Extension Function +16.4.6.1 Registering An Extension Function .......................................... Extension functions are described by the following record: @@ -22155,8 +22242,10 @@ Extension functions are described by the following record: `awk_value_t *(*function)(int num_actual_args, awk_value_t *result);' This is a pointer to the C function that provides the desired functionality. The function must fill in the result with either a - number or a string. `awk' takes ownership of any string memory. - As mentioned earlier, string memory *must* come from `malloc()'. + number or a string. `gawk' takes ownership of any string memory. + As mentioned earlier, string memory *must* come from the + api-provided functions `api_malloc()', `api_calloc()' or + `api_realloc()'. The `num_actual_args' argument tells the C function how many actual parameters were passed from the calling `awk' code. @@ -22182,7 +22271,7 @@ register it with `gawk' using this API function: File: gawk.info, Node: Exit Callback Functions, Next: Extension Version String, Prev: Extension Functions, Up: Registration Functions -16.4.5.2 Registering An Exit Callback Function +16.4.6.2 Registering An Exit Callback Function .............................................. An "exit callback" function is a function that `gawk' calls before it @@ -22211,7 +22300,7 @@ order--that is, in the reverse order in which they are registered with File: gawk.info, Node: Extension Version String, Next: Input Parsers, Prev: Exit Callback Functions, Up: Registration Functions -16.4.5.3 Registering An Extension Version String +16.4.6.3 Registering An Extension Version String ................................................ You can register a version string which indicates the name and version @@ -22227,7 +22316,7 @@ invoked with the `--version' option. File: gawk.info, Node: Input Parsers, Next: Output Wrappers, Prev: Extension Version String, Up: Registration Functions -16.4.5.4 Customized Input Parsers +16.4.6.4 Customized Input Parsers ................................. By default, `gawk' reads text files as its input. It uses the value of @@ -22449,7 +22538,7 @@ whether or not to activate an input parser (*note BEGINFILE/ENDFILE::). File: gawk.info, Node: Output Wrappers, Next: Two-way processors, Prev: Input Parsers, Up: Registration Functions -16.4.5.5 Customized Output Wrappers +16.4.6.5 Customized Output Wrappers ................................... An "output wrapper" is the mirror image of an input parser. It allows @@ -22556,7 +22645,7 @@ normally. File: gawk.info, Node: Two-way processors, Prev: Output Wrappers, Up: Registration Functions -16.4.5.6 Customized Two-way Processors +16.4.6.6 Customized Two-way Processors ...................................... A "two-way processor" combines an input parser and an output wrapper for @@ -22609,7 +22698,7 @@ can take this" and "take over for this" functions, File: gawk.info, Node: Printing Messages, Next: Updating `ERRNO', Prev: Registration Functions, Up: Extension API Description -16.4.6 Printing Messages +16.4.7 Printing Messages ------------------------ You can print different kinds of warning messages from your extension, @@ -22640,7 +22729,7 @@ the pity. File: gawk.info, Node: Updating `ERRNO', Next: Accessing Parameters, Prev: Printing Messages, Up: Extension API Description -16.4.7 Updating `ERRNO' +16.4.8 Updating `ERRNO' ----------------------- The following functions allow you to update the `ERRNO' variable: @@ -22661,7 +22750,7 @@ The following functions allow you to update the `ERRNO' variable: File: gawk.info, Node: Accessing Parameters, Next: Symbol Table Access, Prev: Updating `ERRNO', Up: Extension API Description -16.4.8 Accessing and Updating Parameters +16.4.9 Accessing and Updating Parameters ---------------------------------------- Two functions give you access to the arguments (parameters) passed to @@ -22687,8 +22776,8 @@ your extension function. They are: File: gawk.info, Node: Symbol Table Access, Next: Array Manipulation, Prev: Accessing Parameters, Up: Extension API Description -16.4.9 Symbol Table Access --------------------------- +16.4.10 Symbol Table Access +--------------------------- Two sets of routines provide access to global variables, and one set allows you to create and release cached values. @@ -22702,8 +22791,8 @@ allows you to create and release cached values. File: gawk.info, Node: Symbol table by name, Next: Symbol table by cookie, Up: Symbol Table Access -16.4.9.1 Variable Access and Update by Name -........................................... +16.4.10.1 Variable Access and Update by Name +............................................ The following routines provide the ability to access and update global `awk'-level variables by name. In compiler terminology, identifiers of @@ -22735,11 +22824,16 @@ termed a "symbol table". However, with the exception of the `PROCINFO' array, an extension cannot change any of those variables. + NOTE: It is possible for the lookup of `PROCINFO' to fail. This + happens if the `awk' program being run does not reference + `PROCINFO'; in this case `gawk' doesn't bother to create the array + and populate it. + File: gawk.info, Node: Symbol table by cookie, Next: Cached values, Prev: Symbol table by name, Up: Symbol Table Access -16.4.9.2 Variable Access and Update by Cookie -............................................. +16.4.10.2 Variable Access and Update by Cookie +.............................................. A "scalar cookie" is an opaque handle that provides access to a global variable or array. It is an optimization that avoids looking up @@ -22851,8 +22945,8 @@ like this: File: gawk.info, Node: Cached values, Prev: Symbol table by cookie, Up: Symbol Table Access -16.4.9.3 Creating and Using Cached Values -......................................... +16.4.10.3 Creating and Using Cached Values +.......................................... The routines in this section allow you to create and release cached values. As with scalar cookies, in theory, cached values are not @@ -22862,8 +22956,9 @@ variables using `sym_update()' or `sym_update_scalar()', as you like. However, you can understand the point of cached values if you remember that _every_ string value's storage _must_ come from -`malloc()'. If you have 20 variables, all of which have the same -string value, you must create 20 identical copies of the string.(1) +`api_malloc()', `api_calloc()' or `api_realloc()'. If you have 20 +variables, all of which have the same string value, you must create 20 +identical copies of the string.(1) It is clearly more efficient, if possible, to create a value once, and then tell `gawk' to reuse the value for multiple variables. That is @@ -22946,7 +23041,7 @@ using `release_value()'. File: gawk.info, Node: Array Manipulation, Next: Extension API Variables, Prev: Symbol Table Access, Up: Extension API Description -16.4.10 Array Manipulation +16.4.11 Array Manipulation -------------------------- The primary data structure(1) in `awk' is the associative array (*note @@ -22973,7 +23068,7 @@ arrays of arrays (*note General Data Types::). File: gawk.info, Node: Array Data Types, Next: Array Functions, Up: Array Manipulation -16.4.10.1 Array Data Types +16.4.11.1 Array Data Types .......................... The data types associated with arrays are listed below. @@ -23040,7 +23135,7 @@ overuse this term. File: gawk.info, Node: Array Functions, Next: Flattening Arrays, Prev: Array Data Types, Up: Array Manipulation -16.4.10.2 Array Functions +16.4.11.2 Array Functions ......................... The following functions relate to individual array elements. @@ -23066,7 +23161,8 @@ The following functions relate to individual array elements. strings (*note Conversion::); thus using integral values is safest. As with _all_ strings passed into `gawk' from an extension, the - string value of `index' must come from `malloc()', and `gawk' + string value of `index' must come from the API-provided functions + `api_malloc()', `api_calloc()' or `api_realloc()' and `gawk' releases the storage. `awk_bool_t set_array_element(awk_array_t a_cookie,' @@ -23117,7 +23213,7 @@ The following functions relate to individual array elements. File: gawk.info, Node: Flattening Arrays, Next: Creating Arrays, Prev: Array Functions, Up: Array Manipulation -16.4.10.3 Working With All The Elements of an Array +16.4.11.3 Working With All The Elements of an Array ................................................... To "flatten" an array is create a structure that represents the full @@ -23291,7 +23387,7 @@ return value to success, and returns: File: gawk.info, Node: Creating Arrays, Prev: Flattening Arrays, Up: Array Manipulation -16.4.10.4 How To Create and Populate Arrays +16.4.11.4 How To Create and Populate Arrays ........................................... Besides working with arrays created by `awk' code, you can create @@ -23430,7 +23526,7 @@ environment variable.) File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Array Manipulation, Up: Extension API Description -16.4.11 API Variables +16.4.12 API Variables --------------------- The API provides two sets of variables. The first provides information @@ -23447,7 +23543,7 @@ information about how `gawk' was invoked. File: gawk.info, Node: Extension Versioning, Next: Extension API Informational Variables, Up: Extension API Variables -16.4.11.1 API Version Constants and Variables +16.4.12.1 API Version Constants and Variables ............................................. The API provides both a "major" and a "minor" version number. The API @@ -23496,7 +23592,7 @@ Boilerplate::). File: gawk.info, Node: Extension API Informational Variables, Prev: Extension Versioning, Up: Extension API Variables -16.4.11.2 Informational Variables +16.4.12.2 Informational Variables ................................. The API provides access to several variables that describe whether the @@ -23532,7 +23628,7 @@ change during execution. File: gawk.info, Node: Extension API Boilerplate, Prev: Extension API Variables, Up: Extension API Description -16.4.12 Boilerplate Code +16.4.13 Boilerplate Code ------------------------ As mentioned earlier (*note Extension Mechanism Outline::), the function @@ -24050,7 +24146,7 @@ declarations and argument checking: awk_array_t array; int ret; struct stat sbuf; - /* default is stat() */ + /* default is lstat() */ int (*statfunc)(const char *path, struct stat *sbuf) = lstat; assert(result != NULL); @@ -24448,12 +24544,16 @@ File: gawk.info, Node: Extension Sample Fnmatch, Next: Extension Sample Fork, This extension provides an interface to the C library `fnmatch()' function. The usage is: - @load "fnmatch" +`@load "fnmatch"' + This is how you load the extension. - result = fnmatch(pattern, string, flags) +`result = fnmatch(pattern, string, flags)' + The return value is zero on success, `FNM_NOMATCH' if the string + did not match the pattern, or a different non-zero value if an + error occurred. - The `fnmatch' extension adds a single function named `fnmatch()', -one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'. + Besides the `fnmatch()' function, the `fnmatch' extension adds one +constant (`FNM_NOMATCH'), and an array of flag values named `FNM'. The arguments to `fnmatch()' are: @@ -24467,10 +24567,6 @@ one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'. Either zero, or the bitwise OR of one or more of the flags in the `FNM' array. - The return value is zero on success, `FNM_NOMATCH' if the string did -not match the pattern, or a different non-zero value if an error -occurred. - The flags are follows: `FNM["CASEFOLD"]' Corresponds to the `FNM_CASEFOLD' flag as defined in @@ -24506,14 +24602,14 @@ The `fork' extension adds three functions, as follows. This is how you load the extension. `pid = fork()' - This function creates a new process. The return value is the zero - in the child and the process-id number of the child in the parent, - or -1 upon error. In the latter case, `ERRNO' indicates the - problem. In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]' - are updated to reflect the correct values. + This function creates a new process. The return value is zero in + the child and the process-ID number of the child in the parent, or + -1 upon error. In the latter case, `ERRNO' indicates the problem. + In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]' are updated + to reflect the correct values. `ret = waitpid(pid)' - This function takes a numeric argument, which is the process-id to + This function takes a numeric argument, which is the process-ID to wait for. The return value is that of the `waitpid()' system call. `ret = wait()' @@ -24746,7 +24842,8 @@ File: gawk.info, Node: Extension Sample Readfile, Next: Extension Sample API T 16.7.10 Reading An Entire File ------------------------------ -The `readfile' extension adds a single function named `readfile()': +The `readfile' extension adds a single function named `readfile()', and +an input parser: `@load "readfile"' This is how you load the extension. @@ -24756,6 +24853,12 @@ The `readfile' extension adds a single function named `readfile()': a string containing the entire contents of the requested file. Upon error, the function returns the empty string and sets `ERRNO'. +`BEGIN { PROCINFO["readfile"] = 1 }' + In addition, the extension adds an input parser that is activated + if `PROCINFO["readfile"]' exists. When activated, each input file + is returned in its entirety as `$0'. `RT' is set to the null + string. + Here is an example: @load "readfile" @@ -25603,7 +25706,7 @@ in POSIX `awk', in the order they were added to `gawk'. - The `-i' and `--include' options load `awk' library files. - - The `-l' and `--load' options for load compiled dynamic + - The `-l' and `--load' options load compiled dynamic extensions. - The `-M' and `--bignum' options enable MPFR. @@ -25617,8 +25720,9 @@ in POSIX `awk', in the order they were added to `gawk'. * Support for high precision arithmetic with MPFR. (*note Gawk and MPFR::). - * The `and()', `or()' and `xor()' functions allow any number of - arguments, with a minimum of two (*note Bitwise Functions::). + * The `and()', `or()' and `xor()' functions changed to allow any + number of arguments, with a minimum of two (*note Bitwise + Functions::). * The dynamic extension interface was completely redone (*note Dynamic Extensions::). @@ -25637,18 +25741,18 @@ available versions of `awk' (*note Other Versions::). Feature BWK Awk Mawk GNU Awk -------------------------------------------------------- `\x' Escape sequence X X X -`RS' as regexp X X `FS' as null string X X X `/dev/stdin' special file X X X `/dev/stdout' special file X X X `/dev/stderr' special file X X X -`**' and `**=' operators X X -`fflush()' function X X X -`func' keyword X X -`nextfile' statement X X X `delete' without subscript X X X +`fflush()' function X X X `length()' of an array X X X +`nextfile' statement X X X +`**' and `**=' operators X X +`func' keyword X X `BINMODE' variable X X +`RS' as regexp X X Time related functions X X (Technically speaking, as of late 2012, `fflush()', `delete ARRAY', @@ -25681,7 +25785,7 @@ as working in this fashion, and in particular, would teach that the `[A-Z]' was the "correct" way to match uppercase letters. And indeed, this was true.(1) - The 1993 POSIX standard introduced the idea of locales (*note + The 1992 POSIX standard introduced the idea of locales (*note Locales::). Since many locales include other letters besides the plain twenty-six letters of the American English alphabet, the POSIX standard added character classes (*note Bracket Expressions::) as a way to match @@ -25744,17 +25848,17 @@ of range expressions was _undefined_.(3) By using this lovely technical term, the standard gives license to implementors to implement ranges in whatever way they choose. The `gawk' maintainer chose to apply the pre-POSIX meaning in all cases: -the default regexp matching; with `--traditional', and with `--posix'; +the default regexp matching; with `--traditional' and with `--posix'; in all cases, `gawk' remains POSIX compliant. ---------- Footnotes ---------- (1) And Life was good. - (2) And thus was born the Campain for Rational Range Interpretation -(or RRI). A number of GNU tools, such as `grep' and `sed', have either -implemented this change, or will soon. Thanks to Karl Berry for -coining the phrase "Rational Range Interpretation." + (2) And thus was born the Campaign for Rational Range Interpretation +(or RRI). A number of GNU tools have either implemented this change, or +will soon. Thanks to Karl Berry for coining the phrase "Rational Range +Interpretation." (3) See the standard (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05) @@ -25866,6 +25970,9 @@ Info file, in approximate chronological order: * Anders Wallin helped keep the VMS port going for several years. + * Assaf Gordon contributed the code to implement the `--sandbox' + option. + * John Haque made the following contributions: - The modifications to convert `gawk' into a byte-code @@ -25893,6 +26000,10 @@ Info file, in approximate chronological order: 4.1 was driven primarily by Arnold Robbins and Andrew Schorr, with notable contributions from the rest of the development team. + * Antonio Giovanni Colombo rewrote a number of examples in the early + chapters that were severely dated, for which I am incredibly + grateful. + * Arnold Robbins has been working on `gawk' since 1988, at first helping David Trueman, and as the primary maintainer since around 1994. @@ -25949,7 +26060,7 @@ There are three ways to get GNU software: supported. If you have the `wget' program, you can use a command like the following: - wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.0.tar.gz + wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.tar.gz The GNU software archive is mirrored around the world. The up-to-date list of mirror sites is available from the main FSF web site @@ -25968,26 +26079,26 @@ compression programs: `gzip', `bzip2', and `xz'. For simplicity, the rest of these instructions assume you are using the one compressed with the GNU Zip program, `gzip'. - Once you have the distribution (for example, `gawk-4.1.0.tar.gz'), + Once you have the distribution (for example, `gawk-4.1.1.tar.gz'), use `gzip' to expand the file and then use `tar' to extract it. You can use the following pipeline to produce the `gawk' distribution: # Under System V, add 'o' to the tar options - gzip -d -c gawk-4.1.0.tar.gz | tar -xvpf - + gzip -d -c gawk-4.1.1.tar.gz | tar -xvpf - On a system with GNU `tar', you can let `tar' do the decompression for you: - tar -xvpzf gawk-4.1.0.tar.gz + tar -xvpzf gawk-4.1.1.tar.gz -Extracting the archive creates a directory named `gawk-4.1.0' in the +Extracting the archive creates a directory named `gawk-4.1.1' in the current directory. The distribution file name is of the form `gawk-V.R.P.tar.gz'. The V represents the major version of `gawk', the R represents the current release of version V, and the P represents a "patch level", meaning that minor bugs have been fixed in the release. The current patch -level is 0, but when retrieving distributions, you should get the +level is 1, but when retrieving distributions, you should get the version with the highest version, release, and patch level. (Note, however, that patch levels greater than or equal to 70 denote "beta" or nonproduction software; you might not want to retrieve such a version @@ -26197,7 +26308,7 @@ Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin environment for MS-Windows. After you have extracted the `gawk' distribution, `cd' to -`gawk-4.1.0'. Like most GNU software, `gawk' is configured +`gawk-4.1.1'. Like most GNU software, `gawk' is configured automatically for your system by running the `configure' program. This program is a Bourne shell script that is generated automatically using GNU `autoconf'. (The `autoconf' software is described fully starting @@ -26236,8 +26347,8 @@ failure is not described there, please send in a bug report (*note Bugs::). Of course, once you've built `gawk', it is likely that you will wish -to install it. To do so, you need to run the command `make check', as -a user with the appropriate permissions. How to do this varies by +to install it. To do so, you need to run the command `make install', +as a user with the appropriate permissions. How to do this varies by system, but on many systems you can use the `sudo' command to do so. The command then becomes `sudo make install'. It is likely that you will be asked for your password, and you will have to have been set up @@ -26520,10 +26631,9 @@ File: gawk.info, Node: PC Using, Next: Cygwin, Prev: PC Testing, Up: PC Inst B.3.1.4 Using `gawk' on PC Operating Systems ............................................ -With the exception of the Cygwin environment, the `|&' operator and -TCP/IP networking (*note TCP/IP Networking::) are not supported for -MS-DOS or MS-Windows. EMX (OS/2 only) does support at least the `|&' -operator. +Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support +both the `|&' operator and TCP/IP networking (*note TCP/IP +Networking::). EMX (OS/2 only) supports at least the `|&' operator. The MS-DOS and MS-Windows versions of `gawk' search for program files as described in *note AWKPATH Variable::. However, semicolons @@ -26616,13 +26726,13 @@ B.3.1.5 Using `gawk' In The Cygwin Environment `gawk' can be built and used "out of the box" under MS-Windows if you are using the Cygwin environment (http://www.cygwin.com). This -environment provides an excellent simulation of Unix, using the GNU -tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and -other GNU programs. Compilation and installation for Cygwin is the +environment provides an excellent simulation of GNU/Linux, using the +GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, +and other GNU programs. Compilation and installation for Cygwin is the same as for a Unix system: - tar -xvpzf gawk-4.1.0.tar.gz - cd gawk-4.1.0 + tar -xvpzf gawk-4.1.1.tar.gz + cd gawk-4.1.1 ./configure make @@ -26630,10 +26740,6 @@ same as for a Unix system: on Cygwin takes considerably longer. However, it does finish, and then the `make' proceeds as usual. - NOTE: The `|&' operator and TCP/IP networking (*note TCP/IP - Networking::) are fully supported in the Cygwin environment. This - is not true for any other environment on MS-Windows. - File: gawk.info, Node: MSYS, Prev: Cygwin, Up: PC Installation @@ -26695,20 +26801,13 @@ available from `https://github.com/endlesssoftware/mmk'. With `ODS-5' volumes and extended parsing enabled, the case of the target parameter may need to be exact. - Older versions of `gawk' could be built with VAX C or GNU C on -VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C -(also briefly known as "Compaq C" and now known as "HP C," but referred -to here as "DEC C") is required. Both `vmsbuild.com' and `descrip.mms' -contain some obsolete support for the older compilers but are set up to -use DEC C by default. - `gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.(1) - Work is currently being done for a procedure to build `gawk' and -create a PCSI kit for compatible with the GNV product. + The `[.vms]gawk_build_steps.txt' provides information on how to build +`gawk' into a PCSI kit that is compatible with the GNV product. ---------- Footnotes ---------- @@ -26797,7 +26896,8 @@ add the `gawk' and `awk' to the system wide `DCLTABLES'. The DCL syntax is documented in the `gawk.hlp' file. - Optionally, `gawk.hlp' entry can be loaded into a VMS help library: + Optionally, the `gawk.hlp' entry can be loaded into a VMS help +library: $ LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp @@ -27926,7 +28026,7 @@ D.1 What a Program Does ======================= At the most basic level, the job of a program is to process some input -data and produce results. See *note figure-general-flow::. +data and produce results. See *note figure-general-flow::. _______ +------+ / \ +---------+ @@ -28159,9 +28259,6 @@ Bash The GNU version of the standard shell (the Bourne-Again SHell). See also "Bourne Shell." -BBS - See "Bulletin Board System." - Bit Short for "Binary Digit." All values in computer memory ultimately reduce to binary digits: values that are either zero or @@ -28207,11 +28304,6 @@ Built-in Variable Braces See "Curly Braces." -Bulletin Board System - A computer system allowing users to log in and read and/or leave - messages for other users of the system, much like leaving paper - notes on a bulletin board. - C The system programming language that most GNU software is written in. The `awk' programming language has C-like syntax, and this @@ -28318,8 +28410,8 @@ Dynamic Regular Expression (*Note Computed Regexps::.) Environment - A collection of strings, of the form NAME`='VAL, that each program - has available to it. Users generally place values into the + A collection of strings, of the form NAME`='`val', that each + program has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables `HOME' and `PATH'. @@ -28734,7 +28826,6 @@ GNU General Public License ************************** Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/' Everyone is permitted to copy and distribute verbatim copies of this @@ -29457,7 +29548,6 @@ GNU Free Documentation License ****************************** Version 1.3, 3 November 2008 - Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. `http://fsf.org/' @@ -29961,17 +30051,17 @@ Index * ! (exclamation point), !~ operator <5>: Computed Regexps. (line 6) * ! (exclamation point), !~ operator <6>: Case-sensitivity. (line 26) * ! (exclamation point), !~ operator: Regexp Usage. (line 19) -* " (double quote) <1>: Quoting. (line 37) -* " (double quote): Read Terminal. (line 25) +* " (double quote) in shell commands: Read Terminal. (line 25) * " (double quote), in regexp constants: Computed Regexps. (line 28) +* " (double quote), in shell commands: Quoting. (line 37) * # (number sign), #! (executable scripts): Executable Scripts. (line 6) * # (number sign), commenting: Comments. (line 6) -* $ (dollar sign): Regexp Operators. (line 35) * $ (dollar sign), $ field operator <1>: Precedence. (line 43) * $ (dollar sign), $ field operator: Fields. (line 19) * $ (dollar sign), incrementing fields and arrays: Increment Ops. (line 30) +* $ (dollar sign), regexp operator: Regexp Operators. (line 35) * % (percent sign), % operator: Precedence. (line 55) * % (percent sign), %= operator <1>: Precedence. (line 95) * % (percent sign), %= operator: Assignment Ops. (line 129) @@ -29979,13 +30069,13 @@ Index * & (ampersand), && operator: Boolean Ops. (line 57) * & (ampersand), gsub()/gensub()/sub() functions and: Gory Details. (line 6) -* ' (single quote) <1>: Quoting. (line 31) -* ' (single quote) <2>: Long. (line 33) * ' (single quote): One-shot. (line 15) +* ' (single quote) in gawk command lines: Long. (line 33) +* ' (single quote), in shell commands: Quoting. (line 31) * ' (single quote), vs. apostrophe: Comments. (line 27) * ' (single quote), with double quotes: Quoting. (line 53) -* () (parentheses) <1>: Profiling. (line 138) -* () (parentheses): Regexp Operators. (line 79) +* () (parentheses), in a profile: Profiling. (line 146) +* () (parentheses), regexp operator: Regexp Operators. (line 79) * * (asterisk), * operator, as multiplication operator: Precedence. (line 55) * * (asterisk), * operator, as regexp operator: Regexp Operators. @@ -29998,12 +30088,12 @@ Index * * (asterisk), **= operator: Assignment Ops. (line 129) * * (asterisk), *= operator <1>: Precedence. (line 95) * * (asterisk), *= operator: Assignment Ops. (line 129) -* + (plus sign): Regexp Operators. (line 102) * + (plus sign), + operator: Precedence. (line 52) * + (plus sign), ++ operator <1>: Precedence. (line 46) * + (plus sign), ++ operator: Increment Ops. (line 11) * + (plus sign), += operator <1>: Precedence. (line 95) * + (plus sign), += operator: Assignment Ops. (line 82) +* + (plus sign), regexp operator: Regexp Operators. (line 102) * , (comma), in range patterns: Ranges. (line 6) * - (hyphen), - operator: Precedence. (line 52) * - (hyphen), -- operator <1>: Precedence. (line 46) @@ -30023,8 +30113,9 @@ Index (line 15) * --disable-nls configuration option: Additional Configuration Options. (line 30) -* --dump-variables option <1>: Library Names. (line 45) * --dump-variables option: Options. (line 93) +* --dump-variables option, using for library functions: Library Names. + (line 45) * --exec option: Options. (line 125) * --field-separator option: Options. (line 21) * --file option: Options. (line 25) @@ -30067,12 +30158,12 @@ Index * -d option: Options. (line 93) * -E option: Options. (line 125) * -e option: Options. (line 117) -* -F option: Command Line Field Separator. - (line 6) * -f option: Options. (line 25) * -F option: Options. (line 21) * -f option: Long. (line 12) * -F option, -Ft sets FS to TAB: Options. (line 301) +* -F option, command line: Command Line Field Separator. + (line 6) * -f option, multiple uses: Options. (line 306) * -g option: Options. (line 147) * -h option: Options. (line 154) @@ -30092,7 +30183,7 @@ Index * -V option: Options. (line 293) * -v option: Options. (line 32) * -W option: Options. (line 46) -* . (period): Regexp Operators. (line 43) +* . (period), regexp operator: Regexp Operators. (line 43) * .gmo files: Explaining gettext. (line 41) * .gmo files, converting from .po: I18N Example. (line 62) * .gmo files, specifying directory of <1>: Programmer i18n. (line 47) @@ -30101,7 +30192,7 @@ Index * .po files: Explaining gettext. (line 36) * .po files, converting to .gmo: I18N Example. (line 62) * .pot files: Explaining gettext. (line 30) -* / (forward slash): Regexp. (line 10) +* / (forward slash) to enclose regular expressions: Regexp. (line 10) * / (forward slash), / operator: Precedence. (line 55) * / (forward slash), /= operator <1>: Precedence. (line 95) * / (forward slash), /= operator: Assignment Ops. (line 129) @@ -30109,17 +30200,18 @@ Index (line 147) * / (forward slash), patterns and: Expression Patterns. (line 24) * /= operator vs. /=.../ regexp constant: Assignment Ops. (line 147) -* /dev/... special files (gawk): Special FD. (line 46) -* /dev/fd/N special files: Special FD. (line 46) +* /dev/... special files: Special FD. (line 46) +* /dev/fd/N special files (gawk): Special FD. (line 46) * /inet/... special files (gawk): TCP/IP Networking. (line 6) * /inet4/... special files (gawk): TCP/IP Networking. (line 6) * /inet6/... special files (gawk): TCP/IP Networking. (line 6) -* ; (semicolon): Statements/Lines. (line 91) -* ; (semicolon), AWKPATH variable and: PC Using. (line 11) +* ; (semicolon), AWKPATH variable and: PC Using. (line 10) * ; (semicolon), separating statements in actions <1>: Statements. (line 10) -* ; (semicolon), separating statements in actions: Action Overview. +* ; (semicolon), separating statements in actions <2>: Action Overview. (line 19) +* ; (semicolon), separating statements in actions: Statements/Lines. + (line 91) * < (left angle bracket), < operator <1>: Precedence. (line 65) * < (left angle bracket), < operator: Comparison Operators. (line 11) @@ -30140,15 +30232,13 @@ Index (line 11) * > (right angle bracket), >> operator (I/O) <1>: Precedence. (line 65) * > (right angle bracket), >> operator (I/O): Redirection. (line 50) -* ? (question mark) regexp operator <1>: GNU Regexp Operators. - (line 59) -* ? (question mark) regexp operator: Regexp Operators. (line 111) * ? (question mark), ?: operator: Precedence. (line 92) -* [] (square brackets): Regexp Operators. (line 55) -* \ (backslash) <1>: Regexp Operators. (line 18) -* \ (backslash) <2>: Quoting. (line 31) -* \ (backslash) <3>: Comments. (line 50) -* \ (backslash): Read Terminal. (line 25) +* ? (question mark), regexp operator <1>: GNU Regexp Operators. + (line 59) +* ? (question mark), regexp operator: Regexp Operators. (line 111) +* [] (square brackets), regexp operator: Regexp Operators. (line 55) +* \ (backslash): Comments. (line 50) +* \ (backslash) in shell commands: Read Terminal. (line 25) * \ (backslash), \" escape sequence: Escape Sequences. (line 76) * \ (backslash), \' operator (gawk): GNU Regexp Operators. (line 56) @@ -30195,22 +30285,27 @@ Index * \ (backslash), in escape sequences, POSIX and: Escape Sequences. (line 112) * \ (backslash), in regexp constants: Computed Regexps. (line 28) -* ^ (caret): GNU Regexp Operators. - (line 59) +* \ (backslash), in shell commands: Quoting. (line 31) +* \ (backslash), regexp operator: Regexp Operators. (line 18) * ^ (caret), ^ operator: Precedence. (line 49) * ^ (caret), ^= operator <1>: Precedence. (line 95) * ^ (caret), ^= operator: Assignment Ops. (line 129) * ^ (caret), in bracket expressions: Bracket Expressions. (line 17) -* ^ (caret), regexp operator: Regexp Operators. (line 22) -* ^, in FS: Regexp Field Splitting. +* ^ (caret), in FS: Regexp Field Splitting. (line 59) +* ^ (caret), regexp operator <1>: GNU Regexp Operators. + (line 59) +* ^ (caret), regexp operator: Regexp Operators. (line 22) * _ (underscore), C macro: Explaining gettext. (line 70) * _ (underscore), in names of private variables: Library Names. (line 29) * _ (underscore), translatable string: Programmer i18n. (line 69) * _gr_init() user-defined function: Group Functions. (line 82) +* _ord_init() user-defined function: Ordinal Functions. (line 16) * _pw_init() user-defined function: Passwd Functions. (line 105) * accessing fields: Fields. (line 6) +* accessing global variables from extensions: Symbol Table Access. + (line 6) * account information <1>: Group Functions. (line 6) * account information: Passwd Functions. (line 16) * actions: Action Overview. (line 6) @@ -30222,8 +30317,6 @@ Index * adding, fields: Changing Fields. (line 53) * advanced features, fixed-width data: Constant Size. (line 10) * advanced features, gawk: Advanced Features. (line 6) -* advanced features, network connections, See Also networks, connections: Advanced Features. - (line 6) * advanced features, network programming: TCP/IP Networking. (line 6) * advanced features, nondecimal input data: Nondecimal Data. (line 6) * advanced features, processes, communicating with: Two-way I/O. @@ -30235,6 +30328,8 @@ Index * alarm clock example program: Alarm Program. (line 11) * alarm.awk program: Alarm Program. (line 31) * algorithms: Basic High Level. (line 68) +* allocating memory for extensions: Memory Allocation Functions. + (line 6) * Alpha (DEC): Manual History. (line 28) * amazing awk assembler (aaa): Glossary. (line 12) * amazingly workable formatter (awf): Glossary. (line 25) @@ -30245,17 +30340,25 @@ Index * ampersand (&), gsub()/gensub()/sub() functions and: Gory Details. (line 6) * anagram.awk program: Anagram Program. (line 22) +* anagrams, finding: Anagram Program. (line 6) +* and: Bitwise Functions. (line 39) * AND bitwise operation: Bitwise Functions. (line 6) * and Boolean-logic operator: Boolean Ops. (line 6) -* and() function (gawk): Bitwise Functions. (line 39) * ANSI: Glossary. (line 35) +* API informational variables: Extension API Informational Variables. + (line 6) +* API version: Extension Versioning. + (line 6) * arbitrary precision: Arbitrary Precision Arithmetic. (line 6) +* arbitrary precision integers: Arbitrary Precision Integers. + (line 6) * archeologists: Bugs. (line 6) -* ARGC/ARGV variables <1>: ARGC and ARGV. (line 6) +* arctangent: Numeric Functions. (line 11) * ARGC/ARGV variables: Auto-set. (line 11) * ARGC/ARGV variables, command-line arguments: Other Arguments. (line 12) +* ARGC/ARGV variables, how to use: ARGC and ARGV. (line 6) * ARGC/ARGV variables, portability and: Executable Scripts. (line 42) * ARGIND variable: Auto-set. (line 40) * ARGIND variable, command-line arguments: Other Arguments. (line 12) @@ -30265,53 +30368,69 @@ Index * arguments, command-line, invoking awk: Command Line. (line 6) * arguments, in function calls: Function Calls. (line 16) * arguments, processing: Getopt Function. (line 6) +* ARGV array, indexing into: Other Arguments. (line 12) * arithmetic operators: Arithmetic Ops. (line 6) +* array manipulation in extensions: Array Manipulation. (line 6) +* array members: Reference to Elements. + (line 6) +* array scanning order, controlling: Controlling Scanning. + (line 12) +* array, number of elements: String Functions. (line 194) * arrays: Arrays. (line 6) +* arrays of arrays: Arrays of Arrays. (line 6) +* arrays, an example of using: Array Example. (line 6) +* arrays, and IGNORECASE variable: Array Intro. (line 91) * arrays, as parameters to functions: Pass By Value/Reference. (line 47) * arrays, associative: Array Intro. (line 49) * arrays, associative, library functions and: Library Names. (line 57) * arrays, deleting entire contents: Delete. (line 39) -* arrays, elements, assigning: Assigning Elements. (line 6) +* arrays, elements that don't exist: Reference to Elements. + (line 23) +* arrays, elements, assigning values: Assigning Elements. (line 6) * arrays, elements, deleting: Delete. (line 6) -* arrays, elements, order of: Scanning an Array. (line 48) -* arrays, elements, referencing: Reference to Elements. - (line 6) +* arrays, elements, order of access by in operator: Scanning an Array. + (line 48) * arrays, elements, retrieving number of: String Functions. (line 32) * arrays, for statement and: Scanning an Array. (line 20) -* arrays, IGNORECASE variable and: Array Intro. (line 91) * arrays, indexing: Array Intro. (line 49) * arrays, merging into strings: Join Function. (line 6) * arrays, multidimensional: Multidimensional. (line 10) * arrays, multidimensional, scanning: Multiscanning. (line 11) -* arrays, names of: Arrays. (line 18) +* arrays, names of, and names of functions/variables: Arrays. (line 18) +* arrays, numeric subscripts: Numeric Array Subscripts. + (line 6) +* arrays, referencing elements: Reference to Elements. + (line 6) * arrays, scanning: Scanning an Array. (line 6) * arrays, sorting: Array Sorting Functions. (line 6) -* arrays, sorting, IGNORECASE variable and: Array Sorting Functions. +* arrays, sorting, and IGNORECASE variable: Array Sorting Functions. (line 83) * arrays, sparse: Array Intro. (line 70) -* arrays, subscripts: Numeric Array Subscripts. - (line 6) * arrays, subscripts, uninitialized variables as: Uninitialized Subscripts. (line 6) +* arrays, unassigned elements: Reference to Elements. + (line 18) * artificial intelligence, gawk and: Distribution contents. (line 52) -* ASCII <1>: Glossary. (line 141) +* ASCII <1>: Glossary. (line 133) * ASCII: Ordinal Functions. (line 45) -* asort() function (gawk) <1>: Array Sorting Functions. +* asort <1>: Array Sorting Functions. (line 6) -* asort() function (gawk): String Functions. (line 32) +* asort: String Functions. (line 32) * asort() function (gawk), arrays, sorting: Array Sorting Functions. (line 6) -* asorti() function (gawk) <1>: Array Sorting Functions. +* asorti <1>: Array Sorting Functions. (line 6) -* asorti() function (gawk): String Functions. (line 32) +* asorti: String Functions. (line 32) * asorti() function (gawk), arrays, sorting: Array Sorting Functions. (line 6) * assert() function (C library): Assert Function. (line 6) * assert() user-defined function: Assert Function. (line 28) * assertions: Assert Function. (line 6) +* assign values to variables, in debugger: Viewing And Changing Data. + (line 59) * assignment operators: Assignment Ops. (line 6) * assignment operators, evaluation order: Assignment Ops. (line 111) * assignment operators, lvalues/rvalues: Assignment Ops. (line 32) @@ -30329,7 +30448,8 @@ Index * asterisk (*), **= operator: Assignment Ops. (line 129) * asterisk (*), *= operator <1>: Precedence. (line 95) * asterisk (*), *= operator: Assignment Ops. (line 129) -* atan2() function: Numeric Functions. (line 11) +* atan2: Numeric Functions. (line 11) +* automatic displays, in debugger: Debugger Info. (line 24) * awf (amazingly workable formatter) program: Glossary. (line 25) * awk debugging, enabling: Options. (line 108) * awk language, POSIX version: Assignment Ops. (line 136) @@ -30385,16 +30505,14 @@ Index * awk, versions of, See Also Brian Kernighan's awk: BTL. (line 6) * awka compiler for awk: Other Versions. (line 64) * AWKLIBPATH environment variable: AWKLIBPATH Variable. (line 6) -* AWKPATH environment variable <1>: PC Using. (line 11) +* AWKPATH environment variable <1>: PC Using. (line 10) * AWKPATH environment variable: AWKPATH Variable. (line 6) * awkprof.out file: Profiling. (line 6) * awksed.awk program: Simple Sed. (line 25) * awkvars.out file: Options. (line 93) * b debugger command (alias for break): Breakpoint Control. (line 11) -* backslash (\) <1>: Regexp Operators. (line 18) -* backslash (\) <2>: Quoting. (line 31) -* backslash (\) <3>: Comments. (line 50) -* backslash (\): Read Terminal. (line 25) +* backslash (\): Comments. (line 50) +* backslash (\) in shell commands: Read Terminal. (line 25) * backslash (\), \" escape sequence: Escape Sequences. (line 76) * backslash (\), \' operator (gawk): GNU Regexp Operators. (line 56) @@ -30441,17 +30559,18 @@ Index * backslash (\), in escape sequences, POSIX and: Escape Sequences. (line 112) * backslash (\), in regexp constants: Computed Regexps. (line 28) +* backslash (\), in shell commands: Quoting. (line 31) +* backslash (\), regexp operator: Regexp Operators. (line 18) * backtrace debugger command: Execution Stack. (line 13) -* BBS-list file: Sample Data Files. (line 6) -* Beebe, Nelson <1>: Other Versions. (line 78) -* Beebe, Nelson: Acknowledgments. (line 60) -* BEGIN pattern <1>: Profiling. (line 62) +* Beebe, Nelson H.F. <1>: Other Versions. (line 78) +* Beebe, Nelson H.F.: Acknowledgments. (line 60) +* BEGIN pattern <1>: Using BEGIN/END. (line 6) * BEGIN pattern <2>: BEGIN/END. (line 6) -* BEGIN pattern <3>: Field Separators. (line 45) -* BEGIN pattern: Records. (line 29) +* BEGIN pattern: Field Separators. (line 45) +* BEGIN pattern, and profiling: Profiling. (line 62) * BEGIN pattern, assert() user-defined function and: Assert Function. (line 83) -* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 73) +* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 70) * BEGIN pattern, exit statement and: Exit Statement. (line 12) * BEGIN pattern, getline and: Getline Notes. (line 19) * BEGIN pattern, headings, adding: Print Examples. (line 43) @@ -30468,29 +30587,36 @@ Index * BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 60) * BEGINFILE pattern: BEGINFILE/ENDFILE. (line 6) * BEGINFILE pattern, Boolean patterns and: Expression Patterns. - (line 73) + (line 70) * beginfile() user-defined function: Filetrans Function. (line 62) +* Bentley, Jon: Glossary. (line 143) * Benzinger, Michael: Contributors. (line 97) +* Berry, Karl <1>: Ranges and Locales. (line 74) * Berry, Karl: Acknowledgments. (line 33) * binary input/output: User-modified. (line 10) +* bindtextdomain <1>: Programmer i18n. (line 47) +* bindtextdomain: I18N Functions. (line 12) * bindtextdomain() function (C library): Explaining gettext. (line 49) -* bindtextdomain() function (gawk) <1>: Programmer i18n. (line 47) -* bindtextdomain() function (gawk): I18N Functions. (line 12) * bindtextdomain() function (gawk), portability and: I18N Portability. (line 33) -* BINMODE variable <1>: PC Using. (line 34) +* BINMODE variable <1>: PC Using. (line 33) * BINMODE variable: User-modified. (line 10) +* bit-manipulation functions: Bitwise Functions. (line 6) * bits2str() user-defined function: Bitwise Functions. (line 70) +* bitwise AND: Bitwise Functions. (line 39) +* bitwise complement: Bitwise Functions. (line 43) +* bitwise OR: Bitwise Functions. (line 49) +* bitwise XOR: Bitwise Functions. (line 55) * bitwise, complement: Bitwise Functions. (line 25) * bitwise, operations: Bitwise Functions. (line 6) * bitwise, shift: Bitwise Functions. (line 32) * body, in actions: Statements. (line 10) * body, in loops: While Statement. (line 14) * Boolean expressions: Boolean Ops. (line 6) -* Boolean expressions, as patterns: Expression Patterns. (line 41) +* Boolean expressions, as patterns: Expression Patterns. (line 39) * Boolean operators, See Boolean expressions: Boolean Ops. (line 6) * Bourne shell, quoting rules for: Quoting. (line 18) -* braces ({}): Profiling. (line 134) +* braces ({}): Profiling. (line 142) * braces ({}), actions and: Action Overview. (line 19) * braces ({}), statements, grouping: Statements. (line 10) * bracket expressions <1>: Bracket Expressions. (line 6) @@ -30509,17 +30635,44 @@ Index (line 6) * break debugger command: Breakpoint Control. (line 11) * break statement: Break Statement. (line 6) +* breakpoint: Debugging Terms. (line 33) +* breakpoint at location, how to delete: Breakpoint Control. (line 36) +* breakpoint commands: Debugger Execution Control. + (line 10) +* breakpoint condition: Breakpoint Control. (line 54) +* breakpoint, delete by number: Breakpoint Control. (line 64) +* breakpoint, how to disable or enable: Breakpoint Control. (line 69) +* breakpoint, setting: Breakpoint Control. (line 11) * Brennan, Michael <1>: Other Versions. (line 6) * Brennan, Michael <2>: Two-way I/O. (line 6) * Brennan, Michael <3>: Simple Sed. (line 25) -* Brennan, Michael: Delete. (line 56) -* Brian Kernighan's awk: Other Versions. (line 13) +* Brennan, Michael <4>: Delete. (line 56) +* Brennan, Michael: Foreword. (line 83) +* Brian Kernighan's awk <1>: I/O Functions. (line 40) +* Brian Kernighan's awk <2>: Gory Details. (line 15) +* Brian Kernighan's awk <3>: String Functions. (line 490) +* Brian Kernighan's awk <4>: Delete. (line 48) +* Brian Kernighan's awk <5>: Nextfile Statement. (line 47) +* Brian Kernighan's awk <6>: Continue Statement. (line 43) +* Brian Kernighan's awk <7>: Break Statement. (line 51) +* Brian Kernighan's awk <8>: I/O And BEGIN/END. (line 16) +* Brian Kernighan's awk <9>: Concatenation. (line 36) +* Brian Kernighan's awk <10>: Getline/Pipe. (line 62) +* Brian Kernighan's awk <11>: Regexp Field Splitting. + (line 67) +* Brian Kernighan's awk <12>: GNU Regexp Operators. + (line 83) +* Brian Kernighan's awk <13>: Escape Sequences. (line 116) +* Brian Kernighan's awk <14>: When. (line 21) +* Brian Kernighan's awk: Preface. (line 15) * Brian Kernighan's awk, extensions: BTL. (line 6) +* Brian Kernighan's awk, source code: Other Versions. (line 13) +* Brini, Davide: Signature Program. (line 6) * Broder, Alan J.: Contributors. (line 88) * Brown, Martin: Contributors. (line 82) -* BSD-based operating systems: Glossary. (line 624) +* BSD-based operating systems: Glossary. (line 616) * bt debugger command (alias for backtrace): Execution Stack. (line 13) -* Buening, Andreas <1>: Bugs. (line 71) +* Buening, Andreas <1>: Bugs. (line 70) * Buening, Andreas <2>: Contributors. (line 92) * Buening, Andreas: Acknowledgments. (line 60) * buffering, input/output <1>: Two-way I/O. (line 70) @@ -30541,24 +30694,29 @@ Index (line 47) * call by value: Pass By Value/Reference. (line 18) -* caret (^): GNU Regexp Operators. - (line 59) +* call stack, display in debugger: Execution Stack. (line 13) * caret (^), ^ operator: Precedence. (line 49) * caret (^), ^= operator <1>: Precedence. (line 95) * caret (^), ^= operator: Assignment Ops. (line 129) * caret (^), in bracket expressions: Bracket Expressions. (line 17) +* caret (^), regexp operator <1>: GNU Regexp Operators. + (line 59) * caret (^), regexp operator: Regexp Operators. (line 22) * case keyword: Switch Statement. (line 6) +* case sensitivity, and regexps: User-modified. (line 82) +* case sensitivity, and string comparisons: User-modified. (line 82) * case sensitivity, array indices and: Array Intro. (line 91) -* case sensitivity, converting case: String Functions. (line 519) +* case sensitivity, converting case: String Functions. (line 520) * case sensitivity, example programs: Library Functions. (line 53) * case sensitivity, gawk: Case-sensitivity. (line 26) -* case sensitivity, regexps and <1>: User-modified. (line 82) * case sensitivity, regexps and: Case-sensitivity. (line 6) -* case sensitivity, string comparisons and: User-modified. (line 82) * CGI, awk scripts for: Options. (line 125) +* changing precision of a number: Changing Precision. (line 6) +* character classes, See bracket expressions: Regexp Operators. + (line 55) +* character lists in regular expression: Bracket Expressions. (line 6) * character lists, See bracket expressions: Regexp Operators. (line 55) -* character sets (machine character encodings) <1>: Glossary. (line 141) +* character sets (machine character encodings) <1>: Glossary. (line 133) * character sets (machine character encodings): Ordinal Functions. (line 45) * character sets, See Also bracket expressions: Regexp Operators. @@ -30569,7 +30727,7 @@ Index * Chassell, Robert J.: Acknowledgments. (line 33) * chdir() extension function: Extension Sample File Functions. (line 12) -* chem utility: Glossary. (line 151) +* chem utility: Glossary. (line 143) * chr() extension function: Extension Sample Ord. (line 15) * chr() user-defined function: Ordinal Functions. (line 16) @@ -30578,12 +30736,12 @@ Index (line 6) * cliff_rand() user-defined function: Cliff Random Function. (line 12) -* close() function <1>: I/O Functions. (line 10) -* close() function <2>: Close Files And Pipes. +* close <1>: I/O Functions. (line 10) +* close: Close Files And Pipes. (line 18) -* close() function <3>: Getline/Pipe. (line 27) -* close() function: Getline/Variable/File. - (line 30) +* close file or coprocess: I/O Functions. (line 10) +* close() function, portability: Close Files And Pipes. + (line 81) * close() function, return value: Close Files And Pipes. (line 130) * close() function, two-way pipes and: Two-way I/O. (line 77) @@ -30592,10 +30750,12 @@ Index * Collado, Manuel: Acknowledgments. (line 60) * collating elements: Bracket Expressions. (line 69) * collating symbols: Bracket Expressions. (line 76) +* Colombo, Antonio <1>: Contributors. (line 135) * Colombo, Antonio: Acknowledgments. (line 60) * columns, aligning: Print Examples. (line 70) * columns, cutting: Cut Program. (line 6) * comma (,), in range patterns: Ranges. (line 6) +* command completion, in debugger: Readline Support. (line 6) * command line, arguments <1>: ARGC and ARGV. (line 6) * command line, arguments <2>: Auto-set. (line 11) * command line, arguments: Other Arguments. (line 6) @@ -30605,16 +30765,16 @@ Index * command line, FS on, setting: Command Line Field Separator. (line 6) * command line, invoking awk from: Command Line. (line 6) -* command line, options <1>: Command Line Field Separator. - (line 6) -* command line, options <2>: Options. (line 6) -* command line, options: Long. (line 12) +* command line, option -f: Long. (line 12) +* command line, options: Options. (line 6) * command line, options, end of: Options. (line 54) * command line, variables, assigning on: Assignment Options. (line 6) * command-line options, processing: Getopt Function. (line 6) * command-line options, string extraction: String Extraction. (line 6) * commands debugger command: Debugger Execution Control. (line 10) +* commands to execute at breakpoint: Debugger Execution Control. + (line 10) * commenting: Comments. (line 6) * commenting, backslash continuation and: Statements/Lines. (line 76) * common extensions, ** operator: Arithmetic Ops. (line 30) @@ -30623,12 +30783,12 @@ Index * common extensions, /dev/stdin special file: Special FD. (line 46) * common extensions, /dev/stdout special file: Special FD. (line 46) * common extensions, \x escape sequence: Escape Sequences. (line 61) -* common extensions, BINMODE variable: PC Using. (line 34) +* common extensions, BINMODE variable: PC Using. (line 33) * common extensions, delete to delete entire arrays: Delete. (line 39) * common extensions, func keyword: Definition Syntax. (line 83) * common extensions, length() applied to an array: String Functions. - (line 193) -* common extensions, RS as a regexp: Records. (line 120) + (line 194) +* common extensions, RS as a regexp: Records. (line 135) * common extensions, single character fields: Single Character Fields. (line 6) * comp.lang.awk newsgroup: Bugs. (line 38) @@ -30644,13 +30804,13 @@ Index * compatibility mode (gawk), octal numbers: Nondecimal-numbers. (line 60) * compatibility mode (gawk), specifying: Options. (line 81) -* compiled programs <1>: Glossary. (line 165) +* compiled programs <1>: Glossary. (line 157) * compiled programs: Basic High Level. (line 15) * compiling gawk for Cygwin: Cygwin. (line 6) * compiling gawk for MS-DOS and MS-Windows: PC Compiling. (line 13) * compiling gawk for VMS: VMS Compilation. (line 6) * compiling gawk with EMX for OS/2: PC Compiling. (line 28) -* compl() function (gawk): Bitwise Functions. (line 43) +* compl: Bitwise Functions. (line 43) * complement, bitwise: Bitwise Functions. (line 25) * compound statements, control statements and: Statements. (line 10) * concatenating: Concatenation. (line 8) @@ -30666,46 +30826,59 @@ Index (line 35) * configuration options, gawk: Additional Configuration Options. (line 6) +* constant regexps: Regexp Usage. (line 57) * constants, floating-point: Floating-point Constants. (line 6) * constants, nondecimal: Nondecimal Data. (line 6) +* constants, numeric: Scalar Constants. (line 6) * constants, types of: Constants. (line 6) * context, floating-point: Floating-point Context. (line 6) +* continue program, in debugger: Debugger Execution Control. + (line 33) * continue statement: Continue Statement. (line 6) * control statements: Statements. (line 6) -* converting, case: String Functions. (line 519) -* converting, dates to timestamps: Time Functions. (line 75) -* converting, during subscripting: Numeric Array Subscripts. +* controlling array scanning order: Controlling Scanning. + (line 12) +* convert string to lower case: String Functions. (line 521) +* convert string to number: String Functions. (line 385) +* convert string to upper case: String Functions. (line 527) +* converting integer array subscripts: Numeric Array Subscripts. (line 31) +* converting, dates to timestamps: Time Functions. (line 76) * converting, numbers to strings <1>: Bitwise Functions. (line 109) * converting, numbers to strings: Conversion. (line 6) * converting, strings to numbers <1>: Bitwise Functions. (line 109) * converting, strings to numbers: Conversion. (line 6) * CONVFMT variable <1>: User-modified. (line 28) * CONVFMT variable: Conversion. (line 29) -* CONVFMT variable, array subscripts and: Numeric Array Subscripts. +* CONVFMT variable, and array subscripts: Numeric Array Subscripts. (line 6) -* cookie: Glossary. (line 157) +* cookie: Glossary. (line 149) * coprocesses <1>: Two-way I/O. (line 44) * coprocesses: Redirection. (line 102) * coprocesses, closing: Close Files And Pipes. (line 6) * coprocesses, getline from: Getline/Coprocess. (line 6) -* cos() function: Numeric Functions. (line 15) +* cos: Numeric Functions. (line 15) +* cosine: Numeric Functions. (line 15) * counting: Wc Program. (line 6) * csh utility: Statements/Lines. (line 44) * csh utility, POSIXLY_CORRECT environment variable: Options. (line 348) * csh utility, |& operator, comparison with: Two-way I/O. (line 44) -* ctime() user-defined function: Function Example. (line 72) +* ctime() user-defined function: Function Example. (line 73) * currency symbols, localization: Explaining gettext. (line 103) +* current system time: Time Functions. (line 66) * custom.h file: Configuration Philosophy. (line 30) +* customized input parser: Input Parsers. (line 6) +* customized output wrapper: Output Wrappers. (line 6) +* customized two-way processor: Two-way processors. (line 6) * cut utility: Cut Program. (line 6) * cut.awk program: Cut Program. (line 45) * d debugger command (alias for delete): Breakpoint Control. (line 64) * d.c., See dark corner: Conventions. (line 38) -* dark corner <1>: Glossary. (line 197) +* dark corner <1>: Glossary. (line 189) * dark corner: Conventions. (line 38) * dark corner, "0" is actually true: Truth Values. (line 24) * dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops. @@ -30732,9 +30905,9 @@ Index * dark corner, format-control characters: Control Letters. (line 18) * dark corner, FS as null string: Single Character Fields. (line 20) -* dark corner, input files: Records. (line 103) +* dark corner, input files: Records. (line 118) * dark corner, invoking awk: Command Line. (line 16) -* dark corner, length() function: String Functions. (line 179) +* dark corner, length() function: String Functions. (line 180) * dark corner, locale's decimal point character: Conversion. (line 77) * dark corner, multiline records: Multiple Line. (line 35) * dark corner, NF variable, decrementing: Changing Fields. (line 107) @@ -30745,26 +30918,26 @@ Index (line 147) * dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps. (line 43) -* dark corner, split() function: String Functions. (line 358) -* dark corner, strings, storing: Records. (line 195) +* dark corner, split() function: String Functions. (line 359) +* dark corner, strings, storing: Records. (line 210) * dark corner, value of ARGV[0]: Auto-set. (line 35) * data, fixed-width: Constant Size. (line 10) * data-driven languages: Basic High Level. (line 85) * database, group, reading: Group Functions. (line 6) * database, users, reading: Passwd Functions. (line 6) * date utility, GNU: Time Functions. (line 17) -* date utility, POSIX: Time Functions. (line 262) -* dates, converting to timestamps: Time Functions. (line 75) +* date utility, POSIX: Time Functions. (line 263) +* dates, converting to timestamps: Time Functions. (line 76) * dates, information related to, localization: Explaining gettext. (line 115) * Davies, Stephen <1>: Contributors. (line 74) * Davies, Stephen: Acknowledgments. (line 60) -* dcgettext() function (gawk) <1>: Programmer i18n. (line 19) -* dcgettext() function (gawk): I18N Functions. (line 22) +* dcgettext <1>: Programmer i18n. (line 19) +* dcgettext: I18N Functions. (line 22) * dcgettext() function (gawk), portability and: I18N Portability. (line 33) -* dcngettext() function (gawk) <1>: Programmer i18n. (line 36) -* dcngettext() function (gawk): I18N Functions. (line 28) +* dcngettext <1>: Programmer i18n. (line 36) +* dcngettext: I18N Functions. (line 28) * dcngettext() function (gawk), portability and: I18N Portability. (line 33) * deadlocks: Two-way I/O. (line 70) @@ -30864,6 +31037,13 @@ Index (line 67) * debugger commands, watch: Viewing And Changing Data. (line 67) +* debugger default list amount: Debugger Info. (line 69) +* debugger history file: Debugger Info. (line 80) +* debugger history size: Debugger Info. (line 65) +* debugger options: Debugger Info. (line 57) +* debugger prompt: Debugger Info. (line 77) +* debugger, how to start: Debugger Invocation. (line 6) +* debugger, read commands from a file: Debugger Info. (line 96) * debugging awk programs: Debugger. (line 6) * debugging gawk, bug reports: Bugs. (line 9) * decimal point character, locale specific: Options. (line 263) @@ -30872,12 +31052,18 @@ Index * Deifik, Scott <1>: Bugs. (line 70) * Deifik, Scott <2>: Contributors. (line 53) * Deifik, Scott: Acknowledgments. (line 60) +* delete ARRAY: Delete. (line 39) +* delete breakpoint at location: Breakpoint Control. (line 36) +* delete breakpoint by number: Breakpoint Control. (line 64) * delete debugger command: Breakpoint Control. (line 64) * delete statement: Delete. (line 6) +* delete watchpoint: Viewing And Changing Data. + (line 84) * deleting elements in arrays: Delete. (line 6) * deleting entire arrays: Delete. (line 39) * Demaille, Akim: Acknowledgments. (line 60) -* differences between gawk and awk: String Functions. (line 193) +* describe call stack frame, in debugger: Debugger Info. (line 27) +* differences between gawk and awk: String Functions. (line 194) * differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV. (line 88) * differences in awk and gawk, ARGIND variable: Auto-set. (line 40) @@ -30892,11 +31078,13 @@ Index * differences in awk and gawk, BEGINFILE/ENDFILE patterns: BEGINFILE/ENDFILE. (line 6) * differences in awk and gawk, BINMODE variable <1>: PC Using. - (line 34) + (line 33) * differences in awk and gawk, BINMODE variable: User-modified. (line 23) * differences in awk and gawk, close() function: Close Files And Pipes. (line 81) +* differences in awk and gawk, command line directories: Command line directories. + (line 6) * differences in awk and gawk, ERRNO variable: Auto-set. (line 82) * differences in awk and gawk, error messages: Special FD. (line 16) * differences in awk and gawk, FIELDWIDTHS variable: User-modified. @@ -30922,25 +31110,23 @@ Index (line 34) * differences in awk and gawk, LINT variable: User-modified. (line 98) * differences in awk and gawk, match() function: String Functions. - (line 256) + (line 257) * differences in awk and gawk, print/printf statements: Format Modifiers. (line 13) * differences in awk and gawk, PROCINFO array: Auto-set. (line 142) -* differences in awk and gawk, record separators: Records. (line 117) +* differences in awk and gawk, record separators: Records. (line 132) * differences in awk and gawk, regexp constants: Using Constant Regexps. (line 43) * differences in awk and gawk, regular expressions: Case-sensitivity. (line 26) -* differences in awk and gawk, RS/RT variables: Records. (line 172) +* differences in awk and gawk, RS/RT variables: Records. (line 187) * differences in awk and gawk, RT variable: Auto-set. (line 275) * differences in awk and gawk, single-character fields: Single Character Fields. (line 6) * differences in awk and gawk, split() function: String Functions. - (line 346) + (line 347) * differences in awk and gawk, strings: Scalar Constants. (line 20) -* differences in awk and gawk, strings, storing: Records. (line 191) -* differences in awk and gawk, strtonum() function (gawk): String Functions. - (line 401) +* differences in awk and gawk, strings, storing: Records. (line 206) * differences in awk and gawk, SYMTAB variable: Auto-set. (line 283) * differences in awk and gawk, TEXTDOMAIN variable: User-modified. (line 162) @@ -30948,57 +31134,71 @@ Index (line 66) * directories, command line: Command line directories. (line 6) -* directories, searching <1>: Igawk Program. (line 368) -* directories, searching <2>: AWKLIBPATH Variable. (line 6) -* directories, searching: AWKPATH Variable. (line 6) +* directories, searching: Igawk Program. (line 368) +* directories, searching for shared libraries: AWKLIBPATH Variable. + (line 6) +* directories, searching for source files: AWKPATH Variable. (line 6) +* disable breakpoint: Breakpoint Control. (line 69) * disable debugger command: Breakpoint Control. (line 69) * display debugger command: Viewing And Changing Data. (line 8) +* display debugger options: Debugger Info. (line 57) * division: Arithmetic Ops. (line 44) -* do-while statement <1>: Do Statement. (line 6) -* do-while statement: Regexp Usage. (line 19) +* do-while statement: Do Statement. (line 6) +* do-while statement, use of regexps in: Regexp Usage. (line 19) * documentation, of awk programs: Library Names. (line 6) * documentation, online: Manual History. (line 11) * documents, searching: Dupword Program. (line 6) -* dollar sign ($): Regexp Operators. (line 35) * dollar sign ($), $ field operator <1>: Precedence. (line 43) * dollar sign ($), $ field operator: Fields. (line 19) * dollar sign ($), incrementing fields and arrays: Increment Ops. (line 30) +* dollar sign ($), regexp operator: Regexp Operators. (line 35) * double precision floating-point: General Arithmetic. (line 21) -* double quote (") <1>: Quoting. (line 37) -* double quote ("): Read Terminal. (line 25) +* double quote (") in shell commands: Read Terminal. (line 25) * double quote ("), in regexp constants: Computed Regexps. (line 28) +* double quote ("), in shell commands: Quoting. (line 37) * down debugger command: Execution Stack. (line 21) * Drepper, Ulrich: Acknowledgments. (line 52) +* dump all variables of a program: Options. (line 93) * dump debugger command: Miscellaneous Debugger Commands. (line 9) * dupword.awk program: Dupword Program. (line 31) +* dynamic profiling: Profiling. (line 179) +* dynamically loaded extensions: Dynamic Extensions. (line 6) * e debugger command (alias for enable): Breakpoint Control. (line 73) * EBCDIC: Ordinal Functions. (line 45) +* effective group ID of gawk user: Auto-set. (line 147) +* effective user ID of gawk user: Auto-set. (line 151) * egrep utility <1>: Egrep Program. (line 6) * egrep utility: Bracket Expressions. (line 24) * egrep.awk program: Egrep Program. (line 54) -* elements in arrays: Reference to Elements. - (line 6) -* elements in arrays, assigning: Assigning Elements. (line 6) +* elements in arrays, assigning values: Assigning Elements. (line 6) * elements in arrays, deleting: Delete. (line 6) -* elements in arrays, order of: Scanning an Array. (line 48) +* elements in arrays, order of access by in operator: Scanning an Array. + (line 48) * elements in arrays, scanning: Scanning an Array. (line 6) +* elements of arrays: Reference to Elements. + (line 6) * email address for bug reports, bug-gawk@gnu.org: Bugs. (line 30) * EMISTERED: TCP/IP Networking. (line 6) +* empty array elements: Reference to Elements. + (line 18) * empty pattern: Empty. (line 6) +* empty strings: Records. (line 122) * empty strings, See null strings: Regexp Field Splitting. (line 43) +* enable breakpoint: Breakpoint Control. (line 73) * enable debugger command: Breakpoint Control. (line 73) * end debugger command: Debugger Execution Control. (line 10) -* END pattern <1>: Profiling. (line 62) +* END pattern <1>: Using BEGIN/END. (line 6) * END pattern: BEGIN/END. (line 6) +* END pattern, and profiling: Profiling. (line 62) * END pattern, assert() user-defined function and: Assert Function. (line 75) * END pattern, backslash continuation and: Egrep Program. (line 220) -* END pattern, Boolean patterns and: Expression Patterns. (line 73) +* END pattern, Boolean patterns and: Expression Patterns. (line 70) * END pattern, exit statement and: Exit Statement. (line 12) * END pattern, next/nextfile statements and <1>: Next Statement. (line 45) @@ -31007,34 +31207,38 @@ Index * END pattern, operators and: Using BEGIN/END. (line 17) * END pattern, print statement and: I/O And BEGIN/END. (line 16) * ENDFILE pattern: BEGINFILE/ENDFILE. (line 6) -* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 73) +* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 70) * endfile() user-defined function: Filetrans Function. (line 62) * endgrent() function (C library): Group Functions. (line 215) * endgrent() user-defined function: Group Functions. (line 218) * endpwent() function (C library): Passwd Functions. (line 210) * endpwent() user-defined function: Passwd Functions. (line 213) * ENVIRON array: Auto-set. (line 60) -* environment variables: Auto-set. (line 60) -* epoch, definition of: Glossary. (line 243) +* environment variables used by gawk: Environment Variables. + (line 6) +* environment variables, in ENVIRON array: Auto-set. (line 60) +* epoch, definition of: Glossary. (line 235) * equals sign (=), = operator: Assignment Ops. (line 6) * equals sign (=), == operator <1>: Precedence. (line 65) * equals sign (=), == operator: Comparison Operators. (line 11) * EREs (Extended Regular Expressions): Bracket Expressions. (line 24) * ERRNO variable <1>: TCP/IP Networking. (line 54) -* ERRNO variable <2>: Auto-set. (line 82) -* ERRNO variable <3>: BEGINFILE/ENDFILE. (line 26) -* ERRNO variable <4>: Close Files And Pipes. +* ERRNO variable: Auto-set. (line 82) +* ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE. (line 26) +* ERRNO variable, with close() function: Close Files And Pipes. (line 138) -* ERRNO variable: Getline. (line 19) +* ERRNO variable, with getline command: Getline. (line 19) * error handling: Special FD. (line 16) * error handling, ERRNO variable and: Auto-set. (line 82) * error output: Special FD. (line 6) * escape processing, gsub()/gensub()/sub() functions: Gory Details. (line 6) -* escape sequences: Escape Sequences. (line 6) +* escape sequences, in strings: Escape Sequences. (line 6) * eval debugger command: Viewing And Changing Data. (line 23) +* evaluate expressions, in debugger: Viewing And Changing Data. + (line 23) * evaluation order: Increment Ops. (line 60) * evaluation order, concatenation: Concatenation. (line 41) * evaluation order, functions: Calling Built-in. (line 30) @@ -31057,9 +31261,12 @@ Index * exit statement: Exit Statement. (line 6) * exit status, of gawk: Exit Status. (line 6) * exit status, of VMS: VMS Running. (line 29) -* exp() function: Numeric Functions. (line 18) +* exit the debugger: Miscellaneous Debugger Commands. + (line 99) +* exp: Numeric Functions. (line 18) * expand utility: Very Simple. (line 69) * Expat XML parser library: gawkextlib. (line 35) +* exponent: Numeric Functions. (line 18) * expressions: Expressions. (line 6) * expressions, as patterns: Expression Patterns. (line 6) * expressions, assignment: Assignment Ops. (line 6) @@ -31071,6 +31278,20 @@ Index (line 9) * expressions, selecting: Conditional Exp. (line 6) * Extended Regular Expressions (EREs): Bracket Expressions. (line 24) +* extension API: Extension API Description. + (line 6) +* extension API informational variables: Extension API Informational Variables. + (line 6) +* extension API version: Extension Versioning. + (line 6) +* extension API, version number: Auto-set. (line 238) +* extension example: Extension Example. (line 6) +* extension registration: Registration Functions. + (line 6) +* extension search path: Finding Extensions. (line 6) +* extensions distributed with gawk: Extension Samples. (line 6) +* extensions, allocating memory: Memory Allocation Functions. + (line 6) * extensions, Brian Kernighan's awk <1>: Common Extensions. (line 6) * extensions, Brian Kernighan's awk: BTL. (line 6) * extensions, common, ** operator: Arithmetic Ops. (line 30) @@ -31079,43 +31300,45 @@ Index * extensions, common, /dev/stdin special file: Special FD. (line 46) * extensions, common, /dev/stdout special file: Special FD. (line 46) * extensions, common, \x escape sequence: Escape Sequences. (line 61) -* extensions, common, BINMODE variable: PC Using. (line 34) +* extensions, common, BINMODE variable: PC Using. (line 33) * extensions, common, delete to delete entire arrays: Delete. (line 39) +* extensions, common, fflush() function: I/O Functions. (line 40) * extensions, common, func keyword: Definition Syntax. (line 83) * extensions, common, length() applied to an array: String Functions. - (line 193) -* extensions, common, RS as a regexp: Records. (line 120) + (line 194) +* extensions, common, RS as a regexp: Records. (line 135) * extensions, common, single character fields: Single Character Fields. (line 6) * extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 6) * extensions, mawk: Common Extensions. (line 6) +* extensions, where to find: gawkextlib. (line 6) * extract.awk program: Extract Program. (line 79) * extraction, of marked strings (internationalization): String Extraction. (line 6) * f debugger command (alias for frame): Execution Stack. (line 25) * false, logical: Truth Values. (line 6) * FDL (Free Documentation License): GNU Free Documentation License. - (line 6) + (line 7) * features, adding to gawk: Adding Code. (line 6) * features, advanced, See advanced features: Obsolete. (line 6) * features, deprecated: Obsolete. (line 6) * features, undocumented: Undocumented. (line 6) * Fenlason, Jay <1>: Contributors. (line 18) * Fenlason, Jay: History. (line 30) -* fflush() function: I/O Functions. (line 25) +* fflush: I/O Functions. (line 25) * field numbers: Nonconstant Fields. (line 6) * field operator $: Fields. (line 19) * field operators, dollar sign as: Fields. (line 19) +* field separator, in multiline records: Multiple Line. (line 41) +* field separator, on command line: Command Line Field Separator. + (line 6) +* field separator, POSIX and: Field Splitting Summary. + (line 40) * field separators <1>: User-modified. (line 56) * field separators: Field Separators. (line 15) * field separators, choice of: Field Separators. (line 51) * field separators, FIELDWIDTHS variable and: User-modified. (line 35) * field separators, FPAT variable and: User-modified. (line 45) -* field separators, in multiline records: Multiple Line. (line 41) -* field separators, on command line: Command Line Field Separator. - (line 6) -* field separators, POSIX and <1>: Field Splitting Summary. - (line 40) * field separators, POSIX and: Fields. (line 6) * field separators, regular expressions as <1>: Regexp Field Splitting. (line 6) @@ -31157,7 +31380,6 @@ Index * files, /inet/... (gawk): TCP/IP Networking. (line 6) * files, /inet4/... (gawk): TCP/IP Networking. (line 6) * files, /inet6/... (gawk): TCP/IP Networking. (line 6) -* files, as single records: Records. (line 204) * files, awk programs in: Long. (line 6) * files, awkprof.out: Profiling. (line 6) * files, awkvars.out: Options. (line 93) @@ -31196,19 +31418,22 @@ Index * files, source, search path for: Igawk Program. (line 368) * files, splitting: Split Program. (line 6) * files, Texinfo, extracting programs from: Extract Program. (line 6) +* find substring in string: String Functions. (line 151) +* finding extensions: Finding Extensions. (line 6) * finish debugger command: Debugger Execution Control. (line 39) * Fish, Fred: Contributors. (line 50) * fixed-width data: Constant Size. (line 10) * flag variables <1>: Tee Program. (line 20) * flag variables: Boolean Ops. (line 67) -* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic. - (line 6) * floating-point, numbers <1>: Unexpected Results. (line 6) * floating-point, numbers: General Arithmetic. (line 6) +* floating-point, numbers, arbitrary precision: Arbitrary Precision Arithmetic. + (line 6) * floating-point, VAX/VMS: VMS Running. (line 51) +* flush buffered output: I/O Functions. (line 25) * fnmatch() extension function: Extension Sample Fnmatch. - (line 6) + (line 12) * FNR variable <1>: Auto-set. (line 112) * FNR variable: Records. (line 6) * FNR variable, changing: Auto-set. (line 323) @@ -31216,15 +31441,17 @@ Index * for statement, looping over arrays: Scanning an Array. (line 20) * fork() extension function: Extension Sample Fork. (line 11) +* format specifiers: Basic Printf. (line 15) * format specifiers, mixing regular with positional specifiers: Printf Ordering. (line 57) * format specifiers, printf statement: Control Letters. (line 6) * format specifiers, strftime() function (gawk): Time Functions. - (line 88) -* format strings: Basic Printf. (line 15) + (line 89) +* format time string: Time Functions. (line 48) * formats, numeric output: OFMT. (line 6) * formatting output: Printf. (line 6) -* forward slash (/): Regexp. (line 10) +* formatting strings: String Functions. (line 378) +* forward slash (/) to enclose regular expressions: Regexp. (line 10) * forward slash (/), / operator: Precedence. (line 55) * forward slash (/), /= operator <1>: Precedence. (line 95) * forward slash (/), /= operator: Assignment Ops. (line 129) @@ -31236,11 +31463,11 @@ Index (line 27) * frame debugger command: Execution Stack. (line 25) * Free Documentation License (FDL): GNU Free Documentation License. - (line 6) -* Free Software Foundation (FSF) <1>: Glossary. (line 305) + (line 7) +* Free Software Foundation (FSF) <1>: Glossary. (line 297) * Free Software Foundation (FSF) <2>: Getting. (line 10) * Free Software Foundation (FSF): Manual History. (line 6) -* FreeBSD: Glossary. (line 624) +* FreeBSD: Glossary. (line 616) * FS variable <1>: User-modified. (line 56) * FS variable: Field Separators. (line 15) * FS variable, --field-separator option and: Options. (line 21) @@ -31253,7 +31480,8 @@ Index (line 6) * FS, containing ^: Regexp Field Splitting. (line 59) -* FSF (Free Software Foundation) <1>: Glossary. (line 305) +* FS, in multiline records: Multiple Line. (line 41) +* FSF (Free Software Foundation) <1>: Glossary. (line 297) * FSF (Free Software Foundation) <2>: Getting. (line 10) * FSF (Free Software Foundation): Manual History. (line 6) * fts() extension function: Extension Sample File Functions. @@ -31261,6 +31489,7 @@ Index * FUNCTAB array: Auto-set. (line 128) * function calls: Function Calls. (line 6) * function calls, indirect: Indirect Calls. (line 6) +* function definition example: Function Example. (line 6) * function pointers: Indirect Calls. (line 6) * functions, arrays as parameters to: Pass By Value/Reference. (line 47) @@ -31297,8 +31526,8 @@ Index * functions, undefined: Pass By Value/Reference. (line 71) * functions, user-defined: User-defined. (line 6) -* functions, user-defined, calling: Calling A Function. (line 6) -* functions, user-defined, counts: Profiling. (line 129) +* functions, user-defined, calling: Function Caveats. (line 6) +* functions, user-defined, counts, in a profile: Profiling. (line 137) * functions, user-defined, library of: Library Functions. (line 6) * functions, user-defined, next/nextfile statements and <1>: Nextfile Statement. (line 47) @@ -31306,7 +31535,8 @@ Index (line 45) * G-d: Acknowledgments. (line 78) * Garfinkle, Scott: Contributors. (line 34) -* gawk program, dynamic profiling: Profiling. (line 172) +* gawk program, dynamic profiling: Profiling. (line 179) +* gawk version: Auto-set. (line 213) * gawk, ARGIND variable in: Other Arguments. (line 12) * gawk, awk and <1>: This Manual. (line 14) * gawk, awk and: Preface. (line 23) @@ -31315,7 +31545,7 @@ Index * gawk, built-in variables and: Built-in Variables. (line 14) * gawk, character classes and: Bracket Expressions. (line 90) * gawk, coding style in: Adding Code. (line 38) -* gawk, command-line options: GNU Regexp Operators. +* gawk, command-line options, and regular expressions: GNU Regexp Operators. (line 70) * gawk, comparison operators and: Comparison Operators. (line 50) @@ -31349,7 +31579,7 @@ Index * gawk, hexadecimal numbers and: Nondecimal-numbers. (line 42) * gawk, IGNORECASE variable in <1>: Array Sorting Functions. (line 83) -* gawk, IGNORECASE variable in <2>: String Functions. (line 32) +* gawk, IGNORECASE variable in <2>: String Functions. (line 48) * gawk, IGNORECASE variable in <3>: Array Intro. (line 91) * gawk, IGNORECASE variable in <4>: User-modified. (line 82) * gawk, IGNORECASE variable in: Case-sensitivity. (line 26) @@ -31368,11 +31598,11 @@ Index * gawk, line continuation in: Conditional Exp. (line 34) * gawk, LINT variable in: User-modified. (line 98) * gawk, list of contributors to: Contributors. (line 6) -* gawk, MS-DOS version of: PC Using. (line 11) -* gawk, MS-Windows version of: PC Using. (line 11) +* gawk, MS-DOS version of: PC Using. (line 10) +* gawk, MS-Windows version of: PC Using. (line 10) * gawk, newlines in: Statements/Lines. (line 12) * gawk, octal numbers and: Nondecimal-numbers. (line 42) -* gawk, OS/2 version of: PC Using. (line 11) +* gawk, OS/2 version of: PC Using. (line 10) * gawk, PROCINFO array in <1>: Two-way I/O. (line 116) * gawk, PROCINFO array in <2>: Time Functions. (line 47) * gawk, PROCINFO array in: Auto-set. (line 142) @@ -31384,10 +31614,8 @@ Index (line 6) * gawk, regular expressions, precedence: Regexp Operators. (line 161) * gawk, RT variable in <1>: Auto-set. (line 275) -* gawk, RT variable in <2>: Getline/Variable/File. - (line 10) -* gawk, RT variable in <3>: Multiple Line. (line 129) -* gawk, RT variable in: Records. (line 117) +* gawk, RT variable in <2>: Multiple Line. (line 129) +* gawk, RT variable in: Records. (line 132) * gawk, See Also awk: Preface. (line 36) * gawk, source code, obtaining: Getting. (line 6) * gawk, splitting fields and: Constant Size. (line 88) @@ -31400,11 +31628,13 @@ Index * gawk, VMS version of: VMS Installation. (line 6) * gawk, word-boundary operator: GNU Regexp Operators. (line 63) +* gawkextlib: gawkextlib. (line 6) * gawkextlib project: gawkextlib. (line 6) -* General Public License (GPL): Glossary. (line 314) +* General Public License (GPL): Glossary. (line 306) * General Public License, See GPL: Manual History. (line 11) -* gensub() function (gawk) <1>: String Functions. (line 81) -* gensub() function (gawk): Using Constant Regexps. +* generate time values: Time Functions. (line 25) +* gensub <1>: String Functions. (line 82) +* gensub: Using Constant Regexps. (line 43) * gensub() function (gawk), escape processing: Gory Details. (line 6) * getaddrinfo() function (C library): TCP/IP Networking. (line 38) @@ -31429,6 +31659,8 @@ Index * getline command, FILENAME variable and: Getline Notes. (line 19) * getline command, return values: Getline. (line 19) * getline command, variants: Getline Summary. (line 6) +* getline from a file: Getline/File. (line 6) +* getline into a variable: Getline/Variable. (line 6) * getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE. (line 54) * getlocaltime() user-defined function: Getlocaltime Function. @@ -31446,40 +31678,47 @@ Index * gettext() function (C library): Explaining gettext. (line 62) * gettimeofday() extension function: Extension Sample Time. (line 13) -* GMP: Arbitrary Precision Arithmetic. - (line 6) +* git utility <1>: Adding Code. (line 111) +* git utility <2>: Accessing The Source. + (line 10) +* git utility <3>: Other Versions. (line 29) +* git utility: gawkextlib. (line 29) +* git, use of for gawk source code: Derived Files. (line 6) +* GMP: Gawk and MPFR. (line 6) * GNITS mailing list: Acknowledgments. (line 52) * GNU awk, See gawk: Preface. (line 49) * GNU Free Documentation License: GNU Free Documentation License. - (line 6) -* GNU General Public License: Glossary. (line 314) -* GNU Lesser General Public License: Glossary. (line 405) + (line 7) +* GNU General Public License: Glossary. (line 306) +* GNU Lesser General Public License: Glossary. (line 397) * GNU long options <1>: Options. (line 6) * GNU long options: Command Line. (line 13) * GNU long options, printing list of: Options. (line 154) -* GNU Project <1>: Glossary. (line 323) +* GNU Project <1>: Glossary. (line 315) * GNU Project: Manual History. (line 11) -* GNU/Linux <1>: Glossary. (line 624) +* GNU/Linux <1>: Glossary. (line 616) * GNU/Linux <2>: I18N Example. (line 55) * GNU/Linux: Manual History. (line 28) -* GPL (General Public License) <1>: Glossary. (line 314) +* Gordon, Assaf: Contributors. (line 105) +* GPL (General Public License) <1>: Glossary. (line 306) * GPL (General Public License): Manual History. (line 11) * GPL (General Public License), printing: Options. (line 88) * grcat program: Group Functions. (line 16) * Grigera, Juan: Contributors. (line 57) * group database, reading: Group Functions. (line 6) * group file: Group Functions. (line 6) +* group ID of gawk user: Auto-set. (line 186) * groups, information about: Group Functions. (line 6) -* gsub() function <1>: String Functions. (line 134) -* gsub() function: Using Constant Regexps. +* gsub <1>: String Functions. (line 135) +* gsub: Using Constant Regexps. (line 43) -* gsub() function, arguments of: String Functions. (line 459) +* gsub() function, arguments of: String Functions. (line 460) * gsub() function, escape processing: Gory Details. (line 6) * h debugger command (alias for help): Miscellaneous Debugger Commands. (line 66) * Hankerson, Darrel <1>: Contributors. (line 60) * Hankerson, Darrel: Acknowledgments. (line 60) -* Haque, John: Contributors. (line 105) +* Haque, John: Contributors. (line 108) * Hartholz, Elaine: Acknowledgments. (line 38) * Hartholz, Marshall: Acknowledgments. (line 38) * Hasegawa, Isamu: Contributors. (line 94) @@ -31487,9 +31726,10 @@ Index (line 66) * hexadecimal numbers: Nondecimal-numbers. (line 6) * hexadecimal values, enabling interpretation of: Options. (line 207) +* history expansion, in debugger: Readline Support. (line 6) * histsort.awk program: History Sorting. (line 25) * Hughes, Phil: Acknowledgments. (line 43) -* HUP signal: Profiling. (line 204) +* HUP signal, for dynamic profiling: Profiling. (line 211) * hyphen (-), - operator: Precedence. (line 52) * hyphen (-), -- operator <1>: Precedence. (line 46) * hyphen (-), -- operator: Increment Ops. (line 48) @@ -31502,38 +31742,38 @@ Index * id.awk program: Id Program. (line 30) * IEEE-754 format: Floating-point Representation. (line 6) -* if statement <1>: If Statement. (line 6) -* if statement: Regexp Usage. (line 19) +* if statement: If Statement. (line 6) * if statement, actions, changing: Ranges. (line 25) +* if statement, use of regexps in: Regexp Usage. (line 19) * igawk.sh program: Igawk Program. (line 124) +* ignore breakpoint: Breakpoint Control. (line 87) * ignore debugger command: Breakpoint Control. (line 87) -* IGNORECASE variable <1>: Array Sorting Functions. - (line 83) -* IGNORECASE variable <2>: String Functions. (line 32) -* IGNORECASE variable <3>: Array Intro. (line 91) -* IGNORECASE variable <4>: User-modified. (line 82) -* IGNORECASE variable: Case-sensitivity. (line 26) -* IGNORECASE variable, array sorting and: Array Sorting Functions. +* IGNORECASE variable: User-modified. (line 82) +* IGNORECASE variable, and array indices: Array Intro. (line 91) +* IGNORECASE variable, and array sorting functions: Array Sorting Functions. (line 83) -* IGNORECASE variable, array subscripts and: Array Intro. (line 91) * IGNORECASE variable, in example programs: Library Functions. (line 53) +* IGNORECASE variable, with ~ and !~ operators: Case-sensitivity. + (line 26) * Illumos: Other Versions. (line 104) * Illumos, POSIX-compliant awk: Other Versions. (line 104) * implementation issues, gawk: Notes. (line 6) * implementation issues, gawk, debugging: Compatibility Mode. (line 6) * implementation issues, gawk, limits <1>: Redirection. (line 135) * implementation issues, gawk, limits: Getline Notes. (line 14) -* in operator <1>: Id Program. (line 93) -* in operator <2>: Scanning an Array. (line 17) -* in operator <3>: Reference to Elements. - (line 37) -* in operator <4>: For Statement. (line 75) -* in operator <5>: Precedence. (line 83) +* in operator <1>: For Statement. (line 75) +* in operator <2>: Precedence. (line 83) * in operator: Comparison Operators. (line 11) +* in operator, index existence in multidimensional arrays: Multidimensional. + (line 43) +* in operator, order of array access: Scanning an Array. (line 48) +* in operator, testing if array element exists: Reference to Elements. + (line 37) +* in operator, use in loops: Scanning an Array. (line 17) * increment operators: Increment Ops. (line 6) -* index() function: String Functions. (line 150) +* index: String Functions. (line 151) * indexing arrays: Array Intro. (line 49) * indirect function calls: Indirect Calls. (line 6) * infinite precision: Arbitrary Precision Arithmetic. @@ -31551,6 +31791,7 @@ Index * input files, running awk without: Read Terminal. (line 6) * input files, variable assignments and: Other Arguments. (line 19) * input pipeline: Getline/Pipe. (line 9) +* input record, length of: String Functions. (line 171) * input redirection: Getline/File. (line 6) * input, data, nondecimal: Nondecimal Data. (line 6) * input, explicit: Getline. (line 6) @@ -31559,17 +31800,21 @@ Index * input, splitting into records: Records. (line 6) * input, standard <1>: Special FD. (line 6) * input, standard: Read Terminal. (line 6) +* input/output functions: I/O Functions. (line 6) * input/output, binary: User-modified. (line 10) * input/output, from BEGIN and END: I/O And BEGIN/END. (line 6) * input/output, two-way: Two-way I/O. (line 44) * insomnia, cure for: Alarm Program. (line 6) * installation, VMS: VMS Installation. (line 6) * installing gawk: Installation. (line 6) -* INT signal (MS-Windows): Profiling. (line 207) -* int() function: Numeric Functions. (line 23) -* integer, arbitrary precision: Arbitrary Precision Integers. - (line 6) +* instruction tracing, in debugger: Debugger Info. (line 89) +* int: Numeric Functions. (line 23) +* INT signal (MS-Windows): Profiling. (line 214) +* integer array indices: Numeric Array Subscripts. + (line 31) * integers: General Arithmetic. (line 6) +* integers, arbitrary precision: Arbitrary Precision Integers. + (line 6) * integers, unsigned: General Arithmetic. (line 15) * interacting with other programs: I/O Functions. (line 72) * internationalization <1>: I18N and L10N. (line 6) @@ -31588,19 +31833,20 @@ Index * internationalization, localization, portability and: I18N Portability. (line 6) * internationalizing a program: Explaining gettext. (line 6) -* interpreted programs <1>: Glossary. (line 365) +* interpreted programs <1>: Glossary. (line 357) * interpreted programs: Basic High Level. (line 15) -* interval expressions: Regexp Operators. (line 116) +* interval expressions, regexp operator: Regexp Operators. (line 116) * inventory-shipped file: Sample Data Files. (line 32) -* isarray() function (gawk): Type Functions. (line 11) -* ISO: Glossary. (line 376) -* ISO 8859-1: Glossary. (line 141) -* ISO Latin-1: Glossary. (line 141) +* invoke shell command: I/O Functions. (line 72) +* isarray: Type Functions. (line 11) +* ISO: Glossary. (line 368) +* ISO 8859-1: Glossary. (line 133) +* ISO Latin-1: Glossary. (line 133) * Jacobs, Andrew: Passwd Functions. (line 90) * Jaegermann, Michal <1>: Contributors. (line 45) * Jaegermann, Michal: Acknowledgments. (line 60) * Java implementation of awk: Other Versions. (line 112) -* Java programming language: Glossary. (line 388) +* Java programming language: Glossary. (line 380) * jawk: Other Versions. (line 112) * Jedi knights: Undocumented. (line 6) * join() user-defined function: Join Function. (line 18) @@ -31608,15 +31854,18 @@ Index * Kahrs, Ju"rgen: Acknowledgments. (line 60) * Kasal, Stepan: Acknowledgments. (line 60) * Kenobi, Obi-Wan: Undocumented. (line 6) -* Kernighan, Brian <1>: Basic Data Typing. (line 55) -* Kernighan, Brian <2>: Other Versions. (line 13) -* Kernighan, Brian <3>: Contributors. (line 11) -* Kernighan, Brian <4>: BTL. (line 6) -* Kernighan, Brian <5>: Concatenation. (line 6) -* Kernighan, Brian <6>: Acknowledgments. (line 72) -* Kernighan, Brian <7>: Conventions. (line 34) +* Kernighan, Brian <1>: Glossary. (line 143) +* Kernighan, Brian <2>: Basic Data Typing. (line 55) +* Kernighan, Brian <3>: Other Versions. (line 13) +* Kernighan, Brian <4>: Contributors. (line 11) +* Kernighan, Brian <5>: BTL. (line 6) +* Kernighan, Brian <6>: Library Functions. (line 12) +* Kernighan, Brian <7>: Concatenation. (line 6) +* Kernighan, Brian <8>: Getline/Pipe. (line 6) +* Kernighan, Brian <9>: Acknowledgments. (line 72) +* Kernighan, Brian <10>: Conventions. (line 34) * Kernighan, Brian: History. (line 17) -* kill command, dynamic profiling: Profiling. (line 181) +* kill command, dynamic profiling: Profiling. (line 188) * Knights, jedi: Undocumented. (line 6) * Knuth, Donald: Arbitrary Precision Arithmetic. (line 6) @@ -31643,11 +31892,14 @@ Index * left angle bracket (<), <= operator <1>: Precedence. (line 65) * left angle bracket (<), <= operator: Comparison Operators. (line 11) +* left shift: Bitwise Functions. (line 46) * left shift, bitwise: Bitwise Functions. (line 32) * leftmost longest match: Multiple Line. (line 26) -* length() function: String Functions. (line 163) -* Lesser General Public License (LGPL): Glossary. (line 405) -* LGPL (Lesser General Public License): Glossary. (line 405) +* length: String Functions. (line 164) +* length of input record: String Functions. (line 171) +* length of string: String Functions. (line 164) +* Lesser General Public License (LGPL): Glossary. (line 397) +* LGPL (Lesser General Public License): Glossary. (line 397) * libmawk: Other Versions. (line 120) * libraries of awk functions: Library Functions. (line 6) * libraries of awk functions, assertions: Assert Function. (line 6) @@ -31692,50 +31944,65 @@ Index * lint checking, undefined functions: Pass By Value/Reference. (line 88) * LINT variable: User-modified. (line 98) -* Linux <1>: Glossary. (line 624) +* Linux <1>: Glossary. (line 616) * Linux <2>: I18N Example. (line 55) * Linux: Manual History. (line 28) +* list all global variables, in debugger: Debugger Info. (line 48) * list debugger command: Miscellaneous Debugger Commands. (line 72) +* list function definitions, in debugger: Debugger Info. (line 30) * loading, library: Options. (line 173) -* local variables: Variable Scope. (line 6) +* local variables, in a function: Variable Scope. (line 6) * locale categories: Explaining gettext. (line 80) * locale decimal point character: Options. (line 263) * locale, definition of: Locales. (line 6) * localization: I18N and L10N. (line 6) * localization, See internationalization, localization: I18N and L10N. (line 6) +* log: Numeric Functions. (line 30) * log files, timestamps in: Time Functions. (line 6) -* log() function: Numeric Functions. (line 30) +* logarithm: Numeric Functions. (line 30) * logical false/true: Truth Values. (line 6) * logical operators, See Boolean expressions: Boolean Ops. (line 6) * login information: Passwd Functions. (line 16) * long options: Command Line. (line 13) * loops: While Statement. (line 6) +* loops, break statement and: Break Statement. (line 6) * loops, continue statements and: For Statement. (line 64) -* loops, count for header: Profiling. (line 123) +* loops, count for header, in a profile: Profiling. (line 131) +* loops, do-while: Do Statement. (line 6) * loops, exiting: Break Statement. (line 6) +* loops, for, array scanning: Scanning an Array. (line 6) +* loops, for, iterative: For Statement. (line 6) * loops, See Also while statement: While Statement. (line 6) +* loops, while: While Statement. (line 6) * ls utility: More Complex. (line 15) -* lshift() function (gawk): Bitwise Functions. (line 46) +* lshift: Bitwise Functions. (line 46) * lvalues/rvalues: Assignment Ops. (line 32) +* mail-list file: Sample Data Files. (line 6) * mailing labels, printing: Labels Program. (line 6) * mailing list, GNITS: Acknowledgments. (line 52) -* Malmberg, John <1>: Bugs. (line 72) +* Malmberg, John <1>: Bugs. (line 70) * Malmberg, John: Acknowledgments. (line 60) * mark parity: Ordinal Functions. (line 45) * marked string extraction (internationalization): String Extraction. (line 6) * marked strings, extracting: String Extraction. (line 6) * Marx, Groucho: Increment Ops. (line 60) -* match() function: String Functions. (line 203) +* match: String Functions. (line 204) +* match regexp in string: String Functions. (line 204) * match() function, RSTART/RLENGTH variables: String Functions. - (line 220) + (line 221) * matching, expressions, See comparison expressions: Typing and Comparison. (line 9) * matching, leftmost longest: Multiple Line. (line 26) * matching, null strings: Gory Details. (line 164) -* mawk program: Other Versions. (line 44) +* mawk utility <1>: Other Versions. (line 44) +* mawk utility <2>: Nextfile Statement. (line 47) +* mawk utility <3>: Concatenation. (line 36) +* mawk utility <4>: Getline/Pipe. (line 62) +* mawk utility: Escape Sequences. (line 124) +* maximum precision supported by MPFR library: Auto-set. (line 227) * McPhee, Patrick: Contributors. (line 100) * message object files: Explaining gettext. (line 41) * message object files, converting from portable object files: I18N Example. @@ -31744,15 +32011,18 @@ Index (line 47) * message object files, specifying directory of: Explaining gettext. (line 53) +* messages from extensions: Printing Messages. (line 6) +* metacharacters in regular expressions: Regexp Operators. (line 6) * metacharacters, escape sequences for: Escape Sequences. (line 130) -* mktime() function (gawk): Time Functions. (line 25) +* minimum precision supported by MPFR library: Auto-set. (line 230) +* mktime: Time Functions. (line 25) * modifiers, in format specifiers: Format Modifiers. (line 6) * monetary information, localization: Explaining gettext. (line 103) -* MPFR: Arbitrary Precision Arithmetic. - (line 6) +* MPFR: Gawk and MPFR. (line 6) * msgfmt utility: I18N Example. (line 62) * multiple precision: Arbitrary Precision Arithmetic. (line 6) +* multiple-line records: Multiple Line. (line 6) * n debugger command (alias for next): Debugger Execution Control. (line 43) * names, arrays/variables <1>: Library Names. (line 6) @@ -31764,7 +32034,7 @@ Index * namespace issues, functions: Definition Syntax. (line 20) * nawk utility: Names. (line 17) * negative zero: Unexpected Results. (line 34) -* NetBSD: Glossary. (line 624) +* NetBSD: Glossary. (line 616) * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) * newlines <1>: Boolean Ops. (line 67) @@ -31803,6 +32073,8 @@ Index * ni debugger command (alias for nexti): Debugger Execution Control. (line 49) * noassign.awk program: Ignoring Assigns. (line 15) +* non-existent array elements: Reference to Elements. + (line 23) * not Boolean-logic operator: Boolean Ops. (line 6) * NR variable <1>: Auto-set. (line 137) * NR variable: Records. (line 6) @@ -31811,13 +32083,15 @@ Index * null strings <2>: Truth Values. (line 6) * null strings <3>: Regexp Field Splitting. (line 43) -* null strings: Records. (line 107) -* null strings, array elements and: Delete. (line 27) +* null strings: Records. (line 122) +* null strings in gawk arguments, quoting and: Quoting. (line 62) +* null strings, and deleting array elements: Delete. (line 27) * null strings, as array subscripts: Uninitialized Subscripts. (line 43) * null strings, converting numbers to strings: Conversion. (line 21) * null strings, matching: Gory Details. (line 164) -* null strings, quoting and: Quoting. (line 62) +* number as string of bits: Bitwise Functions. (line 109) +* number of array elements: String Functions. (line 194) * number sign (#), #! (executable scripts): Executable Scripts. (line 6) * number sign (#), commenting: Comments. (line 6) @@ -31832,9 +32106,9 @@ Index * numbers, floating-point: General Arithmetic. (line 6) * numbers, hexadecimal: Nondecimal-numbers. (line 6) * numbers, octal: Nondecimal-numbers. (line 6) -* numbers, random: Numeric Functions. (line 64) * numbers, rounding: Round Function. (line 6) -* numeric, constants: Scalar Constants. (line 6) +* numeric constants: Scalar Constants. (line 6) +* numeric functions: Numeric Functions. (line 6) * numeric, output format: OFMT. (line 6) * numeric, strings: Variable Typing. (line 6) * o debugger command (alias for option): Debugger Info. (line 57) @@ -31849,7 +32123,7 @@ Index * OFS variable <1>: User-modified. (line 124) * OFS variable <2>: Output Separators. (line 6) * OFS variable: Changing Fields. (line 64) -* OpenBSD: Glossary. (line 624) +* OpenBSD: Glossary. (line 616) * OpenSolaris: Other Versions. (line 96) * operating systems, BSD-based: Manual History. (line 28) * operating systems, PC, gawk on: PC Using. (line 6) @@ -31884,10 +32158,7 @@ Index * operators, word-boundary (gawk): GNU Regexp Operators. (line 63) * option debugger command: Debugger Info. (line 57) -* options, command-line <1>: Command Line Field Separator. - (line 6) -* options, command-line <2>: Options. (line 6) -* options, command-line: Long. (line 12) +* options, command-line: Options. (line 6) * options, command-line, end of: Options. (line 54) * options, command-line, invoking awk: Command Line. (line 6) * options, command-line, processing: Getopt Function. (line 6) @@ -31895,9 +32166,9 @@ Index * options, long <1>: Options. (line 6) * options, long: Command Line. (line 13) * options, printing list of: Options. (line 154) +* or: Bitwise Functions. (line 49) * OR bitwise operation: Bitwise Functions. (line 6) * or Boolean-logic operator: Boolean Ops. (line 6) -* or() function (gawk): Bitwise Functions. (line 49) * ord() extension function: Extension Sample Ord. (line 12) * ord() user-defined function: Ordinal Functions. (line 16) @@ -31908,6 +32179,7 @@ Index * output record separator, See ORS variable: Output Separators. (line 20) * output redirection: Redirection. (line 6) +* output wrapper: Output Wrappers. (line 6) * output, buffering: I/O Functions. (line 29) * output, duplicating into files: Tee Program. (line 6) * output, files, closing: Close Files And Pipes. @@ -31920,20 +32192,21 @@ Index * output, standard: Special FD. (line 6) * p debugger command (alias for print): Viewing And Changing Data. (line 36) -* P1003.1 POSIX standard: Glossary. (line 462) -* parentheses () <1>: Profiling. (line 138) -* parentheses (): Regexp Operators. (line 79) +* P1003.1 POSIX standard: Glossary. (line 454) +* parent process ID of gawk process: Auto-set. (line 195) +* parentheses (), in a profile: Profiling. (line 146) +* parentheses (), regexp operator: Regexp Operators. (line 79) * password file: Passwd Functions. (line 16) -* patsplit() function (gawk): String Functions. (line 290) +* patsplit: String Functions. (line 291) * patterns: Patterns and Actions. (line 6) * patterns, comparison expressions as: Expression Patterns. (line 14) -* patterns, counts: Profiling. (line 110) +* patterns, counts, in a profile: Profiling. (line 118) * patterns, default: Very Simple. (line 34) * patterns, empty: Empty. (line 6) * patterns, expressions as: Regexp Patterns. (line 6) * patterns, ranges in: Ranges. (line 6) -* patterns, regexp constants as: Expression Patterns. (line 36) +* patterns, regexp constants as: Expression Patterns. (line 34) * patterns, types of: Pattern Overview. (line 15) * pawk (profiling version of Brian Kernighan's awk): Other Versions. (line 78) @@ -31943,22 +32216,24 @@ Index * percent sign (%), % operator: Precedence. (line 55) * percent sign (%), %= operator <1>: Precedence. (line 95) * percent sign (%), %= operator: Assignment Ops. (line 129) -* period (.): Regexp Operators. (line 43) +* period (.), regexp operator: Regexp Operators. (line 43) * Perl: Future Extensions. (line 6) * Peters, Arno: Contributors. (line 85) * Peterson, Hal: Contributors. (line 39) -* pipes, closing: Close Files And Pipes. +* pipe, closing: Close Files And Pipes. (line 6) -* pipes, input: Getline/Pipe. (line 9) -* pipes, output: Redirection. (line 57) -* Pitts, Dave <1>: Bugs. (line 73) +* pipe, input: Getline/Pipe. (line 9) +* pipe, output: Redirection. (line 57) +* Pitts, Dave <1>: Bugs. (line 70) * Pitts, Dave: Acknowledgments. (line 60) -* plus sign (+): Regexp Operators. (line 102) +* Plauger, P.J.: Library Functions. (line 12) +* plug-in: Extension Intro. (line 6) * plus sign (+), + operator: Precedence. (line 52) * plus sign (+), ++ operator <1>: Precedence. (line 46) * plus sign (+), ++ operator: Increment Ops. (line 11) * plus sign (+), += operator <1>: Precedence. (line 95) * plus sign (+), += operator: Assignment Ops. (line 82) +* plus sign (+), regexp operator: Regexp Operators. (line 102) * pointers to functions: Indirect Calls. (line 6) * portability: Escape Sequences. (line 94) * portability, #! (executable scripts): Executable Scripts. (line 33) @@ -31970,14 +32245,14 @@ Index (line 112) * portability, close() function and: Close Files And Pipes. (line 81) -* portability, data files as single record: Records. (line 179) +* portability, data files as single record: Records. (line 194) * portability, deleting array elements: Delete. (line 56) * portability, example programs: Library Functions. (line 42) * portability, functions, defining: Definition Syntax. (line 99) * portability, gawk: New Ports. (line 6) * portability, gettext library and: Explaining gettext. (line 10) * portability, internationalization and: I18N Portability. (line 6) -* portability, length() function: String Functions. (line 172) +* portability, length() function: String Functions. (line 173) * portability, new awk vs. old awk: Conversion. (line 55) * portability, next statement in user-defined functions: Pass By Value/Reference. (line 91) @@ -31985,7 +32260,7 @@ Index * portability, operators: Increment Ops. (line 60) * portability, operators, not in POSIX awk: Precedence. (line 98) * portability, POSIXLY_CORRECT environment variable: Options. (line 353) -* portability, substr() function: String Functions. (line 509) +* portability, substr() function: String Functions. (line 510) * portable object files <1>: Translator i18n. (line 6) * portable object files: Explaining gettext. (line 36) * portable object files, converting to message object files: I18N Example. @@ -32015,14 +32290,14 @@ Index * POSIX awk, changes in awk versions: POSIX. (line 6) * POSIX awk, continue statement and: Continue Statement. (line 43) * POSIX awk, CONVFMT variable and: User-modified. (line 28) -* POSIX awk, date utility and: Time Functions. (line 262) +* POSIX awk, date utility and: Time Functions. (line 263) * POSIX awk, field separators and <1>: Field Splitting Summary. (line 40) * POSIX awk, field separators and: Fields. (line 6) * POSIX awk, FS variable and: User-modified. (line 66) * POSIX awk, function keyword in: Definition Syntax. (line 83) * POSIX awk, functions and, gsub()/sub(): Gory Details. (line 54) -* POSIX awk, functions and, length(): String Functions. (line 172) +* POSIX awk, functions and, length(): String Functions. (line 173) * POSIX awk, GNU long options and: Options. (line 15) * POSIX awk, interval expressions in: Regexp Operators. (line 135) * POSIX awk, next/nextfile statements and: Next Statement. (line 45) @@ -32055,6 +32330,8 @@ Index * print statement, See Also redirection, of output: Redirection. (line 17) * print statement, sprintf() function and: Round Function. (line 6) +* print variables, in debugger: Viewing And Changing Data. + (line 36) * printf debugger command: Viewing And Changing Data. (line 54) * printf statement <1>: Printf. (line 6) @@ -32074,22 +32351,30 @@ Index * printf statement, sprintf() function and: Round Function. (line 6) * printf statement, syntax of: Basic Printf. (line 6) * printing: Printing. (line 6) +* printing messages from extensions: Printing Messages. (line 6) * printing, list of options: Options. (line 154) * printing, mailing labels: Labels Program. (line 6) * printing, unduplicated lines of text: Uniq Program. (line 6) * printing, user information: Id Program. (line 6) * private variables: Library Names. (line 11) +* process group idIDof gawk process: Auto-set. (line 189) +* process ID of gawk process: Auto-set. (line 192) * processes, two-way communications with: Two-way I/O. (line 23) * processing data: Basic High Level. (line 6) -* PROCINFO array <1>: Two-way I/O. (line 116) -* PROCINFO array <2>: Id Program. (line 15) -* PROCINFO array <3>: Group Functions. (line 6) -* PROCINFO array <4>: Passwd Functions. (line 6) -* PROCINFO array <5>: Time Functions. (line 47) -* PROCINFO array <6>: Auto-set. (line 142) -* PROCINFO array: Obsolete. (line 11) +* PROCINFO array <1>: Passwd Functions. (line 6) +* PROCINFO array <2>: Time Functions. (line 47) +* PROCINFO array: Auto-set. (line 142) +* PROCINFO array, and communications via ptys: Two-way I/O. (line 116) +* PROCINFO array, and group membership: Group Functions. (line 6) +* PROCINFO array, and user and group ID numbers: Id Program. (line 15) +* PROCINFO array, testing the field splitting: Passwd Functions. + (line 161) +* PROCINFO array, uses: Auto-set. (line 248) +* PROCINFO, values of sorted_in: Controlling Scanning. + (line 24) * profiling awk programs: Profiling. (line 6) -* profiling awk programs, dynamically: Profiling. (line 172) +* profiling awk programs, dynamically: Profiling. (line 179) +* program identifiers: Auto-set. (line 160) * program, definition of: Getting Started. (line 21) * programmers, attractiveness of: Two-way I/O. (line 6) * programming conventions, --non-decimal-data option: Nondecimal Data. @@ -32107,10 +32392,10 @@ Index * programming conventions, private variable names: Library Names. (line 23) * programming language, recipe for: History. (line 6) -* Programming languages, Ada: Glossary. (line 20) +* programming languages, Ada: Glossary. (line 20) * programming languages, data-driven vs. procedural: Getting Started. (line 12) -* Programming languages, Java: Glossary. (line 388) +* programming languages, Java: Glossary. (line 380) * programming, basic steps: Basic High Level. (line 20) * programming, concepts: Basic Concepts. (line 6) * pwcat program: Passwd Functions. (line 23) @@ -32118,24 +32403,23 @@ Index (line 99) * QSE Awk: Other Versions. (line 130) * Quanstrom, Erik: Alarm Program. (line 8) -* question mark (?) regexp operator <1>: GNU Regexp Operators. - (line 59) -* question mark (?) regexp operator: Regexp Operators. (line 111) * question mark (?), ?: operator: Precedence. (line 92) +* question mark (?), regexp operator <1>: GNU Regexp Operators. + (line 59) +* question mark (?), regexp operator: Regexp Operators. (line 111) * QuikTrim Awk: Other Versions. (line 134) * quit debugger command: Miscellaneous Debugger Commands. (line 99) -* QUIT signal (MS-Windows): Profiling. (line 207) -* quoting <1>: Comments. (line 27) -* quoting <2>: Long. (line 26) -* quoting: Read Terminal. (line 25) -* quoting, rules for: Quoting. (line 6) -* quoting, tricks for: Quoting. (line 71) +* QUIT signal (MS-Windows): Profiling. (line 214) +* quoting in gawk command lines: Long. (line 26) +* quoting in gawk command lines, tricks for: Quoting. (line 71) +* quoting, for small awk programs: Comments. (line 27) * r debugger command (alias for run): Debugger Execution Control. (line 62) * Rakitzis, Byron: History Sorting. (line 25) +* Ramey, Chet <1>: General Data Types. (line 6) * Ramey, Chet: Acknowledgments. (line 60) -* rand() function: Numeric Functions. (line 34) +* rand: Numeric Functions. (line 34) * random numbers, Cliff: Cliff Random Function. (line 6) * random numbers, rand()/srand() functions: Numeric Functions. @@ -32143,7 +32427,8 @@ Index * random numbers, seed of: Numeric Functions. (line 64) * range expressions (regexps): Bracket Expressions. (line 6) * range patterns: Ranges. (line 6) -* Rankin, Pat <1>: Bugs. (line 72) +* range patterns, line continuation and: Ranges. (line 65) +* Rankin, Pat <1>: Bugs. (line 70) * Rankin, Pat <2>: Contributors. (line 37) * Rankin, Pat <3>: Assignment Ops. (line 100) * Rankin, Pat: Acknowledgments. (line 60) @@ -32154,37 +32439,41 @@ Index * readdir extension: Extension Sample Readdir. (line 9) * readfile() extension function: Extension Sample Readfile. - (line 11) + (line 12) * readfile() user-defined function: Readfile Function. (line 30) +* reading input files: Reading Files. (line 6) * recipe for a programming language: History. (line 6) * record separators <1>: User-modified. (line 143) * record separators: Records. (line 14) -* record separators, changing: Records. (line 81) -* record separators, regular expressions as: Records. (line 117) +* record separators, changing: Records. (line 93) +* record separators, regular expressions as: Records. (line 132) * record separators, with multiline records: Multiple Line. (line 10) * records <1>: Basic High Level. (line 73) * records: Reading Files. (line 14) * records, multiline: Multiple Line. (line 6) * records, printing: Print. (line 22) * records, splitting input into: Records. (line 6) -* records, terminating: Records. (line 117) -* records, treating files as: Records. (line 204) +* records, terminating: Records. (line 132) +* records, treating files as: Records. (line 219) * recursive functions: Definition Syntax. (line 73) +* redirect gawk output, in debugger: Debugger Info. (line 72) * redirection of input: Getline/File. (line 6) * redirection of output: Redirection. (line 6) * reference counting, sorting arrays: Array Sorting Functions. (line 77) +* regexp: Regexp. (line 6) * regexp constants <1>: Comparison Operators. (line 102) * regexp constants <2>: Regexp Constants. (line 6) * regexp constants: Regexp Usage. (line 57) * regexp constants, /=.../, /= operator and: Assignment Ops. (line 147) -* regexp constants, as patterns: Expression Patterns. (line 36) +* regexp constants, as patterns: Expression Patterns. (line 34) * regexp constants, in gawk: Using Constant Regexps. (line 28) * regexp constants, slashes vs. quotes: Computed Regexps. (line 28) * regexp constants, vs. string constants: Computed Regexps. (line 38) -* regexp, See regular expressions: Regexp. (line 6) +* register extension: Registration Functions. + (line 6) * regular expressions: Regexp. (line 6) * regular expressions as field separators: Field Separators. (line 51) * regular expressions, anchors in: Regexp Operators. (line 22) @@ -32192,7 +32481,7 @@ Index (line 6) * regular expressions, as patterns <1>: Regexp Patterns. (line 6) * regular expressions, as patterns: Regexp Usage. (line 6) -* regular expressions, as record separators: Records. (line 117) +* regular expressions, as record separators: Records. (line 132) * regular expressions, case sensitivity <1>: User-modified. (line 82) * regular expressions, case sensitivity: Case-sensitivity. (line 6) * regular expressions, computed: Computed Regexps. (line 6) @@ -32219,12 +32508,13 @@ Index * regular expressions, searching for: Egrep Program. (line 6) * relational operators, See comparison operators: Typing and Comparison. (line 9) +* replace in string: String Functions. (line 406) * return debugger command: Debugger Execution Control. (line 54) * return statement, user-defined functions: Return Statement. (line 6) * return value, close() function: Close Files And Pipes. (line 130) -* rev() user-defined function: Function Example. (line 52) +* rev() user-defined function: Function Example. (line 53) * revoutput extension: Extension Sample Revout. (line 11) * revtwoway extension: Extension Sample Rev2way. @@ -32239,18 +32529,20 @@ Index (line 11) * right angle bracket (>), >> operator (I/O) <1>: Precedence. (line 65) * right angle bracket (>), >> operator (I/O): Redirection. (line 50) +* right shift: Bitwise Functions. (line 52) * right shift, bitwise: Bitwise Functions. (line 32) * Ritchie, Dennis: Basic Data Typing. (line 55) * RLENGTH variable: Auto-set. (line 262) -* RLENGTH variable, match() function and: String Functions. (line 220) +* RLENGTH variable, match() function and: String Functions. (line 221) * Robbins, Arnold <1>: Future Extensions. (line 6) * Robbins, Arnold <2>: Bugs. (line 32) -* Robbins, Arnold <3>: Contributors. (line 132) -* Robbins, Arnold <4>: Alarm Program. (line 6) -* Robbins, Arnold <5>: Passwd Functions. (line 90) -* Robbins, Arnold <6>: Getline/Pipe. (line 39) +* Robbins, Arnold <3>: Contributors. (line 139) +* Robbins, Arnold <4>: General Data Types. (line 6) +* Robbins, Arnold <5>: Alarm Program. (line 6) +* Robbins, Arnold <6>: Passwd Functions. (line 90) +* Robbins, Arnold <7>: Getline/Pipe. (line 39) * Robbins, Arnold: Command Line Field Separator. - (line 80) + (line 73) * Robbins, Bill: Getline/Pipe. (line 39) * Robbins, Harry: Acknowledgments. (line 78) * Robbins, Jean: Acknowledgments. (line 78) @@ -32258,6 +32550,7 @@ Index * Robbins, Miriam <2>: Getline/Pipe. (line 39) * Robbins, Miriam: Acknowledgments. (line 78) * Rommel, Kai Uwe: Contributors. (line 42) +* round to nearest integer: Numeric Functions. (line 23) * round() user-defined function: Round Function. (line 16) * rounding mode, floating-point: Rounding Mode. (line 6) * rounding numbers: Round Function. (line 6) @@ -32267,14 +32560,12 @@ Index * RS variable <1>: User-modified. (line 143) * RS variable: Records. (line 20) * RS variable, multiline records and: Multiple Line. (line 17) -* rshift() function (gawk): Bitwise Functions. (line 52) +* rshift: Bitwise Functions. (line 52) * RSTART variable: Auto-set. (line 268) -* RSTART variable, match() function and: String Functions. (line 220) +* RSTART variable, match() function and: String Functions. (line 221) * RT variable <1>: Auto-set. (line 275) -* RT variable <2>: Getline/Variable/File. - (line 10) -* RT variable <3>: Multiple Line. (line 129) -* RT variable: Records. (line 117) +* RT variable <2>: Multiple Line. (line 129) +* RT variable: Records. (line 132) * Rubin, Paul <1>: Contributors. (line 15) * Rubin, Paul: History. (line 30) * rule, definition of: Getting Started. (line 21) @@ -32283,55 +32574,80 @@ Index * rvalues/lvalues: Assignment Ops. (line 32) * s debugger command (alias for step): Debugger Execution Control. (line 68) +* sample debugging session: Sample Debugging Session. + (line 6) * sandbox mode: Options. (line 279) +* save debugger options: Debugger Info. (line 84) +* scalar or array: Type Functions. (line 11) * scalar values: Basic Data Typing. (line 13) -* Schorr, Andrew <1>: Contributors. (line 128) +* scanning arrays: Scanning an Array. (line 6) +* scanning multidimensional arrays: Multiscanning. (line 11) +* Schorr, Andrew <1>: Contributors. (line 131) * Schorr, Andrew: Acknowledgments. (line 60) * Schreiber, Bert: Acknowledgments. (line 38) * Schreiber, Rita: Acknowledgments. (line 38) +* search and replace in strings: String Functions. (line 82) +* search in string: String Functions. (line 151) * search paths <1>: VMS Running. (line 58) -* search paths <2>: PC Using. (line 11) -* search paths <3>: Igawk Program. (line 368) -* search paths <4>: AWKLIBPATH Variable. (line 6) -* search paths: AWKPATH Variable. (line 6) +* search paths <2>: PC Using. (line 10) +* search paths: Igawk Program. (line 368) * search paths, for shared libraries: AWKLIBPATH Variable. (line 6) * search paths, for source files <1>: VMS Running. (line 58) -* search paths, for source files <2>: PC Using. (line 11) +* search paths, for source files <2>: PC Using. (line 10) * search paths, for source files <3>: Igawk Program. (line 368) * search paths, for source files: AWKPATH Variable. (line 6) -* searching: String Functions. (line 150) * searching, files for regular expressions: Egrep Program. (line 6) * searching, for words: Dupword Program. (line 6) * sed utility <1>: Glossary. (line 12) * sed utility <2>: Simple Sed. (line 6) * sed utility: Field Splitting Summary. (line 46) -* semicolon (;): Statements/Lines. (line 91) -* semicolon (;), AWKPATH variable and: PC Using. (line 11) +* seeding random number generator: Numeric Functions. (line 64) +* semicolon (;), AWKPATH variable and: PC Using. (line 10) * semicolon (;), separating statements in actions <1>: Statements. (line 10) -* semicolon (;), separating statements in actions: Action Overview. +* semicolon (;), separating statements in actions <2>: Action Overview. (line 19) +* semicolon (;), separating statements in actions: Statements/Lines. + (line 91) * separators, field: User-modified. (line 56) * separators, field, FIELDWIDTHS variable and: User-modified. (line 35) * separators, field, FPAT variable and: User-modified. (line 45) * separators, field, POSIX and: Fields. (line 6) * separators, for records <1>: User-modified. (line 143) * separators, for records: Records. (line 14) -* separators, for records, regular expressions as: Records. (line 117) +* separators, for records, regular expressions as: Records. (line 132) * separators, for statements in actions: Action Overview. (line 19) * separators, subscript: User-modified. (line 156) +* set breakpoint: Breakpoint Control. (line 11) * set debugger command: Viewing And Changing Data. (line 59) +* set directory of message catalogs: I18N Functions. (line 12) +* set watchpoint: Viewing And Changing Data. + (line 67) +* setting rounding mode: Setting Rounding Mode. + (line 6) +* setting working precision: Setting Precision. (line 6) +* shadowing of variable values: Definition Syntax. (line 61) +* shell quoting, double quote: Read Terminal. (line 25) +* shell quoting, rules for: Quoting. (line 6) * shells, piping commands into: Redirection. (line 142) * shells, quoting: Using Shell Variables. (line 12) * shells, quoting, rules for: Quoting. (line 18) * shells, scripts: One-shot. (line 22) +* shells, sea: Undocumented. (line 8) * shells, variables: Using Shell Variables. (line 6) * shift, bitwise: Bitwise Functions. (line 32) * short-circuit operators: Boolean Ops. (line 57) +* show all source files, in debugger: Debugger Info. (line 45) +* show breakpoints: Debugger Info. (line 21) +* show function arguments, in debugger: Debugger Info. (line 18) +* show local variables, in debugger: Debugger Info. (line 34) +* show name of current source file, in debugger: Debugger Info. + (line 37) +* show watchpoints: Debugger Info. (line 51) * si debugger command (alias for stepi): Debugger Execution Control. (line 76) * side effects <1>: Increment Ops. (line 11) @@ -32367,7 +32683,7 @@ Index * sidebar, Piping into sh: Redirection. (line 140) * sidebar, Portability Issues with #!: Executable Scripts. (line 31) * sidebar, Recipe For A Programming Language: History. (line 6) -* sidebar, RS = "\0" Is Not Portable: Records. (line 177) +* sidebar, RS = "\0" Is Not Portable: Records. (line 192) * sidebar, So Why Does gawk have BEGINFILE and ENDFILE?: Filetrans Function. (line 83) * sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops. @@ -32377,30 +32693,36 @@ Index (line 56) * sidebar, Using close()'s Return Value: Close Files And Pipes. (line 128) -* SIGHUP signal: Profiling. (line 204) -* SIGINT signal (MS-Windows): Profiling. (line 207) -* signals, HUP/SIGHUP: Profiling. (line 204) -* signals, INT/SIGINT (MS-Windows): Profiling. (line 207) -* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 207) -* signals, USR1/SIGUSR1: Profiling. (line 181) -* SIGQUIT signal (MS-Windows): Profiling. (line 207) -* SIGUSR1 signal: Profiling. (line 181) +* SIGHUP signal, for dynamic profiling: Profiling. (line 211) +* SIGINT signal (MS-Windows): Profiling. (line 214) +* signals, HUP/SIGHUP, for profiling: Profiling. (line 211) +* signals, INT/SIGINT (MS-Windows): Profiling. (line 214) +* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 214) +* signals, USR1/SIGUSR1, for profiling: Profiling. (line 188) +* signature program: Signature Program. (line 6) +* SIGQUIT signal (MS-Windows): Profiling. (line 214) +* SIGUSR1 signal, for dynamic profiling: Profiling. (line 188) * silent debugger command: Debugger Execution Control. (line 10) -* sin() function: Numeric Functions. (line 75) +* sin: Numeric Functions. (line 75) +* sine: Numeric Functions. (line 75) * single precision floating-point: General Arithmetic. (line 21) -* single quote (') <1>: Quoting. (line 31) -* single quote (') <2>: Long. (line 33) * single quote ('): One-shot. (line 15) +* single quote (') in gawk command lines: Long. (line 33) +* single quote ('), in shell commands: Quoting. (line 31) * single quote ('), vs. apostrophe: Comments. (line 27) * single quote ('), with double quotes: Quoting. (line 53) * single-character fields: Single Character Fields. (line 6) +* single-step execution, in the debugger: Debugger Execution Control. + (line 43) * Skywalker, Luke: Undocumented. (line 6) * sleep utility: Alarm Program. (line 111) * sleep() extension function: Extension Sample Time. (line 23) * Solaris, POSIX-compliant awk: Other Versions. (line 96) +* sort array: String Functions. (line 32) +* sort array indices: String Functions. (line 32) * sort function, arrays, sorting: Array Sorting Functions. (line 6) * sort utility: Word Sorting. (line 50) @@ -32417,25 +32739,29 @@ Index * source code, mawk: Other Versions. (line 44) * source code, mixing: Options. (line 117) * source code, pawk: Other Versions. (line 78) +* source code, pawk (Python version): Other Versions. (line 124) * source code, QSE Awk: Other Versions. (line 130) * source code, QuikTrim Awk: Other Versions. (line 134) * source code, Solaris awk: Other Versions. (line 96) * source files, search path for: Igawk Program. (line 368) * sparse arrays: Array Intro. (line 70) * Spencer, Henry: Glossary. (line 12) +* split: String Functions. (line 313) +* split string into array: String Functions. (line 291) * split utility: Split Program. (line 6) -* split() function: String Functions. (line 312) * split() function, array elements, deleting: Delete. (line 61) * split.awk program: Split Program. (line 30) -* sprintf() function <1>: String Functions. (line 377) -* sprintf() function: OFMT. (line 15) +* sprintf <1>: String Functions. (line 378) +* sprintf: OFMT. (line 15) * sprintf() function, OFMT variable and: User-modified. (line 124) * sprintf() function, print/printf statements and: Round Function. (line 6) -* sqrt() function: Numeric Functions. (line 78) -* square brackets ([]): Regexp Operators. (line 55) -* srand() function: Numeric Functions. (line 82) -* Stallman, Richard <1>: Glossary. (line 305) +* sqrt: Numeric Functions. (line 78) +* square brackets ([]), regexp operator: Regexp Operators. (line 55) +* square root: Numeric Functions. (line 78) +* srand: Numeric Functions. (line 82) +* stack frame: Debugging Terms. (line 10) +* Stallman, Richard <1>: Glossary. (line 297) * Stallman, Richard <2>: Contributors. (line 23) * Stallman, Richard <3>: Acknowledgments. (line 18) * Stallman, Richard: Manual History. (line 6) @@ -32443,6 +32769,7 @@ Index * standard input <1>: Special FD. (line 6) * standard input: Read Terminal. (line 6) * standard output: Special FD. (line 6) +* starting the debugger: Debugger Invocation. (line 6) * stat() extension function: Extension Sample File Functions. (line 18) * statements, compound, control statements and: Statements. (line 10) @@ -32452,35 +32779,42 @@ Index (line 68) * stepi debugger command: Debugger Execution Control. (line 76) +* stop automatic display, in debugger: Viewing And Changing Data. + (line 80) * stream editors <1>: Simple Sed. (line 6) * stream editors: Field Splitting Summary. (line 46) -* strftime() function (gawk): Time Functions. (line 48) +* strftime: Time Functions. (line 48) * string constants: Scalar Constants. (line 15) * string constants, vs. regexp constants: Computed Regexps. (line 38) * string extraction (internationalization): String Extraction. (line 6) +* string length: String Functions. (line 164) * string operators: Concatenation. (line 8) +* string, regular expression match: String Functions. (line 204) +* string-manipulation functions: String Functions. (line 6) * string-matching operators: Regexp Usage. (line 19) +* string-translation functions: I18N Functions. (line 6) +* strings splitting, example: String Functions. (line 333) * strings, converting <1>: Bitwise Functions. (line 109) * strings, converting: Conversion. (line 6) +* strings, converting letter case: String Functions. (line 520) * strings, converting, numbers to: User-modified. (line 28) -* strings, empty, See null strings: Records. (line 107) +* strings, empty, See null strings: Records. (line 122) * strings, extracting: String Extraction. (line 6) * strings, for localization: Programmer i18n. (line 14) -* strings, length of: Scalar Constants. (line 20) +* strings, length limitations: Scalar Constants. (line 20) * strings, merging arrays into: Join Function. (line 6) * strings, null: Regexp Field Splitting. (line 43) * strings, numeric: Variable Typing. (line 6) -* strings, splitting: String Functions. (line 332) -* strtonum() function (gawk): String Functions. (line 384) +* strtonum: String Functions. (line 385) * strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data. (line 36) -* sub() function <1>: String Functions. (line 405) -* sub() function: Using Constant Regexps. +* sub <1>: String Functions. (line 406) +* sub: Using Constant Regexps. (line 43) -* sub() function, arguments of: String Functions. (line 459) +* sub() function, arguments of: String Functions. (line 460) * sub() function, escape processing: Gory Details. (line 6) * subscript separators: User-modified. (line 156) * subscripts in arrays, multidimensional: Multidimensional. (line 10) @@ -32491,15 +32825,19 @@ Index * subscripts in arrays, uninitialized variables as: Uninitialized Subscripts. (line 6) * SUBSEP variable: User-modified. (line 156) -* SUBSEP variable, multidimensional arrays: Multidimensional. (line 16) -* substr() function: String Functions. (line 478) +* SUBSEP variable, and multidimensional arrays: Multidimensional. + (line 16) +* substitute in string: String Functions. (line 82) +* substr: String Functions. (line 479) +* substring: String Functions. (line 479) * Sumner, Andrew: Other Versions. (line 64) +* supplementary groups of gawk process: Auto-set. (line 243) * switch statement: Switch Statement. (line 6) * SYMTAB array: Auto-set. (line 283) * syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops. (line 147) -* system() function: I/O Functions. (line 72) -* systime() function (gawk): Time Functions. (line 65) +* system: I/O Functions. (line 72) +* systime: Time Functions. (line 66) * t debugger command (alias for tbreak): Breakpoint Control. (line 90) * tbreak debugger command: Breakpoint Control. (line 90) * Tcl: Library Names. (line 57) @@ -32507,7 +32845,8 @@ Index * TCP/IP, support for: Special Network. (line 6) * tee utility: Tee Program. (line 6) * tee.awk program: Tee Program. (line 26) -* terminating records: Records. (line 117) +* temporary breakpoint: Breakpoint Control. (line 90) +* terminating records: Records. (line 132) * testbits.awk program: Bitwise Functions. (line 70) * testext extension: Extension Sample API Tests. (line 6) @@ -32536,6 +32875,7 @@ Index * tilde (~), ~ operator <5>: Computed Regexps. (line 6) * tilde (~), ~ operator <6>: Case-sensitivity. (line 26) * tilde (~), ~ operator: Regexp Usage. (line 19) +* time functions: Time Functions. (line 6) * time, alarm clock example program: Alarm Program. (line 11) * time, localization and: Explaining gettext. (line 115) * time, managing: Getlocaltime Function. @@ -32543,15 +32883,18 @@ Index * time, retrieving: Time Functions. (line 17) * timeout, reading input: Read Timeout. (line 6) * timestamps: Time Functions. (line 6) -* timestamps, converting dates to: Time Functions. (line 75) +* timestamps, converting dates to: Time Functions. (line 76) * timestamps, formatted: Getlocaltime Function. (line 6) -* tolower() function: String Functions. (line 520) -* toupper() function: String Functions. (line 526) +* tolower: String Functions. (line 521) +* toupper: String Functions. (line 527) * tr utility: Translate Program. (line 6) * trace debugger command: Miscellaneous Debugger Commands. (line 108) +* traceback, display in debugger: Execution Stack. (line 13) +* translate string: I18N Functions. (line 22) * translate.awk program: Translate Program. (line 55) +* treating files, as single records: Records. (line 219) * troubleshooting, --non-decimal-data option: Options. (line 207) * troubleshooting, == operator: Comparison Operators. (line 37) @@ -32570,9 +32913,9 @@ Index * troubleshooting, gawk, fatal errors, function arguments: Calling Built-in. (line 16) * troubleshooting, getline function: File Checking. (line 25) -* troubleshooting, gsub()/sub() functions: String Functions. (line 469) -* troubleshooting, match() function: String Functions. (line 285) -* troubleshooting, patsplit() function: String Functions. (line 308) +* troubleshooting, gsub()/sub() functions: String Functions. (line 470) +* troubleshooting, match() function: String Functions. (line 286) +* troubleshooting, patsplit() function: String Functions. (line 309) * troubleshooting, print statement, omitting commas: Print Examples. (line 31) * troubleshooting, printing: Redirection. (line 118) @@ -32581,7 +32924,7 @@ Index * troubleshooting, regexp constants vs. string constants: Computed Regexps. (line 38) * troubleshooting, string concatenation: Concatenation. (line 26) -* troubleshooting, substr() function: String Functions. (line 496) +* troubleshooting, substr() function: String Functions. (line 497) * troubleshooting, system() function: I/O Functions. (line 94) * troubleshooting, typographical errors, global variables: Options. (line 98) @@ -32594,6 +32937,8 @@ Index * type conversion: Conversion. (line 21) * u debugger command (alias for until): Debugger Execution Control. (line 83) +* unassigned array elements: Reference to Elements. + (line 18) * undefined functions: Pass By Value/Reference. (line 71) * underscore (_), C macro: Explaining gettext. (line 70) @@ -32603,20 +32948,22 @@ Index * undisplay debugger command: Viewing And Changing Data. (line 80) * undocumented features: Undocumented. (line 6) -* Unicode: Glossary. (line 141) +* Unicode <1>: Glossary. (line 133) +* Unicode <2>: Ranges and Locales. (line 61) +* Unicode: Ordinal Functions. (line 45) * uninitialized variables, as array subscripts: Uninitialized Subscripts. (line 6) * uniq utility: Uniq Program. (line 6) * uniq.awk program: Uniq Program. (line 65) -* Unix: Glossary. (line 624) +* Unix: Glossary. (line 616) * Unix awk, backslashes in escape sequences: Escape Sequences. (line 124) * Unix awk, close() function and: Close Files And Pipes. (line 130) * Unix awk, password files, field separators and: Command Line Field Separator. - (line 72) + (line 64) * Unix, awk scripts and: Executable Scripts. (line 6) -* UNIXROOT variable, on OS/2 systems: PC Using. (line 17) +* UNIXROOT variable, on OS/2 systems: PC Using. (line 16) * unsigned integers: General Arithmetic. (line 15) * until debugger command: Debugger Execution Control. (line 83) @@ -32624,15 +32971,16 @@ Index (line 84) * up debugger command: Execution Stack. (line 33) * user database, reading: Passwd Functions. (line 6) -* user-defined, functions: User-defined. (line 6) -* user-defined, functions, counts: Profiling. (line 129) +* user-defined functions: User-defined. (line 6) +* user-defined, functions, counts, in a profile: Profiling. (line 137) * user-defined, variables: Variables. (line 6) * user-modifiable variables: User-modified. (line 6) * users, information about, printing: Id Program. (line 6) * users, information about, retrieving: Passwd Functions. (line 16) -* USR1 signal: Profiling. (line 181) +* USR1 signal, for dynamic profiling: Profiling. (line 188) * values, numeric: Basic Data Typing. (line 13) * values, string: Basic Data Typing. (line 13) +* variable assignments and input files: Other Arguments. (line 19) * variable typing: Typing and Comparison. (line 9) * variables <1>: Basic Data Typing. (line 6) @@ -32653,7 +33001,7 @@ Index * variables, global, for library functions: Library Names. (line 11) * variables, global, printing list of: Options. (line 93) * variables, initializing: Using Variables. (line 20) -* variables, local: Variable Scope. (line 6) +* variables, local to a function: Variable Scope. (line 6) * variables, names of: Arrays. (line 18) * variables, private: Library Names. (line 11) * variables, setting: Options. (line 32) @@ -32664,6 +33012,10 @@ Index * variables, uninitialized, as array subscripts: Uninitialized Subscripts. (line 6) * variables, user-defined: Variables. (line 6) +* version of gawk: Auto-set. (line 213) +* version of gawk extension API: Auto-set. (line 238) +* version of GNU MP library: Auto-set. (line 224) +* version of GNU MPFR library: Auto-set. (line 220) * vertical bar (|): Regexp Operators. (line 69) * vertical bar (|), | operator (I/O) <1>: Precedence. (line 65) * vertical bar (|), | operator (I/O): Getline/Pipe. (line 9) @@ -32687,12 +33039,13 @@ Index * warnings, issuing: Options. (line 182) * watch debugger command: Viewing And Changing Data. (line 67) +* watchpoint: Debugging Terms. (line 42) * wc utility: Wc Program. (line 6) * wc.awk program: Wc Program. (line 46) * Weinberger, Peter <1>: Contributors. (line 11) * Weinberger, Peter: History. (line 17) -* while statement <1>: While Statement. (line 6) -* while statement: Regexp Usage. (line 19) +* while statement: While Statement. (line 6) +* while statement, use of regexps in: Regexp Usage. (line 19) * whitespace, as field separators: Default Field Splitting. (line 6) * whitespace, functions, calling: Calling Built-in. (line 10) @@ -32713,16 +33066,16 @@ Index * writea() extension function: Extension Sample Read write array. (line 9) * xgettext utility: String Extraction. (line 13) +* xor: Bitwise Functions. (line 55) * XOR bitwise operation: Bitwise Functions. (line 6) -* xor() function (gawk): Bitwise Functions. (line 55) -* Yawitz, Efraim: Contributors. (line 126) +* Yawitz, Efraim: Contributors. (line 129) * Zaretskii, Eli <1>: Bugs. (line 70) * Zaretskii, Eli <2>: Contributors. (line 55) * Zaretskii, Eli: Acknowledgments. (line 60) * zero, negative vs. positive: Unexpected Results. (line 34) * zerofile.awk program: Empty Files. (line 21) * Zoulas, Christos: Contributors. (line 66) -* {} (braces): Profiling. (line 134) +* {} (braces): Profiling. (line 142) * {} (braces), actions and: Action Overview. (line 19) * {} (braces), statements, grouping: Statements. (line 10) * | (vertical bar): Regexp Operators. (line 69) @@ -32749,526 +33102,530 @@ Index Tag Table: -Node: Top1366 -Node: Foreword40856 -Node: Preface45201 -Ref: Preface-Footnote-148254 -Ref: Preface-Footnote-248350 -Node: History48582 -Node: Names50956 -Ref: Names-Footnote-152433 -Node: This Manual52505 -Ref: This Manual-Footnote-158279 -Node: Conventions58379 -Node: Manual History60535 -Ref: Manual History-Footnote-163983 -Ref: Manual History-Footnote-264024 -Node: How To Contribute64098 -Node: Acknowledgments65242 -Node: Getting Started69436 -Node: Running gawk71815 -Node: One-shot73001 -Node: Read Terminal74226 -Ref: Read Terminal-Footnote-175876 -Ref: Read Terminal-Footnote-276152 -Node: Long76323 -Node: Executable Scripts77699 -Ref: Executable Scripts-Footnote-179532 -Ref: Executable Scripts-Footnote-279634 -Node: Comments80181 -Node: Quoting82648 -Node: DOS Quoting87271 -Node: Sample Data Files87946 -Node: Very Simple90332 -Node: Two Rules94931 -Node: More Complex97078 -Ref: More Complex-Footnote-1100008 -Node: Statements/Lines100093 -Ref: Statements/Lines-Footnote-1104555 -Node: Other Features104820 -Node: When105748 -Node: Invoking Gawk107895 -Node: Command Line109358 -Node: Options110141 -Ref: Options-Footnote-1125536 -Node: Other Arguments125561 -Node: Naming Standard Input128219 -Node: Environment Variables129313 -Node: AWKPATH Variable129871 -Ref: AWKPATH Variable-Footnote-1132629 -Node: AWKLIBPATH Variable132889 -Node: Other Environment Variables133607 -Node: Exit Status136570 -Node: Include Files137245 -Node: Loading Shared Libraries140814 -Node: Obsolete142178 -Node: Undocumented142875 -Node: Regexp143117 -Node: Regexp Usage144506 -Node: Escape Sequences146532 -Node: Regexp Operators152201 -Ref: Regexp Operators-Footnote-1159581 -Ref: Regexp Operators-Footnote-2159728 -Node: Bracket Expressions159826 -Ref: table-char-classes161716 -Node: GNU Regexp Operators164239 -Node: Case-sensitivity167962 -Ref: Case-sensitivity-Footnote-1170930 -Ref: Case-sensitivity-Footnote-2171165 -Node: Leftmost Longest171273 -Node: Computed Regexps172474 -Node: Reading Files175811 -Node: Records177813 -Ref: Records-Footnote-1186901 -Node: Fields186938 -Ref: Fields-Footnote-1189971 -Node: Nonconstant Fields190057 -Node: Changing Fields192259 -Node: Field Separators198218 -Node: Default Field Splitting200920 -Node: Regexp Field Splitting202037 -Node: Single Character Fields205379 -Node: Command Line Field Separator206438 -Node: Full Line Fields209872 -Ref: Full Line Fields-Footnote-1210380 -Node: Field Splitting Summary210426 -Ref: Field Splitting Summary-Footnote-1213525 -Node: Constant Size213626 -Node: Splitting By Content218233 -Ref: Splitting By Content-Footnote-1221982 -Node: Multiple Line222022 -Ref: Multiple Line-Footnote-1227869 -Node: Getline228048 -Node: Plain Getline230264 -Node: Getline/Variable232359 -Node: Getline/File233506 -Node: Getline/Variable/File234847 -Ref: Getline/Variable/File-Footnote-1236446 -Node: Getline/Pipe236533 -Node: Getline/Variable/Pipe239232 -Node: Getline/Coprocess240339 -Node: Getline/Variable/Coprocess241591 -Node: Getline Notes242328 -Node: Getline Summary245115 -Ref: table-getline-variants245523 -Node: Read Timeout246435 -Ref: Read Timeout-Footnote-1250176 -Node: Command line directories250233 -Node: Printing250863 -Node: Print252494 -Node: Print Examples253831 -Node: Output Separators256615 -Node: OFMT258375 -Node: Printf259733 -Node: Basic Printf260639 -Node: Control Letters262178 -Node: Format Modifiers265990 -Node: Printf Examples271999 -Node: Redirection274714 -Node: Special Files281679 -Node: Special FD282212 -Ref: Special FD-Footnote-1285837 -Node: Special Network285911 -Node: Special Caveats286761 -Node: Close Files And Pipes287557 -Ref: Close Files And Pipes-Footnote-1294540 -Ref: Close Files And Pipes-Footnote-2294688 -Node: Expressions294838 -Node: Values295970 -Node: Constants296646 -Node: Scalar Constants297326 -Ref: Scalar Constants-Footnote-1298185 -Node: Nondecimal-numbers298367 -Node: Regexp Constants301367 -Node: Using Constant Regexps301842 -Node: Variables304897 -Node: Using Variables305552 -Node: Assignment Options307276 -Node: Conversion309148 -Ref: table-locale-affects314648 -Ref: Conversion-Footnote-1315272 -Node: All Operators315381 -Node: Arithmetic Ops316011 -Node: Concatenation318516 -Ref: Concatenation-Footnote-1321308 -Node: Assignment Ops321428 -Ref: table-assign-ops326416 -Node: Increment Ops327747 -Node: Truth Values and Conditions331181 -Node: Truth Values332264 -Node: Typing and Comparison333313 -Node: Variable Typing334106 -Ref: Variable Typing-Footnote-1338003 -Node: Comparison Operators338125 -Ref: table-relational-ops338535 -Node: POSIX String Comparison342083 -Ref: POSIX String Comparison-Footnote-1343039 -Node: Boolean Ops343177 -Ref: Boolean Ops-Footnote-1347255 -Node: Conditional Exp347346 -Node: Function Calls349078 -Node: Precedence352672 -Node: Locales356341 -Node: Patterns and Actions357430 -Node: Pattern Overview358484 -Node: Regexp Patterns360153 -Node: Expression Patterns360696 -Node: Ranges364381 -Node: BEGIN/END367347 -Node: Using BEGIN/END368109 -Ref: Using BEGIN/END-Footnote-1370840 -Node: I/O And BEGIN/END370946 -Node: BEGINFILE/ENDFILE373228 -Node: Empty376142 -Node: Using Shell Variables376458 -Node: Action Overview378743 -Node: Statements381100 -Node: If Statement382954 -Node: While Statement384453 -Node: Do Statement386497 -Node: For Statement387653 -Node: Switch Statement390805 -Node: Break Statement392902 -Node: Continue Statement394892 -Node: Next Statement396685 -Node: Nextfile Statement399075 -Node: Exit Statement401718 -Node: Built-in Variables404134 -Node: User-modified405229 -Ref: User-modified-Footnote-1413587 -Node: Auto-set413649 -Ref: Auto-set-Footnote-1427119 -Ref: Auto-set-Footnote-2427324 -Node: ARGC and ARGV427380 -Node: Arrays431231 -Node: Array Basics432736 -Node: Array Intro433562 -Node: Reference to Elements437879 -Node: Assigning Elements440149 -Node: Array Example440640 -Node: Scanning an Array442372 -Node: Controlling Scanning444686 -Ref: Controlling Scanning-Footnote-1449773 -Node: Delete450089 -Ref: Delete-Footnote-1452854 -Node: Numeric Array Subscripts452911 -Node: Uninitialized Subscripts455094 -Node: Multidimensional456721 -Node: Multiscanning459814 -Node: Arrays of Arrays461403 -Node: Functions466043 -Node: Built-in466862 -Node: Calling Built-in467940 -Node: Numeric Functions469928 -Ref: Numeric Functions-Footnote-1473760 -Ref: Numeric Functions-Footnote-2474117 -Ref: Numeric Functions-Footnote-3474165 -Node: String Functions474434 -Ref: String Functions-Footnote-1497354 -Ref: String Functions-Footnote-2497483 -Ref: String Functions-Footnote-3497731 -Node: Gory Details497818 -Ref: table-sub-escapes499497 -Ref: table-sub-posix-92500851 -Ref: table-sub-proposed502202 -Ref: table-posix-sub503556 -Ref: table-gensub-escapes505101 -Ref: Gory Details-Footnote-1506277 -Ref: Gory Details-Footnote-2506328 -Node: I/O Functions506479 -Ref: I/O Functions-Footnote-1513464 -Node: Time Functions513611 -Ref: Time Functions-Footnote-1524544 -Ref: Time Functions-Footnote-2524612 -Ref: Time Functions-Footnote-3524770 -Ref: Time Functions-Footnote-4524881 -Ref: Time Functions-Footnote-5524993 -Ref: Time Functions-Footnote-6525220 -Node: Bitwise Functions525486 -Ref: table-bitwise-ops526048 -Ref: Bitwise Functions-Footnote-1530269 -Node: Type Functions530453 -Node: I18N Functions531604 -Node: User-defined533231 -Node: Definition Syntax534035 -Ref: Definition Syntax-Footnote-1538945 -Node: Function Example539014 -Node: Function Caveats541608 -Node: Calling A Function542029 -Node: Variable Scope543144 -Node: Pass By Value/Reference546107 -Node: Return Statement549615 -Node: Dynamic Typing552596 -Node: Indirect Calls553527 -Node: Library Functions563212 -Ref: Library Functions-Footnote-1566725 -Ref: Library Functions-Footnote-2566868 -Node: Library Names567039 -Ref: Library Names-Footnote-1570510 -Ref: Library Names-Footnote-2570730 -Node: General Functions570816 -Node: Strtonum Function571844 -Node: Assert Function574774 -Node: Round Function578100 -Node: Cliff Random Function579643 -Node: Ordinal Functions580659 -Ref: Ordinal Functions-Footnote-1583731 -Ref: Ordinal Functions-Footnote-2583983 -Node: Join Function584192 -Ref: Join Function-Footnote-1585963 -Node: Getlocaltime Function586163 -Node: Readfile Function589904 -Node: Data File Management591743 -Node: Filetrans Function592375 -Node: Rewind Function596444 -Node: File Checking597831 -Node: Empty Files598925 -Node: Ignoring Assigns601155 -Node: Getopt Function602708 -Ref: Getopt Function-Footnote-1614011 -Node: Passwd Functions614214 -Ref: Passwd Functions-Footnote-1623189 -Node: Group Functions623277 -Node: Walking Arrays631361 -Node: Sample Programs633498 -Node: Running Examples634172 -Node: Clones634900 -Node: Cut Program636124 -Node: Egrep Program645969 -Ref: Egrep Program-Footnote-1653742 -Node: Id Program653852 -Node: Split Program657468 -Ref: Split Program-Footnote-1660987 -Node: Tee Program661115 -Node: Uniq Program663918 -Node: Wc Program671347 -Ref: Wc Program-Footnote-1675613 -Ref: Wc Program-Footnote-2675813 -Node: Miscellaneous Programs675905 -Node: Dupword Program677093 -Node: Alarm Program679124 -Node: Translate Program683931 -Ref: Translate Program-Footnote-1688318 -Ref: Translate Program-Footnote-2688566 -Node: Labels Program688700 -Ref: Labels Program-Footnote-1692071 -Node: Word Sorting692155 -Node: History Sorting696039 -Node: Extract Program697878 -Ref: Extract Program-Footnote-1705381 -Node: Simple Sed705509 -Node: Igawk Program708571 -Ref: Igawk Program-Footnote-1723728 -Ref: Igawk Program-Footnote-2723929 -Node: Anagram Program724067 -Node: Signature Program727135 -Node: Advanced Features728235 -Node: Nondecimal Data730121 -Node: Array Sorting731704 -Node: Controlling Array Traversal732401 -Node: Array Sorting Functions740685 -Ref: Array Sorting Functions-Footnote-1744554 -Node: Two-way I/O744748 -Ref: Two-way I/O-Footnote-1750180 -Node: TCP/IP Networking750250 -Node: Profiling753094 -Node: Internationalization760591 -Node: I18N and L10N762016 -Node: Explaining gettext762702 -Ref: Explaining gettext-Footnote-1767770 -Ref: Explaining gettext-Footnote-2767954 -Node: Programmer i18n768119 -Node: Translator i18n772321 -Node: String Extraction773114 -Ref: String Extraction-Footnote-1774075 -Node: Printf Ordering774161 -Ref: Printf Ordering-Footnote-1776945 -Node: I18N Portability777009 -Ref: I18N Portability-Footnote-1779458 -Node: I18N Example779521 -Ref: I18N Example-Footnote-1782159 -Node: Gawk I18N782231 -Node: Debugger782852 -Node: Debugging783823 -Node: Debugging Concepts784256 -Node: Debugging Terms786112 -Node: Awk Debugging788709 -Node: Sample Debugging Session789601 -Node: Debugger Invocation790121 -Node: Finding The Bug791453 -Node: List of Debugger Commands797941 -Node: Breakpoint Control799275 -Node: Debugger Execution Control802939 -Node: Viewing And Changing Data806299 -Node: Execution Stack809655 -Node: Debugger Info811122 -Node: Miscellaneous Debugger Commands815104 -Node: Readline Support820280 -Node: Limitations821111 -Node: Arbitrary Precision Arithmetic823363 -Ref: Arbitrary Precision Arithmetic-Footnote-1825012 -Node: General Arithmetic825160 -Node: Floating Point Issues826880 -Node: String Conversion Precision827761 -Ref: String Conversion Precision-Footnote-1829466 -Node: Unexpected Results829575 -Node: POSIX Floating Point Problems831728 -Ref: POSIX Floating Point Problems-Footnote-1835553 -Node: Integer Programming835591 -Node: Floating-point Programming837330 -Ref: Floating-point Programming-Footnote-1843661 -Ref: Floating-point Programming-Footnote-2843931 -Node: Floating-point Representation844195 -Node: Floating-point Context845360 -Ref: table-ieee-formats846199 -Node: Rounding Mode847583 -Ref: table-rounding-modes848062 -Ref: Rounding Mode-Footnote-1851077 -Node: Gawk and MPFR851256 -Node: Arbitrary Precision Floats852511 -Ref: Arbitrary Precision Floats-Footnote-1854954 -Node: Setting Precision855270 -Ref: table-predefined-precision-strings855956 -Node: Setting Rounding Mode858101 -Ref: table-gawk-rounding-modes858505 -Node: Floating-point Constants859692 -Node: Changing Precision861121 -Ref: Changing Precision-Footnote-1862518 -Node: Exact Arithmetic862692 -Node: Arbitrary Precision Integers865830 -Ref: Arbitrary Precision Integers-Footnote-1868848 -Node: Dynamic Extensions868995 -Node: Extension Intro870453 -Node: Plugin License871718 -Node: Extension Mechanism Outline872403 -Ref: load-extension872820 -Ref: load-new-function874298 -Ref: call-new-function875293 -Node: Extension API Description877308 -Node: Extension API Functions Introduction878521 -Node: General Data Types883387 -Ref: General Data Types-Footnote-1888989 -Node: Requesting Values889288 -Ref: table-value-types-returned890019 -Node: Constructor Functions890973 -Node: Registration Functions893993 -Node: Extension Functions894678 -Node: Exit Callback Functions896903 -Node: Extension Version String898152 -Node: Input Parsers898802 -Node: Output Wrappers908559 -Node: Two-way processors913069 -Node: Printing Messages915277 -Ref: Printing Messages-Footnote-1916354 -Node: Updating `ERRNO'916506 -Node: Accessing Parameters917245 -Node: Symbol Table Access918475 -Node: Symbol table by name918987 -Node: Symbol table by cookie920734 -Ref: Symbol table by cookie-Footnote-1924864 -Node: Cached values924927 -Ref: Cached values-Footnote-1928376 -Node: Array Manipulation928467 -Ref: Array Manipulation-Footnote-1929565 -Node: Array Data Types929604 -Ref: Array Data Types-Footnote-1932307 -Node: Array Functions932399 -Node: Flattening Arrays936165 -Node: Creating Arrays943017 -Node: Extension API Variables947742 -Node: Extension Versioning948378 -Node: Extension API Informational Variables950279 -Node: Extension API Boilerplate951365 -Node: Finding Extensions955169 -Node: Extension Example955729 -Node: Internal File Description956459 -Node: Internal File Ops960550 -Ref: Internal File Ops-Footnote-1972058 -Node: Using Internal File Ops972198 -Ref: Using Internal File Ops-Footnote-1974551 -Node: Extension Samples974817 -Node: Extension Sample File Functions976341 -Node: Extension Sample Fnmatch984826 -Node: Extension Sample Fork986552 -Node: Extension Sample Inplace987770 -Node: Extension Sample Ord989548 -Node: Extension Sample Readdir990384 -Node: Extension Sample Revout991916 -Node: Extension Sample Rev2way992509 -Node: Extension Sample Read write array993199 -Node: Extension Sample Readfile995082 -Node: Extension Sample API Tests995900 -Node: Extension Sample Time996425 -Node: gawkextlib997789 -Node: Language History1000570 -Node: V7/SVR3.11002163 -Node: SVR41004483 -Node: POSIX1005925 -Node: BTL1007311 -Node: POSIX/GNU1008045 -Node: Feature History1013644 -Node: Common Extensions1026608 -Node: Ranges and Locales1027920 -Ref: Ranges and Locales-Footnote-11032538 -Ref: Ranges and Locales-Footnote-21032565 -Ref: Ranges and Locales-Footnote-31032825 -Node: Contributors1033046 -Node: Installation1038191 -Node: Gawk Distribution1039085 -Node: Getting1039569 -Node: Extracting1040395 -Node: Distribution contents1042087 -Node: Unix Installation1047792 -Node: Quick Installation1048409 -Node: Additional Configuration Options1050853 -Node: Configuration Philosophy1052589 -Node: Non-Unix Installation1054943 -Node: PC Installation1055401 -Node: PC Binary Installation1056700 -Node: PC Compiling1058548 -Node: PC Testing1061492 -Node: PC Using1062668 -Node: Cygwin1066853 -Node: MSYS1067853 -Node: VMS Installation1068367 -Node: VMS Compilation1069131 -Ref: VMS Compilation-Footnote-11070746 -Node: VMS Dynamic Extensions1070804 -Node: VMS Installation Details1072177 -Node: VMS Running1074424 -Node: VMS GNV1077258 -Node: VMS Old Gawk1077981 -Node: Bugs1078451 -Node: Other Versions1082369 -Node: Notes1088453 -Node: Compatibility Mode1089253 -Node: Additions1090036 -Node: Accessing The Source1090963 -Node: Adding Code1092403 -Node: New Ports1098448 -Node: Derived Files1102583 -Ref: Derived Files-Footnote-11107904 -Ref: Derived Files-Footnote-21107938 -Ref: Derived Files-Footnote-31108538 -Node: Future Extensions1108636 -Node: Implementation Limitations1109219 -Node: Extension Design1110471 -Node: Old Extension Problems1111625 -Ref: Old Extension Problems-Footnote-11113133 -Node: Extension New Mechanism Goals1113190 -Ref: Extension New Mechanism Goals-Footnote-11116555 -Node: Extension Other Design Decisions1116741 -Node: Extension Future Growth1118847 -Node: Old Extension Mechanism1119683 -Node: Basic Concepts1121423 -Node: Basic High Level1122104 -Ref: figure-general-flow1122375 -Ref: figure-process-flow1122974 -Ref: Basic High Level-Footnote-11126203 -Node: Basic Data Typing1126388 -Node: Glossary1129743 -Node: Copying1155205 -Node: GNU Free Documentation License1192762 -Node: Index1217899 +Node: Top1292 +Node: Foreword40821 +Node: Preface45166 +Ref: Preface-Footnote-148219 +Ref: Preface-Footnote-248315 +Node: History48547 +Node: Names50921 +Ref: Names-Footnote-152398 +Node: This Manual52470 +Ref: This Manual-Footnote-158244 +Node: Conventions58344 +Node: Manual History60500 +Ref: Manual History-Footnote-163948 +Ref: Manual History-Footnote-263989 +Node: How To Contribute64063 +Node: Acknowledgments65207 +Node: Getting Started69401 +Node: Running gawk71780 +Node: One-shot72966 +Node: Read Terminal74191 +Ref: Read Terminal-Footnote-175841 +Ref: Read Terminal-Footnote-276117 +Node: Long76288 +Node: Executable Scripts77664 +Ref: Executable Scripts-Footnote-179497 +Ref: Executable Scripts-Footnote-279599 +Node: Comments80146 +Node: Quoting82613 +Node: DOS Quoting87236 +Node: Sample Data Files87911 +Node: Very Simple90426 +Node: Two Rules95077 +Node: More Complex96975 +Ref: More Complex-Footnote-199905 +Node: Statements/Lines99990 +Ref: Statements/Lines-Footnote-1104453 +Node: Other Features104718 +Node: When105646 +Node: Invoking Gawk107793 +Node: Command Line109256 +Node: Options110039 +Ref: Options-Footnote-1125417 +Node: Other Arguments125442 +Node: Naming Standard Input128100 +Node: Environment Variables129194 +Node: AWKPATH Variable129752 +Ref: AWKPATH Variable-Footnote-1132533 +Ref: AWKPATH Variable-Footnote-2132578 +Node: AWKLIBPATH Variable132838 +Node: Other Environment Variables133556 +Node: Exit Status136519 +Node: Include Files137194 +Node: Loading Shared Libraries140763 +Node: Obsolete142127 +Node: Undocumented142824 +Node: Regexp143066 +Node: Regexp Usage144455 +Node: Escape Sequences146480 +Node: Regexp Operators152149 +Ref: Regexp Operators-Footnote-1159529 +Ref: Regexp Operators-Footnote-2159676 +Node: Bracket Expressions159774 +Ref: table-char-classes161664 +Node: GNU Regexp Operators164187 +Node: Case-sensitivity167910 +Ref: Case-sensitivity-Footnote-1170878 +Ref: Case-sensitivity-Footnote-2171113 +Node: Leftmost Longest171221 +Node: Computed Regexps172422 +Node: Reading Files175759 +Node: Records177761 +Ref: Records-Footnote-1187284 +Node: Fields187321 +Ref: Fields-Footnote-1190277 +Node: Nonconstant Fields190363 +Node: Changing Fields192569 +Node: Field Separators198528 +Node: Default Field Splitting201230 +Node: Regexp Field Splitting202347 +Node: Single Character Fields205689 +Node: Command Line Field Separator206748 +Node: Full Line Fields210090 +Ref: Full Line Fields-Footnote-1210598 +Node: Field Splitting Summary210644 +Ref: Field Splitting Summary-Footnote-1213743 +Node: Constant Size213844 +Node: Splitting By Content218451 +Ref: Splitting By Content-Footnote-1222200 +Node: Multiple Line222240 +Ref: Multiple Line-Footnote-1228087 +Node: Getline228266 +Node: Plain Getline230482 +Node: Getline/Variable232577 +Node: Getline/File233724 +Node: Getline/Variable/File235065 +Ref: Getline/Variable/File-Footnote-1236664 +Node: Getline/Pipe236751 +Node: Getline/Variable/Pipe239450 +Node: Getline/Coprocess240557 +Node: Getline/Variable/Coprocess241809 +Node: Getline Notes242546 +Node: Getline Summary245333 +Ref: table-getline-variants245741 +Node: Read Timeout246653 +Ref: Read Timeout-Footnote-1250394 +Node: Command line directories250451 +Node: Printing251081 +Node: Print252712 +Node: Print Examples254049 +Node: Output Separators256833 +Node: OFMT258849 +Node: Printf260207 +Node: Basic Printf261113 +Node: Control Letters262652 +Node: Format Modifiers266464 +Node: Printf Examples272473 +Node: Redirection275185 +Node: Special Files282159 +Node: Special FD282692 +Ref: Special FD-Footnote-1286317 +Node: Special Network286391 +Node: Special Caveats287241 +Node: Close Files And Pipes288037 +Ref: Close Files And Pipes-Footnote-1295020 +Ref: Close Files And Pipes-Footnote-2295168 +Node: Expressions295318 +Node: Values296450 +Node: Constants297126 +Node: Scalar Constants297806 +Ref: Scalar Constants-Footnote-1298665 +Node: Nondecimal-numbers298847 +Node: Regexp Constants301847 +Node: Using Constant Regexps302322 +Node: Variables305377 +Node: Using Variables306032 +Node: Assignment Options307756 +Node: Conversion309631 +Ref: table-locale-affects315131 +Ref: Conversion-Footnote-1315755 +Node: All Operators315864 +Node: Arithmetic Ops316494 +Node: Concatenation318999 +Ref: Concatenation-Footnote-1321787 +Node: Assignment Ops321907 +Ref: table-assign-ops326895 +Node: Increment Ops328226 +Node: Truth Values and Conditions331660 +Node: Truth Values332743 +Node: Typing and Comparison333792 +Node: Variable Typing334585 +Ref: Variable Typing-Footnote-1338482 +Node: Comparison Operators338604 +Ref: table-relational-ops339014 +Node: POSIX String Comparison342562 +Ref: POSIX String Comparison-Footnote-1343518 +Node: Boolean Ops343656 +Ref: Boolean Ops-Footnote-1347726 +Node: Conditional Exp347817 +Node: Function Calls349549 +Node: Precedence353143 +Node: Locales356812 +Node: Patterns and Actions357901 +Node: Pattern Overview358955 +Node: Regexp Patterns360624 +Node: Expression Patterns361167 +Node: Ranges364948 +Node: BEGIN/END368052 +Node: Using BEGIN/END368814 +Ref: Using BEGIN/END-Footnote-1371550 +Node: I/O And BEGIN/END371656 +Node: BEGINFILE/ENDFILE373938 +Node: Empty376852 +Node: Using Shell Variables377169 +Node: Action Overview379454 +Node: Statements381811 +Node: If Statement383665 +Node: While Statement385164 +Node: Do Statement387208 +Node: For Statement388364 +Node: Switch Statement391516 +Node: Break Statement393670 +Node: Continue Statement395660 +Node: Next Statement397453 +Node: Nextfile Statement399843 +Node: Exit Statement402498 +Node: Built-in Variables404914 +Node: User-modified406009 +Ref: User-modified-Footnote-1414367 +Node: Auto-set414429 +Ref: Auto-set-Footnote-1427886 +Ref: Auto-set-Footnote-2428091 +Node: ARGC and ARGV428147 +Node: Arrays432001 +Node: Array Basics433506 +Node: Array Intro434332 +Node: Reference to Elements438649 +Node: Assigning Elements440919 +Node: Array Example441410 +Node: Scanning an Array443142 +Node: Controlling Scanning445456 +Ref: Controlling Scanning-Footnote-1450543 +Node: Delete450859 +Ref: Delete-Footnote-1453624 +Node: Numeric Array Subscripts453681 +Node: Uninitialized Subscripts455864 +Node: Multidimensional457491 +Node: Multiscanning460584 +Node: Arrays of Arrays462173 +Node: Functions466813 +Node: Built-in467632 +Node: Calling Built-in468710 +Node: Numeric Functions470698 +Ref: Numeric Functions-Footnote-1474530 +Ref: Numeric Functions-Footnote-2474887 +Ref: Numeric Functions-Footnote-3474935 +Node: String Functions475204 +Ref: String Functions-Footnote-1498162 +Ref: String Functions-Footnote-2498291 +Ref: String Functions-Footnote-3498539 +Node: Gory Details498626 +Ref: table-sub-escapes500305 +Ref: table-sub-posix-92501659 +Ref: table-sub-proposed503010 +Ref: table-posix-sub504364 +Ref: table-gensub-escapes505909 +Ref: Gory Details-Footnote-1507085 +Ref: Gory Details-Footnote-2507136 +Node: I/O Functions507287 +Ref: I/O Functions-Footnote-1514277 +Node: Time Functions514424 +Ref: Time Functions-Footnote-1525407 +Ref: Time Functions-Footnote-2525475 +Ref: Time Functions-Footnote-3525633 +Ref: Time Functions-Footnote-4525744 +Ref: Time Functions-Footnote-5525856 +Ref: Time Functions-Footnote-6526083 +Node: Bitwise Functions526349 +Ref: table-bitwise-ops526911 +Ref: Bitwise Functions-Footnote-1531132 +Node: Type Functions531316 +Node: I18N Functions532467 +Node: User-defined534094 +Node: Definition Syntax534898 +Ref: Definition Syntax-Footnote-1539812 +Node: Function Example539881 +Ref: Function Example-Footnote-1542530 +Node: Function Caveats542552 +Node: Calling A Function543070 +Node: Variable Scope544025 +Node: Pass By Value/Reference546988 +Node: Return Statement550496 +Node: Dynamic Typing553477 +Node: Indirect Calls554408 +Node: Library Functions564095 +Ref: Library Functions-Footnote-1567608 +Ref: Library Functions-Footnote-2567751 +Node: Library Names567922 +Ref: Library Names-Footnote-1571395 +Ref: Library Names-Footnote-2571615 +Node: General Functions571701 +Node: Strtonum Function572729 +Node: Assert Function575659 +Node: Round Function578985 +Node: Cliff Random Function580526 +Node: Ordinal Functions581542 +Ref: Ordinal Functions-Footnote-1584619 +Ref: Ordinal Functions-Footnote-2584871 +Node: Join Function585082 +Ref: Join Function-Footnote-1586853 +Node: Getlocaltime Function587053 +Node: Readfile Function590794 +Node: Data File Management592633 +Node: Filetrans Function593265 +Node: Rewind Function597334 +Node: File Checking598721 +Node: Empty Files599815 +Node: Ignoring Assigns602045 +Node: Getopt Function603599 +Ref: Getopt Function-Footnote-1614902 +Node: Passwd Functions615105 +Ref: Passwd Functions-Footnote-1624083 +Node: Group Functions624171 +Node: Walking Arrays632255 +Node: Sample Programs634391 +Node: Running Examples635065 +Node: Clones635793 +Node: Cut Program637017 +Node: Egrep Program646868 +Ref: Egrep Program-Footnote-1654641 +Node: Id Program654751 +Node: Split Program658400 +Ref: Split Program-Footnote-1661919 +Node: Tee Program662047 +Node: Uniq Program664850 +Node: Wc Program672279 +Ref: Wc Program-Footnote-1676545 +Ref: Wc Program-Footnote-2676745 +Node: Miscellaneous Programs676837 +Node: Dupword Program678025 +Node: Alarm Program680056 +Node: Translate Program684863 +Ref: Translate Program-Footnote-1689250 +Ref: Translate Program-Footnote-2689498 +Node: Labels Program689632 +Ref: Labels Program-Footnote-1693003 +Node: Word Sorting693087 +Node: History Sorting696971 +Node: Extract Program698810 +Ref: Extract Program-Footnote-1706313 +Node: Simple Sed706441 +Node: Igawk Program709503 +Ref: Igawk Program-Footnote-1724660 +Ref: Igawk Program-Footnote-2724861 +Node: Anagram Program724999 +Node: Signature Program728067 +Node: Advanced Features729167 +Node: Nondecimal Data731053 +Node: Array Sorting732636 +Node: Controlling Array Traversal733333 +Node: Array Sorting Functions741617 +Ref: Array Sorting Functions-Footnote-1745486 +Node: Two-way I/O745680 +Ref: Two-way I/O-Footnote-1751112 +Node: TCP/IP Networking751194 +Node: Profiling754038 +Node: Internationalization761541 +Node: I18N and L10N762966 +Node: Explaining gettext763652 +Ref: Explaining gettext-Footnote-1768720 +Ref: Explaining gettext-Footnote-2768904 +Node: Programmer i18n769069 +Node: Translator i18n773271 +Node: String Extraction774065 +Ref: String Extraction-Footnote-1775026 +Node: Printf Ordering775112 +Ref: Printf Ordering-Footnote-1777894 +Node: I18N Portability777958 +Ref: I18N Portability-Footnote-1780407 +Node: I18N Example780470 +Ref: I18N Example-Footnote-1783108 +Node: Gawk I18N783180 +Node: Debugger783801 +Node: Debugging784772 +Node: Debugging Concepts785205 +Node: Debugging Terms787061 +Node: Awk Debugging789658 +Node: Sample Debugging Session790550 +Node: Debugger Invocation791070 +Node: Finding The Bug792403 +Node: List of Debugger Commands798890 +Node: Breakpoint Control800224 +Node: Debugger Execution Control803888 +Node: Viewing And Changing Data807248 +Node: Execution Stack810604 +Node: Debugger Info812071 +Node: Miscellaneous Debugger Commands816053 +Node: Readline Support821229 +Node: Limitations822060 +Node: Arbitrary Precision Arithmetic824312 +Ref: Arbitrary Precision Arithmetic-Footnote-1825961 +Node: General Arithmetic826109 +Node: Floating Point Issues827829 +Node: String Conversion Precision828710 +Ref: String Conversion Precision-Footnote-1830415 +Node: Unexpected Results830524 +Node: POSIX Floating Point Problems832677 +Ref: POSIX Floating Point Problems-Footnote-1836502 +Node: Integer Programming836540 +Node: Floating-point Programming838279 +Ref: Floating-point Programming-Footnote-1844610 +Ref: Floating-point Programming-Footnote-2844880 +Node: Floating-point Representation845144 +Node: Floating-point Context846309 +Ref: table-ieee-formats847148 +Node: Rounding Mode848532 +Ref: table-rounding-modes849011 +Ref: Rounding Mode-Footnote-1852026 +Node: Gawk and MPFR852205 +Node: Arbitrary Precision Floats853616 +Ref: Arbitrary Precision Floats-Footnote-1856059 +Node: Setting Precision856375 +Ref: table-predefined-precision-strings857061 +Node: Setting Rounding Mode859206 +Ref: table-gawk-rounding-modes859610 +Node: Floating-point Constants860797 +Node: Changing Precision862226 +Ref: Changing Precision-Footnote-1863623 +Node: Exact Arithmetic863797 +Node: Arbitrary Precision Integers866935 +Ref: Arbitrary Precision Integers-Footnote-1869950 +Node: Dynamic Extensions870097 +Node: Extension Intro871555 +Node: Plugin License872820 +Node: Extension Mechanism Outline873505 +Ref: load-extension873922 +Ref: load-new-function875400 +Ref: call-new-function876395 +Node: Extension API Description878410 +Node: Extension API Functions Introduction879697 +Node: General Data Types884624 +Ref: General Data Types-Footnote-1890319 +Node: Requesting Values890618 +Ref: table-value-types-returned891355 +Node: Memory Allocation Functions892309 +Ref: Memory Allocation Functions-Footnote-1895055 +Node: Constructor Functions895151 +Node: Registration Functions896909 +Node: Extension Functions897594 +Node: Exit Callback Functions899896 +Node: Extension Version String901145 +Node: Input Parsers901795 +Node: Output Wrappers911552 +Node: Two-way processors916062 +Node: Printing Messages918270 +Ref: Printing Messages-Footnote-1919347 +Node: Updating `ERRNO'919499 +Node: Accessing Parameters920238 +Node: Symbol Table Access921468 +Node: Symbol table by name921982 +Node: Symbol table by cookie923958 +Ref: Symbol table by cookie-Footnote-1928090 +Node: Cached values928153 +Ref: Cached values-Footnote-1931643 +Node: Array Manipulation931734 +Ref: Array Manipulation-Footnote-1932832 +Node: Array Data Types932871 +Ref: Array Data Types-Footnote-1935574 +Node: Array Functions935666 +Node: Flattening Arrays939502 +Node: Creating Arrays946354 +Node: Extension API Variables951079 +Node: Extension Versioning951715 +Node: Extension API Informational Variables953616 +Node: Extension API Boilerplate954702 +Node: Finding Extensions958506 +Node: Extension Example959066 +Node: Internal File Description959796 +Node: Internal File Ops963887 +Ref: Internal File Ops-Footnote-1975396 +Node: Using Internal File Ops975536 +Ref: Using Internal File Ops-Footnote-1977889 +Node: Extension Samples978155 +Node: Extension Sample File Functions979679 +Node: Extension Sample Fnmatch988164 +Node: Extension Sample Fork989933 +Node: Extension Sample Inplace991146 +Node: Extension Sample Ord992924 +Node: Extension Sample Readdir993760 +Node: Extension Sample Revout995292 +Node: Extension Sample Rev2way995885 +Node: Extension Sample Read write array996575 +Node: Extension Sample Readfile998458 +Node: Extension Sample API Tests999558 +Node: Extension Sample Time1000083 +Node: gawkextlib1001447 +Node: Language History1004228 +Node: V7/SVR3.11005821 +Node: SVR41008141 +Node: POSIX1009583 +Node: BTL1010969 +Node: POSIX/GNU1011703 +Node: Feature History1017302 +Node: Common Extensions1030278 +Node: Ranges and Locales1031590 +Ref: Ranges and Locales-Footnote-11036207 +Ref: Ranges and Locales-Footnote-21036234 +Ref: Ranges and Locales-Footnote-31036468 +Node: Contributors1036689 +Node: Installation1042070 +Node: Gawk Distribution1042964 +Node: Getting1043448 +Node: Extracting1044274 +Node: Distribution contents1045966 +Node: Unix Installation1051671 +Node: Quick Installation1052288 +Node: Additional Configuration Options1054734 +Node: Configuration Philosophy1056470 +Node: Non-Unix Installation1058824 +Node: PC Installation1059282 +Node: PC Binary Installation1060581 +Node: PC Compiling1062429 +Node: PC Testing1065373 +Node: PC Using1066549 +Node: Cygwin1070717 +Node: MSYS1071526 +Node: VMS Installation1072040 +Node: VMS Compilation1072804 +Ref: VMS Compilation-Footnote-11074056 +Node: VMS Dynamic Extensions1074114 +Node: VMS Installation Details1075487 +Node: VMS Running1077738 +Node: VMS GNV1080572 +Node: VMS Old Gawk1081295 +Node: Bugs1081765 +Node: Other Versions1085683 +Node: Notes1091767 +Node: Compatibility Mode1092567 +Node: Additions1093350 +Node: Accessing The Source1094277 +Node: Adding Code1095717 +Node: New Ports1101762 +Node: Derived Files1105897 +Ref: Derived Files-Footnote-11111218 +Ref: Derived Files-Footnote-21111252 +Ref: Derived Files-Footnote-31111852 +Node: Future Extensions1111950 +Node: Implementation Limitations1112533 +Node: Extension Design1113785 +Node: Old Extension Problems1114939 +Ref: Old Extension Problems-Footnote-11116447 +Node: Extension New Mechanism Goals1116504 +Ref: Extension New Mechanism Goals-Footnote-11119869 +Node: Extension Other Design Decisions1120055 +Node: Extension Future Growth1122161 +Node: Old Extension Mechanism1122997 +Node: Basic Concepts1124737 +Node: Basic High Level1125418 +Ref: figure-general-flow1125690 +Ref: figure-process-flow1126289 +Ref: Basic High Level-Footnote-11129518 +Node: Basic Data Typing1129703 +Node: Glossary1133058 +Node: Copying1158289 +Node: GNU Free Documentation License1195845 +Node: Index1220981 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 0d780286..539ea53d 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -40,9 +40,9 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH February, 2014 +@set UPDATE-MONTH April, 2014 @set VERSION 4.1 -@set PATCHLEVEL 0 +@set PATCHLEVEL 1 @set FSF @@ -116,11 +116,19 @@ @end ifnottex @ifnottex +@ifnotdocbook @macro ii{text} @i{\text\} @end macro +@end ifnotdocbook @end ifnottex +@ifdocbook +@macro ii{text} +@inlineraw{docbook,<lineannotation>\text\</lineannotation>} +@end macro +@end ifdocbook + @c For HTML, spell out email addresses, to avoid problems with @c address harvesters for spammers. @ifhtml @@ -134,9 +142,36 @@ @end macro @end ifnothtml +@c Indexing macros +@ifinfo + +@macro cindexawkfunc{name} +@cindex @code{\name\} +@end macro + +@macro cindexgawkfunc{name} +@cindex @code{\name\} +@end macro + +@end ifinfo + +@ifnotinfo + +@macro cindexawkfunc{name} +@cindex @code{\name\()} function +@end macro + +@macro cindexgawkfunc{name} +@cindex @code{\name\()} function (@command{gawk}) +@end macro +@end ifnotinfo + @ignore Some comments on the layout for TeX. 1. Use at least texinfo.tex 2014-01-30.15 +2. When using @docbook, if the last line is part of a paragraph, end +it with a space and @c so that the lines won't run together. This is a +quirk of the language / makeinfo, and isn't going to change. @end ignore @c merge the function and variable indexes into the concept index @@ -152,6 +187,10 @@ Some comments on the layout for TeX. @syncodeindex fn cp @syncodeindex vr cp @end ifxml +@ifdocbook +@synindex fn cp +@synindex vr cp +@end ifdocbook @c If "finalout" is commented out, the printed output will show @c black boxes that mark lines that are too long. Thus, it is @@ -163,10 +202,26 @@ Some comments on the layout for TeX. @end iftex @copying -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, -2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, -2014 +@docbook +<para>Published by:</para> + +<literallayout class="normal">Free Software Foundation +51 Franklin Street, Fifth Floor +Boston, MA 02110-1301 USA +Phone: +1-617-542-5942 +Fax: +1-617-542-2652 +Email: <email>gnu@@gnu.org</email> +URL: <ulink url="http://www.gnu.org">http://www.gnu.org/</ulink></literallayout> + +<literallayout class="normal">Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2014 Free Software Foundation, Inc. +All Rights Reserved.</literallayout> +@end docbook + +@ifnotdocbook +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2014 @* +Free Software Foundation, Inc. +@end ifnotdocbook @sp 2 This is Edition @value{EDITION} of @cite{@value{TITLE}: @value{SUBTITLE}}, @@ -214,6 +269,7 @@ supports it in developing GNU and promoting software freedom.'' @subtitle @value{UPDATE-MONTH} @author Arnold D. Robbins +@ifnotdocbook @c Include the Distribution inside the titlepage environment so @c that headings are turned off. Headings on and off do not work. @@ -238,6 +294,7 @@ URL: @uref{http://www.gnu.org/} @* ISBN 1-882114-28-0 @* @sp 2 @insertcopying +@end ifnotdocbook @end titlepage @c Thanks to Bob Chassell for directions on doing dedications. @@ -262,6 +319,18 @@ ISBN 1-882114-28-0 @* @headings on @end iftex +@docbook +<dedication> +<simplelist> +<member>To Miriam, for making me complete.</member> +<member>To Chana, for the joy you bring us.</member> +<member>To Rivka, for the exponential increase.</member> +<member>To Nachum, for the added dimension.</member> +<member>To Malka, for the new beginning.</member> +</simplelist> +</dedication> +@end docbook + @iftex @headings off @evenheading @thispage@ @ @ @strong{@value{TITLE}} @| @| @@ -270,6 +339,7 @@ ISBN 1-882114-28-0 @* @ifnottex @ifnotxml +@ifnotdocbook @node Top @top General Introduction @c Preface node should come right after the Top @@ -281,6 +351,7 @@ particular records in a file and perform operations upon them. @insertcopying +@end ifnotdocbook @end ifnotxml @end ifnottex @@ -742,6 +813,7 @@ particular records in a file and perform operations upon them. * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with @command{gawk}. @@ -804,7 +876,8 @@ particular records in a file and perform operations upon them. version of @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. -* Feature History:: The history of the features in @command{gawk}. +* Feature History:: The history of the features in + @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -976,21 +1049,37 @@ and the AWK prototype becomes the product. The new @command{pgawk} (profiling @command{gawk}), produces program execution counts. I recently experimented with an algorithm that for -@math{n} lines of input, exhibited +@ifnotdocbook +@math{n} +@end ifnotdocbook +@ifdocbook +@i{n} +@end ifdocbook +lines of input, exhibited @tex $\sim\! Cn^2$ @end tex @ifnottex +@ifnotdocbook ~ C n^2 +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>∼ Cn<superscript>2</superscript></emphasis> @c +@end docbook performance, while theory predicted @tex $\sim\! Cn\log n$ @end tex @ifnottex +@ifnotdocbook ~ C n log n +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>∼ Cn log n</emphasis> @c +@end docbook behavior. A few minutes poring over the @file{awkprof.out} profile pinpointed the problem to a single line of code. @command{pgawk} is a welcome addition to @@ -1000,6 +1089,7 @@ Arnold has distilled over a decade of experience writing and using AWK programs, and developing @command{gawk}, into this book. If you use AWK or want to learn how, then read this book. +@cindex Brennan, Michael @display Michael Brennan Author of @command{mawk} @@ -1024,6 +1114,7 @@ Such jobs are often easier with @command{awk}. The @command{awk} utility interprets a special-purpose programming language that makes it easy to handle simple data-reformatting jobs. +@cindex Brian Kernighan's @command{awk} The GNU implementation of @command{awk} is called @command{gawk}; if you invoke it with the proper options or environment variables (@pxref{Options}), it is fully @@ -1774,7 +1865,7 @@ significant editorial help for this @value{DOCUMENT} for the 3.1 release of @command{gawk}. @end quotation -@cindex Beebe, Nelson +@cindex Beebe, Nelson H.F.@: @cindex Buening, Andreas @cindex Collado, Manuel @cindex Colombo, Antonio @@ -2067,11 +2158,11 @@ $ @kbd{awk "BEGIN @{ print \"Don't Panic!\" @}"} @print{} Don't Panic! @end example -@cindex quoting -@cindex double quote (@code{"}) -@cindex @code{"} (double quote) -@cindex @code{\} (backslash) -@cindex backslash (@code{\}) +@cindex shell quoting, double quote +@cindex double quote (@code{"}) in shell commands +@cindex @code{"} (double quote) in shell commands +@cindex @code{\} (backslash) in shell commands +@cindex backslash (@code{\}) in shell commands This program does not read any input. The @samp{\} before each of the inner double quotes is necessary because of the shell's quoting rules---in particular because it mixes both single quotes and @@ -2111,8 +2202,7 @@ awk -f @var{source-file} @var{input-file1} @var{input-file2} @dots{} @end example @cindex @option{-f} option -@cindex command line, options -@cindex options, command-line +@cindex command line, option @option{-f} The @option{-f} instructs the @command{awk} utility to get the @command{awk} program from the file @var{source-file}. Any file name can be used for @var{source-file}. For example, you could put the program: @@ -2135,7 +2225,7 @@ does the same thing as this one: awk "BEGIN @{ print \"Don't Panic!\" @}" @end example -@cindex quoting +@cindex quoting in @command{gawk} command lines @noindent This was explained earlier (@pxref{Read Terminal}). @@ -2146,9 +2236,9 @@ program did not have single quotes around it. The quotes are only needed for programs that are provided on the @command{awk} command line. @c STARTOFRANGE sq1x -@cindex single quote (@code{'}) +@cindex single quote (@code{'}) in @command{gawk} command lines @c STARTOFRANGE qs2x -@cindex @code{'} (single quote) +@cindex @code{'} (single quote) in @command{gawk} command lines If you want to clearly identify your @command{awk} program files as such, you can add the extension @file{.awk} to the file name. This doesn't affect the execution of the @command{awk} program but it does make @@ -2297,7 +2387,7 @@ programs, but this usually isn't very useful; the purpose of a comment is to help you or another person understand the program when reading it at a later time. -@cindex quoting +@cindex quoting, for small awk programs @cindex single quote (@code{'}), vs.@: apostrophe @cindex @code{'} (single quote), vs.@: apostrophe @quotation CAUTION @@ -2338,7 +2428,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules. @node Quoting @subsection Shell-Quoting Issues -@cindex quoting, rules for +@cindex shell quoting, rules for @menu * DOS Quoting:: Quoting in Windows Batch Files. @@ -2373,10 +2463,10 @@ that character. The shell removes the backslash and passes the quoted character on to the command. @item -@cindex @code{\} (backslash) -@cindex backslash (@code{\}) -@cindex single quote (@code{'}) -@cindex @code{'} (single quote) +@cindex @code{\} (backslash), in shell commands +@cindex backslash (@code{\}), in shell commands +@cindex single quote (@code{'}), in shell commands +@cindex @code{'} (single quote), in shell commands Single quotes protect everything between the opening and closing quotes. The shell does no interpretation of the quoted text, passing it on verbatim to the command. @@ -2386,8 +2476,8 @@ Refer back to for an example of what happens if you try. @item -@cindex double quote (@code{"}) -@cindex @code{"} (double quote) +@cindex double quote (@code{"}), in shell commands +@cindex @code{"} (double quote), in shell commands Double quotes protect most things between the opening and closing quotes. The shell does at least variable and command substitution on the quoted text. Different shells may do additional kinds of processing on double-quoted text. @@ -2424,7 +2514,7 @@ awk -F "" '@var{program}' @var{files} # correct @end example @noindent -@cindex null strings, quoting and +@cindex null strings in @command{gawk} arguments, quoting and Don't use this: @example @@ -2437,7 +2527,7 @@ as the value of @code{FS}, and the first file name as the text of the program! This results in syntax errors at best, and confusing behavior at worst. @end itemize -@cindex quoting, tricks for +@cindex quoting in @command{gawk} command lines, tricks for Mixing single and double quotes is difficult. You have to resort to shell quoting tricks, like this: @@ -2552,40 +2642,39 @@ gawk "@{ print \"\042\" $0 \"\042\" @}" @var{file} @c For gawk >= 4.0, update these data files. No-one has such slow modems! @cindex input files, examples -@cindex @code{BBS-list} file +@cindex @code{mail-list} file Many of the examples in this @value{DOCUMENT} take their input from two sample -data files. The first, @file{BBS-list}, represents a list of -computer bulletin board systems together with information about those systems. +data files. The first, @file{mail-list}, represents a list of peoples' names +together with their email addresses and information about those people. The second data file, called @file{inventory-shipped}, contains information about monthly shipments. In both files, each line is considered to be one @dfn{record}. -In the data file @file{BBS-list}, each record contains the name of a computer -bulletin board, its phone number, the board's baud rate(s), and a code for -the number of hours it is operational. An @samp{A} in the last column -means the board operates 24 hours a day. A @samp{B} in the last -column means the board only operates on evening and weekend hours. -A @samp{C} means the board operates only on weekends: +In the data file @file{mail-list}, each record contains the name of a person, +his/her phone number, his/her email-address, and a code for their relationship +with the author of the list. An @samp{A} in the last column +means that the person is an acquaintance. An @samp{F} in the last +column means that the person is a friend. +An @samp{R} means that the person is a relative: -@c 2e: Update the baud rates to reflect today's faster modems @example @c system if test ! -d eg ; then mkdir eg ; fi @c system if test ! -d eg/lib ; then mkdir eg/lib ; fi @c system if test ! -d eg/data ; then mkdir eg/data ; fi @c system if test ! -d eg/prog ; then mkdir eg/prog ; fi @c system if test ! -d eg/misc ; then mkdir eg/misc ; fi -@c file eg/data/BBS-list -aardvark 555-5553 1200/300 B -alpo-net 555-3412 2400/1200/300 A -barfly 555-7685 1200/300 A -bites 555-1675 2400/1200/300 A -camelot 555-0542 300 C -core 555-2912 1200/300 C -fooey 555-1234 2400/1200/300 B -foot 555-6699 1200/300 B -macfoo 555-6480 1200/300 A -sdace 555-3430 2400/1200/300 A -sabafoo 555-2127 1200/300 C +@c file eg/data/mail-list +Amelia 555-5553 amelia.zodiacusque@@gmail.com F +Anthony 555-3412 anthony.asserturo@@hotmail.com A +Becky 555-7685 becky.algebrarum@@gmail.com A +Bill 555-1675 bill.drowning@@hotmail.com A +Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +Camilla 555-2912 camilla.infusarum@@skynet.be R +Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +Julie 555-6699 julie.perscrutabor@@skeeve.com F +Martin 555-6480 martin.codicibus@@hotmail.com A +Samuel 555-3430 samuel.lanceolis@@shu.edu A +Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @c endfile @end example @@ -2627,23 +2716,23 @@ in the directory @file{awklib/eg/data}. @section Some Simple Examples The following command runs a simple @command{awk} program that searches the -input file @file{BBS-list} for the character string @samp{foo} (a +input file @file{mail-list} for the character string @samp{li} (a grouping of characters is usually called a @dfn{string}; the term @dfn{string} is based on similar usage in English, such as ``a string of pearls,'' or ``a string of cars in a train''): @example -awk '/foo/ @{ print $0 @}' BBS-list +awk '/li/ @{ print $0 @}' mail-list @end example @noindent -When lines containing @samp{foo} are found, they are printed because +When lines containing @samp{li} are found, they are printed because @w{@samp{print $0}} means print the current line. (Just @samp{print} by itself means the same thing, so we could have written that instead.) -You will notice that slashes (@samp{/}) surround the string @samp{foo} -in the @command{awk} program. The slashes indicate that @samp{foo} +You will notice that slashes (@samp{/}) surround the string @samp{li} +in the @command{awk} program. The slashes indicate that @samp{li} is the pattern to search for. This type of pattern is called a @dfn{regular expression}, which is covered in more detail later (@pxref{Regexp}). @@ -2655,11 +2744,11 @@ interpret any of it as special shell characters. Here is what this program prints: @example -$ @kbd{awk '/foo/ @{ print $0 @}' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '/li/ @{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A @end example @cindex actions, default @@ -2672,7 +2761,7 @@ action is to print all lines that match the pattern. @cindex actions, empty Thus, we could leave out the action (the @code{print} statement and the curly braces) in the previous example and the result would be the same: -@command{awk} prints all lines matching the pattern @samp{foo}. By comparison, +@command{awk} prints all lines matching the pattern @samp{li}. By comparison, omitting the @code{print} statement but retaining the curly braces makes an empty action that does nothing (i.e., no lines are printed). @@ -2817,29 +2906,23 @@ This program prints every line that contains the string strings, it is printed twice, once by each rule. This is what happens if we run this program on our two sample data files, -@file{BBS-list} and @file{inventory-shipped}: +@file{mail-list} and @file{inventory-shipped}: @example $ @kbd{awk '/12/ @{ print $0 @}} -> @kbd{/21/ @{ print $0 @}' BBS-list inventory-shipped} -@print{} aardvark 555-5553 1200/300 B -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} barfly 555-7685 1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} core 555-2912 1200/300 C -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sdace 555-3430 2400/1200/300 A -@print{} sabafoo 555-2127 1200/300 C -@print{} sabafoo 555-2127 1200/300 C +> @kbd{/21/ @{ print $0 @}' mail-list inventory-shipped} +@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A +@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @print{} Jan 21 36 64 620 @print{} Apr 21 70 74 514 @end example @noindent -Note how the line beginning with @samp{sabafoo} -in @file{BBS-list} was printed twice, once for each rule. +Note how the line beginning with @samp{Jean-Paul} +in @file{mail-list} was printed twice, once for each rule. @node More Complex @section A More Complex Example @@ -2918,7 +3001,7 @@ separate rule, like this: @example awk '/12/ @{ print $0 @} - /21/ @{ print $0 @}' BBS-list inventory-shipped + /21/ @{ print $0 @}' mail-list inventory-shipped @end example @cindex @command{gawk}, newlines in @@ -3033,8 +3116,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the @code{BEGIN} is noted as a syntax error. @cindex statements, multiple -@cindex @code{;} (semicolon) -@cindex semicolon (@code{;}) +@cindex @code{;} (semicolon), separating statements in actions +@cindex semicolon (@code{;}), separating statements in actions When @command{awk} statements within one rule are short, you might want to put more than one of them on a line. This is accomplished by separating the statements with a semicolon (@samp{;}). @@ -3094,6 +3177,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you can avoid the (usually lengthy) compilation part of the typical edit-compile-test-debug cycle of software development. +@cindex Brian Kernighan's @command{awk} Complex programs have been written in @command{awk}, including a complete retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for more information), and a microcode assembler for a special-purpose Prolog @@ -3156,10 +3240,19 @@ There are two ways to run @command{awk}---with an explicit program or with one or more program files. Here are templates for both of them; items enclosed in [@dots{}] in these templates are optional: +@ifnotdocbook @example awk @r{[@var{options}]} -f progfile @r{[@code{--}]} @var{file} @dots{} awk @r{[@var{options}]} @r{[@code{--}]} '@var{program}' @var{file} @dots{} @end example +@end ifnotdocbook + +@c FIXME - find a better way to mark this up in docbook +@docbook +<screen>awk [<replaceable>options</replaceable>] -f progfile [<literal>--</literal>] <replaceable>file</replaceable> … +awk [<replaceable>options</replaceable>] [<literal>--</literal>] '<replaceable>program</replaceable>' <replaceable>file</replaceable> … +</screen> +@end docbook @cindex GNU long options @cindex long options @@ -3325,6 +3418,7 @@ Print the short version of the General Public License and then exit. @itemx --dump-variables@r{[}=@var{file}@r{]} @cindex @option{-d} option @cindex @option{--dump-variables} option +@cindex dump all variables of a program @cindex @file{awkvars.out} file @cindex files, @file{awkvars.out} @cindex variables, global, printing list of @@ -3478,7 +3572,7 @@ care to search for all occurrences of each inappropriate construct. As @cindex @option{--bignum} option Force arbitrary precision arithmetic on numbers. This option has no effect if @command{gawk} is not compiled to use the GNU MPFR and MP libraries -(@pxref{Arbitrary Precision Arithmetic}). +(@pxref{Gawk and MPFR}). @item -n @itemx --non-decimal-data @@ -3731,6 +3825,7 @@ file at all. @cindex @command{gawk}, @code{ARGIND} variable in @cindex @code{ARGIND} variable, command-line arguments +@cindex @code{ARGV} array, indexing into @cindex @code{ARGC}/@code{ARGV} variables, command-line arguments All these arguments are made available to your @command{awk} program in the @code{ARGV} array (@pxref{Built-in Variables}). Command-line options @@ -3741,6 +3836,7 @@ sets the variable @code{ARGIND} to the index in @code{ARGV} of the current element. @cindex input files, variable assignments and +@cindex variable assignments and input files The distinction between file name arguments and variable-assignment arguments is made when @command{awk} is about to open the next input file. At that point in execution, it checks the file name to see whether @@ -3818,6 +3914,7 @@ this file name itself.) @node Environment Variables @section The Environment Variables @command{gawk} Uses +@cindex environment variables used by @command{gawk} A number of environment variables influence how @command{gawk} behaves. @@ -3833,8 +3930,7 @@ behaves. @node AWKPATH Variable @subsection The @env{AWKPATH} Environment Variable @cindex @env{AWKPATH} environment variable -@cindex directories, searching -@cindex search paths +@cindex directories, searching for source files @cindex search paths, for source files @cindex differences in @command{awk} and @command{gawk}, @code{AWKPATH} environment variable @ifinfo @@ -3846,12 +3942,12 @@ implementations, you must supply a precise path name for each program file, unless the file is in the current directory. But in @command{gawk}, if the file name supplied to the @option{-f} or @option{-i} options -does not contain a @samp{/}, then @command{gawk} searches a list of +does not contain a directory separator @samp{/}, then @command{gawk} searches a list of directories (called the @dfn{search path}), one by one, looking for a file with the specified name. The search path is a string consisting of directory names -separated by colons. @command{gawk} gets its search path from the +separated by colons@footnote{Semicolons on MS-Windows and MS-DOS.}. @command{gawk} gets its search path from the @env{AWKPATH} environment variable. If that variable does not exist, @command{gawk} uses a default path, @samp{.:/usr/local/share/awk}.@footnote{Your version of @command{gawk} @@ -3909,8 +4005,7 @@ found, and @command{gawk} no longer needs to use @env{AWKPATH}. @node AWKLIBPATH Variable @subsection The @env{AWKLIBPATH} Environment Variable @cindex @env{AWKLIBPATH} environment variable -@cindex directories, searching -@cindex search paths +@cindex directories, searching for shared libraries @cindex search paths, for shared libraries @cindex differences in @command{awk} and @command{gawk}, @code{AWKLIBPATH} environment variable @@ -4195,7 +4290,6 @@ they will @emph{not} be in the next release). @c update this section for each release! -@cindex @code{PROCINFO} array The process-related special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and @file{/dev/user} were deprecated in @command{gawk} 3.1, but still worked. As of version 4.0, they are no longer @@ -4221,6 +4315,7 @@ in case some option becomes obsolete in a future version of @command{gawk}. @author Obi-Wan @end quotation +@cindex shells, sea This @value{SECTION} intentionally left blank. @@ -4233,7 +4328,7 @@ blank. @table @code @item -W nostalgia @itemx --nostalgia -Print the message @code{"awk: bailing out near line 1"} and dump core. +Print the message @samp{awk: bailing out near line 1} and dump core. This option was inspired by the common behavior of very early versions of Unix @command{awk} and by a t--shirt. The message is @emph{not} subject to translation in non-English locales. @@ -4279,7 +4374,7 @@ long-undocumented ``feature'' of Unix @code{awk}. @node Regexp @chapter Regular Expressions -@cindex regexp, See regular expressions +@cindex regexp @c STARTOFRANGE regexp @cindex regular expressions @@ -4288,8 +4383,8 @@ set of strings. Because regular expressions are such a fundamental part of @command{awk} programming, their format and use deserve a separate @value{CHAPTER}. -@cindex forward slash (@code{/}) -@cindex @code{/} (forward slash) +@cindex forward slash (@code{/}) to enclose regular expressions +@cindex @code{/} (forward slash) to enclose regular expressions A regular expression enclosed in slashes (@samp{/}) is an @command{awk} pattern that matches every input record whose text belongs to that set. @@ -4326,14 +4421,14 @@ slashes. Then the regular expression is tested against the entire text of each record. (Normally, it only needs to match some part of the text in order to succeed.) For example, the following prints the second field of each record that contains the string -@samp{foo} anywhere in it: +@samp{li} anywhere in it: @example -$ @kbd{awk '/foo/ @{ print $2 @}' BBS-list} -@print{} 555-1234 +$ @kbd{awk '/li/ @{ print $2 @}' mail-list} +@print{} 555-5553 +@print{} 555-0542 @print{} 555-6699 -@print{} 555-6480 -@print{} 555-2127 +@print{} 555-3430 @end example @cindex regular expressions, operators @@ -4345,9 +4440,9 @@ $ @kbd{awk '/foo/ @{ print $2 @}' BBS-list} @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator @c @cindex operators, @code{!~} -@cindex @code{if} statement -@cindex @code{while} statement -@cindex @code{do}-@code{while} statement +@cindex @code{if} statement, use of regexps in +@cindex @code{while} statement, use of regexps in +@cindex @code{do}-@code{while} statement, use of regexps in @c @cindex statements, @code{if} @c @cindex statements, @code{while} @c @cindex statements, @code{do} @@ -4406,6 +4501,7 @@ $ @kbd{awk '$1 !~ /J/' inventory-shipped} @end example @cindex regexp constants +@cindex constant regexps @cindex regular expressions, constants, See regexp constants When a regexp is enclosed in slashes, such as @code{/foo/}, we call it a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and @@ -4414,7 +4510,7 @@ a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and @node Escape Sequences @section Escape Sequences -@cindex escape sequences +@cindex escape sequences, in strings @cindex backslash (@code{\}), in escape sequences @cindex @code{\} (backslash), in escape sequences Some characters cannot be included literally in string constants @@ -4584,6 +4680,7 @@ leaves what happens as undefined. There are two choices: @c @cindex automatic warnings @c @cindex warnings, automatic +@cindex Brian Kernighan's @command{awk} @table @asis @item Strip the backslash out This is what Brian Kernighan's @command{awk} and @command{gawk} both do. @@ -4597,6 +4694,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.) @cindex @command{gawk}, escape sequences @cindex Unix @command{awk}, backslashes in escape sequences +@cindex @command{mawk} utility @item Leave the backslash alone Some other @command{awk} implementations do this. In such implementations, typing @code{"a\qc"} is the same as typing @@ -4625,6 +4723,7 @@ leaves what happens as undefined. There are two choices: @c @cindex automatic warnings @c @cindex warnings, automatic +@cindex Brian Kernighan's @command{awk} @table @asis @item Strip the backslash out This is what Brian Kernighan's @command{awk} and @command{gawk} both do. @@ -4638,6 +4737,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.) @cindex @command{gawk}, escape sequences @cindex Unix @command{awk}, backslashes in escape sequences +@cindex @command{mawk} utility @item Leave the backslash alone Some other @command{awk} implementations do this. In such implementations, typing @code{"a\qc"} is the same as typing @@ -4704,6 +4804,7 @@ escape sequences literally when used in regexp constants. Thus, @section Regular Expression Operators @c STARTOFRANGE regexpo @cindex regular expressions, operators +@cindex metacharacters in regular expressions You can combine regular expressions with special characters, called @dfn{regular expression operators} or @dfn{metacharacters}, to @@ -4722,8 +4823,8 @@ Here is a list of metacharacters. All characters that are not escape sequences and that are not listed in the table stand for themselves: @table @code -@cindex backslash (@code{\}) -@cindex @code{\} (backslash) +@cindex backslash (@code{\}), regexp operator +@cindex @code{\} (backslash), regexp operator @item \ This is used to suppress the special meaning of a character when matching. For example, @samp{\$} @@ -4748,8 +4849,8 @@ The condition is not true in the following example: if ("line1\nLINE 2" ~ /^L/) @dots{} @end example -@cindex @code{$} (dollar sign) -@cindex dollar sign (@code{$}) +@cindex @code{$} (dollar sign), regexp operator +@cindex dollar sign (@code{$}), regexp operator @item $ This is similar to @samp{^}, but it matches only at the end of a string. For example, @samp{p$} @@ -4761,8 +4862,8 @@ The condition in the following example is not true: if ("line1\nLINE 2" ~ /1$/) @dots{} @end example -@cindex @code{.} (period) -@cindex period (@code{.}) +@cindex @code{.} (period), regexp operator +@cindex period (@code{.}), regexp operator @item . @r{(period)} This matches any single character, @emph{including} the newline character. For example, @samp{.P} @@ -4778,11 +4879,12 @@ character, which is a character with all bits equal to zero. Otherwise, @sc{nul} is just another character. Other versions of @command{awk} may not be able to match the @sc{nul} character. -@cindex @code{[]} (square brackets) -@cindex square brackets (@code{[]}) +@cindex @code{[]} (square brackets), regexp operator +@cindex square brackets (@code{[]}), regexp operator @cindex bracket expressions @cindex character sets, See Also bracket expressions @cindex character lists, See bracket expressions +@cindex character classes, See bracket expressions @item [@dots{}] This is called a @dfn{bracket expression}.@footnote{In other literature, you may see a bracket expression referred to as either a @@ -4815,8 +4917,8 @@ means it matches any string that starts with @samp{P} or contains a digit. The alternation applies to the largest possible regexps on either side. -@cindex @code{()} (parentheses) -@cindex parentheses @code{()} +@cindex @code{()} (parentheses), regexp operator +@cindex parentheses @code{()}, regexp operator @item (@dots{}) Parentheses are used for grouping in regular expressions, as in arithmetic. They can be used to concatenate regular expressions @@ -4844,8 +4946,8 @@ prints every record in @file{sample} containing a string of the form Notice the escaping of the parentheses by preceding them with backslashes. -@cindex @code{+} (plus sign) -@cindex plus sign (@code{+}) +@cindex @code{+} (plus sign), regexp operator +@cindex plus sign (@code{+}), regexp operator @item + This symbol is similar to @samp{*}, except that the preceding expression must be matched at least once. This means that @samp{wh+y} @@ -4858,14 +4960,14 @@ way of writing the last @samp{*} example: awk '/\(c[ad]+r x\)/ @{ print @}' sample @end example -@cindex @code{?} (question mark) regexp operator -@cindex question mark (@code{?}) regexp operator +@cindex @code{?} (question mark), regexp operator +@cindex question mark (@code{?}), regexp operator @item ? This symbol is similar to @samp{*}, except that the preceding expression can be matched either once or not at all. For example, @samp{fe?d} matches @samp{fed} and @samp{fd}, but nothing else. -@cindex interval expressions +@cindex interval expressions, regexp operator @item @{@var{n}@} @itemx @{@var{n},@} @itemx @{@var{n},@var{m}@} @@ -4942,6 +5044,7 @@ expressions are not available in regular expressions. @cindex bracket expressions @cindex bracket expressions, range expressions @cindex range expressions (regexps) +@cindex character lists in regular expression As mentioned earlier, a bracket expression matches any character amongst those listed between the opening and closing square brackets. @@ -5181,10 +5284,10 @@ Matches the empty string at the end of a buffer (string). @end table -@cindex @code{^} (caret) -@cindex caret (@code{^}) -@cindex @code{?} (question mark) regexp operator -@cindex question mark (@code{?}) regexp operator +@cindex @code{^} (caret), regexp operator +@cindex caret (@code{^}), regexp operator +@cindex @code{?} (question mark), regexp operator +@cindex question mark (@code{?}), regexp operator Because @samp{^} and @samp{$} always work in terms of the beginning and end of strings, these operators don't add any new capabilities for @command{awk}. They are provided for compatibility with other @@ -5205,7 +5308,7 @@ lesser of two evils. @c @c Should really do this with file inclusion. @cindex regular expressions, @command{gawk}, command-line options -@cindex @command{gawk}, command-line options +@cindex @command{gawk}, command-line options, and regular expressions The various command-line options (@pxref{Options}) control how @command{gawk} interprets characters in regexps: @@ -5228,6 +5331,7 @@ Only POSIX regexps are supported; the GNU operators are not special (e.g., @samp{\w} matches a literal @samp{w}). Interval expressions are allowed. +@cindex Brian Kernighan's @command{awk} @item @code{--traditional} Traditional Unix @command{awk} regexps are matched. The GNU operators are not special, and interval expressions are not available. @@ -5283,7 +5387,7 @@ This works in any POSIX-compliant @command{awk}. @cindex tilde (@code{~}), @code{~} operator @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator -@cindex @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, with @code{~} and @code{!~} operators @cindex @command{gawk}, @code{IGNORECASE} variable in @c @cindex variables, @code{IGNORECASE} Another method, specific to @command{gawk}, is to set the variable @@ -5548,6 +5652,7 @@ occur often in practice, but it's worth noting for future reference. @chapter Reading Input Files @c STARTOFRANGE infir +@cindex reading input files @cindex input files, reading @cindex input files @cindex @code{FILENAME} variable @@ -5634,68 +5739,79 @@ To do this, use the special @code{BEGIN} pattern (@pxref{BEGIN/END}). For example: -@cindex @code{BEGIN} pattern @example -awk 'BEGIN @{ RS = "/" @} - @{ print $0 @}' BBS-list +awk 'BEGIN @{ RS = "u" @} + @{ print $0 @}' mail-list @end example @noindent -changes the value of @code{RS} to @code{"/"}, before reading any input. -This is a string whose first character is a slash; as a result, records -are separated by slashes. Then the input file is read, and the second +changes the value of @code{RS} to @samp{u}, before reading any input. +This is a string whose first character is the letter ``u;'' as a result, records +are separated by the letter ``u.'' Then the input file is read, and the second rule in the @command{awk} program (the action with no pattern) prints each record. Because each @code{print} statement adds a newline at the end of its output, this @command{awk} program copies the input -with each slash changed to a newline. Here are the results of running -the program on @file{BBS-list}: - -@example -$ @kbd{awk 'BEGIN @{ RS = "/" @}} -> @kbd{@{ print $0 @}' BBS-list} -@print{} aardvark 555-5553 1200 -@print{} 300 B -@print{} alpo-net 555-3412 2400 -@print{} 1200 -@print{} 300 A -@print{} barfly 555-7685 1200 -@print{} 300 A -@print{} bites 555-1675 2400 -@print{} 1200 -@print{} 300 A -@print{} camelot 555-0542 300 C -@print{} core 555-2912 1200 -@print{} 300 C -@print{} fooey 555-1234 2400 -@print{} 1200 -@print{} 300 B -@print{} foot 555-6699 1200 -@print{} 300 B -@print{} macfoo 555-6480 1200 -@print{} 300 A -@print{} sdace 555-3430 2400 -@print{} 1200 -@print{} 300 A -@print{} sabafoo 555-2127 1200 -@print{} 300 C -@print{} +with each @samp{u} changed to a newline. Here are the results of running +the program on @file{mail-list}: + +@example +$ @kbd{awk 'BEGIN @{ RS = "u" @}} +> @kbd{@{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiac +@print{} sq +@print{} e@@gmail.com F +@print{} Anthony 555-3412 anthony.assert +@print{} ro@@hotmail.com A +@print{} Becky 555-7685 becky.algebrar +@print{} m@@gmail.com A +@print{} Bill 555-1675 bill.drowning@@hotmail.com A +@print{} Broderick 555-0542 broderick.aliq +@print{} otiens@@yahoo.com R +@print{} Camilla 555-2912 camilla.inf +@print{} sar +@print{} m@@skynet.be R +@print{} Fabi +@print{} s 555-1234 fabi +@print{} s. +@print{} ndevicesim +@print{} s@@ +@print{} cb.ed +@print{} F +@print{} J +@print{} lie 555-6699 j +@print{} lie.perscr +@print{} tabor@@skeeve.com F +@print{} Martin 555-6480 martin.codicib +@print{} s@@hotmail.com A +@print{} Sam +@print{} el 555-3430 sam +@print{} el.lanceolis@@sh +@print{} .ed +@print{} A +@print{} Jean-Pa +@print{} l 555-2127 jeanpa +@print{} l.campanor +@print{} m@@ny +@print{} .ed +@print{} R +@print{} @end example @noindent -Note that the entry for the @samp{camelot} BBS is not split. +Note that the entry for the name @samp{Bill} is not split. In the original data file (@pxref{Sample Data Files}), the line looks like this: @example -camelot 555-0542 300 C +Bill 555-1675 bill.drowning@@hotmail.com A @end example @noindent -It has one baud rate only, so there are no slashes in the record, -unlike the others which have two or more baud rates. -In fact, this record is treated as part of the record -for the @samp{core} BBS; the newline separating them in the output +It contains no @samp{u} so there is no reason to split the record, +unlike the others which have one or more occurrences of the @samp{u}. +In fact, this record is treated as part of the previous record; +the newline separating them in the output is the original newline in the data file, not the one added by @command{awk} when it printed the record! @@ -5706,14 +5822,17 @@ using the variable-assignment feature (@pxref{Other Arguments}): @example -awk '@{ print $0 @}' RS="/" BBS-list +awk '@{ print $0 @}' RS="u" mail-list @end example @noindent -This sets @code{RS} to @samp{/} before processing @file{BBS-list}. +This sets @code{RS} to @samp{u} before processing @file{mail-list}. -Using an unusual character such as @samp{/} for the record separator -produces correct behavior in the vast majority of cases. +Using an alphabetic character such as @samp{u} for the record separator +is highly likely to produce strange results. +Using an unusual character such as @samp{/} is more likely to +produce correct behavior in the majority of cases, but there +are no guarantees. The moral is: Know Your Data. There is one unusual case, that occurs when @command{gawk} is being fully POSIX-compliant (@pxref{Options}). @@ -5735,6 +5854,7 @@ Reaching the end of an input file terminates the current input record, even if the last character in the file is not the character in @code{RS}. @value{DARKCORNER} +@cindex empty strings @cindex null strings @cindex strings, empty, See null strings The empty string @code{""} (a string without any characters) @@ -5871,7 +5991,7 @@ character as a record separator. However, this is a special case: @command{mawk} does not allow embedded @sc{nul} characters in strings. @cindex records, treating files as -@cindex files, as single records +@cindex treating files, as single records The best way to treat a whole file as a single record is to simply read the file in, one record at a time, concatenating each record onto the end of the previous ones. @@ -5922,7 +6042,7 @@ character as a record separator. However, this is a special case: @command{mawk} does not allow embedded @sc{nul} characters in strings. @cindex records, treating files as -@cindex files, as single records +@cindex treating files, as single records The best way to treat a whole file as a single record is to simply read the file in, one record at a time, concatenating each record onto the end of the previous ones. @@ -6000,31 +6120,29 @@ when you are not interested in specific fields. Here are some more examples: @example -$ @kbd{awk '$1 ~ /foo/ @{ print $0 @}' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '$1 ~ /li/ @{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F @end example @noindent -This example prints each record in the file @file{BBS-list} whose first -field contains the string @samp{foo}. The operator @samp{~} is called a +This example prints each record in the file @file{mail-list} whose first +field contains the string @samp{li}. The operator @samp{~} is called a @dfn{matching operator} (@pxref{Regexp Usage}); it tests whether a string (here, the field @code{$1}) matches a given regular expression. By contrast, the following example -looks for @samp{foo} in @emph{the entire record} and prints the first +looks for @samp{li} in @emph{the entire record} and prints the first field and the last field for each matching input record: @example -$ @kbd{awk '/foo/ @{ print $1, $NF @}' BBS-list} -@print{} fooey B -@print{} foot B -@print{} macfoo A -@print{} sabafoo C +$ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list} +@print{} Amelia F +@print{} Broderick R +@print{} Julie F +@print{} Samuel A @end example @c ENDOFRANGE fiex @@ -6052,7 +6170,7 @@ the record has fewer than 20 fields, so this prints a blank line. Here is another example of using expressions as field numbers: @example -awk '@{ print $(2*2) @}' BBS-list +awk '@{ print $(2*2) @}' mail-list @end example @command{awk} evaluates the expression @samp{(2*2)} and uses @@ -6061,8 +6179,8 @@ represents multiplication, so the expression @samp{2*2} evaluates to four. The parentheses are used so that the multiplication is done before the @samp{$} operation; they are necessary whenever there is a binary operator in the field-number expression. This example, then, prints the -hours of operation (the fourth field) for every line of the file -@file{BBS-list}. (All of the @command{awk} operators are listed, in +type of relationship (the fourth field) for every line of the file +@file{mail-list}. (All of the @command{awk} operators are listed, in order of decreasing precedence, in @ref{Precedence}.) @@ -6504,7 +6622,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}. Finally, the last @code{print} statement prints the new @code{$0}. @cindex @code{FS}, containing @code{^} -@cindex @code{^}, in @code{FS} +@cindex @code{^} (caret), in @code{FS} @cindex dark corner, @code{^}, in @code{FS} There is an additional subtlety to be aware of when using regular expressions for field splitting. @@ -6515,6 +6633,7 @@ different @command{awk} versions answer this question differently, and you should not rely on any specific behavior in your programs. @value{DARKCORNER} +@cindex Brian Kernighan's @command{awk} As a point of information, Brian Kernighan's @command{awk} allows @samp{^} to match only at the beginning of the record. @command{gawk} also works this way. For example: @@ -6558,7 +6677,7 @@ $ @kbd{echo a b | gawk 'BEGIN @{ FS = "" @}} @end example @cindex dark corner, @code{FS} as null string -@cindex FS variable, as null string +@cindex @code{FS} variable, as null string Traditionally, the behavior of @code{FS} equal to @code{""} was not defined. In this case, most versions of Unix @command{awk} simply treat the entire record as only having one field. @@ -6570,10 +6689,8 @@ behaves this way. @node Command Line Field Separator @subsection Setting @code{FS} from the Command Line -@cindex @option{-F} option -@cindex options, command-line -@cindex command line, options -@cindex field separators, on command line +@cindex @option{-F} option, command line +@cindex field separator, on command line @cindex command line, @code{FS} on@comma{} setting @cindex @code{FS} variable, setting from command line @@ -6623,66 +6740,59 @@ figures that you really want your fields to be separated with TABs and not @samp{t}s. Use @samp{-v FS="t"} or @samp{-F"[t]"} on the command line if you really do want to separate your fields with @samp{t}s. -As an example, let's use an @command{awk} program file called @file{baud.awk} -that contains the pattern @code{/300/} and the action @samp{print $1}: +As an example, let's use an @command{awk} program file called @file{edu.awk} +that contains the pattern @code{/edu/} and the action @samp{print $1}: @example -/300/ @{ print $1 @} +/edu/ @{ print $1 @} @end example Let's also set @code{FS} to be the @samp{-} character and run the -program on the file @file{BBS-list}. The following command prints a -list of the names of the bulletin boards that operate at 300 baud and +program on the file @file{mail-list}. The following command prints a +list of the names of the people that work at or attend a university, and the first three digits of their phone numbers: @c tweaked to make the tex output look better in @smallbook @example -$ @kbd{awk -F- -f baud.awk BBS-list} -@print{} aardvark 555 -@print{} alpo -@print{} barfly 555 -@print{} bites 555 -@print{} camelot 555 -@print{} core 555 -@print{} fooey 555 -@print{} foot 555 -@print{} macfoo 555 -@print{} sdace 555 -@print{} sabafoo 555 +$ @kbd{awk -F- -f edu.awk mail-list} +@print{} Fabius 555 +@print{} Samuel 555 +@print{} Jean @end example @noindent -Note the second line of output. The second line +Note the third line of output. The third line in the original file looked like this: @example -alpo-net 555-3412 2400/1200/300 A +Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example -The @samp{-} as part of the system's name was used as the field +The @samp{-} as part of the person's name was used as the field separator, instead of the @samp{-} in the phone number that was originally intended. This demonstrates why you have to be careful in choosing your field and record separators. @cindex Unix @command{awk}, password files@comma{} field separators and -Perhaps the most common use of a single character as the field -separator occurs when processing the Unix system password file. -On many Unix systems, each user has a separate entry in the system password -file, one line per user. The information in these lines is separated -by colons. The first field is the user's login name and the second is -the user's (encrypted or shadow) password. A password file entry might look -like this: +Perhaps the most common use of a single character as the field separator +occurs when processing the Unix system password file. On many Unix +systems, each user has a separate entry in the system password file, one +line per user. The information in these lines is separated by colons. +The first field is the user's login name and the second is the user's +encrypted or shadow password. (A shadow password is indicated by the +presence of a single @samp{x} in the second field.) A password file +entry might look like this: @cindex Robbins, Arnold @example -arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash +arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash @end example The following program searches the system password file and prints -the entries for users who have no password: +the entries for users whose full name is not indicated: @example -awk -F: '$2 == ""' /etc/passwd +awk -F: '$5 == ""' /etc/passwd @end example @node Full Line Fields @@ -6745,7 +6855,7 @@ POSIX standard.) @cindex POSIX @command{awk}, field separators and -@cindex field separators, POSIX and +@cindex field separator, POSIX and According to the POSIX standard, @command{awk} is supposed to behave as if each record is split into fields at the time it is read. In particular, this means that if you change the value of @code{FS} @@ -6798,7 +6908,7 @@ root:nSijPlPhZZwgE:0:0:Root:/: @cindex POSIX @command{awk}, field separators and -@cindex field separators, POSIX and +@cindex field separator, POSIX and According to the POSIX standard, @command{awk} is supposed to behave as if each record is split into fields at the time it is read. In particular, this means that if you change the value of @code{FS} @@ -7158,6 +7268,7 @@ available for splitting regular strings (@pxref{String Functions}). @node Multiple Line @section Multiple-Line Records +@cindex multiple-line records @c STARTOFRANGE recm @cindex records, multiline @c STARTOFRANGE imr @@ -7209,7 +7320,8 @@ after the last record, the final newline is removed from the record. In the second case, this special processing is not done. @value{DARKCORNER} -@cindex field separators, in multiline records +@cindex field separator, in multiline records +@cindex @code{FS}, in multiline records Now that the input is separated into records, the second step is to separate the fields in the record. One way to do this is to divide each of the lines into fields in the normal manner. This happens by default @@ -7357,7 +7469,7 @@ and study the @code{getline} command @emph{after} you have reviewed the rest of this @value{DOCUMENT} and have a good knowledge of how @command{awk} works. @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @command{getline} command @cindex differences in @command{awk} and @command{gawk}, @code{getline} command @cindex @code{getline} command, return values @cindex @option{--sandbox} option, input redirection with @code{getline} @@ -7453,6 +7565,7 @@ rule in the program. @xref{Next Statement}. @node Getline/Variable @subsection Using @code{getline} into a Variable +@cindex @code{getline} into a variable @cindex variables, @code{getline} command into@comma{} using You can use @samp{getline @var{var}} to read the next record from @@ -7504,6 +7617,7 @@ the value of @code{NF} do not change. @node Getline/File @subsection Using @code{getline} from a File +@cindex @code{getline} from a file @cindex input redirection @cindex redirection of input @cindex @code{<} (left angle bracket), @code{<} operator (I/O) @@ -7552,8 +7666,6 @@ from the file @var{file}, and put it in the variable @var{var}. As above, @var{file} is a string-valued expression that specifies the file from which to read. -@cindex @command{gawk}, @code{RT} variable in -@cindex @code{RT} variable In this version of @code{getline}, none of the built-in variables are changed and the record is not split into fields. The only variable changed is @var{var}.@footnote{This is not quite true. @code{RT} could @@ -7578,7 +7690,6 @@ Note here how the name of the extra input file is not built into the program; it is taken directly from the data, specifically from the second field on the @samp{@@include} line. -@cindex @code{close()} function The @code{close()} function is called to ensure that if two identical @samp{@@include} lines appear in the input, the entire specified file is included twice. @@ -7595,6 +7706,7 @@ that does handle nested @samp{@@include} statements. @subsection Using @code{getline} from a Pipe @c From private email, dated October 2, 1988. Used by permission, March 2013. +@cindex Kernighan, Brian @quotation @i{Omniscience has much to recommend it. Failing that, attention to details would be useful.} @@ -7604,7 +7716,7 @@ Failing that, attention to details would be useful.} @cindex @code{|} (vertical bar), @code{|} operator (I/O) @cindex vertical bar (@code{|}), @code{|} operator (I/O) @cindex input pipeline -@cindex pipes, input +@cindex pipe, input @cindex operators, input/output The output of a command can also be piped into @code{getline}, using @samp{@var{command} | getline}. In @@ -7628,7 +7740,6 @@ produced by running the rest of the line as a shell command: @end example @noindent -@cindex @code{close()} function The @code{close()} function is called to ensure that if two identical @samp{@@execute} lines appear in the input, the command is run for each one. @@ -7682,6 +7793,8 @@ because the concatenation operator is not parenthesized. You should write it as @samp{(@w{"echo "} "date") | getline} if you want your program to be portable to all @command{awk} implementations. +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility @quotation NOTE Unfortunately, @command{gawk} has not been consistent in its treatment of a construct like @samp{@w{"echo "} "date" | getline}. @@ -8006,6 +8119,7 @@ indefinitely until some other process opens it for writing. @node Command line directories @section Directories On The Command Line +@cindex differences in @command{awk} and @command{gawk}, command line directories @cindex directories, command line @cindex command line, directories on @@ -8249,13 +8363,29 @@ program by using a new value of @code{OFS}. @example $ @kbd{awk 'BEGIN @{ OFS = ";"; ORS = "\n\n" @}} -> @kbd{@{ print $1, $2 @}' BBS-list} -@print{} aardvark;555-5553 -@print{} -@print{} alpo-net;555-3412 -@print{} -@print{} barfly;555-7685 -@dots{} +> @kbd{@{ print $1, $2 @}' mail-list} +@print{} Amelia;555-5553 +@print{} +@print{} Anthony;555-3412 +@print{} +@print{} Becky;555-7685 +@print{} +@print{} Bill;555-1675 +@print{} +@print{} Broderick;555-0542 +@print{} +@print{} Camilla;555-2912 +@print{} +@print{} Fabius;555-1234 +@print{} +@print{} Julie;555-6699 +@print{} +@print{} Martin;555-6480 +@print{} +@print{} Samuel;555-3430 +@print{} +@print{} Jean-Paul;555-2127 +@print{} @end example If the value of @code{ORS} does not contain a newline, the program's output @@ -8277,7 +8407,7 @@ numbers can be formatted. The different format specifications are discussed more fully in @ref{Control Letters}. -@cindex @code{sprintf()} function +@cindexawkfunc{sprintf} @cindex @code{OFMT} variable @cindex output, format specifier@comma{} @code{OFMT} The built-in variable @code{OFMT} contains the default format specification @@ -8343,7 +8473,7 @@ parentheses are necessary if any of the item expressions use the @samp{>} relational operator; otherwise, it can be confused with an output redirection (@pxref{Redirection}). -@cindex format strings +@cindex format specifiers The difference between @code{printf} and @code{print} is the @var{format} argument. This is an expression whose value is taken as a string; it specifies how to output each of the other arguments. It is called the @@ -8729,30 +8859,30 @@ The following simple example shows how to use @code{printf} to make an aligned table: @example -awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list +awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @noindent This command -prints the names of the bulletin boards (@code{$1}) in the file -@file{BBS-list} as a string of 10 characters that are left-justified. It also +prints the names of the people (@code{$1}) in the file +@file{mail-list} as a string of 10 characters that are left-justified. It also prints the phone numbers (@code{$2}) next on the line. This produces an aligned two-column table of names and phone numbers, as shown here: @example -$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list} -@print{} aardvark 555-5553 -@print{} alpo-net 555-3412 -@print{} barfly 555-7685 -@print{} bites 555-1675 -@print{} camelot 555-0542 -@print{} core 555-2912 -@print{} fooey 555-1234 -@print{} foot 555-6699 -@print{} macfoo 555-6480 -@print{} sdace 555-3430 -@print{} sabafoo 555-2127 +$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list} +@print{} Amelia 555-5553 +@print{} Anthony 555-3412 +@print{} Becky 555-7685 +@print{} Bill 555-1675 +@print{} Broderick 555-0542 +@print{} Camilla 555-2912 +@print{} Fabius 555-1234 +@print{} Julie 555-6699 +@print{} Martin 555-6480 +@print{} Samuel 555-3430 +@print{} Jean-Paul 555-2127 @end example In this case, the phone numbers had to be printed as strings because @@ -8773,7 +8903,7 @@ the @command{awk} program: @example awk 'BEGIN @{ print "Name Number" print "---- ------" @} - @{ printf "%-10s %s\n", $1, $2 @}' BBS-list + @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example The above example mixes @code{print} and @code{printf} statements in @@ -8783,7 +8913,7 @@ same results: @example awk 'BEGIN @{ printf "%-10s %s\n", "Name", "Number" printf "%-10s %s\n", "----", "------" @} - @{ printf "%-10s %s\n", $1, $2 @}' BBS-list + @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @noindent @@ -8798,7 +8928,7 @@ emphasized by storing it in a variable, like this: awk 'BEGIN @{ format = "%-10s %s\n" printf format, "Name", "Number" printf format, "----", "------" @} - @{ printf format, $1, $2 @}' BBS-list + @{ printf format, $1, $2 @}' mail-list @end example @c !!! exercise @@ -8855,20 +8985,20 @@ before the first output is written to it. Subsequent writes to the same @var{output-file} do not erase @var{output-file}, but append to it. (This is different from how you use redirections in shell scripts.) If @var{output-file} does not exist, it is created. For example, here -is how an @command{awk} program can write a list of BBS names to one +is how an @command{awk} program can write a list of peoples' names to one file named @file{name-list}, and a list of phone numbers to another file named @file{phone-list}: @example $ @kbd{awk '@{ print $2 > "phone-list"} -> @kbd{print $1 > "name-list" @}' BBS-list} +> @kbd{print $1 > "name-list" @}' mail-list} $ @kbd{cat phone-list} @print{} 555-5553 @print{} 555-3412 @dots{} $ @kbd{cat name-list} -@print{} aardvark -@print{} alpo-net +@print{} Amelia +@print{} Anthony @dots{} @end example @@ -8886,7 +9016,7 @@ appended to the file. If @var{output-file} does not exist, then it is created. @cindex @code{|} (vertical bar), @code{|} operator (I/O) -@cindex pipes, output +@cindex pipe, output @cindex output, pipes @item print @var{items} | @var{command} It is possible to send output to another program through a pipe @@ -8897,7 +9027,7 @@ to another process created to execute @var{command}. The redirection argument @var{command} is actually an @command{awk} expression. Its value is converted to a string whose contents give the shell command to be run. For example, the following produces two -files, one unsorted list of BBS names, and one list sorted in reverse +files, one unsorted list of peoples' names, and one list sorted in reverse alphabetical order: @ignore @@ -8910,7 +9040,7 @@ alone for now and let's hope no-one notices. @example awk '@{ print $1 > "names.unsorted" command = "sort -r > names.sorted" - print $1 | command @}' BBS-list + print $1 | command @}' mail-list @end example The unsorted list is written with an ordinary redirection, while @@ -9158,9 +9288,9 @@ has been ported to, not just those that are POSIX-compliant: @cindex extensions, common@comma{} @code{/dev/stdout} special file @cindex extensions, common@comma{} @code{/dev/stderr} special file @cindex file names, standard streams in @command{gawk} -@cindex @code{/dev/@dots{}} special files (@command{gawk}) +@cindex @code{/dev/@dots{}} special files @cindex files, @code{/dev/@dots{}} special files -@cindex @code{/dev/fd/@var{N}} special files +@cindex @code{/dev/fd/@var{N}} special files (@command{gawk}) @table @file @item /dev/stdin The standard input (file descriptor 0). @@ -9261,7 +9391,7 @@ Doing so results in unpredictable behavior. @c STARTOFRANGE ofc @cindex output, files@comma{} closing @c STARTOFRANGE pc -@cindex pipes, closing +@cindex pipe, closing @c STARTOFRANGE cc @cindex coprocesses, closing @cindex @code{getline} command, coprocesses@comma{} using from @@ -9279,7 +9409,7 @@ the file name or command associated with it, and subsequent writes to the same file or command are appended to the previous writes. The file or pipe stays open until @command{awk} exits. -@cindex @code{close()} function +@cindexawkfunc{close} This implies that special steps are necessary in order to read the same file again from the beginning, or to rerun a shell command (rather than reading more output from the same command). The @code{close()} function @@ -9364,6 +9494,7 @@ a separate message. @cindex differences in @command{awk} and @command{gawk}, @code{close()} function @cindex portability, @code{close()} function and +@cindex @code{close()} function, portability If you use more files than the system allows you to have open, @command{gawk} attempts to multiplex the available open files among your data files. @command{gawk}'s ability to do this depends upon the @@ -9448,7 +9579,7 @@ retval = close(command) # syntax error in many Unix awks @end example @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @command{close()} function @command{gawk} treats @code{close()} as a function. The return value is @minus{}1 if the argument names something that was never opened with a redirection, or if there is @@ -9504,7 +9635,7 @@ retval = close(command) # syntax error in many Unix awks @end example @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @command{close()} function @command{gawk} treats @code{close()} as a function. The return value is @minus{}1 if the argument names something that was never opened with a redirection, or if there is @@ -9604,7 +9735,8 @@ have different forms, but are stored identically internally. @node Scalar Constants @subsubsection Numeric and String Constants -@cindex numeric, constants +@cindex constants, numeric +@cindex numeric constants A @dfn{numeric constant} stands for a number. This number can be an integer, a decimal fraction, or a number in scientific (exponential) notation.@footnote{The internal representation of all numbers, @@ -9630,7 +9762,7 @@ double-quotation marks. For example: @noindent @cindex differences in @command{awk} and @command{gawk}, strings -@cindex strings, length of +@cindex strings, length limitations represents the string whose contents are @samp{parrot}. Strings in @command{gawk} can be of any length, and they can contain any of the possible eight-bit ASCII characters including ASCII @sc{nul} (character code zero). @@ -9846,9 +9978,9 @@ upon the contents of the current input record. @cindex differences in @command{awk} and @command{gawk}, regexp constants @cindex dark corner, regexp constants, as arguments to user-defined functions -@cindex @code{gensub()} function (@command{gawk}) -@cindex @code{sub()} function -@cindex @code{gsub()} function +@cindexgawkfunc{gensub} +@cindexawkfunc{sub} +@cindexawkfunc{gsub} Constant regular expressions are also used as the first argument for the @code{gensub()}, @code{sub()}, and @code{gsub()} functions, as the second argument of the @code{match()} function, @@ -9981,7 +10113,7 @@ its position among the input file arguments---after the processing of the preceding input file argument. For example: @example -awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list +awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list @end example @noindent @@ -9990,10 +10122,10 @@ the first file is read, the command line sets the variable @code{n} equal to four. This causes the fourth field to be printed in lines from @file{inventory-shipped}. After the first file has finished, but before the second file is started, @code{n} is set to two, so that the -second field is printed in lines from @file{BBS-list}: +second field is printed in lines from @file{mail-list}: @example -$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list} +$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list} @print{} 15 @print{} 24 @dots{} @@ -10316,9 +10448,9 @@ specific operator to represent it. Instead, concatenation is performed by writing expressions next to one another, with no operator. For example: @example -$ @kbd{awk '@{ print "Field number one: " $1 @}' BBS-list} -@print{} Field number one: aardvark -@print{} Field number one: alpo-net +$ @kbd{awk '@{ print "Field number one: " $1 @}' mail-list} +@print{} Field number one: Amelia +@print{} Field number one: Anthony @dots{} @end example @@ -10326,9 +10458,9 @@ Without the space in the string constant after the @samp{:}, the line runs together. For example: @example -$ @kbd{awk '@{ print "Field number one:" $1 @}' BBS-list} -@print{} Field number one:aardvark -@print{} Field number one:alpo-net +$ @kbd{awk '@{ print "Field number one:" $1 @}' mail-list} +@print{} Field number one:Amelia +@print{} Field number one:Anthony @dots{} @end example @@ -10345,6 +10477,8 @@ name = "name" print "something meaningful" > file name @end example +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility @noindent This produces a syntax error with some versions of Unix @command{awk}.@footnote{It happens that Brian Kernighan's @@ -11401,10 +11535,10 @@ The Boolean operators are: @item @var{boolean1} && @var{boolean2} True if both @var{boolean1} and @var{boolean2} are true. For example, the following statement prints the current input record if it contains -both @samp{2400} and @samp{foo}: +both @samp{edu} and @samp{li}: @example -if ($0 ~ /2400/ && $0 ~ /foo/) print +if ($0 ~ /edu/ && $0 ~ /li/) print @end example @cindex side effects, Boolean operators @@ -11417,11 +11551,11 @@ no substring @samp{foo} in the record. @item @var{boolean1} || @var{boolean2} True if at least one of @var{boolean1} or @var{boolean2} is true. For example, the following statement prints all records in the input -that contain @emph{either} @samp{2400} or -@samp{foo} or both: +that contain @emph{either} @samp{edu} or +@samp{li} or both: @example -if ($0 ~ /2400/ || $0 ~ /foo/) print +if ($0 ~ /edu/ || $0 ~ /li/) print @end example The subexpression @var{boolean2} is evaluated only if @var{boolean1} @@ -12016,7 +12150,7 @@ slashes (@code{/@var{regexp}/}), or any expression whose string value is used as a dynamic regular expression (@pxref{Computed Regexps}). The following example prints the second field of each input record -whose first field is precisely @samp{foo}: +whose first field is precisely @samp{li}: @cindex @code{/} (forward slash), patterns and @cindex forward slash (@code{/}), patterns and @@ -12025,68 +12159,65 @@ whose first field is precisely @samp{foo}: @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator @example -$ @kbd{awk '$1 == "foo" @{ print $2 @}' BBS-list} +$ @kbd{awk '$1 == "li" @{ print $2 @}' mail-list} @end example @noindent -(There is no output, because there is no BBS site with the exact name @samp{foo}.) +(There is no output, because there is no person with the exact name @samp{li}.) Contrast this with the following regular expression match, which -accepts any record with a first field that contains @samp{foo}: +accepts any record with a first field that contains @samp{li}: @example -$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' BBS-list} -@print{} 555-1234 +$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' mail-list} +@print{} 555-5553 @print{} 555-6699 -@print{} 555-6480 -@print{} 555-2127 @end example @cindex regexp constants, as patterns @cindex patterns, regexp constants as A regexp constant as a pattern is also a special case of an expression -pattern. The expression @code{/foo/} has the value one if @samp{foo} -appears in the current input record. Thus, as a pattern, @code{/foo/} -matches any record containing @samp{foo}. +pattern. The expression @code{/li/} has the value one if @samp{li} +appears in the current input record. Thus, as a pattern, @code{/li/} +matches any record containing @samp{li}. @cindex Boolean expressions, as patterns Boolean expressions are also commonly used as patterns. Whether the pattern matches an input record depends on whether its subexpressions match. For example, the following command prints all the records in -@file{BBS-list} that contain both @samp{2400} and @samp{foo}: +@file{mail-list} that contain both @samp{edu} and @samp{li}: @example -$ @kbd{awk '/2400/ && /foo/' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B +$ @kbd{awk '/edu/ && /li/' mail-list} +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A @end example The following command prints all records in -@file{BBS-list} that contain @emph{either} @samp{2400} or @samp{foo} +@file{mail-list} that contain @emph{either} @samp{edu} or @samp{li} (or both, of course): @example -$ @kbd{awk '/2400/ || /foo/' BBS-list} -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sdace 555-3430 2400/1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '/edu/ || /li/' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example The following command prints all records in -@file{BBS-list} that do @emph{not} contain the string @samp{foo}: +@file{mail-list} that do @emph{not} contain the string @samp{li}: @example -$ @kbd{awk '! /foo/' BBS-list} -@print{} aardvark 555-5553 1200/300 B -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} barfly 555-7685 1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} camelot 555-0542 300 C -@print{} core 555-2912 1200/300 C -@print{} sdace 555-3430 2400/1200/300 A +$ @kbd{awk '! /li/' mail-list} +@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A +@print{} Becky 555-7685 becky.algebrarum@@gmail.com A +@print{} Bill 555-1675 bill.drowning@@hotmail.com A +@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Martin 555-6480 martin.codicibus@@hotmail.com A +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example @cindex @code{BEGIN} pattern, Boolean patterns and @@ -12190,6 +12321,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'} @error{} gawk: cmd. line:1: ^ syntax error @end example +@cindex range patterns, line continuation and +As a minor point of interest, although it is poor style, +POSIX allows you to put a newline after the comma in +a range pattern. @value{DARKCORNER} + @node BEGIN/END @subsection The @code{BEGIN} and @code{END} Special Patterns @@ -12214,28 +12350,30 @@ programmers. @node Using BEGIN/END @subsubsection Startup and Cleanup Actions +@cindex @code{BEGIN} pattern +@cindex @code{END} pattern A @code{BEGIN} rule is executed once only, before the first input record is read. Likewise, an @code{END} rule is executed once only, after all the input is read. For example: @example $ @kbd{awk '} -> @kbd{BEGIN @{ print "Analysis of \"foo\"" @}} -> @kbd{/foo/ @{ ++n @}} -> @kbd{END @{ print "\"foo\" appears", n, "times." @}' BBS-list} -@print{} Analysis of "foo" -@print{} "foo" appears 4 times. +> @kbd{BEGIN @{ print "Analysis of \"li\"" @}} +> @kbd{/li/ @{ ++n @}} +> @kbd{END @{ print "\"li\" appears in", n, "records." @}' mail-list} +@print{} Analysis of "li" +@print{} "li" appears in 4 records. @end example @cindex @code{BEGIN} pattern, operators and @cindex @code{END} pattern, operators and -This program finds the number of records in the input file @file{BBS-list} -that contain the string @samp{foo}. The @code{BEGIN} rule prints a title +This program finds the number of records in the input file @file{mail-list} +that contain the string @samp{li}. The @code{BEGIN} rule prints a title for the report. There is no need to use the @code{BEGIN} rule to initialize the counter @code{n} to zero, since @command{awk} does this automatically (@pxref{Variables}). The second rule increments the variable @code{n} every time a -record containing the pattern @samp{foo} is read. The @code{END} rule +record containing the pattern @samp{li} is read. The @code{END} rule prints the value of @code{n} at the end of the run. The special patterns @code{BEGIN} and @code{END} cannot be used in ranges @@ -12288,6 +12426,7 @@ to give @code{$0} a real value is to execute a @code{getline} command without a variable (@pxref{Getline}). Another way is simply to assign a value to @code{$0}. +@cindex Brian Kernighan's @command{awk} @cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns @cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns @cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and @@ -12356,7 +12495,7 @@ you can bypass the fatal error and move on to the next file on the command line. @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @code{BEGINFILE} pattern @cindex @code{nextfile} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and You do this by checking if the @code{ERRNO} variable is not the empty string; if so, then @command{gawk} was not able to open the file. In @@ -12398,7 +12537,7 @@ both @code{BEGINFILE} and @code{ENDFILE}. Only the @samp{getline In most other @command{awk} implementations, or if @command{gawk} is in compatibility mode (@pxref{Options}), they are not special. -@c FIXME: For 4.1 maybe deal with this? +@c FIXME: For 4.2 maybe deal with this? @ignore Date: Tue, 17 May 2011 02:06:10 PDT From: rankin@pactechdata.com (Pat Rankin) @@ -12429,7 +12568,7 @@ An empty (i.e., nonexistent) pattern is considered to match @emph{every} input record. For example, the program: @example -awk '@{ print $1 @}' BBS-list +awk '@{ print $1 @}' mail-list @end example @noindent @@ -12682,6 +12821,7 @@ the first thing on its line. @subsection The @code{while} Statement @cindex @code{while} statement @cindex loops +@cindex loops, @code{while} @cindex loops, See Also @code{while} statement In programming, a @dfn{loop} is a part of a program that can @@ -12742,6 +12882,7 @@ program is harder to read without it. @node Do Statement @subsection The @code{do}-@code{while} Statement @cindex @code{do}-@code{while} statement +@cindex loops, @code{do}-@code{while} The @code{do} loop is a variation of the @code{while} looping statement. The @code{do} loop executes the @var{body} once and then repeats the @@ -12787,6 +12928,7 @@ occasionally is there a real use for a @code{do} statement. @node For Statement @subsection The @code{for} Statement @cindex @code{for} statement +@cindex loops, @code{for}, iterative The @code{for} statement makes it more convenient to count iterations of a loop. The general form of the @code{for} statement looks like this: @@ -12893,6 +13035,8 @@ for more information on this version of the @code{for} loop. @cindex @code{case} keyword @cindex @code{default} keyword +This @value{SECTION} describes a @command{gawk}-specific feature. + The @code{switch} statement allows the evaluation of an expression and the execution of statements based on a @code{case} match. Case statements are checked for a match in the order they are defined. If no suitable @@ -12957,6 +13101,7 @@ it is not available. @subsection The @code{break} Statement @cindex @code{break} statement @cindex loops, exiting +@cindex loops, @code{break} statement and The @code{break} statement jumps out of the innermost @code{for}, @code{while}, or @code{do} loop that encloses it. The following example @@ -13016,6 +13161,7 @@ This is discussed in @ref{Switch Statement}. @cindex POSIX @command{awk}, @code{break} statement and @cindex dark corner, @code{break} statement @cindex @command{gawk}, @code{break} statement in +@cindex Brian Kernighan's @command{awk} The @code{break} statement has no meaning when used outside the body of a loop or @code{switch}. However, although it was never documented, @@ -13080,6 +13226,7 @@ This program loops forever once @code{x} reaches 5. @cindex POSIX @command{awk}, @code{continue} statement and @cindex dark corner, @code{continue} statement @cindex @command{gawk}, @code{continue} statement in +@cindex Brian Kernighan's @command{awk} The @code{continue} statement has no special meaning with respect to the @code{switch} statement, nor does it have any meaning when used outside the body of a loop. Historical versions of @command{awk} treated a @code{continue} @@ -13217,8 +13364,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}. @cindex functions, user-defined, @code{next}/@code{nextfile} statements and @cindex @code{nextfile} statement, user-defined functions and -The current version of the Brian Kernighan's @command{awk} (@pxref{Other -Versions}) also supports @code{nextfile}. However, it doesn't allow the +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility +The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other +Versions}) also support @code{nextfile}. However, they don't allow the @code{nextfile} statement inside function bodies (@pxref{User-defined}). @command{gawk} does; a @code{nextfile} inside a function body reads the next record and starts processing it with the first rule in the program, @@ -13455,8 +13604,8 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment. @cindex @command{gawk}, @code{IGNORECASE} variable in @cindex @code{IGNORECASE} variable @cindex differences in @command{awk} and @command{gawk}, @code{IGNORECASE} variable -@cindex case sensitivity, string comparisons and -@cindex case sensitivity, regexps and +@cindex case sensitivity, and string comparisons +@cindex case sensitivity, and regexps @cindex regular expressions, case sensitivity @item IGNORECASE # If @code{IGNORECASE} is nonzero or non-null, then all string comparisons @@ -13621,16 +13770,16 @@ In the following example: $ @kbd{awk 'BEGIN @{} > @kbd{for (i = 0; i < ARGC; i++)} > @kbd{print ARGV[i]} -> @kbd{@}' inventory-shipped BBS-list} +> @kbd{@}' inventory-shipped mail-list} @print{} awk @print{} inventory-shipped -@print{} BBS-list +@print{} mail-list @end example @noindent @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]} contains @samp{inventory-shipped}, and @code{ARGV[2]} contains -@samp{BBS-list}. The value of @code{ARGC} is three, one more than the +@samp{mail-list}. The value of @code{ARGC} is three, one more than the index of the last element in @code{ARGV}, because the elements are numbered from zero. @@ -13673,7 +13822,7 @@ or if @command{gawk} is in compatibility mode it is not special. @cindex @code{ENVIRON} array -@cindex environment variables +@cindex environment variables, in @code{ENVIRON} array @item ENVIRON An associative array containing the values of the environment. The array indices are the environment variable names; the elements are the values of @@ -13796,10 +13945,12 @@ The following elements (listed alphabetically) are guaranteed to be available: @table @code +@cindex effective group ID of @command{gawk} user @item PROCINFO["egid"] The value of the @code{getegid()} system call. @item PROCINFO["euid"] +@cindex effective user ID of @command{gawk} user The value of the @code{geteuid()} system call. @item PROCINFO["FS"] @@ -13809,6 +13960,7 @@ This is or @code{"FPAT"} if field matching with @code{FPAT} is in effect. @item PROCINFO["identifiers"] +@cindex program identifiers A subarray, indexed by the names of all identifiers used in the text of the AWK program. For each identifier, the value of the element is one of the following: @@ -13837,15 +13989,19 @@ after it has finished parsing the program; they are @emph{not} updated while the program runs. @item PROCINFO["gid"] +@cindex group ID of @command{gawk} user The value of the @code{getgid()} system call. @item PROCINFO["pgrpid"] +@cindex process group idIDof @command{gawk} process The process group ID of the current process. @item PROCINFO["pid"] +@cindex process ID of @command{gawk} process The process ID of the current process. @item PROCINFO["ppid"] +@cindex parent process ID of @command{gawk} process The parent process ID of the current process. @item PROCINFO["sorted_in"] @@ -13865,25 +14021,31 @@ Assigning a new value to this element changes the default. The value of the @code{getuid()} system call. @item PROCINFO["version"] +@cindex version of @command{gawk} +@cindex @command{gawk} version The version of @command{gawk}. @end table The following additional elements in the array are available to provide information about the MPFR and GMP libraries if your version of @command{gawk} supports arbitrary precision numbers -(@pxref{Arbitrary Precision Arithmetic}): +(@pxref{Gawk and MPFR}): @table @code +@cindex version of GNU MPFR library @item PROCINFO["mpfr_version"] The version of the GNU MPFR library. @item PROCINFO["gmp_version"] +@cindex version of GNU MP library The version of the GNU MP library. @item PROCINFO["prec_max"] +@cindex maximum precision supported by MPFR library The maximum precision supported by MPFR. @item PROCINFO["prec_min"] +@cindex minimum precision supported by MPFR library The minimum precision required by MPFR. @end table @@ -13894,12 +14056,15 @@ of @command{gawk} supports dynamic loading of extension functions @table @code @item PROCINFO["api_major"] +@cindex version of @command{gawk} extension API +@cindex extension API, version number The major version of the extension API. @item PROCINFO["api_minor"] The minor version of the extension API. @end table +@cindex supplementary groups of @command{gawk} process On some systems, there may be elements in the array, @code{"group1"} through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of supplementary groups that the process has. Use the @code{in} operator @@ -13907,7 +14072,7 @@ to test for these elements (@pxref{Reference to Elements}). @cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, uses The @code{PROCINFO} array has the following additional uses: @itemize @bullet @@ -13979,7 +14144,7 @@ if an element in @code{SYMTAB} is an array. Also, you may not use the @code{delete} statement with the @code{SYMTAB} array. -You may use an index for @code{SYMTAB} that is not a predefined identifer: +You may use an index for @code{SYMTAB} that is not a predefined identifier: @example SYMTAB["xxx"] = 5 @@ -14093,7 +14258,7 @@ changed. @node ARGC and ARGV @subsection Using @code{ARGC} and @code{ARGV} -@cindex @code{ARGC}/@code{ARGV} variables +@cindex @code{ARGC}/@code{ARGV} variables, how to use @cindex arguments, command-line @cindex command line, arguments @@ -14105,16 +14270,16 @@ and @code{ARGV}: $ @kbd{awk 'BEGIN @{} > @kbd{for (i = 0; i < ARGC; i++)} > @kbd{print ARGV[i]} -> @kbd{@}' inventory-shipped BBS-list} +> @kbd{@}' inventory-shipped mail-list} @print{} awk @print{} inventory-shipped -@print{} BBS-list +@print{} mail-list @end example @noindent In this example, @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]} contains @samp{inventory-shipped}, and @code{ARGV[2]} contains -@samp{BBS-list}. +@samp{mail-list}. Notice that the @command{awk} program is not entered in @code{ARGV}. The other command-line options, with their arguments, are also not entered. This includes variable assignments done with the @option{-v} @@ -14238,7 +14403,7 @@ ability to support true multidimensional arrays. @cindex variables, names of @cindex functions, names of -@cindex arrays, names of +@cindex arrays, names of, and names of functions/variables @cindex names, arrays/variables @cindex namespace issues @command{awk} maintains a single set @@ -14414,10 +14579,9 @@ Here, the number @code{1} isn't double-quoted, since @command{awk} automatically converts it to a string. @cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable @cindex case sensitivity, array indices and -@cindex arrays, @code{IGNORECASE} variable and -@cindex @code{IGNORECASE} variable, array subscripts and +@cindex arrays, and @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, and array indices The value of @code{IGNORECASE} has no effect upon array subscripting. The identical string value used to store an array element must be used to retrieve it. @@ -14433,8 +14597,9 @@ is independent of the number of elements in the array. @node Reference to Elements @subsection Referring to an Array Element -@cindex arrays, elements, referencing -@cindex elements in arrays +@cindex arrays, referencing elements +@cindex array members +@cindex elements of arrays The principal way to use an array is to refer to one of its elements. An array reference is an expression as follows: @@ -14451,11 +14616,16 @@ The value of the array reference is the current value of that array element. For example, @code{foo[4.3]} is an expression for the element of array @code{foo} at index @samp{4.3}. +@cindex arrays, unassigned elements +@cindex unassigned array elements +@cindex empty array elements A reference to an array element that has no recorded value yields a value of @code{""}, the null string. This includes elements that have not been assigned any value as well as elements that have been deleted (@pxref{Delete}). +@cindex non-existent array elements +@cindex arrays, elements that don't exist @quotation NOTE A reference to an element that does not exist @emph{automatically} creates that array element, with the null string as its value. (In some cases, @@ -14475,7 +14645,7 @@ if it didn't exist before! @end quotation @c @cindex arrays, @code{in} operator and -@cindex @code{in} operator +@cindex @code{in} operator, testing if array element exists To determine whether an element exists in an array at a certain index, use the following expression: @@ -14510,8 +14680,8 @@ if (frequencies[2] != "") @node Assigning Elements @subsection Assigning Array Elements -@cindex arrays, elements, assigning -@cindex elements in arrays, assigning +@cindex arrays, elements, assigning values +@cindex elements in arrays, assigning values Array elements can be assigned values just like @command{awk} variables: @@ -14528,6 +14698,7 @@ assign to that element of the array. @node Array Example @subsection Basic Array Example +@cindex arrays, an example of using The following program takes a list of lines, each beginning with a line number, and prints them out in order of line number. The line numbers @@ -14597,7 +14768,9 @@ END @{ @node Scanning an Array @subsection Scanning All Elements of an Array @cindex elements in arrays, scanning +@cindex scanning arrays @cindex arrays, scanning +@cindex loops, @code{for}, array scanning In programs that use arrays, it is often necessary to use a loop that executes once for each element of an array. In other languages, where @@ -14614,7 +14787,7 @@ for (@var{var} in @var{array}) @end example @noindent -@cindex @code{in} operator +@cindex @code{in} operator, use in loops This loop executes @var{body} once for each index in @var{array} that the program has previously used, with the variable @var{var} set to that index. @@ -14653,8 +14826,9 @@ END @{ @xref{Word Sorting}, for a more detailed example of this type. -@cindex arrays, elements, order of -@cindex elements in arrays, order of +@cindex arrays, elements, order of access by @code{in} operator +@cindex elements in arrays, order of access by @code{in} operator +@cindex @code{in} operator, order of array access The order in which elements of the array are accessed by this statement is determined by the internal arrangement of the array elements within @command{awk} and normally cannot be controlled or changed. This can lead to @@ -14672,6 +14846,8 @@ determines the order in which the array is traversed. This order is usually based on the internal implementation of arrays and will vary from one version of @command{awk} to the next. +@cindex array scanning order, controlling +@cindex controlling array scanning order Often, though, you may wish to do something simple, such as ``traverse the array by comparing the indices in ascending order,'' or ``traverse the array by comparing the values in descending order.'' @@ -14688,6 +14864,7 @@ to use for comparison of array elements. This advanced feature is described later, in @ref{Array Sorting}. @end itemize +@cindex @code{PROCINFO}, values of @code{sorted_in} The following special values for @code{PROCINFO["sorted_in"]} are available: @table @code @@ -14848,7 +15025,7 @@ if (4 in foo) print "This will never be printed" @end example -@cindex null strings, array elements and +@cindex null strings, and deleting array elements It is important to note that deleting an element is @emph{not} the same as assigning it a null value (the empty string, @code{""}). For example: @@ -14870,6 +15047,7 @@ is not in the array is deleted. @cindex extensions, common@comma{} @code{delete} to delete entire arrays @cindex arrays, deleting entire contents @cindex deleting entire arrays +@cindex @code{delete} @var{array} @cindex differences in @command{awk} and @command{gawk}, array elements, deleting All the elements of an array may be deleted with a single statement by leaving off the subscript in the @code{delete} statement, @@ -14884,6 +15062,7 @@ Using this version of the @code{delete} statement is about three times more efficient than the equivalent loop that deletes each element one at a time. +@cindex Brian Kernighan's @command{awk} @quotation NOTE For many years, using @code{delete} without a subscript was a @command{gawk} extension. @@ -14926,9 +15105,9 @@ a = 3 @section Using Numbers to Subscript Arrays @cindex numbers, as array subscripts -@cindex arrays, subscripts +@cindex arrays, numeric subscripts @cindex subscripts in arrays, numbers as -@cindex @code{CONVFMT} variable, array subscripts and +@cindex @code{CONVFMT} variable, and array subscripts An important aspect to remember about arrays is that @emph{array subscripts are always strings}. When a numeric value is used as a subscript, it is converted to a string value before being used for subscripting @@ -14958,7 +15137,8 @@ string value from @code{xyz}---this time @code{"12.15"}---because the value of @code{CONVFMT} only allows two significant digits. This test fails, since @code{"12.15"} is different from @code{"12.153"}. -@cindex converting, during subscripting +@cindex converting integer array subscripts +@cindex integer array indices According to the rules for conversions (@pxref{Conversion}), integer values are always converted to strings as integers, no matter what the @@ -15064,7 +15244,7 @@ languages, including @command{awk}) to refer to an element of a two-dimensional array named @code{grid} is with @code{grid[@var{x},@var{y}]}. -@cindex @code{SUBSEP} variable, multidimensional arrays +@cindex @code{SUBSEP} variable, and multidimensional arrays Multidimensional arrays are supported in @command{awk} through concatenation of indices into one string. @command{awk} converts the indices into strings @@ -15096,6 +15276,7 @@ combined strings that are ambiguous. Suppose that @code{SUBSEP} is "b@@c"]}} are indistinguishable because both are actually stored as @samp{foo["a@@b@@c"]}. +@cindex @code{in} operator, index existence in multidimensional arrays To test whether a particular index sequence exists in a multidimensional array, use the same operator (@code{in}) that is used for single dimensional arrays. Write the whole sequence of indices @@ -15161,6 +15342,7 @@ multidimensional @emph{way of accessing} an array. @cindex subscripts in arrays, multidimensional, scanning @cindex arrays, multidimensional, scanning +@cindex scanning multidimensional arrays However, if your program has an array that is always accessed as multidimensional, you can get the effect of scanning it by combining the scanning @code{for} statement @@ -15202,6 +15384,7 @@ separate indices is recovered. @node Arrays of Arrays @section Arrays of Arrays +@cindex arrays of arrays @command{gawk} goes beyond standard @command{awk}'s multidimensional array access and provides true arrays of @@ -15461,6 +15644,7 @@ two arguments 11 and 10. @node Numeric Functions @subsection Numeric Functions +@cindex numeric functions The following list describes all of the built-in functions that work with numbers. @@ -15468,22 +15652,26 @@ Optional parameters are enclosed in square brackets@w{ ([ ]):} @table @code @item atan2(@var{y}, @var{x}) -@cindex @code{atan2()} function +@cindexawkfunc{atan2} +@cindex arctangent Return the arctangent of @code{@var{y} / @var{x}} in radians. You can use @samp{pi = atan2(0, -1)} to retrieve the value of @value{PI}. @item cos(@var{x}) -@cindex @code{cos()} function +@cindexawkfunc{cos} +@cindex cosine Return the cosine of @var{x}, with @var{x} in radians. @item exp(@var{x}) -@cindex @code{exp()} function +@cindexawkfunc{exp} +@cindex exponent Return the exponential of @var{x} (@code{e ^ @var{x}}) or report an error if @var{x} is out of range. The range of values @var{x} can have depends on your machine's floating-point representation. @item int(@var{x}) -@cindex @code{int()} function +@cindexawkfunc{int} +@cindex round to nearest integer Return the nearest integer to @var{x}, located between @var{x} and zero and truncated toward zero. @@ -15491,12 +15679,13 @@ For example, @code{int(3)} is 3, @code{int(3.9)} is 3, @code{int(-3.9)} is @minus{}3, and @code{int(-3)} is @minus{}3 as well. @item log(@var{x}) -@cindex @code{log()} function +@cindexawkfunc{log} +@cindex logarithm Return the natural logarithm of @var{x}, if @var{x} is positive; otherwise, report an error. @item rand() -@cindex @code{rand()} function +@cindexawkfunc{rand} @cindex random numbers, @code{rand()}/@code{srand()} functions Return a random number. The values of @code{rand()} are uniformly distributed between zero and one. @@ -15538,7 +15727,7 @@ function roll(n) @{ return 1 + int(rand() * n) @} @} @end example -@cindex numbers, random +@cindex seeding random number generator @cindex random numbers, seed of @quotation CAUTION In most @command{awk} implementations, including @command{gawk}, @@ -15554,17 +15743,19 @@ use @code{srand()}. @end quotation @item sin(@var{x}) -@cindex @code{sin()} function +@cindexawkfunc{sin} +@cindex sine Return the sine of @var{x}, with @var{x} in radians. @item sqrt(@var{x}) -@cindex @code{sqrt()} function +@cindexawkfunc{sqrt} +@cindex square root Return the positive square root of @var{x}. @command{gawk} prints a warning message if @var{x} is negative. Thus, @code{sqrt(4)} is 2. @item srand(@r{[}@var{x}@r{]}) -@cindex @code{srand()} function +@cindexawkfunc{srand} Set the starting point, or seed, for generating random numbers to the value @var{x}. @@ -15594,6 +15785,7 @@ sequences of random numbers. @node String Functions @subsection String-Manipulation Functions +@cindex string-manipulation functions The functions in this @value{SECTION} look at or change the text of one or more strings. @@ -15622,11 +15814,11 @@ pound sign@w{ (@samp{#}):} @table @code @item asort(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) # @itemx asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) # -@cindex @code{asorti()} function (@command{gawk}) +@cindexgawkfunc{asorti} +@cindex sort array @cindex arrays, elements, retrieving number of -@cindex @code{asort()} function (@command{gawk}) -@cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable +@cindexgawkfunc{asort} +@cindex sort array indices These two functions are similar in behavior, so they are described together. @@ -15644,7 +15836,9 @@ sequential integers starting with one. If the optional array @var{dest} is specified, then @var{source} is duplicated into @var{dest}. @var{dest} is then sorted, leaving the indices of @var{source} unchanged. -When comparing strings, @code{IGNORECASE} affects the sorting. If the +@cindex @command{gawk}, @code{IGNORECASE} variable in +When comparing strings, @code{IGNORECASE} affects the sorting +(@pxref{Array Sorting Functions}). If the @var{source} array contains subarrays as values (@pxref{Arrays of Arrays}), they will come last, after all scalar values. @@ -15687,7 +15881,9 @@ a[3] = "middle" are not available in compatibility mode (@pxref{Options}). @item gensub(@var{regexp}, @var{replacement}, @var{how} @r{[}, @var{target}@r{]}) # -@cindex @code{gensub()} function (@command{gawk}) +@cindexgawkfunc{gensub} +@cindex search and replace in strings +@cindex substitute in string Search the target string @var{target} for matches of the regular expression @var{regexp}. If @var{how} is a string beginning with @samp{g} or @samp{G} (short for ``global''), then replace all matches of @var{regexp} with @@ -15696,7 +15892,7 @@ which match of @var{regexp} to replace. If no @var{target} is supplied, use @code{$0}. It returns the modified string as the result of the function and the original target string is @emph{not} changed. -@code{gensub()} is a general substitution function. It's purpose is +@code{gensub()} is a general substitution function. Its purpose is to provide more features than the standard @code{sub()} and @code{gsub()} functions. @@ -15750,7 +15946,7 @@ is the original unchanged value of @var{target}. in compatibility mode (@pxref{Options}). @item gsub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]}) -@cindex @code{gsub()} function +@cindexawkfunc{gsub} Search @var{target} for @emph{all} of the longest, leftmost, @emph{nonoverlapping} matching substrings it can find and replace them with @var{replacement}. @@ -15772,8 +15968,9 @@ As in @code{sub()}, the characters @samp{&} and @samp{\} are special, and the third argument must be assignable. @item index(@var{in}, @var{find}) -@cindex @code{index()} function -@cindex searching +@cindexawkfunc{index} +@cindex search in string +@cindex find substring in string Search the string @var{in} for the first occurrence of the string @var{find}, and return the position in characters where that occurrence begins in the string @var{in}. Consider the following example: @@ -15790,7 +15987,9 @@ If @var{find} is not found, @code{index()} returns zero. It is a fatal error to use a regexp constant for @var{find}. @item length(@r{[}@var{string}@r{]}) -@cindex @code{length()} function +@cindexawkfunc{length} +@cindex string length +@cindex length of string Return the number of characters in @var{string}. If @var{string} is a number, the length of the digit string representing that number is returned. For example, @code{length("abcde")} is five. By @@ -15798,6 +15997,8 @@ contrast, @code{length(15 * 35)} works out to three. In this example, 15 * 35 = 525, and 525 is then converted to the string @code{"525"}, which has three characters. +@cindex length of input record +@cindex input record, length of If no argument is supplied, @code{length()} returns the length of @code{$0}. @c @cindex historical features @@ -15836,6 +16037,8 @@ warning about this. @cindex common extensions, @code{length()} applied to an array @cindex extensions, common@comma{} @code{length()} applied to an array @cindex differences between @command{gawk} and @command{awk} +@cindex number of array elements +@cindex array, number of elements With @command{gawk} and several other @command{awk} implementations, when given an array argument, the @code{length()} function returns the number of elements in the array. @value{COMMONEXT} @@ -15849,7 +16052,9 @@ If @option{--posix} is supplied, using an array argument is a fatal error (@pxref{Arrays}). @item match(@var{string}, @var{regexp} @r{[}, @var{array}@r{]}) -@cindex @code{match()} function +@cindexawkfunc{match} +@cindex string, regular expression match +@cindex match regexp in string Search @var{string} for the longest, leftmost substring matched by the regular expression, @var{regexp} and return the character position, or @dfn{index}, @@ -15964,7 +16169,8 @@ The @var{array} argument to @code{match()} is a using a third argument is a fatal error. @item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[}, @var{seps} @r{]} @r{]}) # -@cindex @code{patsplit()} function (@command{gawk}) +@cindexgawkfunc{patsplit} +@cindex split string into array Divide @var{string} into pieces defined by @var{fieldpat} and store the pieces in @var{array} and the separator strings in the @@ -15995,7 +16201,7 @@ The @code{patsplit()} function is a it is not available. @item split(@var{string}, @var{array} @r{[}, @var{fieldsep} @r{[}, @var{seps} @r{]} @r{]}) -@cindex @code{split()} function +@cindexawkfunc{split} Divide @var{string} into pieces separated by @var{fieldsep} and store the pieces in @var{array} and the separator strings in the @var{seps} array. The first piece is stored in @@ -16024,7 +16230,7 @@ split("cul-de-sac", a, "-", seps) @end example @noindent -@cindex strings, splitting +@cindex strings splitting, example splits the string @samp{cul-de-sac} into three fields using @samp{-} as the separator. It sets the contents of the array @code{a} as follows: @@ -16080,7 +16286,8 @@ If @var{string} does not match @var{fieldsep} at all (but is not null), @var{string}. @item sprintf(@var{format}, @var{expression1}, @dots{}) -@cindex @code{sprintf()} function +@cindexawkfunc{sprintf} +@cindex formatting strings Return (without printing) the string that @code{printf} would have printed out with the same arguments (@pxref{Printf}). @@ -16093,7 +16300,8 @@ pival = sprintf("pi = %.2f (approx.)", 22/7) @noindent assigns the string @w{@samp{pi = 3.14 (approx.)}} to the variable @code{pival}. -@cindex @code{strtonum()} function (@command{gawk}) +@cindexgawkfunc{strtonum} +@cindex convert string to number @item strtonum(@var{str}) # Examine @var{str} and return its numeric value. If @var{str} begins with a leading @samp{0}, @code{strtonum()} assumes that @var{str} @@ -16116,12 +16324,12 @@ you use the @option{--non-decimal-data} option, which isn't recommended. Note also that @code{strtonum()} uses the current locale's decimal point for recognizing numbers (@pxref{Locales}). -@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk}) @code{strtonum()} is a @command{gawk} extension; it is not available in compatibility mode (@pxref{Options}). @item sub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]}) -@cindex @code{sub()} function +@cindexawkfunc{sub} +@cindex replace in string Search @var{target}, which is treated as a string, for the leftmost, longest substring matched by the regular expression @var{regexp}. Modify the entire string @@ -16221,7 +16429,8 @@ Finally, if the @var{regexp} is not a regexp constant, it is converted into a string, and then the value of that string is treated as the regexp to match. @item substr(@var{string}, @var{start} @r{[}, @var{length}@r{]}) -@cindex @code{substr()} function +@cindexawkfunc{substr} +@cindex substring Return a @var{length}-character-long substring of @var{string}, starting at character number @var{start}. The first character of a string is character number one.@footnote{This is different from @@ -16235,6 +16444,7 @@ suffix is also returned if @var{length} is greater than the number of characters remaining in the string, counting from character @var{start}. +@cindex Brian Kernighan's @command{awk} If @var{start} is less than one, @code{substr()} treats it as if it was one. (POSIX doesn't specify what to do in this case: Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk} @@ -16277,16 +16487,18 @@ string = substr(string, 1, 2) "CDE" substr(string, 6) @end example @cindex case sensitivity, converting case -@cindex converting, case +@cindex strings, converting letter case @item tolower(@var{string}) -@cindex @code{tolower()} function +@cindexawkfunc{tolower} +@cindex convert string to lower case Return a copy of @var{string}, with each uppercase character in the string replaced with its corresponding lowercase character. Nonalphabetic characters are left unchanged. For example, @code{tolower("MiXeD cAsE 123")} returns @code{"mixed case 123"}. @item toupper(@var{string}) -@cindex @code{toupper()} function +@cindexawkfunc{toupper} +@cindex convert string to upper case Return a copy of @var{string}, with each lowercase character in the string replaced with its corresponding uppercase character. Nonalphabetic characters are left unchanged. For example, @@ -16314,6 +16526,7 @@ and builds an internal copy of it that can be executed. Then there is the runtime level, which is when @command{awk} actually scans the replacement string to determine what to generate. +@cindex Brian Kernighan's @command{awk} At both levels, @command{awk} looks for a defined set of characters that can come after a backslash. At the lexical level, it looks for the escape sequences listed in @ref{Escape Sequences}. @@ -16711,14 +16924,16 @@ Although this makes a certain amount of sense, it can be surprising. @node I/O Functions @subsection Input/Output Functions +@cindex input/output functions The following functions relate to input/output (I/O). Optional parameters are enclosed in square brackets ([ ]): @table @code @item close(@var{filename} @r{[}, @var{how}@r{]}) -@cindex @code{close()} function +@cindexawkfunc{close} @cindex files, closing +@cindex close file or coprocess Close the file @var{filename} for input or output. Alternatively, the argument may be a shell command that was used for creating a coprocess, or for redirecting to or from a pipe; then the coprocess or pipe is closed. @@ -16735,7 +16950,8 @@ not matter. which discusses this feature in more detail and gives an example. @item fflush(@r{[}@var{filename}@r{]}) -@cindex @code{fflush()} function +@cindexawkfunc{fflush} +@cindex flush buffered output Flush any buffered output associated with @var{filename}, which is either a file opened for writing or a shell command for redirecting output to a pipe or coprocess. @@ -16753,11 +16969,12 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also buffers its output and the @code{fflush()} function forces @command{gawk} to flush its buffers. -@code{fflush()} was added to Brian Kernighan's -version of @command{awk} in 1994. -For over two decades, it was not part of the POSIX standard. -As of December, 2012, it was accepted for -inclusion into the POSIX standard. +@cindex extensions, common@comma{} @code{fflush()} function +@cindex Brian Kernighan's @command{awk} +@code{fflush()} was added to Brian Kernighan's version of @command{awk} in +April of 1992. For two decades, it was not part of the POSIX standard. +As of December, 2012, it was accepted for inclusion into the POSIX +standard. See @uref{http://austingroupbugs.net/view.php?id=634, the Austin Group website}. POSIX standardizes @code{fflush()} as follows: If there @@ -16793,7 +17010,8 @@ or if @var{filename} is not an open file, pipe, or coprocess. In such a case, @code{fflush()} returns @minus{}1, as well. @item system(@var{command}) -@cindex @code{system()} function +@cindexawkfunc{system} +@cindex invoke shell command @cindex interacting with other programs Execute the operating-system command @var{command} and then return to the @command{awk} program. @@ -17068,6 +17286,7 @@ you would see the latter (undesirable) output. @node Time Functions @subsection Time Functions +@cindex time functions @c STARTOFRANGE tst @cindex timestamps @@ -17087,7 +17306,18 @@ it is the number of seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds.@footnote{@xref{Glossary}, especially the entries ``Epoch'' and ``UTC.''} All known POSIX-compliant systems support timestamps from 0 through -@math{2^{31} - 1}, which is sufficient to represent times through +@iftex +@math{2^{31} - 1}, +@end iftex +@ifnottex +@ifnotdocbook +2^31 - 1, +@end ifnotdocbook +@end ifnottex +@docbook +2<superscript>31</superscript> − 1, @c +@end docbook +which is sufficient to represent times through 2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps, including negative timestamps that represent times before the epoch. @@ -17106,7 +17336,8 @@ Optional parameters are enclosed in square brackets ([ ]): @table @code @item mktime(@var{datespec}) -@cindex @code{mktime()} function (@command{gawk}) +@cindexgawkfunc{mktime} +@cindex generate time values Turn @var{datespec} into a timestamp in the same form as is returned by @code{systime()}. It is similar to the function of the same name in ISO C. The argument, @var{datespec}, is a string of the form @@ -17136,7 +17367,8 @@ is out of range, @code{mktime()} returns @minus{}1. @cindex @code{PROCINFO} array @item strftime(@r{[}@var{format} @r{[}, @var{timestamp} @r{[}, @var{utc-flag}@r{]]]}) @c STARTOFRANGE strf -@cindex @code{strftime()} function (@command{gawk}) +@cindexgawkfunc{strftime} +@cindex format time string Format the time specified by @var{timestamp} based on the contents of the @var{format} string and return the result. It is similar to the function of the same name in ISO C. @@ -17153,11 +17385,12 @@ The default string value is @code{@w{"%a %b %e %H:%M:%S %Z %Y"}}. This format string produces output that is equivalent to that of the @command{date} utility. You can assign a new value to @code{PROCINFO["strftime"]} to -change the default format. +change the default format; see below for the various format directives. @item systime() -@cindex @code{systime()} function (@command{gawk}) +@cindexgawkfunc{systime} @cindex timestamps +@cindex current system time Return the current time as the number of seconds since the system epoch. On POSIX systems, this is the number of seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds. @@ -17451,6 +17684,7 @@ gawk 'BEGIN @{ @node Bitwise Functions @subsection Bit-Manipulation Functions +@cindex bit-manipulation functions @c STARTOFRANGE bit @cindex bitwise, operations @c STARTOFRANGE and @@ -17613,27 +17847,33 @@ bitwise operations just described. They are: @cindex @command{gawk}, bitwise operations in @table @code -@cindex @code{and()} function (@command{gawk}) +@cindexgawkfunc{and} +@cindex bitwise AND @item and(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise AND of the arguments. There must be at least two. -@cindex @code{compl()} function (@command{gawk}) +@cindexgawkfunc{compl} +@cindex bitwise complement @item compl(@var{val}) Return the bitwise complement of @var{val}. -@cindex @code{lshift()} function (@command{gawk}) +@cindexgawkfunc{lshift} +@cindex left shift @item lshift(@var{val}, @var{count}) Return the value of @var{val}, shifted left by @var{count} bits. -@cindex @code{or()} function (@command{gawk}) +@cindexgawkfunc{or} +@cindex bitwise OR @item or(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise OR of the arguments. There must be at least two. -@cindex @code{rshift()} function (@command{gawk}) +@cindexgawkfunc{rshift} +@cindex right shift @item rshift(@var{val}, @var{count}) Return the value of @var{val}, shifted right by @var{count} bits. -@cindex @code{xor()} function (@command{gawk}) +@cindexgawkfunc{xor} +@cindex bitwise XOR @item xor(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise XOR of the arguments. There must be at least two. @end table @@ -17725,6 +17965,7 @@ $ @kbd{gawk -f testbits.awk} @cindex strings, converting @cindex numbers, converting @cindex converting, numbers to strings +@cindex number as string of bits The @code{bits2str()} function turns a binary number into a string. The number @code{1} represents a binary value where the rightmost bit is set to 1. Using this mask, @@ -17760,7 +18001,8 @@ that traverses every element of a true multidimensional array (@pxref{Arrays of Arrays}). @table @code -@cindex @code{isarray()} function (@command{gawk}) +@cindexgawkfunc{isarray} +@cindex scalar or array @item isarray(@var{x}) Return a true value if @var{x} is an array. Otherwise return false. @end table @@ -17768,7 +18010,7 @@ Return a true value if @var{x} is an array. Otherwise return false. @code{isarray()} is meant for use in two circumstances. The first is when traversing a multidimensional array: you can test if an element is itself an array or not. The second is inside the body of a user-defined function -(not discussed yet; @pxref{User-defined}), to test if a paramater is an +(not discussed yet; @pxref{User-defined}), to test if a parameter is an array or not. Note, however, that using @code{isarray()} at the global level to test @@ -17782,6 +18024,7 @@ will end up turning it into a scalar. @subsection String-Translation Functions @cindex @command{gawk}, string-translation functions @cindex functions, string-translation +@cindex string-translation functions @cindex internationalization @cindex @command{awk} programs, internationalizing @@ -17793,7 +18036,8 @@ for the full story. Optional parameters are enclosed in square brackets ([ ]): @table @code -@cindex @code{bindtextdomain()} function (@command{gawk}) +@cindexgawkfunc{bindtextdomain} +@cindex set directory of message catalogs @item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]}) Set the directory in which @command{gawk} will look for message translation files, in case they @@ -17806,14 +18050,15 @@ If @var{directory} is the null string (@code{""}), then @code{bindtextdomain()} returns the current binding for the given @var{domain}. -@cindex @code{dcgettext()} function (@command{gawk}) +@cindexgawkfunc{dcgettext} +@cindex translate string @item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the translation of @var{string} in text domain @var{domain} for locale category @var{category}. The default value for @var{domain} is the current value of @code{TEXTDOMAIN}. The default value for @var{category} is @code{"LC_MESSAGES"}. -@cindex @code{dcngettext()} function (@command{gawk}) +@cindexgawkfunc{dcngettext} @item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @@ -17830,7 +18075,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}. @section User-Defined Functions @c STARTOFRANGE udfunc -@cindex user-defined, functions +@cindex user-defined functions @c STARTOFRANGE funcud @cindex functions, user-defined Complicated @command{awk} programs can often be simplified by defining @@ -17889,7 +18134,7 @@ have a parameter with the same name as the function itself. In addition, according to the POSIX standard, function parameters cannot have the same name as one of the special built-in variables (@pxref{Built-in Variables}. Not all versions of @command{awk} -enforce this restriction. +enforce this restriction.) The @var{body-of-function} consists of @command{awk} statements. It is the most important part of the definition, because it says what the function @@ -17916,6 +18161,7 @@ conventional to place some extra space between the arguments and the local variables, in order to document how your function is supposed to be used. @cindex variables, shadowing +@cindex shadowing of variable values During execution of the function body, the arguments and local variable values hide, or @dfn{shadow}, any variables of the same names used in the rest of the program. The shadowed variables are not accessible in the @@ -17936,7 +18182,7 @@ function. When this happens, we say the function is @dfn{recursive}. The act of a function calling itself is called @dfn{recursion}. All the built-in functions return a value to their caller. -User-defined functions can do also, using the @code{return} statement, +User-defined functions can do so also, using the @code{return} statement, which is described in detail in @ref{Return Statement}. Many of the subsequent examples in this @value{SECTION} use the @code{return} statement. @@ -17974,6 +18220,7 @@ keyword @code{function} when defining a function. @node Function Example @subsection Function Definition Examples +@cindex function definition example Here is an example of a user-defined function, called @code{myprint()}, that takes a number and prints it in a specific format: @@ -18028,7 +18275,8 @@ Instead of having to repeat this loop everywhere that you need to clear out an array, your program can just call @code{delarray}. (This guarantees portability. The use of @samp{delete @var{array}} to delete -the contents of an entire array is a nonstandard extension.) +the contents of an entire array is a recent@footnote{Late in 2012.} +addition to the POSIX standard.) The following is an example of a recursive function. It takes a string as an input parameter and returns the string in backwards order. @@ -18084,7 +18332,10 @@ function ctime(ts, format) @subsection Calling User-Defined Functions @c STARTOFRANGE fudc -This section describes how to call a user-defined function. +@cindex functions, user-defined, calling +@dfn{Calling a function} means causing the function to run and do its job. +A function call is an expression and its value is the value returned by +the function. @menu * Calling A Function:: Don't use spaces. @@ -18095,11 +18346,6 @@ This section describes how to call a user-defined function. @node Calling A Function @subsubsection Writing A Function Call -@cindex functions, user-defined, calling -@dfn{Calling a function} means causing the function to run and do its job. -A function call is an expression and its value is the value returned by -the function. - A function call consists of the function name followed by the arguments in parentheses. @command{awk} expressions are what you write in the call for the arguments. Each time the call is executed, these @@ -18123,8 +18369,8 @@ an error. @node Variable Scope @subsubsection Controlling Variable Scope -@cindex local variables -@cindex variables, local +@cindex local variables, in a function +@cindex variables, local to a function There is no way to make a variable local to a @code{@{ @dots{} @}} block in @command{awk}, but you can make a variable local to a function. It is good practice to do so whenever a variable is needed only in that @@ -18569,7 +18815,7 @@ character: @example the_func = "sum" -result = @@the_func() # calls the `sum' function +result = @@the_func() # calls the sum() function @end example Here is a full program that processes the previously shown data, @@ -18690,8 +18936,9 @@ We can do something similar using @command{gawk}, like this: @ignore @c file eg/lib/quicksort.awk # -# Arnold Robbins, arnold@skeeve.com, Public Domain +# Arnold Robbins, arnold@@skeeve.com, Public Domain # January 2009 + @c endfile @end ignore @@ -18764,7 +19011,7 @@ or equal to), which yields data sorted in descending order. Next comes a sorting function. It is parameterized with the starting and ending field numbers and the comparison function. It builds an array with -the data and calls @code{quicksort} appropriately, and then formats the +the data and calls @code{quicksort()} appropriately, and then formats the results as a single string: @example @@ -18902,6 +19149,8 @@ it allows you to encapsulate algorithms and program tasks in a single place. It simplifies programming, making program development more manageable, and making programs more readable. +@cindex Kernighan, Brian +@cindex Plauger, P.J.@: In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35 years later, many of the lessons taught by this book have yet to be learned by a vast number of practicing programmers.} Brian Kernighan @@ -19031,7 +19280,7 @@ with the user's program. @cindex underscore (@code{_}), in names of private variables In addition, several of the library functions use a prefix that helps indicate what function or set of functions use the variables---for example, -@code{_pw_byname} in the user database routines +@code{_pw_byname()} in the user database routines (@pxref{Passwd Functions}). This convention is recommended, since it even further decreases the chance of inadvertent conflict among variable names. Note that this @@ -19050,7 +19299,7 @@ The leading capital letter indicates that it is global, while the fact that the variable name is not all capital letters indicates that the variable is not one of @command{awk}'s built-in variables, such as @code{FS}. -@cindex @option{--dump-variables} option +@cindex @option{--dump-variables} option, using for library functions It is also important that @emph{all} variables in library functions that do not need to save state are, in fact, declared local.@footnote{@command{gawk}'s @option{--dump-variables} command-line @@ -19345,9 +19594,9 @@ with an @code{exit} statement. The way @code{printf} and @code{sprintf()} (@pxref{Printf}) perform rounding often depends upon the system's C @code{sprintf()} -subroutine. On many machines, @code{sprintf()} rounding is ``unbiased,'' -which means it doesn't always round a trailing @samp{.5} up, contrary -to naive expectations. In unbiased rounding, @samp{.5} rounds to even, +subroutine. On many machines, @code{sprintf()} rounding is @dfn{unbiased}, +which means it doesn't always round a trailing .5 up, contrary +to naive expectations. In unbiased rounding, .5 rounds to even, rather than always up, so 1.5 rounds to 2 but 4.5 rounds to 4. This means that if you are using a format that does rounding (e.g., @code{"%.0f"}), you should check what your system does. The following function does @@ -19396,7 +19645,7 @@ function round(x, ival, aval, fraction) @c don't include test harness in the file that gets installed # test harness -@{ print $0, round($0) @} +# @{ print $0, round($0) @} @end example @node Cliff Random Function @@ -19463,6 +19712,7 @@ reason to build them into the @command{awk} interpreter: @cindex @code{ord()} user-defined function @cindex @code{chr()} user-defined function +@cindex @code{_ord_init()} user-defined function @example @c file eg/lib/ord.awk # ord.awk --- do ord and chr @@ -19509,8 +19759,9 @@ function _ord_init( low, high, i, t) @cindex character sets (machine character encodings) @cindex ASCII @cindex EBCDIC +@cindex Unicode @cindex mark parity -Some explanation of the numbers used by @code{chr()} is worthwhile. +Some explanation of the numbers used by @code{_ord_init()} is worthwhile. The most prominent character set in use today is ASCII.@footnote{This is changing; many systems use Unicode, a very large character set that includes ASCII as a subset. On systems with full Unicode support, @@ -19521,7 +19772,7 @@ Although an defines characters that use the values from 0 to 127.@footnote{ASCII has been extended in many countries to use the values from 128 to 255 for country-specific characters. If your system uses these extensions, -you can simplify @code{_ord_init} to loop from 0 to 255.} +you can simplify @code{_ord_init()} to loop from 0 to 255.} In the now distant past, at least one minicomputer manufacturer @c Pr1me, blech @@ -20195,7 +20446,7 @@ END @{ Occasionally, you might not want @command{awk} to process command-line variable assignments (@pxref{Assignment Options}). -In particular, if you have a file name that contain an @samp{=} character, +In particular, if you have a file name that contains an @samp{=} character, @command{awk} treats the file name as an assignment, and does not process it. Some users have suggested an additional command-line option for @command{gawk} @@ -20865,7 +21116,7 @@ from anywhere within a user's program, and the user may have his or her own way of splitting records and fields. -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, testing the field splitting The @code{using_fw} variable checks @code{PROCINFO["FS"]}, which is @code{"FIELDWIDTHS"} if field splitting is being done with @code{FIELDWIDTHS}. This makes it possible to restore the correct @@ -20874,7 +21125,7 @@ field-splitting mechanism later. The test can only be true for or on some other @command{awk} implementation. The code that checks for using @code{FPAT}, using @code{using_fpat} -and @code{PROCINFO["FS"]} is similar. +and @code{PROCINFO["FS"]}, is similar. The main part of the function uses a loop to read database lines, split the line into fields, and then store the line into each array as necessary. @@ -20904,10 +21155,9 @@ function getpwnam(name) @end example @cindex @code{getpwuid()} function (C library) -Similarly, -the @code{getpwuid} function takes a user ID number argument. If that -user number is in the database, it returns the appropriate line. Otherwise, it -returns the null string: +Similarly, the @code{getpwuid()} function takes a user ID number +argument. If that user number is in the database, it returns the +appropriate line. Otherwise, it returns the null string: @cindex @code{getpwuid()} user-defined function @example @@ -20989,7 +21239,7 @@ uses these functions. @cindex group database, reading @c STARTOFRANGE datagr @cindex database, group, reading -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and group membership @cindex @code{getgrent()} function (C library) @cindex @code{getgrent()} user-defined function @cindex groups@comma{} information about @@ -21411,7 +21661,7 @@ index and value, use the indirect function call syntax and the value. When calling @code{walk_array()}, you would pass the name of a user-defined -function that expects to receive and index and a value, and then processes +function that expects to receive an index and a value, and then processes the element. @@ -21765,7 +22015,7 @@ complete field list, including filler fields: @example @c file eg/prog/cut.awk -function set_charlist( field, i, j, f, g, t, +function set_charlist( field, i, j, f, g, n, m, t, filler, last, len) @{ field = 1 # count total fields @@ -21862,6 +22112,7 @@ of picking the input line apart by characters. @cindex searching, files for regular expressions @c STARTOFRANGE fsregexp @cindex files, searching for regular expressions +@c STARTOFRANGE egrep @cindex @command{egrep} utility The @command{egrep} utility searches files for patterns. It uses regular expressions that are almost identical to those available in @command{awk} @@ -22147,12 +22398,14 @@ or not. @c ENDOFRANGE regexps @c ENDOFRANGE sfregexp @c ENDOFRANGE fsregexp +@c ENDOFRANGE egrep @node Id Program @subsection Printing out User Information @cindex printing, user information @cindex users, information about, printing +@c STARTOFRANGE id @cindex @command{id} utility The @command{id} utility lists a user's real and effective user ID numbers, real and effective group ID numbers, and the user's group set, if any. @@ -22165,7 +22418,7 @@ $ @kbd{id} @print{} uid=500(arnold) gid=500(arnold) groups=6(disk),7(lp),19(floppy) @end example -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and user and group ID numbers This information is part of what is provided by @command{gawk}'s @code{PROCINFO} array (@pxref{Built-in Variables}). However, the @command{id} utility provides a more palatable output than just @@ -22266,7 +22519,6 @@ BEGIN \ @c endfile @end example -@cindex @code{in} operator The test in the @code{for} loop is worth noting. Any supplementary groups in the @code{PROCINFO} array have the indices @code{"group1"} through @code{"group@var{N}"} for some @@ -22276,7 +22528,7 @@ there are. This loop works by starting at one, concatenating the value with @code{"group"}, and then using @code{in} to see if that value is -in the array. Eventually, @code{i} is incremented past +in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past the last group in the array and the loop exits. The loop is also correct if there are @emph{no} supplementary @@ -22289,6 +22541,7 @@ The POSIX version of @command{id} takes arguments that control which information is printed. Modify this version to accept the same arguments and perform in the same way. @end ignore +@c ENDOFRANGE id @node Split Program @subsection Splitting a Large File into Pieces @@ -22297,6 +22550,7 @@ arguments and perform in the same way. @c STARTOFRANGE filspl @cindex files, splitting +@c STARTOFRANGE split @cindex @code{split} utility The @command{split} program splits large text files into smaller pieces. Usage is as follows:@footnote{This is the traditional usage. The @@ -22440,12 +22694,14 @@ which isn't true for EBCDIC systems. @c Exercise: Fix these problems. @c BFD... @c ENDOFRANGE filspl +@c ENDOFRANGE split @node Tee Program @subsection Duplicating Output into Multiple Files @cindex files, multiple@comma{} duplicating output into @cindex output, duplicating into files +@c STARTOFRANGE tee @cindex @code{tee} utility The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies its standard input to its standard output and also duplicates it to the @@ -22560,6 +22816,7 @@ END \ @} @c endfile @end example +@c ENDOFRANGE tee @node Uniq Program @subsection Printing Nonduplicated Lines of Text @@ -22570,6 +22827,7 @@ END \ @cindex printing, unduplicated lines of text @c STARTOFRANGE tpul @cindex text@comma{} printing, unduplicated lines of +@c STARTOFRANGE uniq @cindex @command{uniq} utility The @command{uniq} utility reads sorted lines of data on its standard input, and by default removes duplicate lines. In other words, it only @@ -22821,6 +23079,7 @@ END @{ @end example @c ENDOFRANGE prunt @c ENDOFRANGE tpul +@c ENDOFRANGE uniq @node Wc Program @subsection Counting Things @@ -22837,6 +23096,7 @@ END @{ @cindex characters, counting @c STARTOFRANGE lico @cindex lines, counting +@c STARTOFRANGE wc @cindex @command{wc} utility The @command{wc} (word count) utility counts lines, words, and characters in one or more input files. Its usage is as follows: @@ -23019,6 +23279,7 @@ END @{ @c ENDOFRANGE lico @c ENDOFRANGE woco @c ENDOFRANGE chco +@c ENDOFRANGE wc @c ENDOFRANGE posimawk @node Miscellaneous Programs @@ -23313,6 +23574,7 @@ seconds are necessary: @c STARTOFRANGE chtra @cindex characters, transliterating +@c STARTOFRANGE tr @cindex @command{tr} utility The system @command{tr} utility transliterates characters. For example, it is often used to map uppercase letters into lowercase for further processing: @@ -23461,6 +23723,7 @@ An obvious improvement to this program would be to set up the assumes that the ``from'' and ``to'' lists will never change throughout the lifetime of the program. @c ENDOFRANGE chtra +@c ENDOFRANGE tr @node Labels Program @subsection Printing Mailing Labels @@ -23520,6 +23783,7 @@ that there are two blank lines at the top and two blank lines at the bottom. The @code{END} rule arranges to flush the final page of labels; there may not have been an even multiple of 20 labels in the data: +@c STARTOFRANGE labels @cindex @code{labels.awk} program @example @c file eg/prog/labels.awk @@ -23587,6 +23851,7 @@ END \ @end example @c ENDOFRANGE prml @c ENDOFRANGE mlprint +@c ENDOFRANGE labels @node Word Sorting @subsection Generating Word-Usage Counts @@ -23653,6 +23918,7 @@ to remove punctuation characters. Finally, we solve the third problem by using the system @command{sort} utility to process the output of the @command{awk} script. Here is the new version of the program: +@c STARTOFRANGE wordfreq @cindex @code{wordfreq.awk} program @example @c file eg/prog/wordfreq.awk @@ -23714,6 +23980,7 @@ have true pipes at the command-line (or batch-file) level. See the general operating system documentation for more information on how to use the @command{sort} program. @c ENDOFRANGE worus +@c ENDOFRANGE wordfreq @node History Sorting @subsection Removing Duplicates from Unsorted Text @@ -23743,6 +24010,7 @@ Each element of @code{lines} is a unique command, and the indices of The @code{END} rule simply prints out the lines, in order: @cindex Rakitzis, Byron +@c STARTOFRANGE histsort @cindex @code{histsort.awk} program @example @c file eg/prog/histsort.awk @@ -23785,6 +24053,7 @@ print data[lines[i]], lines[i] This works because @code{data[$0]} is incremented each time a line is seen. @c ENDOFRANGE lidu +@c ENDOFRANGE histsort @node Extract Program @subsection Extracting Programs from Texinfo Source Files @@ -23895,6 +24164,7 @@ The first rule handles calling @code{system()}, checking that a command is given (@code{NF} is at least three) and also checking that the command exits with a zero exit status, signifying OK: +@c STARTOFRANGE extract @cindex @code{extract.awk} program @example @c file eg/prog/extract.awk @@ -24053,6 +24323,7 @@ END @{ @end example @c ENDOFRANGE texse @c ENDOFRANGE fitex +@c ENDOFRANGE extract @node Simple Sed @subsection A Simple Stream Editor @@ -24082,6 +24353,7 @@ additional arguments are treated as data file names to process. If none are provided, the standard input is used: @cindex Brennan, Michael +@c STARTOFRANGE awksed @cindex @command{awksed.awk} program @c @cindex simple stream editor @c @cindex stream editor, simple @@ -24178,6 +24450,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed? Others? @end ignore +@c ENDOFRANGE awksed @node Igawk Program @subsection An Easy Way to Use Library Functions @@ -24321,6 +24594,7 @@ program. The program is as follows: +@c STARTOFRANGE igawk @cindex @code{igawk.sh} program @example @c file eg/prog/igawk.sh @@ -24493,7 +24767,7 @@ BEGIN @{ @c endfile @end example -The stack is initialized with @code{ARGV[1]}, which will be @file{/dev/stdin}. +The stack is initialized with @code{ARGV[1]}, which will be @samp{/dev/stdin}. The main loop comes next. Input lines are read in succession. Lines that do not start with @samp{@@include} are printed verbatim. If the line does start with @samp{@@include}, the file name is in @code{$2}. @@ -24680,10 +24954,12 @@ statements for the desired library functions. @c ENDOFRANGE libfex @c ENDOFRANGE flibex @c ENDOFRANGE awkpex +@c ENDOFRANGE igawk @node Anagram Program @subsection Finding Anagrams From A Dictionary +@cindex anagrams, finding An interesting programming challenge is to search for @dfn{anagrams} in a word list (such as @@ -24703,6 +24979,7 @@ The following program uses arrays of arrays to bring together words with the same signature and array sorting to print the words in sorted order. +@c STARTOFRANGE anagram @cindex @code{anagram.awk} program @example @c file eg/prog/anagram.awk @@ -24810,10 +25087,13 @@ babels beslab babery yabber @dots{} @end example +@c ENDOFRANGE anagram @node Signature Program @subsection And Now For Something Completely Different +@cindex signature program +@cindex Brini, Davide The following program was written by Davide Brini @c (@email{dave_br@@gmx.com}) and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/, @@ -24945,12 +25225,15 @@ It contains the following chapters: @item @ref{Dynamic Extensions}. +@end itemize @end ifdocbook @end ignore @node Advanced Features @chapter Advanced Features of @command{gawk} +@ifset WITH_NETWORK_CHAPTER @cindex advanced features, network connections, See Also networks@comma{} connections +@end ifset @c STARTOFRANGE gawadv @cindex @command{gawk}, features, advanced @c STARTOFRANGE advgaw @@ -25357,9 +25640,9 @@ sorted array traversal is not the default. @subsection Sorting Array Values and Indices with @command{gawk} @cindex arrays, sorting -@cindex @code{asort()} function (@command{gawk}) +@cindexgawkfunc{asort} @cindex @code{asort()} function (@command{gawk}), arrays@comma{} sorting -@cindex @code{asorti()} function (@command{gawk}) +@cindexgawkfunc{asorti} @cindex @code{asorti()} function (@command{gawk}), arrays@comma{} sorting @cindex sort function, arrays, sorting In most @command{awk} implementations, sorting an array requires writing @@ -25454,9 +25737,8 @@ both arrays use the values. @c Document It And Call It A Feature. Sigh. @cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable -@cindex arrays, sorting, @code{IGNORECASE} variable and -@cindex @code{IGNORECASE} variable, array sorting and +@cindex arrays, sorting, and @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, and array sorting functions Because @code{IGNORECASE} affects string comparisons, the value of @code{IGNORECASE} also affects sorting for both @code{asort()} and @code{asorti()}. Note also that the locale's sorting order does @emph{not} @@ -25535,7 +25817,7 @@ open a @emph{two-way} pipe to another process. The second process is termed a @dfn{coprocess}, since it runs in parallel with @command{gawk}. The two-way connection is created using the @samp{|&} operator (borrowed from the Korn shell, @command{ksh}):@footnote{This is very -different from the same operator in the C shell.} +different from the same operator in the C shell and in Bash.} @example do @{ @@ -25625,7 +25907,7 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort} command ensures traditional Unix (ASCII) sorting from @command{sort}. @cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and communications via ptys You may also use pseudo-ttys (ptys) for two-way communication instead of pipes, if your system supports them. This is done on a per-command basis, by setting a special element @@ -25823,52 +26105,60 @@ foo junk @end example -Here is the @file{awkprof.out} that results from running the @command{gawk} -profiler on this program and data (this example also illustrates that @command{awk} -programmers sometimes have to work late): +Here is the @file{awkprof.out} that results from running the +@command{gawk} profiler on this program and data. (This example also +illustrates that @command{awk} programmers sometimes get up very early +in the morning to work.) -@cindex @code{BEGIN} pattern -@cindex @code{END} pattern +@cindex @code{BEGIN} pattern, and profiling +@cindex @code{END} pattern, and profiling @example - # gawk profile, created Sun Aug 13 00:00:15 2000 + # gawk profile, created Thu Feb 27 05:16:21 2014 - # BEGIN block(s) + # BEGIN block(s) - BEGIN @{ - 1 print "First BEGIN rule" - 1 print "Second BEGIN rule" - @} + BEGIN @{ + 1 print "First BEGIN rule" + @} - # Rule(s) + BEGIN @{ + 1 print "Second BEGIN rule" + @} - 5 /foo/ @{ # 2 - 2 print "matched /foo/, gosh" - 6 for (i = 1; i <= 3; i++) @{ - 6 sing() - @} - @} + # Rule(s) - 5 @{ - 5 if (/foo/) @{ # 2 - 2 print "if is true" - 3 @} else @{ - 3 print "else is true" - @} - @} + 5 /foo/ @{ # 2 + 2 print "matched /foo/, gosh" + 6 for (i = 1; i <= 3; i++) @{ + 6 sing() + @} + @} - # END block(s) + 5 @{ + 5 if (/foo/) @{ # 2 + 2 print "if is true" + 3 @} else @{ + 3 print "else is true" + @} + @} - END @{ - 1 print "First END rule" - 1 print "Second END rule" - @} + # END block(s) - # Functions, listed alphabetically + END @{ + 1 print "First END rule" + @} - 6 function sing(dummy) - @{ - 6 print "I gotta be me!" - @} + END @{ + 1 print "Second END rule" + @} + + + # Functions, listed alphabetically + + 6 function sing(dummy) + @{ + 6 print "I gotta be me!" + @} @end example This example illustrates many of the basic features of profiling output. @@ -25876,15 +26166,16 @@ They are as follows: @itemize @bullet @item -The program is printed in the order @code{BEGIN} rule, -@code{BEGINFILE} rule, +The program is printed in the order @code{BEGIN} rules, +@code{BEGINFILE} rules, pattern/action rules, -@code{ENDFILE} rule, @code{END} rule and functions, listed +@code{ENDFILE} rules, @code{END} rules and functions, listed alphabetically. -Multiple @code{BEGIN} and @code{END} rules are merged together, -as are multiple @code{BEGINFILE} and @code{ENDFILE} rules. +Multiple @code{BEGIN} and @code{END} rules retain their +separate identities, as do +multiple @code{BEGINFILE} and @code{ENDFILE} rules. -@cindex patterns, counts +@cindex patterns, counts, in a profile @item Pattern-action rules have two counts. The first count, to the left of the rule, shows how many times @@ -25904,7 +26195,7 @@ is a count showing how many times the condition was true. The count for the @code{else} indicates how many times the test failed. -@cindex loops, count for header +@cindex loops, count for header, in a profile @item The count for a loop header (such as @code{for} or @code{while}) shows how many times the loop test was executed. @@ -25912,8 +26203,8 @@ or @code{while}) shows how many times the loop test was executed. statement in a rule to determine how many times the rule was executed. If the first statement is a loop, the count is misleading.) -@cindex functions, user-defined, counts -@cindex user-defined, functions, counts +@cindex functions, user-defined, counts, in a profile +@cindex user-defined, functions, counts, in a profile @item For user-defined functions, the count next to the @code{function} keyword indicates how many times the function was called. @@ -25927,8 +26218,8 @@ The layout uses ``K&R'' style with TABs. Braces are used everywhere, even when the body of an @code{if}, @code{else}, or loop is only a single statement. -@cindex @code{()} (parentheses) -@cindex parentheses @code{()} +@cindex @code{()} (parentheses), in a profile +@cindex parentheses @code{()}, in a profile @item Parentheses are used only where needed, as indicated by the structure of the program and the precedence rules. @@ -25963,8 +26254,8 @@ typed when you wrote it. This is because @command{gawk} creates the profiled version by ``pretty printing'' its internal representation of the program. The advantage to this is that @command{gawk} can produce a standard representation. The disadvantage is that all source-code -comments are lost, as are the distinctions among multiple @code{BEGIN}, -@code{END}, @code{BEGINFILE}, and @code{ENDFILE} rules. Also, things such as: +comments are lost. +Also, things such as: @example /foo/ @@ -25984,6 +26275,7 @@ which is correct, but possibly surprising. @cindex profiling @command{awk} programs, dynamically @cindex @command{gawk} program, dynamic profiling +@cindex dynamic profiling Besides creating profiles when a program has completed, @command{gawk} can produce a profile while it is running. This is useful if your @command{awk} program goes into an @@ -25997,9 +26289,9 @@ $ @kbd{gawk --profile -f myprog &} @end example @cindex @command{kill} command@comma{} dynamic profiling -@cindex @code{USR1} signal -@cindex @code{SIGUSR1} signal -@cindex signals, @code{USR1}/@code{SIGUSR1} +@cindex @code{USR1} signal, for dynamic profiling +@cindex @code{SIGUSR1} signal, for dynamic profiling +@cindex signals, @code{USR1}/@code{SIGUSR1}, for profiling @noindent The shell prints a job number and process ID number; in this case, 13992. Use the @command{kill} command to send the @code{USR1} signal @@ -26030,9 +26322,9 @@ You may send @command{gawk} the @code{USR1} signal as many times as you like. Each time, the profile and function call trace are appended to the output profile file. -@cindex @code{HUP} signal -@cindex @code{SIGHUP} signal -@cindex signals, @code{HUP}/@code{SIGHUP} +@cindex @code{HUP} signal, for dynamic profiling +@cindex @code{SIGHUP} signal, for dynamic profiling +@cindex signals, @code{HUP}/@code{SIGHUP}, for profiling If you use the @code{HUP} signal instead of the @code{USR1} signal, @command{gawk} produces the profile and the function call trace and then exits. @@ -26054,6 +26346,11 @@ keyboard. The @code{INT} signal is generated by the Finally, @command{gawk} also accepts another option, @option{--pretty-print}. When called this way, @command{gawk} ``pretty prints'' the program into @file{awkprof.out}, without any execution counts. + +@quotation NOTE +The @option{--pretty-print} option still runs your program. +This will change in the next major release. +@end quotation @c ENDOFRANGE advgaw @c ENDOFRANGE gawadv @c ENDOFRANGE awkp @@ -26165,6 +26462,7 @@ lookup of the translations. @cindex @code{.po} files @cindex files, @code{.po} +@c STARTOFRANGE portobfi @cindex portable object files @cindex files, portable object @item @@ -26176,6 +26474,7 @@ For example, there might be a @file{fr.po} for a French translation. @cindex @code{.gmo} files @cindex files, @code{.gmo} @cindex message object files +@c STARTOFRANGE portmsgfi @cindex files, message object @item Each language's @file{.po} file is converted into a binary @@ -26323,7 +26622,7 @@ String constants marked with a leading underscore are candidates for translation at runtime. String constants without a leading underscore are not translated. -@cindex @code{dcgettext()} function (@command{gawk}) +@cindexgawkfunc{dcgettext} @item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the translation of @var{string} in text domain @var{domain} for locale category @var{category}. @@ -26349,7 +26648,7 @@ chosen to be simple and to allow for reasonable @command{awk}-style default arguments. @end quotation -@cindex @code{dcngettext()} function (@command{gawk}) +@cindexgawkfunc{dcngettext} @item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @@ -26365,7 +26664,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app @cindex files, @code{.gmo}, specifying directory of @cindex message object files, specifying directory of @cindex files, message object, specifying directory of -@cindex @code{bindtextdomain()} function (@command{gawk}) +@cindexgawkfunc{bindtextdomain} @item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]}) Change the directory in which @code{gettext} looks for @file{.gmo} files, in case they @@ -26467,7 +26766,7 @@ and use translations from @command{awk}. @cindex portable object files @cindex files, portable object Once a program's translatable strings have been marked, they must -be extracted to create the initial @file{.po} file. +be extracted to create the initial @file{.pot} file. As part of translation, it is often helpful to rearrange the order in which arguments to @code{printf} are output. @@ -26516,6 +26815,8 @@ second argument to @code{dcngettext()}.@footnote{The @xref{I18N Example}, for the full list of steps to go through to create and test translations for @command{guide}. +@c ENDOFRANGE portobfi +@c ENDOFRANGE portmsgfi @node Printf Ordering @subsection Rearranging @code{printf} Arguments @@ -26562,7 +26863,7 @@ example, @samp{string} is the first argument and @samp{length(string)} is the se @example $ @kbd{gawk 'BEGIN @{} > @kbd{string = "Dont Panic"} -> @kbd{printf _"%2$d characters live in \"%1$s\"\n",} +> @kbd{printf "%2$d characters live in \"%1$s\"\n",} > @kbd{string, length(string)} > @kbd{@}'} @print{} 10 characters live in "Dont Panic" @@ -26596,7 +26897,7 @@ This is somewhat counterintuitive. and those with positional specifiers in the same string: @example -$ @kbd{gawk 'BEGIN @{ printf _"%d %3$s\n", 1, 2, "hi" @}'} +$ @kbd{gawk 'BEGIN @{ printf "%d %3$s\n", 1, 2, "hi" @}'} @error{} gawk: cmd. line:1: fatal: must use `count$' on all formats or none @end example @@ -26937,6 +27238,7 @@ The following list defines terms used throughout the rest of this @value{CHAPTER}. @table @dfn +@cindex stack frame @item Stack Frame Programs generally call functions during the course of their execution. One function can call another, or a function can call itself (recursion). @@ -26958,6 +27260,7 @@ invoked. Commands that print the call stack print information about each stack frame (as detailed later on). @item Breakpoint +@cindex breakpoint During debugging, you often wish to let the program run until it reaches a certain point, and then continue execution from there one statement (or instruction) at a time. The way to do this is to set @@ -26967,6 +27270,7 @@ take over control of the program's execution. You can add and remove as many breakpoints as you like. @item Watchpoint +@cindex watchpoint A watchpoint is similar to a breakpoint. The difference is that breakpoints are oriented around the code: stop when a certain point in the code is reached. A watchpoint, however, specifies that program execution @@ -26998,6 +27302,7 @@ by the higher-level @command{awk} commands. @node Sample Debugging Session @section Sample Debugging Session +@cindex sample debugging session In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample debugging session. We will use the @command{awk} implementation of the @@ -27011,13 +27316,16 @@ as our example. @node Debugger Invocation @subsection How to Start the Debugger +@cindex starting the debugger +@cindex debugger, how to start -Starting the debugger is almost exactly like running @command{awk}, except you have to -pass an additional option @option{--debug} or the corresponding short option @option{-D}. -The file(s) containing the program and any supporting code are given on the command -line as arguments to one or more @option{-f} options. (@command{gawk} is not designed -to debug command-line programs, only programs contained in files.) In our case, -we invoke the debugger like this: +Starting the debugger is almost exactly like running @command{gawk}, +except you have to pass an additional option @option{--debug} or the +corresponding short option @option{-D}. The file(s) containing the +program and any supporting code are given on the command line as arguments +to one or more @option{-f} options. (@command{gawk} is not designed +to debug command-line programs, only programs contained in files.) +In our case, we invoke the debugger like this: @example $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk inputfile} @@ -27150,7 +27458,7 @@ gawk> @kbd{p NR} @noindent So we can see that @code{are_equal()} was only called for the second record -of the file. Of course, this is because our program contained a rule for +of the file. Of course, this is because our program contains a rule for @samp{NR == 1}: @example @@ -27350,21 +27658,24 @@ controlling breakpoints are: @cindex debugger commands, @code{break} @cindex @code{break} debugger command @cindex @code{b} debugger command (alias for @code{break}) +@cindex set breakpoint +@cindex breakpoint, setting @item @code{break} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}] @itemx @code{b} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}] Without any argument, set a breakpoint at the next instruction to be executed in the selected stack frame. Arguments can be one of the following: +@c @asis for docbook @c nested table -@table @var -@item n +@table @asis +@item @var{n} Set a breakpoint at line number @var{n} in the current source file. -@item filename@code{:}n +@item @var{filename}@code{:}@var{n} Set a breakpoint at line number @var{n} in source file @var{filename}. -@item function +@item @var{function} Set a breakpoint at entry to (the first instruction of) function @var{function}. @end table @@ -27380,6 +27691,8 @@ it continues executing the program. @cindex debugger commands, @code{clear} @cindex @code{clear} debugger command +@cindex delete breakpoint at location +@cindex breakpoint at location, how to delete @item @code{clear} [[@var{filename}@code{:}]@var{n} | @var{function}] Without any argument, delete any breakpoint at the next instruction to be executed in the selected stack frame. If the program stops at @@ -27387,19 +27700,20 @@ a breakpoint, this deletes that breakpoint so that the program does not stop at that location again. Arguments can be one of the following: @c nested table -@table @var -@item n +@table @asis +@item @var{n} Delete breakpoint(s) set at line number @var{n} in the current source file. -@item filename@code{:}n +@item @var{filename}@code{:}@var{n} Delete breakpoint(s) set at line number @var{n} in source file @var{filename}. -@item function +@item @var{function} Delete breakpoint(s) set at entry to function @var{function}. @end table @cindex debugger commands, @code{condition} @cindex @code{condition} debugger command +@cindex breakpoint condition @item @code{condition} @var{n} @code{"@var{expression}"} Add a condition to existing breakpoint or watchpoint @var{n}. The condition is an @command{awk} expression that the debugger evaluates @@ -27413,6 +27727,8 @@ watchpoint is made unconditional. @cindex debugger commands, @code{delete} @cindex @code{delete} debugger command @cindex @code{d} debugger command (alias for @code{delete}) +@cindex delete breakpoint by number +@cindex breakpoint, delete by number @item @code{delete} [@var{n1 n2} @dots{}] [@var{n}--@var{m}] @itemx @code{d} [@var{n1 n2} @dots{}] [@var{n}--@var{m}] Delete specified breakpoints or a range of breakpoints. Deletes @@ -27420,6 +27736,8 @@ all defined breakpoints if no argument is supplied. @cindex debugger commands, @code{disable} @cindex @code{disable} debugger command +@cindex disable breakpoint +@cindex breakpoint, how to disable or enable @item @code{disable} [@var{n1 n2} @dots{} | @var{n}--@var{m}] Disable specified breakpoints or a range of breakpoints. Without any argument, disables all breakpoints. @@ -27428,6 +27746,7 @@ any argument, disables all breakpoints. @cindex debugger commands, @code{enable} @cindex @code{enable} debugger command @cindex @code{e} debugger command (alias for @code{enable}) +@cindex enable breakpoint @item @code{enable} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}] @itemx @code{e} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}] Enable specified breakpoints or a range of breakpoints. Without @@ -27447,6 +27766,7 @@ the program stops at the breakpoint. @cindex debugger commands, @code{ignore} @cindex @code{ignore} debugger command +@cindex ignore breakpoint @item @code{ignore} @var{n} @var{count} Ignore breakpoint number @var{n} the next @var{count} times it is hit. @@ -27455,6 +27775,7 @@ hit. @cindex debugger commands, @code{tbreak} @cindex @code{tbreak} debugger command @cindex @code{t} debugger command (alias for @code{tbreak}) +@cindex temporary breakpoint @item @code{tbreak} [[@var{filename}@code{:}]@var{n} | @var{function}] @itemx @code{t} [[@var{filename}@code{:}]@var{n} | @var{function}] Set a temporary breakpoint (enabled for only one stop). @@ -27475,6 +27796,8 @@ execution of the program than we saw in our earlier example: @cindex @code{silent} debugger command @cindex debugger commands, @code{end} @cindex @code{end} debugger command +@cindex breakpoint commands +@cindex commands to execute at breakpoint @item @code{commands} [@var{n}] @itemx @code{silent} @itemx @dots{} @@ -27502,6 +27825,7 @@ gawk> @cindex debugger commands, @code{c} (@code{continue}) @cindex debugger commands, @code{continue} +@cindex continue program, in debugger @item @code{continue} [@var{count}] @itemx @code{c} [@var{count}] Resume program execution. If continued from a breakpoint and @var{count} is @@ -27518,6 +27842,7 @@ Print the returned value. @cindex debugger commands, @code{next} @cindex @code{next} debugger command @cindex @code{n} debugger command (alias for @code{next}) +@cindex single-step execution, in the debugger @item @code{next} [@var{count}] @itemx @code{n} [@var{count}] Continue execution to the next source line, stepping over function calls. @@ -27612,6 +27937,7 @@ items on the list. @cindex debugger commands, @code{eval} @cindex @code{eval} debugger command +@cindex evaluate expressions, in debugger @item @code{eval "@var{awk statements}"} Evaluate @var{awk statements} in the context of the running program. You can do anything that an @command{awk} program would do: assign @@ -27629,6 +27955,7 @@ parameters defined by the program. @cindex debugger commands, @code{print} @cindex @code{print} debugger command @cindex @code{p} debugger command (alias for @code{print}) +@cindex print variables, in debugger @item @code{print} @var{var1}[@code{,} @var{var2} @dots{}] @itemx @code{p} @var{var1}[@code{,} @var{var2} @dots{}] Print the value of a @command{gawk} variable or field. @@ -27662,6 +27989,7 @@ No newline is printed unless one is specified. @cindex debugger commands, @code{set} @cindex @code{set} debugger command +@cindex assign values to variables, in debugger @item @code{set} @var{var}@code{=}@var{value} Assign a constant (number or string) value to an @command{awk} variable or field. @@ -27674,6 +28002,7 @@ You can also set special @command{awk} variables, such as @code{FS}, @cindex debugger commands, @code{watch} @cindex @code{watch} debugger command @cindex @code{w} debugger command (alias for @code{watch}) +@cindex set watchpoint @item @code{watch} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}] @itemx @code{w} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}] Add variable @var{var} (or field @code{$@var{n}}) to the watch list. @@ -27690,12 +28019,14 @@ then the debugger stops execution and prompts for a command. Otherwise, @cindex debugger commands, @code{undisplay} @cindex @code{undisplay} debugger command +@cindex stop automatic display, in debugger @item @code{undisplay} [@var{n}] Remove item number @var{n} (or all items, if no argument) from the automatic display list. @cindex debugger commands, @code{unwatch} @cindex @code{unwatch} debugger command +@cindex delete watchpoint @item @code{unwatch} [@var{n}] Remove item number @var{n} (or all items, if no argument) from the watch list. @@ -27716,6 +28047,8 @@ functions which called the one you are in. The commands for doing this are: @cindex debugger commands, @code{backtrace} @cindex @code{backtrace} debugger command @cindex @code{bt} debugger command (alias for @code{backtrace}) +@cindex call stack, display in debugger +@cindex traceback, display in debugger @item @code{backtrace} [@var{count}] @itemx @code{bt} [@var{count}] Print a backtrace of all function calls (stack frames), or innermost @var{count} @@ -27769,25 +28102,32 @@ The value for @var{what} should be one of the following: @c nested table @table @code @item args +@cindex show function arguments, in debugger Arguments of the selected frame. @item break +@cindex show breakpoints List all currently set breakpoints. @item display +@cindex automatic displays, in debugger List all items in the automatic display list. @item frame +@cindex describe call stack frame, in debugger Description of the selected stack frame. @item functions +@cindex list function definitions, in debugger List all function definitions including source file names and line numbers. @item locals +@cindex show local variables, in debugger Local variables of the selected frame. @item source +@cindex show name of current source file, in debugger The name of the current source file. Each time the program stops, the current source file is the file containing the current instruction. When the debugger first starts, the current source file is the first file @@ -27796,12 +28136,15 @@ included via the @option{-f} option. The be used at any time to change the current source. @item sources +@cindex show all source files, in debugger List all program sources. @item variables +@cindex list all global variables, in debugger List all global variables. @item watch +@cindex show watchpoints List all items in the watch list. @end table @end table @@ -27815,6 +28158,8 @@ from a file. The commands are: @cindex debugger commands, @code{option} @cindex @code{option} debugger command @cindex @code{o} debugger command (alias for @code{option}) +@cindex display debugger options +@cindex debugger options @item @code{option} [@var{name}[@code{=}@var{value}]] @itemx @code{o} [@var{name}[@code{=}@var{value}]] Without an argument, display the available debugger options @@ -27826,30 +28171,37 @@ The available options are: @c nested table @table @code @item history_size +@cindex debugger history size The maximum number of lines to keep in the history file @file{./.gawk_history}. The default is 100. @item listsize +@cindex debugger default list amount The number of lines that @code{list} prints. The default is 15. @item outfile +@cindex redirect @command{gawk} output, in debugger Send @command{gawk} output to a file; debugger output still goes to standard output. An empty string (@code{""}) resets output to standard output. @item prompt +@cindex debugger prompt The debugger prompt. The default is @samp{@w{gawk> }}. @item save_history @r{[}on @r{|} off@r{]} +@cindex debugger history file Save command history to file @file{./.gawk_history}. The default is @code{on}. @item save_options @r{[}on @r{|} off@r{]} +@cindex save debugger options Save current options to file @file{./.gawkrc} upon exit. The default is @code{on}. Options are read back in to the next session upon startup. @item trace @r{[}on @r{|} off@r{]} +@cindex instruction tracing, in debugger Turn instruction tracing on or off. The default is @code{off}. @end table @@ -27858,6 +28210,7 @@ Save the commands from the current session to the given file name, so that they can be replayed using the @command{source} command. @item @code{source} @var{filename} +@cindex debugger, read commands from a file Run command(s) from a file; an error in any command does not terminate execution of subsequent commands. Comments (lines starting with @samp{#}) are allowed in a command file. @@ -27956,8 +28309,8 @@ about the command @var{command}. @cindex debugger commands, @code{list} @cindex @code{list} debugger command @cindex @code{l} debugger command (alias for @code{list}) -@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}] -@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}] +@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}] +@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}] Print the specified lines (default 15) from the current source file or the file named @var{filename}. The possible arguments to @code{list} are as follows: @@ -27977,7 +28330,7 @@ Print lines centered around line number @var{n}. @item @var{n}--@var{m} Print lines from @var{n} to @var{m}. -@item @var{filename@code{:}n} +@item @var{filename}@code{:}@var{n} Print lines centered around line number @var{n} in source file @var{filename}. This command may change the current source file. @@ -27990,6 +28343,7 @@ function @var{function}. This command may change the current source file. @cindex debugger commands, @code{quit} @cindex @code{quit} debugger command @cindex @code{q} debugger command (alias for @code{quit}) +@cindex exit the debugger @item @code{quit} @itemx @code{q} Exit the debugger. Debugging is great fun, but sometimes we all have @@ -28013,6 +28367,8 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while @node Readline Support @section Readline Support +@cindex command completion, in debugger +@cindex history expansion, in debugger If @command{gawk} is compiled with the @code{readline} library, you can take advantage of that library's command completion and history expansion @@ -28100,9 +28456,7 @@ be added, and of course feel free to try to add them yourself! @cindex arbitrary precision @cindex multiple precision @cindex infinite precision -@cindex floating-point numbers, arbitrary precision -@cindex MPFR -@cindex GMP +@cindex floating-point, numbers@comma{} arbitrary precision @cindex Knuth, Donald @quotation @@ -28446,23 +28800,38 @@ then the answer is @math{2^{53}}. @end iftex @ifnottex +@ifnotdocbook 2^53. +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript>. @c +@end docbook The next representable number is the even number @iftex @math{2^{53} + 2}, @end iftex @ifnottex +@ifnotdocbook 2^53 + 2, +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript> + 2, @c +@end docbook meaning it is unlikely that you will be able to make @command{gawk} print @iftex @math{2^{53} + 1} @end iftex @ifnottex +@ifnotdocbook 2^53 + 1 +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript> + 1 @c +@end docbook in integer format. The range of integers exactly representable by a 64-bit double is @@ -28470,8 +28839,13 @@ is @math{[-2^{53}, 2^{53}]}. @end iftex @ifnottex +@ifnotdocbook [@minus{}2^53, 2^53]. +@end ifnotdocbook @end ifnottex +@docbook +[−2<superscript>53</superscript>, 2<superscript>53</superscript>]. @c +@end docbook If you ever see an integer outside this range in @command{awk} using 64-bit doubles, you have reason to be very suspicious about the accuracy of the output. Here is a simple program with erroneous output: @@ -28695,8 +29069,13 @@ number is then @math{s @cdot 2^e}. @end iftex @ifnottex +@ifnotdocbook @var{s * 2^e}. +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>s ⋅ 2<superscript>e</superscript></emphasis>. @c +@end docbook The first bit of a non-zero binary significand is always one, so the significand in an IEEE-754 format only includes the fractional part, leaving the leading one implicit. @@ -28866,6 +29245,8 @@ when you change the rounding mode. @node Gawk and MPFR @section @command{gawk} + MPFR = Powerful Arithmetic +@cindex MPFR +@cindex GMP The rest of this @value{CHAPTER} describes how to use the arbitrary precision (also known as @dfn{multiple precision} or @dfn{infinite precision}) numeric @@ -28878,12 +29259,17 @@ The easiest way to find out is to look at the output of the following command: @example -$ @kbd{gawk --version} -@print{} GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) -@print{} Copyright (C) 1989, 1991-2013 Free Software Foundation. +$ @kbd{./gawk --version} +@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) +@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation. @dots{} @end example +@noindent +(You may see different version numbers than what's shown here. That's OK; +what's important is to see that GNU MPFR and GNU MP are listed in +the output.) + @command{gawk} uses the @uref{http://www.mpfr.org, GNU MPFR} and @@ -28937,8 +29323,13 @@ numbers are not implemented.} (@math{emax = 2^{30} - 1, emin = -emax}) @end iftex @ifnottex +@ifnotdocbook (@var{emax} = 2^30 @minus{} 1, @var{emin} = @minus{}@var{emax}) +@end ifnotdocbook @end ifnottex +@docbook +(<emphasis>emax</emphasis> = 2<superscript>30</superscript> − 1, <emphasis>emin</emphasis> = −<emphasis>emax</emphasis>) @c +@end docbook for all floating-point contexts. There is no explicit mechanism to adjust the exponent range. MPFR does not implement subnormal numbers by default, @@ -28970,6 +29361,7 @@ your program. @node Setting Precision @subsection Setting the Working Precision @cindex @code{PREC} variable +@cindex setting working precision @command{gawk} uses a global working precision; it does not keep track of the precision or accuracy of individual numbers. Performing an arithmetic @@ -29009,8 +29401,15 @@ formula: @math{prec = 3.322 @cdot dps} @end iftex @ifnottex +@ifnotdocbook @var{prec} = 3.322 * @var{dps} +@end ifnotdocbook @end ifnottex +@docbook +<para> +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis> @c +</para> +@end docbook @noindent Here, @var{prec} denotes the binary precision @@ -29045,6 +29444,7 @@ issues that occur because numbers are stored internally in binary. @node Setting Rounding Mode @subsection Setting the Rounding Mode @cindex @code{ROUNDMODE} variable +@cindex setting rounding mode The @code{ROUNDMODE} variable provides program level control over the rounding mode. @@ -29112,6 +29512,7 @@ In the first case, the number is stored with the default precision of 53 bits. @node Changing Precision @subsection Changing the Precision of a Number +@cindex changing precision of a number @cindex Laurie, Dirk @quotation @@ -29229,7 +29630,8 @@ the problem at hand is often the correct approach in such situations. @node Arbitrary Precision Integers @section Arbitrary Precision Integer Arithmetic with @command{gawk} -@cindex integer, arbitrary precision +@cindex integers, arbitrary precision +@cindex arbitrary precision integers If one of the options @option{--bignum} or @option{-M} is specified, @command{gawk} performs all @@ -29243,8 +29645,13 @@ For example, the following computes @math{5^{4^{3^{2}}}}, @end iftex @ifnottex +@ifnotdocbook 5^4^3^2, +@end ifnotdocbook @end ifnottex +@docbook +5<superscript>4<superscript>3<superscript>2</superscript></superscript></superscript>, @c +@end docbook the result of which is beyond the limits of ordinary @command{gawk} numbers: @@ -29266,9 +29673,16 @@ floating-point values instead, the precision needed for correct output would be @math{3.322 @cdot 183231}, @end iftex @ifnottex +@ifnotdocbook @samp{prec = 3.322 * dps}), would be 3.322 x 183231, +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>), +would be +<emphasis>prec</emphasis> = 3.322 ⋅ 183231, @c +@end docbook or 608693. The result from an arithmetic operation with an integer and a floating-point value @@ -29317,7 +29731,7 @@ to begin with: gawk -M 'BEGIN @{ n = 13.0; print n % 2.0 @}' @end example -Note that for the particular example above, there is likely best +Note that for the particular example above, it is likely best to just use the following: @example @@ -29326,6 +29740,7 @@ gawk -M 'BEGIN @{ n = 13; print n % 2 @}' @node Dynamic Extensions @chapter Writing Extensions for @command{gawk} +@cindex dynamically loaded extensions It is possible to add new functions written in C or C++ to @command{gawk} using dynamically loaded libraries. This facility is available on systems @@ -29360,6 +29775,7 @@ When @option{--sandbox} is specified, extensions are disabled @node Extension Intro @section Introduction +@cindex plug-in An @dfn{extension} (sometimes called a @dfn{plug-in}) is a piece of external compiled code that @command{gawk} can load at runtime to provide additional functionality, over and above the built-in capabilities @@ -29405,8 +29821,14 @@ Communication between @command{gawk} and an extension is two-way. First, when an extension is loaded, it is passed a pointer to a @code{struct} whose fields are function pointers. +@ifnotdocbook This is shown in @ref{load-extension}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="load-extension"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,load-extension @caption{Loading The Extension} @c FIXME: One day, it should not be necessary to have two cases, @@ -29419,13 +29841,27 @@ This is shown in @ref{load-extension}. @center @image{api-figure1, , , Loading the extension} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="load-extension"> +<title>Loading the extension</title> +<graphic fileref="api-figure1.eps"/> +</figure> +@end docbook The extension can call functions inside @command{gawk} through these function pointers, at runtime, without needing (link-time) access to @command{gawk}'s symbols. One of these function pointers is to a function for ``registering'' new built-in functions. +@ifnotdocbook This is shown in @ref{load-new-function}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="load-new-function"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,load-new-function @caption{Loading The New Function} @ifinfo @@ -29435,14 +29871,28 @@ This is shown in @ref{load-new-function}. @center @image{api-figure2, , , Loading the new function} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="load-new-function"> +<title>Loading the new function</title> +<graphic fileref="api-figure2.eps"/> +</figure> +@end docbook In the other direction, the extension registers its new functions with @command{gawk} by passing function pointers to the functions that provide the new feature (@code{do_chdir()}, for example). @command{gawk} associates the function pointer with a name and can then call it, using a defined calling convention. +@ifnotdocbook This is shown in @ref{call-new-function}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="call-new-function"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,call-new-function @caption{Calling The New Function} @ifinfo @@ -29452,6 +29902,14 @@ This is shown in @ref{call-new-function}. @center @image{api-figure3, , , Calling the new function} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="call-new-function"> +<title>Calling The New Function</title> +<graphic fileref="api-figure3.eps"/> +</figure> +@end docbook The @code{do_@var{xxx}()} function, in turn, then uses the function pointers in the API @code{struct} to do its work, such as updating @@ -29488,6 +29946,7 @@ happen, but we all know how @emph{that} goes.) @node Extension API Description @section API Description +@cindex extension API This (rather large) @value{SECTION} describes the API in detail. @@ -29495,6 +29954,7 @@ This (rather large) @value{SECTION} describes the API in detail. * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with @command{gawk}. @@ -29550,6 +30010,9 @@ Symbol table access: retrieving a global variable, creating one, or changing one. @item +Allocating, reallocating, and releasing memory. + +@item Creating and releasing cached values; this provides an efficient way to use values for multiple variables and can be a big performance win. @@ -29588,10 +30051,8 @@ corresponding standard header file @emph{before} including @file{gawkapi.h}: @item @code{EOF} @tab @code{<stdio.h>} @item @code{FILE} @tab @code{<stdio.h>} @item @code{NULL} @tab @code{<stddef.h>} -@item @code{malloc()} @tab @code{<stdlib.h>} @item @code{memcpy()} @tab @code{<string.h>} @item @code{memset()} @tab @code{<string.h>} -@item @code{realloc()} @tab @code{<stdlib.h>} @item @code{size_t} @tab @code{<sys/types.h>} @item @code{struct stat} @tab @code{<sys/stat.h>} @end multitable @@ -29621,8 +30082,9 @@ does not support this keyword, you should either place All pointers filled in by @command{gawk} are to memory managed by @command{gawk} and should be treated by the extension as read-only. Memory for @emph{all} strings passed into @command{gawk} -from the extension @emph{must} come from @code{malloc()} and is managed -by @command{gawk} from then on. +from the extension @emph{must} come from calling the API-provided function +pointers @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}, +and is managed by @command{gawk} from then on. @item The API defines several simple @code{struct}s that map values as seen @@ -29662,6 +30124,8 @@ the macros as if they were functions. @node General Data Types @subsection General Purpose Data Types +@cindex Robbins, Arnold +@cindex Ramey, Chet @quotation @i{I have a true love/hate relationship with unions.} @author Arnold Robbins @@ -29702,7 +30166,8 @@ A simple boolean type. This represents a mutable string. @command{gawk} owns the memory pointed to if it supplied the value. Otherwise, it takes ownership of the memory pointed to. -@strong{Such memory must come from @code{malloc()}!} +@strong{Such memory must come from calling the API-provided function +pointers @code{api_malloc()}, @code{api_calloc()}, or @code{api_realloc()}!} As mentioned earlier, strings are maintained using the current multibyte encoding. @@ -29818,7 +30283,94 @@ print an error message, or reissue the request for the actual value type, as appropriate. This behavior is summarized in @ref{table-value-types-returned}. +@c FIXME: Try to do this with spans... +@ifdocbook +@anchor{table-value-types-returned} +@end ifdocbook +@docbook +<informaltable> +<tgroup cols="2"> + <colspec colwidth="50*"/><colspec colwidth="50*"/> + <thead> + <row><entry></entry><entry><para>Type of Actual Value:</para></entry></row> + </thead> + <tbody> + <row><entry></entry><entry></entry></row> + </tbody> +</tgroup> +<tgroup cols="6"> + <colspec colwidth="16.6*"/> + <colspec colwidth="16.6*"/> + <colspec colwidth="19.8*"/> + <colspec colwidth="15*"/> + <colspec colwidth="15*"/> + <colspec colwidth="16.6*"/> + <thead> + <row> + <entry></entry> + <entry></entry> + <entry><para>String</para></entry> + <entry><para>Number</para></entry> + <entry><para>Array</para></entry> + <entry><para>Undefined</para></entry> + </row> + </thead> + <tbody> + <row> + <entry></entry> + <entry><para><emphasis role="bold">String</emphasis></para></entry> + <entry><para>String</para></entry> + <entry><para>String</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Number</emphasis></para></entry> + <entry><para>Number if can be converted, else false</para></entry> + <entry><para>Number</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry><para><emphasis role="bold">Type</emphasis></para></entry> + <entry><para><emphasis role="bold">Array</emphasis></para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + <entry><para>Array</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry><para><emphasis role="bold">Requested:</emphasis></para></entry> + <entry><para><emphasis role="bold">Scalar</emphasis></para></entry> + <entry><para>Scalar</para></entry> + <entry><para>Scalar</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Undefined</emphasis></para></entry> + <entry><para>String</para></entry> + <entry><para>Number</para></entry> + <entry><para>Array</para></entry> + <entry><para>Undefined</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Value Cookie</emphasis></para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para> + </entry><entry><para>false</para></entry> + </row> + </tbody> +</tgroup> +</informaltable> +@end docbook + @ifnotplaintext +@ifnotdocbook @float Table,table-value-types-returned @caption{Value Types Returned} @multitable @columnfractions .50 .50 @@ -29834,6 +30386,7 @@ value type, as appropriate. This behavior is summarized in @item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false @end multitable @end float +@end ifnotdocbook @end ifnotplaintext @ifplaintext @float Table,table-value-types-returned @@ -29864,45 +30417,46 @@ value type, as appropriate. This behavior is summarized in @end float @end ifplaintext -@node Constructor Functions -@subsection Constructor Functions and Convenience Macros +@node Memory Allocation Functions +@subsection Memory Allocation Functions and Convenience Macros +@cindex allocating memory for extensions +@cindex extensions, allocating memory -The API provides a number of @dfn{constructor} functions for creating -string and numeric values, as well as a number of convenience macros. -This @value{SUBSECTION} presents them all as function prototypes, in -the way that extension code would use them. +The API provides a number of @dfn{memory allocation} functions for +allocating memory that can be passed to @command{gawk}, as well as a number of +convenience macros. @table @code -@item static inline awk_value_t * -@itemx make_const_string(const char *string, size_t length, awk_value_t *result) -This function creates a string value in the @code{awk_value_t} variable -pointed to by @code{result}. It expects @code{string} to be a C string constant -(or other string data), and automatically creates a @emph{copy} of the data -for storage in @code{result}. It returns @code{result}. +@item void *gawk_malloc(size_t size); +Call @command{gawk}-provided @code{api_malloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result) -This function creates a string value in the @code{awk_value_t} variable -pointed to by @code{result}. It expects @code{string} to be a @samp{char *} -value pointing to data previously obtained from @code{malloc()}. The idea here -is that the data is passed directly to @command{gawk}, which assumes -responsibility for it. It returns @code{result}. +@item void *gawk_calloc(size_t nmemb, size_t size); +Call @command{gawk}-provided @code{api_calloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_null_string(awk_value_t *result) -This specialized function creates a null string (the ``undefined'' value) -in the @code{awk_value_t} variable pointed to by @code{result}. -It returns @code{result}. +@item void *gawk_realloc(void *ptr, size_t size); +Call @command{gawk}-provided @code{api_realloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_number(double num, awk_value_t *result) -This function simply creates a numeric value in the @code{awk_value_t} variable -pointed to by @code{result}. +@item void gawk_free(void *ptr); +Call @command{gawk}-provided @code{api_free()} to release storage that was +allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. @end table -Two convenience macros may be used for allocating storage from @code{malloc()} -and @code{realloc()}. If the allocation fails, they cause @command{gawk} to -exit with a fatal error message. They should be used as if they were +The API has to provide these functions because it is possible +for an extension to be compiled and linked against a different +version of the C library than was used for the @command{gawk} +executable.@footnote{This is more common on MS-Windows systems, but +can happen on Unix-like systems as well.} If @command{gawk} were +to use its version of @code{free()} when the memory came from an +unrelated version of @code{malloc()}, unexpected behavior would +likely result. + +Two convenience macros may be used for allocating storage +from the API-provided function pointers @code{api_malloc()} and +@code{api_realloc()}. If the allocation fails, they cause @command{gawk} +to exit with a fatal error message. They should be used as if they were procedure calls that do not return a value. @table @code @@ -29914,7 +30468,7 @@ The arguments to this macro are as follows: The pointer variable to point at the allocated storage. @item type -The type of the pointer variable, used to create a cast for the call to @code{malloc()}. +The type of the pointer variable, used to create a cast for the call to @code{api_malloc()}. @item size The total number of bytes to be allocated. @@ -29938,13 +30492,51 @@ make_malloced_string(message, strlen(message), & result); @end example @item #define erealloc(pointer, type, size, message) @dots{} -This is like @code{emalloc()}, but it calls @code{realloc()}, -instead of @code{malloc()}. +This is like @code{emalloc()}, but it calls @code{api_realloc()}, +instead of @code{api_malloc()}. The arguments are the same as for the @code{emalloc()} macro. @end table +@node Constructor Functions +@subsection Constructor Functions + +The API provides a number of @dfn{constructor} functions for creating +string and numeric values, as well as a number of convenience macros. +This @value{SUBSECTION} presents them all as function prototypes, in +the way that extension code would use them. + +@table @code +@item static inline awk_value_t * +@itemx make_const_string(const char *string, size_t length, awk_value_t *result) +This function creates a string value in the @code{awk_value_t} variable +pointed to by @code{result}. It expects @code{string} to be a C string constant +(or other string data), and automatically creates a @emph{copy} of the data +for storage in @code{result}. It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result) +This function creates a string value in the @code{awk_value_t} variable +pointed to by @code{result}. It expects @code{string} to be a @samp{char *} +value pointing to data previously obtained from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The idea here +is that the data is passed directly to @command{gawk}, which assumes +responsibility for it. It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_null_string(awk_value_t *result) +This specialized function creates a null string (the ``undefined'' value) +in the @code{awk_value_t} variable pointed to by @code{result}. +It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_number(double num, awk_value_t *result) +This function simply creates a numeric value in the @code{awk_value_t} variable +pointed to by @code{result}. +@end table + @node Registration Functions @subsection Registration Functions +@cindex register extension +@cindex extension registration This @value{SECTION} describes the API functions for registering parts of your extension with @command{gawk}. @@ -29989,8 +30581,8 @@ Letter case in function names is significant. This is a pointer to the C function that provides the desired functionality. The function must fill in the result with either a number -or a string. @command{awk} takes ownership of any string memory. -As mentioned earlier, string memory @strong{must} come from @code{malloc()}. +or a string. @command{gawk} takes ownership of any string memory. +As mentioned earlier, string memory @strong{must} come from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The @code{num_actual_args} argument tells the C function how many actual parameters were passed from the calling @command{awk} code. @@ -30066,6 +30658,7 @@ is invoked with the @option{--version} option. @node Input Parsers @subsubsection Customized Input Parsers +@cindex customized input parser By default, @command{gawk} reads text files as its input. It uses the value of @code{RS} to find the end of the record, and then uses @code{FS} @@ -30313,7 +30906,9 @@ Register the input parser pointed to by @code{input_parser} with @node Output Wrappers @subsubsection Customized Output Wrappers +@cindex customized output wrapper +@cindex output wrapper An @dfn{output wrapper} is the mirror image of an input parser. It allows an extension to take over the output to a file opened with the @samp{>} or @samp{>>} I/O redirection operators (@pxref{Redirection}). @@ -30427,6 +31022,7 @@ Register the output wrapper pointed to by @code{output_wrapper} with @node Two-way processors @subsubsection Customized Two-way Processors +@cindex customized two-way processor A @dfn{two-way processor} combines an input parser and an output wrapper for two-way I/O with the @samp{|&} operator (@pxref{Redirection}). It makes identical @@ -30484,6 +31080,8 @@ Register the two-way processor pointed to by @code{two_way_processor} with @node Printing Messages @subsection Printing Messages +@cindex printing messages from extensions +@cindex messages from extensions You can print different kinds of warning messages from your extension, as described below. Note that for these functions, @@ -30557,6 +31155,7 @@ for more information on creating arrays. @node Symbol Table Access @subsection Symbol Table Access +@cindex accessing global variables from extensions Two sets of routines provide access to global variables, and one set allows you to create and release cached values. @@ -30602,6 +31201,13 @@ An extension can look up the value of @command{gawk}'s special variables. However, with the exception of the @code{PROCINFO} array, an extension cannot change any of those variables. +@quotation NOTE +It is possible for the lookup of @code{PROCINFO} to fail. This happens if +the @command{awk} program being run does not reference @code{PROCINFO}; +in this case @command{gawk} doesn't bother to create the array and +populate it. +@end quotation + @node Symbol table by cookie @subsubsection Variable Access and Update by Cookie @@ -30728,7 +31334,7 @@ assign those values to variables using @code{sym_update()} or @code{sym_update_scalar()}, as you like. However, you can understand the point of cached values if you remember that -@emph{every} string value's storage @emph{must} come from @code{malloc()}. +@emph{every} string value's storage @emph{must} come from @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. If you have 20 variables, all of which have the same string value, you must create 20 identical copies of the string.@footnote{Numeric values are clearly less problematic, requiring only a C @code{double} to store.} @@ -30814,6 +31420,7 @@ you should release any cached values that you created, using @node Array Manipulation @subsection Array Manipulation +@cindex array manipulation in extensions The primary data structure@footnote{Okay, the only data structure.} in @command{awk} is the associative array (@pxref{Arrays}). @@ -30925,7 +31532,7 @@ requires that you understand how such values are converted to strings (@pxref{Conversion}); thus using integral values is safest. As with @emph{all} strings passed into @code{gawk} from an extension, -the string value of @code{index} must come from @code{malloc()}, and +the string value of @code{index} must come from the API-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()} and @command{gawk} releases the storage. @item awk_bool_t set_array_element(awk_array_t a_cookie, @@ -31393,6 +32000,8 @@ information about how @command{gawk} was invoked. @node Extension Versioning @subsubsection API Version Constants and Variables +@cindex API version +@cindex extension API version The API provides both a ``major'' and a ``minor'' version number. The API versions are available at compile time as constants: @@ -31446,6 +32055,8 @@ provided in @file{gawkapi.h} (discussed later, in @node Extension API Informational Variables @subsubsection Informational Variables +@cindex API informational variables +@cindex extension API informational variables The API provides access to several variables that describe whether the corresponding command-line options were enabled when @@ -31591,6 +32202,8 @@ the version string with @command{gawk}. @node Finding Extensions @section How @command{gawk} Finds Extensions +@cindex extension search path +@cindex finding extensions Compiled extensions have to be installed in a directory where @command{gawk} can find them. If @command{gawk} is configured and @@ -31601,6 +32214,7 @@ path with a list of directories to search for compiled extensions. @node Extension Example @section Example: Some File Functions +@cindex extension example @quotation @i{No matter where you go, there you are.} @@ -32059,7 +32673,7 @@ do_stat(int nargs, awk_value_t *result) awk_array_t array; int ret; struct stat sbuf; - /* default is stat() */ + /* default is lstat() */ int (*statfunc)(const char *path, struct stat *sbuf) = lstat; assert(result != NULL); @@ -32245,6 +32859,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk} @node Extension Samples @section The Sample Extensions In The @command{gawk} Distribution +@cindex extensions distributed with @command{gawk} This @value{SECTION} provides brief overviews of the sample extensions that come in the @command{gawk} distribution. Some of them are intended @@ -32287,7 +32902,7 @@ upon success or less than zero upon error. In the latter case it updates @code{ERRNO}. @cindex @code{stat()} extension function -@item result = stat("/some/path", statdata [, follow]) +@item result = stat("/some/path", statdata @r{[}, follow@r{]}) The @code{stat()} function provides a hook into the @code{stat()} system call. It returns zero upon success or less than zero upon error. @@ -32497,19 +33112,23 @@ See @file{test/fts.awk} in the @command{gawk} distribution for an example. @node Extension Sample Fnmatch @subsection Interface To @code{fnmatch()} -@cindex @code{fnmatch()} extension function This extension provides an interface to the C library @code{fnmatch()} function. The usage is: -@example -@@load "fnmatch" +@table @code +@item @@load "fnmatch" +This is how you load the extension. -result = fnmatch(pattern, string, flags) -@end example +@cindex @code{fnmatch()} extension function +@item result = fnmatch(pattern, string, flags) +The return value is zero on success, @code{FNM_NOMATCH} +if the string did not match the pattern, or +a different non-zero value if an error occurred. +@end table -The @code{fnmatch} extension adds a single function named -@code{fnmatch()}, one constant (@code{FNM_NOMATCH}), and an array of -flag values named @code{FNM}. +Besides the @code{fnmatch()} function, the @code{fnmatch} extension +adds one constant (@code{FNM_NOMATCH}), and an array of flag values +named @code{FNM}. The arguments to @code{fnmatch()} are: @@ -32525,10 +33144,6 @@ Either zero, or the bitwise OR of one or more of the flags in the @code{FNM} array. @end table -The return value is zero on success, @code{FNM_NOMATCH} -if the string did not match the pattern, or -a different non-zero value if an error occurred. - The flags are follows: @multitable @columnfractions .25 .75 @@ -32572,15 +33187,15 @@ This is how you load the extension. @cindex @code{fork()} extension function @item pid = fork() -This function creates a new process. The return value is the zero in the -child and the process-id number of the child in the parent, or @minus{}1 +This function creates a new process. The return value is zero in the +child and the process-ID number of the child in the parent, or @minus{}1 upon error. In the latter case, @code{ERRNO} indicates the problem. In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are updated to reflect the correct values. @cindex @code{waitpid()} extension function @item ret = waitpid(pid) -This function takes a numeric argument, which is the process-id to +This function takes a numeric argument, which is the process-ID to wait for. The return value is that of the @code{waitpid()} system call. @@ -32836,7 +33451,7 @@ ret = reada("arraydump.bin", array) @subsection Reading An Entire File The @code{readfile} extension adds a single function -named @code{readfile()}: +named @code{readfile()}, and an input parser: @table @code @item @@load "readfile" @@ -32847,6 +33462,12 @@ This is how you load the extension. The argument is the name of the file to read. The return value is a string containing the entire contents of the requested file. Upon error, the function returns the empty string and sets @code{ERRNO}. + +@item BEGIN @{ PROCINFO["readfile"] = 1 @} +In addition, the extension adds an input parser that is activated if +@code{PROCINFO["readfile"]} exists. +When activated, each input file is returned in its entirety as @code{$0}. +@code{RT} is set to the null string. @end table Here is an example: @@ -32905,6 +33526,8 @@ tries to use @code{nanosleep()} or @code{select()} to implement the delay. @node gawkextlib @section The @code{gawkextlib} Project +@cindex @code{gawkextlib} +@cindex extensions, where to find @cindex @code{gawkextlib} project The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}} @@ -32938,6 +33561,7 @@ The @code{time} extension described earlier (@pxref{Extension Sample Time}) was originally from this project but has been moved in to the main @command{gawk} distribution. +@cindex @command{git} utility You can check out the code for the @code{gawkextlib} project using the @uref{http://git-scm.com, GIT} distributed source code control system. The command is as follows: @@ -34204,7 +34828,7 @@ The @option{-i} and @option{--include} options load @command{awk} library files. @item -The @option{-l} and @option{--load} options for load compiled dynamic extensions. +The @option{-l} and @option{--load} options load compiled dynamic extensions. @item The @option{-M} and @option{--bignum} options enable MPFR. @@ -34225,7 +34849,7 @@ Support for high precision arithmetic with MPFR. @item The @code{and()}, @code{or()} and @code{xor()} functions -allow any number of arguments, +changed to allow any number of arguments, with a minimum of two (@pxref{Bitwise Functions}). @@ -34250,18 +34874,18 @@ the three most widely-used freely available versions of @command{awk} @multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk} @headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk @item @samp{\x} Escape sequence @tab X @tab X @tab X -@item @code{RS} as regexp @tab @tab X @tab X @item @code{FS} as null string @tab X @tab X @tab X @item @file{/dev/stdin} special file @tab X @tab X @tab X @item @file{/dev/stdout} special file @tab X @tab X @tab X @item @file{/dev/stderr} special file @tab X @tab X @tab X -@item @code{**} and @code{**=} operators @tab X @tab @tab X -@item @code{fflush()} function @tab X @tab X @tab X -@item @code{func} keyword @tab X @tab @tab X -@item @code{nextfile} statement @tab X @tab X @tab X @item @code{delete} without subscript @tab X @tab X @tab X +@item @code{fflush()} function @tab X @tab X @tab X @item @code{length()} of an array @tab X @tab X @tab X +@item @code{nextfile} statement @tab X @tab X @tab X +@item @code{**} and @code{**=} operators @tab X @tab @tab X +@item @code{func} keyword @tab X @tab @tab X @item @code{BINMODE} variable @tab @tab X @tab X +@item @code{RS} as regexp @tab @tab X @tab X @item Time related functions @tab @tab X @tab X @end multitable @@ -34292,7 +34916,7 @@ as working in this fashion, and in particular, would teach that the that @samp{[A-Z]} was the ``correct'' way to match uppercase letters. And indeed, this was true.@footnote{And Life was good.} -The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}). +The 1992 POSIX standard introduced the idea of locales (@pxref{Locales}). Since many locales include other letters besides the plain twenty-six letters of the American English alphabet, the POSIX standard added character classes (@pxref{Bracket Expressions}) as a way to match @@ -34331,6 +34955,7 @@ This output is unexpected, since the @samp{bc} at the end of This result is due to the locale setting (and thus you may not see it on your system). +@cindex Unicode Similar considerations apply to other ranges. For example, @samp{["-/]} is perfectly valid in ASCII, but is not valid in many Unicode locales, such as @samp{en_US.UTF-8}. @@ -34344,16 +34969,17 @@ vendors started implementing non-ASCII locales, @emph{and making them the default}. Perhaps the most frequently asked question became something like ``why does @samp{[A-Z]} match lowercase letters?!?'' +@cindex Berry, Karl This situation existed for close to 10 years, if not more, and the @command{gawk} maintainer grew weary of trying to explain that @command{gawk} was being nicely standards-compliant, and that the issue was in the user's locale. During the development of version 4.0, he modified @command{gawk} to always treat ranges in the original, pre-POSIX fashion, unless @option{--posix} was used (@pxref{Options}).@footnote{And -thus was born the Campain for Rational Range Interpretation (or RRI). A number -of GNU tools, such as @command{grep} and @command{sed}, have either -implemented this change, or will soon. Thanks to Karl Berry for coining the phrase -``Rational Range Interpretation.''} +thus was born the Campaign for Rational Range Interpretation (or +RRI). A number of GNU tools have either implemented this change, +or will soon. Thanks to Karl Berry for coining the phrase ``Rational +Range Interpretation.''} Fortunately, shortly before the final release of @command{gawk} 4.0, the maintainer learned that the 2008 standard had changed the @@ -34366,7 +34992,7 @@ and By using this lovely technical term, the standard gives license to implementors to implement ranges in whatever way they choose. The @command{gawk} maintainer chose to apply the pre-POSIX meaning in all -cases: the default regexp matching; with @option{--traditional}, and with +cases: the default regexp matching; with @option{--traditional} and with @option{--posix}; in all cases, @command{gawk} remains POSIX compliant. @node Contributors @@ -34566,6 +35192,11 @@ environments. Anders Wallin helped keep the VMS port going for several years. @item +@cindex Gordon, Assaf +Assaf Gordon contributed the code to implement the +@option{--sandbox} option. + +@item @cindex Haque, John John Haque made the following contributions: @@ -34609,6 +35240,11 @@ Arnold Robbins and Andrew Schorr, with notable contributions from the rest of the development team. @item +@cindex Colombo, Antonio +Antonio Giovanni Colombo rewrote a number of examples in the early +chapters that were severely dated, for which I am incredibly grateful. + +@item @cindex Robbins, Arnold Arnold Robbins has been working on @command{gawk} since 1988, at first @@ -35007,7 +35643,7 @@ please send in a bug report (@pxref{Bugs}). Of course, once you've built @command{gawk}, it is likely that you will wish to install it. To do so, you need to run the command @samp{make -check}, as a user with the appropriate permissions. How to do this +install}, as a user with the appropriate permissions. How to do this varies by system, but on many systems you can use the @command{sudo} command to do so. The command then becomes @samp{sudo make install}. It is likely that you will be asked for your password, and you will have @@ -35333,11 +35969,10 @@ multibyte functionality is not available. @c STARTOFRANGE pcgawon @cindex PC operating systems, @command{gawk} on -With the exception of the Cygwin environment, -the @samp{|&} operator and TCP/IP networking -(@pxref{TCP/IP Networking}) -are not supported for MS-DOS or MS-Windows. EMX (OS/2 only) does support -at least the @samp{|&} operator. +Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support +both the @samp{|&} operator and TCP/IP networking +(@pxref{TCP/IP Networking}). +EMX (OS/2 only) supports at least the @samp{|&} operator. @cindex search paths @cindex search paths, for source files @@ -35467,7 +36102,7 @@ moved into the @code{BEGIN} rule. @command{gawk} can be built and used ``out of the box'' under MS-Windows if you are using the @uref{http://www.cygwin.com, Cygwin environment}. -This environment provides an excellent simulation of Unix, using the +This environment provides an excellent simulation of GNU/Linux, using the GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and other GNU programs. Compilation and installation for Cygwin is the same as for a Unix system: @@ -35483,13 +36118,6 @@ When compared to GNU/Linux on the same system, the @samp{configure} step on Cygwin takes considerably longer. However, it does finish, and then the @samp{make} proceeds as usual. -@quotation NOTE -The @samp{|&} operator and TCP/IP networking -(@pxref{TCP/IP Networking}) -are fully supported in the Cygwin environment. This is not true -for any other environment on MS-Windows. -@end quotation - @node MSYS @appendixsubsubsec Using @command{gawk} In The MSYS Environment @@ -35557,21 +36185,14 @@ can better handle @code{ODS-5} volumes with upper- and lowercase filenames. With @code{ODS-5} volumes and extended parsing enabled, the case of the target parameter may need to be exact. -Older versions of @command{gawk} could be built with VAX C or -GNU C on VAX/VMS, as well as with DEC C, but that is no longer -supported. DEC C (also briefly known as ``Compaq C'' and now known -as ``HP C,'' but referred to here as ``DEC C'') is required. Both -@code{vmsbuild.com} and @code{descrip.mms} contain some obsolete support -for the older compilers but are set up to use DEC C by default. - @command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -Work is currently being done for a procedure to build @command{gawk} and create -a PCSI kit for compatible with the GNV product. +The @file{[.vms]gawk_build_steps.txt} provides information on how to build +@command{gawk} into a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS @@ -35668,7 +36289,7 @@ add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. -Optionally, @file{gawk.hlp} entry can be loaded into a VMS help library: +Optionally, the @file{gawk.hlp} entry can be loaded into a VMS help library: @example $ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp} @@ -35923,22 +36544,23 @@ file should be considered authoritative if it conflicts with this The people maintaining the non-Unix ports of @command{gawk} are as follows: -@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} +@c put the index entries outside the table, for docbook @cindex Deifik, Scott +@cindex Zaretskii, Eli +@cindex Buening, Andreas +@cindex Rankin, Pat +@cindex Malmberg, John +@cindex Pitts, Dave +@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. -@cindex Zaretskii, Eli @item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. -@cindex Buening, Andreas @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. -@cindex Rankin, Pat -@cindex Malmberg, John @item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}. -@cindex Pitts, Dave @item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. @end multitable @@ -35973,7 +36595,7 @@ This @value{SECTION} briefly describes where to get them: @cindex Kernighan, Brian @cindex source code, Brian Kernighan's @command{awk} @cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk} -@cindex Brian Kernighan's @command{awk} +@cindex Brian Kernighan's @command{awk}, source code @item Unix @command{awk} Brian Kernighan, one of the original designers of Unix @command{awk}, has made his implementation of @@ -35993,6 +36615,7 @@ It is available in several archive formats: @uref{http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip} @end table +@cindex @command{git} utility You can also retrieve it from Git Hub: @example @@ -36012,7 +36635,7 @@ from GCC (the GNU Compiler Collection) works quite nicely. for a list of extensions in this @command{awk} that are not in POSIX @command{awk}. @cindex Brennan, Michael -@cindex @command{mawk} program +@cindex @command{mawk} utility @cindex source code, @command{mawk} @item @command{mawk} Michael Brennan wrote an independent implementation of @command{awk}, @@ -36058,7 +36681,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}. The project seems to be frozen; no new code changes have been made since approximately 2003. -@cindex Beebe, Nelson +@cindex Beebe, Nelson H.F.@: @cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @cindex source code, @command{pawk} @item @command{pawk} @@ -36121,6 +36744,7 @@ This is an embeddable @command{awk} interpreter derived from @uref{http://repo.hu/projects/libmawk/}. @item @code{pawk} +@cindex source code, @command{pawk} (Python version) @cindex @code{pawk}, @command{awk}-like facilities for Python This is a Python module that claims to bring @command{awk}-like features to Python. See @uref{https://github.com/alecthomas/pawk} @@ -36226,6 +36850,7 @@ As @command{gawk} is Free Software, the source code is always available. @ref{Gawk Distribution}, describes how to get and build the formal, released versions of @command{gawk}. +@cindex @command{git} utility However, if you want to modify @command{gawk} and contribute back your changes, you will probably wish to work with the development version. To do so, you will need to access the @command{gawk} source code @@ -36401,6 +37026,7 @@ If possible, please update the @command{man} page as well. You will also have to sign paperwork for your documentation changes. +@cindex @command{git} utility @item Submit changes as unified diffs. Use @samp{diff -u -r -N} to compare @@ -36534,6 +37160,8 @@ coding style and brace layout that suits your taste. @node Derived Files @appendixsubsec Why Generated Files Are Kept In @command{git} +@c STARTOFRANGE gawkgit +@cindex @command{git}, use of for @command{gawk} source code @c From emails written March 22, 2012, to the gawk developers list. If you look at the @command{gawk} source in the @command{git} @@ -36713,7 +37341,7 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta @noindent to retrieve a snapshot of the given branch. - +@c ENDOFRANGE gawkgit @node Future Extensions @appendixsec Probable Future Extensions @@ -37084,8 +37712,15 @@ other introductory texts that you should refer to instead.) @cindex processing data At the most basic level, the job of a program is to process -some input data and produce results. See @ref{figure-general-flow}. +some input data and produce results. +@ifnotdocbook +See @ref{figure-general-flow}. +@end ifnotdocbook +@ifdocbook +See @inlineraw{docbook, <xref linkend="figure-general-flow"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,figure-general-flow @caption{General Program Flow} @ifinfo @@ -37095,6 +37730,14 @@ some input data and produce results. See @ref{figure-general-flow}. @center @image{general-program, , , General program flow} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="figure-general-flow"> +<title>General Program Flow</title> +<graphic fileref="general-program.eps"/> +</figure> +@end docbook @cindex compiled programs @cindex interpreted programs @@ -37110,9 +37753,15 @@ instructions in your program to process the data. @cindex programming, basic steps When you write a program, it usually consists -of the following, very basic set of steps, as shown -in @ref{figure-process-flow}: +of the following, very basic set of steps, +@ifnotdocbook +as shown in @ref{figure-process-flow}: +@end ifnotdocbook +@ifdocbook +as shown in @inlineraw{docbook <xref linkend="figure-process-flow"/>}: +@end ifdocbook +@ifnotdocbook @float Figure,figure-process-flow @caption{Basic Program Steps} @ifinfo @@ -37122,6 +37771,14 @@ in @ref{figure-process-flow}: @center @image{process-flow, , , Basic Program Stages} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="figure-process-flow"> +<title>Basic Program Stages</title> +<graphic fileref="process-flow.eps"/> +</figure> +@end docbook @table @asis @item Initialization @@ -37292,7 +37949,7 @@ better written in another language. You can get it from @uref{http://awk.info/?awk100/aaa}. @cindex Ada programming language -@cindex Programming languages, Ada +@cindex programming languages, Ada @item Ada A programming language originally defined by the U.S.@: Department of Defense for embedded programming. It was designed to enforce good @@ -37360,9 +38017,6 @@ The GNU version of the standard shell @end ifinfo See also ``Bourne Shell.'' -@item BBS -See ``Bulletin Board System.'' - @item Bit Short for ``Binary Digit.'' All values in computer memory ultimately reduce to binary digits: values @@ -37437,11 +38091,6 @@ Changing some of them affects @command{awk}'s running environment. @item Braces See ``Curly Braces.'' -@item Bulletin Board System -A computer system allowing users to log in and read and/or leave messages -for other users of the system, much like leaving paper notes on a bulletin -board. - @item C The system programming language that most GNU software is written in. The @command{awk} programming language has C-like syntax, and this @value{DOCUMENT} @@ -37468,6 +38117,8 @@ The @uref{http://www.unicode.org, Unicode character set} is becoming increasingly popular and standard, and is particularly widely used on GNU/Linux systems. +@cindex Kernighan, Brian +@cindex Bentley, Jon @cindex @command{chem} utility @item CHEM A preprocessor for @command{pic} that reads descriptions of molecules @@ -37604,7 +38255,7 @@ ordinary expression. It could be a string constant, such as (@xref{Computed Regexps}.) @item Environment -A collection of strings, of the form @var{name@code{=}val}, that each +A collection of strings, of the form @var{name}@code{=}@code{val}, that each program has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables @env{HOME} and @env{PATH}. @@ -37773,7 +38424,7 @@ information about the name of the organization and its language-independent three-letter acronym. @cindex Java programming language -@cindex Programming languages, Java +@cindex programming languages, Java @item Java A modern programming language originally developed by Sun Microsystems (now Oracle) supporting Object-Oriented programming. Although usually @@ -38060,7 +38711,12 @@ record or a string. @c The GNU General Public License. @node Copying @unnumbered GNU General Public License +@ifnotdocbook @center Version 3, 29 June 2007 +@end ifnotdocbook +@docbook +<subtitle>Version 3, 29 June 2007</subtitle> +@end docbook @c This file is intended to be included within another document, @c hence no sectioning command or @node. @@ -38785,10 +39441,17 @@ first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. @c The GNU Free Documentation License. @node GNU Free Documentation License @unnumbered GNU Free Documentation License +@ifnotdocbook +@center Version 1.3, 3 November 2008 +@end ifnotdocbook + +@docbook +<subtitle>Version 1.3, 3 November 2008</subtitle> +@end docbook + @cindex FDL (Free Documentation License) @cindex Free Documentation License (FDL) @cindex GNU Free Documentation License -@center Version 1.3, 3 November 2008 @c This file is intended to be included within another document, @c hence no sectioning command or @node. @@ -39293,8 +39956,10 @@ to permit their use in free software. @c ispell-local-pdict: "ispell-dict" @c End: +@ifnotdocbook @node Index @unnumbered Index +@end ifnotdocbook @printindex cp @bye @@ -39405,8 +40070,6 @@ Suggestions: % Next edition: % 1. Standardize the error messages from the functions and programs % in the two sample code chapters. -% 2. Nuke the BBS stuff and use something that won't be obsolete -% 3. Turn the advanced notes into sidebars by using @cartouche Better sidebars can almost sort of be done with: @@ -39438,4 +40101,3 @@ But to use it you have to say } which sorta sucks. - diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 6b9acdea..791f787f 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -35,9 +35,9 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH February, 2014 +@set UPDATE-MONTH April, 2014 @set VERSION 4.1 -@set PATCHLEVEL 0 +@set PATCHLEVEL 1 @set FSF @@ -111,11 +111,19 @@ @end ifnottex @ifnottex +@ifnotdocbook @macro ii{text} @i{\text\} @end macro +@end ifnotdocbook @end ifnottex +@ifdocbook +@macro ii{text} +@inlineraw{docbook,<lineannotation>\text\</lineannotation>} +@end macro +@end ifdocbook + @c For HTML, spell out email addresses, to avoid problems with @c address harvesters for spammers. @ifhtml @@ -129,9 +137,36 @@ @end macro @end ifnothtml +@c Indexing macros +@ifinfo + +@macro cindexawkfunc{name} +@cindex @code{\name\} +@end macro + +@macro cindexgawkfunc{name} +@cindex @code{\name\} +@end macro + +@end ifinfo + +@ifnotinfo + +@macro cindexawkfunc{name} +@cindex @code{\name\()} function +@end macro + +@macro cindexgawkfunc{name} +@cindex @code{\name\()} function (@command{gawk}) +@end macro +@end ifnotinfo + @ignore Some comments on the layout for TeX. 1. Use at least texinfo.tex 2014-01-30.15 +2. When using @docbook, if the last line is part of a paragraph, end +it with a space and @c so that the lines won't run together. This is a +quirk of the language / makeinfo, and isn't going to change. @end ignore @c merge the function and variable indexes into the concept index @@ -147,6 +182,10 @@ Some comments on the layout for TeX. @syncodeindex fn cp @syncodeindex vr cp @end ifxml +@ifdocbook +@synindex fn cp +@synindex vr cp +@end ifdocbook @c If "finalout" is commented out, the printed output will show @c black boxes that mark lines that are too long. Thus, it is @@ -158,10 +197,26 @@ Some comments on the layout for TeX. @end iftex @copying -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, -2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, -2014 +@docbook +<para>Published by:</para> + +<literallayout class="normal">Free Software Foundation +51 Franklin Street, Fifth Floor +Boston, MA 02110-1301 USA +Phone: +1-617-542-5942 +Fax: +1-617-542-2652 +Email: <email>gnu@@gnu.org</email> +URL: <ulink url="http://www.gnu.org">http://www.gnu.org/</ulink></literallayout> + +<literallayout class="normal">Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2014 Free Software Foundation, Inc. +All Rights Reserved.</literallayout> +@end docbook + +@ifnotdocbook +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2014 @* +Free Software Foundation, Inc. +@end ifnotdocbook @sp 2 This is Edition @value{EDITION} of @cite{@value{TITLE}: @value{SUBTITLE}}, @@ -209,6 +264,7 @@ supports it in developing GNU and promoting software freedom.'' @subtitle @value{UPDATE-MONTH} @author Arnold D. Robbins +@ifnotdocbook @c Include the Distribution inside the titlepage environment so @c that headings are turned off. Headings on and off do not work. @@ -233,6 +289,7 @@ URL: @uref{http://www.gnu.org/} @* ISBN 1-882114-28-0 @* @sp 2 @insertcopying +@end ifnotdocbook @end titlepage @c Thanks to Bob Chassell for directions on doing dedications. @@ -257,6 +314,18 @@ ISBN 1-882114-28-0 @* @headings on @end iftex +@docbook +<dedication> +<simplelist> +<member>To Miriam, for making me complete.</member> +<member>To Chana, for the joy you bring us.</member> +<member>To Rivka, for the exponential increase.</member> +<member>To Nachum, for the added dimension.</member> +<member>To Malka, for the new beginning.</member> +</simplelist> +</dedication> +@end docbook + @iftex @headings off @evenheading @thispage@ @ @ @strong{@value{TITLE}} @| @| @@ -265,6 +334,7 @@ ISBN 1-882114-28-0 @* @ifnottex @ifnotxml +@ifnotdocbook @node Top @top General Introduction @c Preface node should come right after the Top @@ -276,6 +346,7 @@ particular records in a file and perform operations upon them. @insertcopying +@end ifnotdocbook @end ifnotxml @end ifnottex @@ -737,6 +808,7 @@ particular records in a file and perform operations upon them. * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with @command{gawk}. @@ -799,7 +871,8 @@ particular records in a file and perform operations upon them. version of @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. -* Feature History:: The history of the features in @command{gawk}. +* Feature History:: The history of the features in + @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -971,21 +1044,37 @@ and the AWK prototype becomes the product. The new @command{pgawk} (profiling @command{gawk}), produces program execution counts. I recently experimented with an algorithm that for -@math{n} lines of input, exhibited +@ifnotdocbook +@math{n} +@end ifnotdocbook +@ifdocbook +@i{n} +@end ifdocbook +lines of input, exhibited @tex $\sim\! Cn^2$ @end tex @ifnottex +@ifnotdocbook ~ C n^2 +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>∼ Cn<superscript>2</superscript></emphasis> @c +@end docbook performance, while theory predicted @tex $\sim\! Cn\log n$ @end tex @ifnottex +@ifnotdocbook ~ C n log n +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>∼ Cn log n</emphasis> @c +@end docbook behavior. A few minutes poring over the @file{awkprof.out} profile pinpointed the problem to a single line of code. @command{pgawk} is a welcome addition to @@ -995,6 +1084,7 @@ Arnold has distilled over a decade of experience writing and using AWK programs, and developing @command{gawk}, into this book. If you use AWK or want to learn how, then read this book. +@cindex Brennan, Michael @display Michael Brennan Author of @command{mawk} @@ -1019,6 +1109,7 @@ Such jobs are often easier with @command{awk}. The @command{awk} utility interprets a special-purpose programming language that makes it easy to handle simple data-reformatting jobs. +@cindex Brian Kernighan's @command{awk} The GNU implementation of @command{awk} is called @command{gawk}; if you invoke it with the proper options or environment variables (@pxref{Options}), it is fully @@ -1741,7 +1832,7 @@ significant editorial help for this @value{DOCUMENT} for the 3.1 release of @command{gawk}. @end quotation -@cindex Beebe, Nelson +@cindex Beebe, Nelson H.F.@: @cindex Buening, Andreas @cindex Collado, Manuel @cindex Colombo, Antonio @@ -2034,11 +2125,11 @@ $ @kbd{awk "BEGIN @{ print \"Don't Panic!\" @}"} @print{} Don't Panic! @end example -@cindex quoting -@cindex double quote (@code{"}) -@cindex @code{"} (double quote) -@cindex @code{\} (backslash) -@cindex backslash (@code{\}) +@cindex shell quoting, double quote +@cindex double quote (@code{"}) in shell commands +@cindex @code{"} (double quote) in shell commands +@cindex @code{\} (backslash) in shell commands +@cindex backslash (@code{\}) in shell commands This program does not read any input. The @samp{\} before each of the inner double quotes is necessary because of the shell's quoting rules---in particular because it mixes both single quotes and @@ -2078,8 +2169,7 @@ awk -f @var{source-file} @var{input-file1} @var{input-file2} @dots{} @end example @cindex @option{-f} option -@cindex command line, options -@cindex options, command-line +@cindex command line, option @option{-f} The @option{-f} instructs the @command{awk} utility to get the @command{awk} program from the file @var{source-file}. Any file name can be used for @var{source-file}. For example, you could put the program: @@ -2102,7 +2192,7 @@ does the same thing as this one: awk "BEGIN @{ print \"Don't Panic!\" @}" @end example -@cindex quoting +@cindex quoting in @command{gawk} command lines @noindent This was explained earlier (@pxref{Read Terminal}). @@ -2113,9 +2203,9 @@ program did not have single quotes around it. The quotes are only needed for programs that are provided on the @command{awk} command line. @c STARTOFRANGE sq1x -@cindex single quote (@code{'}) +@cindex single quote (@code{'}) in @command{gawk} command lines @c STARTOFRANGE qs2x -@cindex @code{'} (single quote) +@cindex @code{'} (single quote) in @command{gawk} command lines If you want to clearly identify your @command{awk} program files as such, you can add the extension @file{.awk} to the file name. This doesn't affect the execution of the @command{awk} program but it does make @@ -2225,7 +2315,7 @@ programs, but this usually isn't very useful; the purpose of a comment is to help you or another person understand the program when reading it at a later time. -@cindex quoting +@cindex quoting, for small awk programs @cindex single quote (@code{'}), vs.@: apostrophe @cindex @code{'} (single quote), vs.@: apostrophe @quotation CAUTION @@ -2266,7 +2356,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules. @node Quoting @subsection Shell-Quoting Issues -@cindex quoting, rules for +@cindex shell quoting, rules for @menu * DOS Quoting:: Quoting in Windows Batch Files. @@ -2301,10 +2391,10 @@ that character. The shell removes the backslash and passes the quoted character on to the command. @item -@cindex @code{\} (backslash) -@cindex backslash (@code{\}) -@cindex single quote (@code{'}) -@cindex @code{'} (single quote) +@cindex @code{\} (backslash), in shell commands +@cindex backslash (@code{\}), in shell commands +@cindex single quote (@code{'}), in shell commands +@cindex @code{'} (single quote), in shell commands Single quotes protect everything between the opening and closing quotes. The shell does no interpretation of the quoted text, passing it on verbatim to the command. @@ -2314,8 +2404,8 @@ Refer back to for an example of what happens if you try. @item -@cindex double quote (@code{"}) -@cindex @code{"} (double quote) +@cindex double quote (@code{"}), in shell commands +@cindex @code{"} (double quote), in shell commands Double quotes protect most things between the opening and closing quotes. The shell does at least variable and command substitution on the quoted text. Different shells may do additional kinds of processing on double-quoted text. @@ -2352,7 +2442,7 @@ awk -F "" '@var{program}' @var{files} # correct @end example @noindent -@cindex null strings, quoting and +@cindex null strings in @command{gawk} arguments, quoting and Don't use this: @example @@ -2365,7 +2455,7 @@ as the value of @code{FS}, and the first file name as the text of the program! This results in syntax errors at best, and confusing behavior at worst. @end itemize -@cindex quoting, tricks for +@cindex quoting in @command{gawk} command lines, tricks for Mixing single and double quotes is difficult. You have to resort to shell quoting tricks, like this: @@ -2480,40 +2570,39 @@ gawk "@{ print \"\042\" $0 \"\042\" @}" @var{file} @c For gawk >= 4.0, update these data files. No-one has such slow modems! @cindex input files, examples -@cindex @code{BBS-list} file +@cindex @code{mail-list} file Many of the examples in this @value{DOCUMENT} take their input from two sample -data files. The first, @file{BBS-list}, represents a list of -computer bulletin board systems together with information about those systems. +data files. The first, @file{mail-list}, represents a list of peoples' names +together with their email addresses and information about those people. The second data file, called @file{inventory-shipped}, contains information about monthly shipments. In both files, each line is considered to be one @dfn{record}. -In the data file @file{BBS-list}, each record contains the name of a computer -bulletin board, its phone number, the board's baud rate(s), and a code for -the number of hours it is operational. An @samp{A} in the last column -means the board operates 24 hours a day. A @samp{B} in the last -column means the board only operates on evening and weekend hours. -A @samp{C} means the board operates only on weekends: +In the data file @file{mail-list}, each record contains the name of a person, +his/her phone number, his/her email-address, and a code for their relationship +with the author of the list. An @samp{A} in the last column +means that the person is an acquaintance. An @samp{F} in the last +column means that the person is a friend. +An @samp{R} means that the person is a relative: -@c 2e: Update the baud rates to reflect today's faster modems @example @c system if test ! -d eg ; then mkdir eg ; fi @c system if test ! -d eg/lib ; then mkdir eg/lib ; fi @c system if test ! -d eg/data ; then mkdir eg/data ; fi @c system if test ! -d eg/prog ; then mkdir eg/prog ; fi @c system if test ! -d eg/misc ; then mkdir eg/misc ; fi -@c file eg/data/BBS-list -aardvark 555-5553 1200/300 B -alpo-net 555-3412 2400/1200/300 A -barfly 555-7685 1200/300 A -bites 555-1675 2400/1200/300 A -camelot 555-0542 300 C -core 555-2912 1200/300 C -fooey 555-1234 2400/1200/300 B -foot 555-6699 1200/300 B -macfoo 555-6480 1200/300 A -sdace 555-3430 2400/1200/300 A -sabafoo 555-2127 1200/300 C +@c file eg/data/mail-list +Amelia 555-5553 amelia.zodiacusque@@gmail.com F +Anthony 555-3412 anthony.asserturo@@hotmail.com A +Becky 555-7685 becky.algebrarum@@gmail.com A +Bill 555-1675 bill.drowning@@hotmail.com A +Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +Camilla 555-2912 camilla.infusarum@@skynet.be R +Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +Julie 555-6699 julie.perscrutabor@@skeeve.com F +Martin 555-6480 martin.codicibus@@hotmail.com A +Samuel 555-3430 samuel.lanceolis@@shu.edu A +Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @c endfile @end example @@ -2555,23 +2644,23 @@ in the directory @file{awklib/eg/data}. @section Some Simple Examples The following command runs a simple @command{awk} program that searches the -input file @file{BBS-list} for the character string @samp{foo} (a +input file @file{mail-list} for the character string @samp{li} (a grouping of characters is usually called a @dfn{string}; the term @dfn{string} is based on similar usage in English, such as ``a string of pearls,'' or ``a string of cars in a train''): @example -awk '/foo/ @{ print $0 @}' BBS-list +awk '/li/ @{ print $0 @}' mail-list @end example @noindent -When lines containing @samp{foo} are found, they are printed because +When lines containing @samp{li} are found, they are printed because @w{@samp{print $0}} means print the current line. (Just @samp{print} by itself means the same thing, so we could have written that instead.) -You will notice that slashes (@samp{/}) surround the string @samp{foo} -in the @command{awk} program. The slashes indicate that @samp{foo} +You will notice that slashes (@samp{/}) surround the string @samp{li} +in the @command{awk} program. The slashes indicate that @samp{li} is the pattern to search for. This type of pattern is called a @dfn{regular expression}, which is covered in more detail later (@pxref{Regexp}). @@ -2583,11 +2672,11 @@ interpret any of it as special shell characters. Here is what this program prints: @example -$ @kbd{awk '/foo/ @{ print $0 @}' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '/li/ @{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A @end example @cindex actions, default @@ -2600,7 +2689,7 @@ action is to print all lines that match the pattern. @cindex actions, empty Thus, we could leave out the action (the @code{print} statement and the curly braces) in the previous example and the result would be the same: -@command{awk} prints all lines matching the pattern @samp{foo}. By comparison, +@command{awk} prints all lines matching the pattern @samp{li}. By comparison, omitting the @code{print} statement but retaining the curly braces makes an empty action that does nothing (i.e., no lines are printed). @@ -2745,29 +2834,23 @@ This program prints every line that contains the string strings, it is printed twice, once by each rule. This is what happens if we run this program on our two sample data files, -@file{BBS-list} and @file{inventory-shipped}: +@file{mail-list} and @file{inventory-shipped}: @example $ @kbd{awk '/12/ @{ print $0 @}} -> @kbd{/21/ @{ print $0 @}' BBS-list inventory-shipped} -@print{} aardvark 555-5553 1200/300 B -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} barfly 555-7685 1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} core 555-2912 1200/300 C -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sdace 555-3430 2400/1200/300 A -@print{} sabafoo 555-2127 1200/300 C -@print{} sabafoo 555-2127 1200/300 C +> @kbd{/21/ @{ print $0 @}' mail-list inventory-shipped} +@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A +@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @print{} Jan 21 36 64 620 @print{} Apr 21 70 74 514 @end example @noindent -Note how the line beginning with @samp{sabafoo} -in @file{BBS-list} was printed twice, once for each rule. +Note how the line beginning with @samp{Jean-Paul} +in @file{mail-list} was printed twice, once for each rule. @node More Complex @section A More Complex Example @@ -2846,7 +2929,7 @@ separate rule, like this: @example awk '/12/ @{ print $0 @} - /21/ @{ print $0 @}' BBS-list inventory-shipped + /21/ @{ print $0 @}' mail-list inventory-shipped @end example @cindex @command{gawk}, newlines in @@ -2961,8 +3044,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the @code{BEGIN} is noted as a syntax error. @cindex statements, multiple -@cindex @code{;} (semicolon) -@cindex semicolon (@code{;}) +@cindex @code{;} (semicolon), separating statements in actions +@cindex semicolon (@code{;}), separating statements in actions When @command{awk} statements within one rule are short, you might want to put more than one of them on a line. This is accomplished by separating the statements with a semicolon (@samp{;}). @@ -3022,6 +3105,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you can avoid the (usually lengthy) compilation part of the typical edit-compile-test-debug cycle of software development. +@cindex Brian Kernighan's @command{awk} Complex programs have been written in @command{awk}, including a complete retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for more information), and a microcode assembler for a special-purpose Prolog @@ -3084,10 +3168,19 @@ There are two ways to run @command{awk}---with an explicit program or with one or more program files. Here are templates for both of them; items enclosed in [@dots{}] in these templates are optional: +@ifnotdocbook @example awk @r{[@var{options}]} -f progfile @r{[@code{--}]} @var{file} @dots{} awk @r{[@var{options}]} @r{[@code{--}]} '@var{program}' @var{file} @dots{} @end example +@end ifnotdocbook + +@c FIXME - find a better way to mark this up in docbook +@docbook +<screen>awk [<replaceable>options</replaceable>] -f progfile [<literal>--</literal>] <replaceable>file</replaceable> … +awk [<replaceable>options</replaceable>] [<literal>--</literal>] '<replaceable>program</replaceable>' <replaceable>file</replaceable> … +</screen> +@end docbook @cindex GNU long options @cindex long options @@ -3253,6 +3346,7 @@ Print the short version of the General Public License and then exit. @itemx --dump-variables@r{[}=@var{file}@r{]} @cindex @option{-d} option @cindex @option{--dump-variables} option +@cindex dump all variables of a program @cindex @file{awkvars.out} file @cindex files, @file{awkvars.out} @cindex variables, global, printing list of @@ -3406,7 +3500,7 @@ care to search for all occurrences of each inappropriate construct. As @cindex @option{--bignum} option Force arbitrary precision arithmetic on numbers. This option has no effect if @command{gawk} is not compiled to use the GNU MPFR and MP libraries -(@pxref{Arbitrary Precision Arithmetic}). +(@pxref{Gawk and MPFR}). @item -n @itemx --non-decimal-data @@ -3659,6 +3753,7 @@ file at all. @cindex @command{gawk}, @code{ARGIND} variable in @cindex @code{ARGIND} variable, command-line arguments +@cindex @code{ARGV} array, indexing into @cindex @code{ARGC}/@code{ARGV} variables, command-line arguments All these arguments are made available to your @command{awk} program in the @code{ARGV} array (@pxref{Built-in Variables}). Command-line options @@ -3669,6 +3764,7 @@ sets the variable @code{ARGIND} to the index in @code{ARGV} of the current element. @cindex input files, variable assignments and +@cindex variable assignments and input files The distinction between file name arguments and variable-assignment arguments is made when @command{awk} is about to open the next input file. At that point in execution, it checks the file name to see whether @@ -3746,6 +3842,7 @@ this file name itself.) @node Environment Variables @section The Environment Variables @command{gawk} Uses +@cindex environment variables used by @command{gawk} A number of environment variables influence how @command{gawk} behaves. @@ -3761,8 +3858,7 @@ behaves. @node AWKPATH Variable @subsection The @env{AWKPATH} Environment Variable @cindex @env{AWKPATH} environment variable -@cindex directories, searching -@cindex search paths +@cindex directories, searching for source files @cindex search paths, for source files @cindex differences in @command{awk} and @command{gawk}, @code{AWKPATH} environment variable @ifinfo @@ -3774,12 +3870,12 @@ implementations, you must supply a precise path name for each program file, unless the file is in the current directory. But in @command{gawk}, if the file name supplied to the @option{-f} or @option{-i} options -does not contain a @samp{/}, then @command{gawk} searches a list of +does not contain a directory separator @samp{/}, then @command{gawk} searches a list of directories (called the @dfn{search path}), one by one, looking for a file with the specified name. The search path is a string consisting of directory names -separated by colons. @command{gawk} gets its search path from the +separated by colons@footnote{Semicolons on MS-Windows and MS-DOS.}. @command{gawk} gets its search path from the @env{AWKPATH} environment variable. If that variable does not exist, @command{gawk} uses a default path, @samp{.:/usr/local/share/awk}.@footnote{Your version of @command{gawk} @@ -3837,8 +3933,7 @@ found, and @command{gawk} no longer needs to use @env{AWKPATH}. @node AWKLIBPATH Variable @subsection The @env{AWKLIBPATH} Environment Variable @cindex @env{AWKLIBPATH} environment variable -@cindex directories, searching -@cindex search paths +@cindex directories, searching for shared libraries @cindex search paths, for shared libraries @cindex differences in @command{awk} and @command{gawk}, @code{AWKLIBPATH} environment variable @@ -4123,7 +4218,6 @@ they will @emph{not} be in the next release). @c update this section for each release! -@cindex @code{PROCINFO} array The process-related special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and @file{/dev/user} were deprecated in @command{gawk} 3.1, but still worked. As of version 4.0, they are no longer @@ -4149,6 +4243,7 @@ in case some option becomes obsolete in a future version of @command{gawk}. @author Obi-Wan @end quotation +@cindex shells, sea This @value{SECTION} intentionally left blank. @@ -4161,7 +4256,7 @@ blank. @table @code @item -W nostalgia @itemx --nostalgia -Print the message @code{"awk: bailing out near line 1"} and dump core. +Print the message @samp{awk: bailing out near line 1} and dump core. This option was inspired by the common behavior of very early versions of Unix @command{awk} and by a t--shirt. The message is @emph{not} subject to translation in non-English locales. @@ -4207,7 +4302,7 @@ long-undocumented ``feature'' of Unix @code{awk}. @node Regexp @chapter Regular Expressions -@cindex regexp, See regular expressions +@cindex regexp @c STARTOFRANGE regexp @cindex regular expressions @@ -4216,8 +4311,8 @@ set of strings. Because regular expressions are such a fundamental part of @command{awk} programming, their format and use deserve a separate @value{CHAPTER}. -@cindex forward slash (@code{/}) -@cindex @code{/} (forward slash) +@cindex forward slash (@code{/}) to enclose regular expressions +@cindex @code{/} (forward slash) to enclose regular expressions A regular expression enclosed in slashes (@samp{/}) is an @command{awk} pattern that matches every input record whose text belongs to that set. @@ -4254,14 +4349,14 @@ slashes. Then the regular expression is tested against the entire text of each record. (Normally, it only needs to match some part of the text in order to succeed.) For example, the following prints the second field of each record that contains the string -@samp{foo} anywhere in it: +@samp{li} anywhere in it: @example -$ @kbd{awk '/foo/ @{ print $2 @}' BBS-list} -@print{} 555-1234 +$ @kbd{awk '/li/ @{ print $2 @}' mail-list} +@print{} 555-5553 +@print{} 555-0542 @print{} 555-6699 -@print{} 555-6480 -@print{} 555-2127 +@print{} 555-3430 @end example @cindex regular expressions, operators @@ -4273,9 +4368,9 @@ $ @kbd{awk '/foo/ @{ print $2 @}' BBS-list} @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator @c @cindex operators, @code{!~} -@cindex @code{if} statement -@cindex @code{while} statement -@cindex @code{do}-@code{while} statement +@cindex @code{if} statement, use of regexps in +@cindex @code{while} statement, use of regexps in +@cindex @code{do}-@code{while} statement, use of regexps in @c @cindex statements, @code{if} @c @cindex statements, @code{while} @c @cindex statements, @code{do} @@ -4334,6 +4429,7 @@ $ @kbd{awk '$1 !~ /J/' inventory-shipped} @end example @cindex regexp constants +@cindex constant regexps @cindex regular expressions, constants, See regexp constants When a regexp is enclosed in slashes, such as @code{/foo/}, we call it a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and @@ -4342,7 +4438,7 @@ a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and @node Escape Sequences @section Escape Sequences -@cindex escape sequences +@cindex escape sequences, in strings @cindex backslash (@code{\}), in escape sequences @cindex @code{\} (backslash), in escape sequences Some characters cannot be included literally in string constants @@ -4507,6 +4603,7 @@ leaves what happens as undefined. There are two choices: @c @cindex automatic warnings @c @cindex warnings, automatic +@cindex Brian Kernighan's @command{awk} @table @asis @item Strip the backslash out This is what Brian Kernighan's @command{awk} and @command{gawk} both do. @@ -4520,6 +4617,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.) @cindex @command{gawk}, escape sequences @cindex Unix @command{awk}, backslashes in escape sequences +@cindex @command{mawk} utility @item Leave the backslash alone Some other @command{awk} implementations do this. In such implementations, typing @code{"a\qc"} is the same as typing @@ -4551,6 +4649,7 @@ escape sequences literally when used in regexp constants. Thus, @section Regular Expression Operators @c STARTOFRANGE regexpo @cindex regular expressions, operators +@cindex metacharacters in regular expressions You can combine regular expressions with special characters, called @dfn{regular expression operators} or @dfn{metacharacters}, to @@ -4569,8 +4668,8 @@ Here is a list of metacharacters. All characters that are not escape sequences and that are not listed in the table stand for themselves: @table @code -@cindex backslash (@code{\}) -@cindex @code{\} (backslash) +@cindex backslash (@code{\}), regexp operator +@cindex @code{\} (backslash), regexp operator @item \ This is used to suppress the special meaning of a character when matching. For example, @samp{\$} @@ -4595,8 +4694,8 @@ The condition is not true in the following example: if ("line1\nLINE 2" ~ /^L/) @dots{} @end example -@cindex @code{$} (dollar sign) -@cindex dollar sign (@code{$}) +@cindex @code{$} (dollar sign), regexp operator +@cindex dollar sign (@code{$}), regexp operator @item $ This is similar to @samp{^}, but it matches only at the end of a string. For example, @samp{p$} @@ -4608,8 +4707,8 @@ The condition in the following example is not true: if ("line1\nLINE 2" ~ /1$/) @dots{} @end example -@cindex @code{.} (period) -@cindex period (@code{.}) +@cindex @code{.} (period), regexp operator +@cindex period (@code{.}), regexp operator @item . @r{(period)} This matches any single character, @emph{including} the newline character. For example, @samp{.P} @@ -4625,11 +4724,12 @@ character, which is a character with all bits equal to zero. Otherwise, @sc{nul} is just another character. Other versions of @command{awk} may not be able to match the @sc{nul} character. -@cindex @code{[]} (square brackets) -@cindex square brackets (@code{[]}) +@cindex @code{[]} (square brackets), regexp operator +@cindex square brackets (@code{[]}), regexp operator @cindex bracket expressions @cindex character sets, See Also bracket expressions @cindex character lists, See bracket expressions +@cindex character classes, See bracket expressions @item [@dots{}] This is called a @dfn{bracket expression}.@footnote{In other literature, you may see a bracket expression referred to as either a @@ -4662,8 +4762,8 @@ means it matches any string that starts with @samp{P} or contains a digit. The alternation applies to the largest possible regexps on either side. -@cindex @code{()} (parentheses) -@cindex parentheses @code{()} +@cindex @code{()} (parentheses), regexp operator +@cindex parentheses @code{()}, regexp operator @item (@dots{}) Parentheses are used for grouping in regular expressions, as in arithmetic. They can be used to concatenate regular expressions @@ -4691,8 +4791,8 @@ prints every record in @file{sample} containing a string of the form Notice the escaping of the parentheses by preceding them with backslashes. -@cindex @code{+} (plus sign) -@cindex plus sign (@code{+}) +@cindex @code{+} (plus sign), regexp operator +@cindex plus sign (@code{+}), regexp operator @item + This symbol is similar to @samp{*}, except that the preceding expression must be matched at least once. This means that @samp{wh+y} @@ -4705,14 +4805,14 @@ way of writing the last @samp{*} example: awk '/\(c[ad]+r x\)/ @{ print @}' sample @end example -@cindex @code{?} (question mark) regexp operator -@cindex question mark (@code{?}) regexp operator +@cindex @code{?} (question mark), regexp operator +@cindex question mark (@code{?}), regexp operator @item ? This symbol is similar to @samp{*}, except that the preceding expression can be matched either once or not at all. For example, @samp{fe?d} matches @samp{fed} and @samp{fd}, but nothing else. -@cindex interval expressions +@cindex interval expressions, regexp operator @item @{@var{n}@} @itemx @{@var{n},@} @itemx @{@var{n},@var{m}@} @@ -4789,6 +4889,7 @@ expressions are not available in regular expressions. @cindex bracket expressions @cindex bracket expressions, range expressions @cindex range expressions (regexps) +@cindex character lists in regular expression As mentioned earlier, a bracket expression matches any character amongst those listed between the opening and closing square brackets. @@ -5028,10 +5129,10 @@ Matches the empty string at the end of a buffer (string). @end table -@cindex @code{^} (caret) -@cindex caret (@code{^}) -@cindex @code{?} (question mark) regexp operator -@cindex question mark (@code{?}) regexp operator +@cindex @code{^} (caret), regexp operator +@cindex caret (@code{^}), regexp operator +@cindex @code{?} (question mark), regexp operator +@cindex question mark (@code{?}), regexp operator Because @samp{^} and @samp{$} always work in terms of the beginning and end of strings, these operators don't add any new capabilities for @command{awk}. They are provided for compatibility with other @@ -5052,7 +5153,7 @@ lesser of two evils. @c @c Should really do this with file inclusion. @cindex regular expressions, @command{gawk}, command-line options -@cindex @command{gawk}, command-line options +@cindex @command{gawk}, command-line options, and regular expressions The various command-line options (@pxref{Options}) control how @command{gawk} interprets characters in regexps: @@ -5075,6 +5176,7 @@ Only POSIX regexps are supported; the GNU operators are not special (e.g., @samp{\w} matches a literal @samp{w}). Interval expressions are allowed. +@cindex Brian Kernighan's @command{awk} @item @code{--traditional} Traditional Unix @command{awk} regexps are matched. The GNU operators are not special, and interval expressions are not available. @@ -5130,7 +5232,7 @@ This works in any POSIX-compliant @command{awk}. @cindex tilde (@code{~}), @code{~} operator @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator -@cindex @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, with @code{~} and @code{!~} operators @cindex @command{gawk}, @code{IGNORECASE} variable in @c @cindex variables, @code{IGNORECASE} Another method, specific to @command{gawk}, is to set the variable @@ -5351,6 +5453,7 @@ occur often in practice, but it's worth noting for future reference. @chapter Reading Input Files @c STARTOFRANGE infir +@cindex reading input files @cindex input files, reading @cindex input files @cindex @code{FILENAME} variable @@ -5437,68 +5540,79 @@ To do this, use the special @code{BEGIN} pattern (@pxref{BEGIN/END}). For example: -@cindex @code{BEGIN} pattern @example -awk 'BEGIN @{ RS = "/" @} - @{ print $0 @}' BBS-list +awk 'BEGIN @{ RS = "u" @} + @{ print $0 @}' mail-list @end example @noindent -changes the value of @code{RS} to @code{"/"}, before reading any input. -This is a string whose first character is a slash; as a result, records -are separated by slashes. Then the input file is read, and the second +changes the value of @code{RS} to @samp{u}, before reading any input. +This is a string whose first character is the letter ``u;'' as a result, records +are separated by the letter ``u.'' Then the input file is read, and the second rule in the @command{awk} program (the action with no pattern) prints each record. Because each @code{print} statement adds a newline at the end of its output, this @command{awk} program copies the input -with each slash changed to a newline. Here are the results of running -the program on @file{BBS-list}: - -@example -$ @kbd{awk 'BEGIN @{ RS = "/" @}} -> @kbd{@{ print $0 @}' BBS-list} -@print{} aardvark 555-5553 1200 -@print{} 300 B -@print{} alpo-net 555-3412 2400 -@print{} 1200 -@print{} 300 A -@print{} barfly 555-7685 1200 -@print{} 300 A -@print{} bites 555-1675 2400 -@print{} 1200 -@print{} 300 A -@print{} camelot 555-0542 300 C -@print{} core 555-2912 1200 -@print{} 300 C -@print{} fooey 555-1234 2400 -@print{} 1200 -@print{} 300 B -@print{} foot 555-6699 1200 -@print{} 300 B -@print{} macfoo 555-6480 1200 -@print{} 300 A -@print{} sdace 555-3430 2400 -@print{} 1200 -@print{} 300 A -@print{} sabafoo 555-2127 1200 -@print{} 300 C -@print{} +with each @samp{u} changed to a newline. Here are the results of running +the program on @file{mail-list}: + +@example +$ @kbd{awk 'BEGIN @{ RS = "u" @}} +> @kbd{@{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiac +@print{} sq +@print{} e@@gmail.com F +@print{} Anthony 555-3412 anthony.assert +@print{} ro@@hotmail.com A +@print{} Becky 555-7685 becky.algebrar +@print{} m@@gmail.com A +@print{} Bill 555-1675 bill.drowning@@hotmail.com A +@print{} Broderick 555-0542 broderick.aliq +@print{} otiens@@yahoo.com R +@print{} Camilla 555-2912 camilla.inf +@print{} sar +@print{} m@@skynet.be R +@print{} Fabi +@print{} s 555-1234 fabi +@print{} s. +@print{} ndevicesim +@print{} s@@ +@print{} cb.ed +@print{} F +@print{} J +@print{} lie 555-6699 j +@print{} lie.perscr +@print{} tabor@@skeeve.com F +@print{} Martin 555-6480 martin.codicib +@print{} s@@hotmail.com A +@print{} Sam +@print{} el 555-3430 sam +@print{} el.lanceolis@@sh +@print{} .ed +@print{} A +@print{} Jean-Pa +@print{} l 555-2127 jeanpa +@print{} l.campanor +@print{} m@@ny +@print{} .ed +@print{} R +@print{} @end example @noindent -Note that the entry for the @samp{camelot} BBS is not split. +Note that the entry for the name @samp{Bill} is not split. In the original data file (@pxref{Sample Data Files}), the line looks like this: @example -camelot 555-0542 300 C +Bill 555-1675 bill.drowning@@hotmail.com A @end example @noindent -It has one baud rate only, so there are no slashes in the record, -unlike the others which have two or more baud rates. -In fact, this record is treated as part of the record -for the @samp{core} BBS; the newline separating them in the output +It contains no @samp{u} so there is no reason to split the record, +unlike the others which have one or more occurrences of the @samp{u}. +In fact, this record is treated as part of the previous record; +the newline separating them in the output is the original newline in the data file, not the one added by @command{awk} when it printed the record! @@ -5509,14 +5623,17 @@ using the variable-assignment feature (@pxref{Other Arguments}): @example -awk '@{ print $0 @}' RS="/" BBS-list +awk '@{ print $0 @}' RS="u" mail-list @end example @noindent -This sets @code{RS} to @samp{/} before processing @file{BBS-list}. +This sets @code{RS} to @samp{u} before processing @file{mail-list}. -Using an unusual character such as @samp{/} for the record separator -produces correct behavior in the vast majority of cases. +Using an alphabetic character such as @samp{u} for the record separator +is highly likely to produce strange results. +Using an unusual character such as @samp{/} is more likely to +produce correct behavior in the majority of cases, but there +are no guarantees. The moral is: Know Your Data. There is one unusual case, that occurs when @command{gawk} is being fully POSIX-compliant (@pxref{Options}). @@ -5538,6 +5655,7 @@ Reaching the end of an input file terminates the current input record, even if the last character in the file is not the character in @code{RS}. @value{DARKCORNER} +@cindex empty strings @cindex null strings @cindex strings, empty, See null strings The empty string @code{""} (a string without any characters) @@ -5669,7 +5787,7 @@ character as a record separator. However, this is a special case: @command{mawk} does not allow embedded @sc{nul} characters in strings. @cindex records, treating files as -@cindex files, as single records +@cindex treating files, as single records The best way to treat a whole file as a single record is to simply read the file in, one record at a time, concatenating each record onto the end of the previous ones. @@ -5746,31 +5864,29 @@ when you are not interested in specific fields. Here are some more examples: @example -$ @kbd{awk '$1 ~ /foo/ @{ print $0 @}' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '$1 ~ /li/ @{ print $0 @}' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F @end example @noindent -This example prints each record in the file @file{BBS-list} whose first -field contains the string @samp{foo}. The operator @samp{~} is called a +This example prints each record in the file @file{mail-list} whose first +field contains the string @samp{li}. The operator @samp{~} is called a @dfn{matching operator} (@pxref{Regexp Usage}); it tests whether a string (here, the field @code{$1}) matches a given regular expression. By contrast, the following example -looks for @samp{foo} in @emph{the entire record} and prints the first +looks for @samp{li} in @emph{the entire record} and prints the first field and the last field for each matching input record: @example -$ @kbd{awk '/foo/ @{ print $1, $NF @}' BBS-list} -@print{} fooey B -@print{} foot B -@print{} macfoo A -@print{} sabafoo C +$ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list} +@print{} Amelia F +@print{} Broderick R +@print{} Julie F +@print{} Samuel A @end example @c ENDOFRANGE fiex @@ -5798,7 +5914,7 @@ the record has fewer than 20 fields, so this prints a blank line. Here is another example of using expressions as field numbers: @example -awk '@{ print $(2*2) @}' BBS-list +awk '@{ print $(2*2) @}' mail-list @end example @command{awk} evaluates the expression @samp{(2*2)} and uses @@ -5807,8 +5923,8 @@ represents multiplication, so the expression @samp{2*2} evaluates to four. The parentheses are used so that the multiplication is done before the @samp{$} operation; they are necessary whenever there is a binary operator in the field-number expression. This example, then, prints the -hours of operation (the fourth field) for every line of the file -@file{BBS-list}. (All of the @command{awk} operators are listed, in +type of relationship (the fourth field) for every line of the file +@file{mail-list}. (All of the @command{awk} operators are listed, in order of decreasing precedence, in @ref{Precedence}.) @@ -6219,7 +6335,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}. Finally, the last @code{print} statement prints the new @code{$0}. @cindex @code{FS}, containing @code{^} -@cindex @code{^}, in @code{FS} +@cindex @code{^} (caret), in @code{FS} @cindex dark corner, @code{^}, in @code{FS} There is an additional subtlety to be aware of when using regular expressions for field splitting. @@ -6230,6 +6346,7 @@ different @command{awk} versions answer this question differently, and you should not rely on any specific behavior in your programs. @value{DARKCORNER} +@cindex Brian Kernighan's @command{awk} As a point of information, Brian Kernighan's @command{awk} allows @samp{^} to match only at the beginning of the record. @command{gawk} also works this way. For example: @@ -6273,7 +6390,7 @@ $ @kbd{echo a b | gawk 'BEGIN @{ FS = "" @}} @end example @cindex dark corner, @code{FS} as null string -@cindex FS variable, as null string +@cindex @code{FS} variable, as null string Traditionally, the behavior of @code{FS} equal to @code{""} was not defined. In this case, most versions of Unix @command{awk} simply treat the entire record as only having one field. @@ -6285,10 +6402,8 @@ behaves this way. @node Command Line Field Separator @subsection Setting @code{FS} from the Command Line -@cindex @option{-F} option -@cindex options, command-line -@cindex command line, options -@cindex field separators, on command line +@cindex @option{-F} option, command line +@cindex field separator, on command line @cindex command line, @code{FS} on@comma{} setting @cindex @code{FS} variable, setting from command line @@ -6338,66 +6453,59 @@ figures that you really want your fields to be separated with TABs and not @samp{t}s. Use @samp{-v FS="t"} or @samp{-F"[t]"} on the command line if you really do want to separate your fields with @samp{t}s. -As an example, let's use an @command{awk} program file called @file{baud.awk} -that contains the pattern @code{/300/} and the action @samp{print $1}: +As an example, let's use an @command{awk} program file called @file{edu.awk} +that contains the pattern @code{/edu/} and the action @samp{print $1}: @example -/300/ @{ print $1 @} +/edu/ @{ print $1 @} @end example Let's also set @code{FS} to be the @samp{-} character and run the -program on the file @file{BBS-list}. The following command prints a -list of the names of the bulletin boards that operate at 300 baud and +program on the file @file{mail-list}. The following command prints a +list of the names of the people that work at or attend a university, and the first three digits of their phone numbers: @c tweaked to make the tex output look better in @smallbook @example -$ @kbd{awk -F- -f baud.awk BBS-list} -@print{} aardvark 555 -@print{} alpo -@print{} barfly 555 -@print{} bites 555 -@print{} camelot 555 -@print{} core 555 -@print{} fooey 555 -@print{} foot 555 -@print{} macfoo 555 -@print{} sdace 555 -@print{} sabafoo 555 +$ @kbd{awk -F- -f edu.awk mail-list} +@print{} Fabius 555 +@print{} Samuel 555 +@print{} Jean @end example @noindent -Note the second line of output. The second line +Note the third line of output. The third line in the original file looked like this: @example -alpo-net 555-3412 2400/1200/300 A +Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example -The @samp{-} as part of the system's name was used as the field +The @samp{-} as part of the person's name was used as the field separator, instead of the @samp{-} in the phone number that was originally intended. This demonstrates why you have to be careful in choosing your field and record separators. @cindex Unix @command{awk}, password files@comma{} field separators and -Perhaps the most common use of a single character as the field -separator occurs when processing the Unix system password file. -On many Unix systems, each user has a separate entry in the system password -file, one line per user. The information in these lines is separated -by colons. The first field is the user's login name and the second is -the user's (encrypted or shadow) password. A password file entry might look -like this: +Perhaps the most common use of a single character as the field separator +occurs when processing the Unix system password file. On many Unix +systems, each user has a separate entry in the system password file, one +line per user. The information in these lines is separated by colons. +The first field is the user's login name and the second is the user's +encrypted or shadow password. (A shadow password is indicated by the +presence of a single @samp{x} in the second field.) A password file +entry might look like this: @cindex Robbins, Arnold @example -arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash +arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash @end example The following program searches the system password file and prints -the entries for users who have no password: +the entries for users whose full name is not indicated: @example -awk -F: '$2 == ""' /etc/passwd +awk -F: '$5 == ""' /etc/passwd @end example @node Full Line Fields @@ -6455,7 +6563,7 @@ POSIX standard.) @sidebar Changing @code{FS} Does Not Affect the Fields @cindex POSIX @command{awk}, field separators and -@cindex field separators, POSIX and +@cindex field separator, POSIX and According to the POSIX standard, @command{awk} is supposed to behave as if each record is split into fields at the time it is read. In particular, this means that if you change the value of @code{FS} @@ -6778,6 +6886,7 @@ available for splitting regular strings (@pxref{String Functions}). @node Multiple Line @section Multiple-Line Records +@cindex multiple-line records @c STARTOFRANGE recm @cindex records, multiline @c STARTOFRANGE imr @@ -6829,7 +6938,8 @@ after the last record, the final newline is removed from the record. In the second case, this special processing is not done. @value{DARKCORNER} -@cindex field separators, in multiline records +@cindex field separator, in multiline records +@cindex @code{FS}, in multiline records Now that the input is separated into records, the second step is to separate the fields in the record. One way to do this is to divide each of the lines into fields in the normal manner. This happens by default @@ -6977,7 +7087,7 @@ and study the @code{getline} command @emph{after} you have reviewed the rest of this @value{DOCUMENT} and have a good knowledge of how @command{awk} works. @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @command{getline} command @cindex differences in @command{awk} and @command{gawk}, @code{getline} command @cindex @code{getline} command, return values @cindex @option{--sandbox} option, input redirection with @code{getline} @@ -7073,6 +7183,7 @@ rule in the program. @xref{Next Statement}. @node Getline/Variable @subsection Using @code{getline} into a Variable +@cindex @code{getline} into a variable @cindex variables, @code{getline} command into@comma{} using You can use @samp{getline @var{var}} to read the next record from @@ -7124,6 +7235,7 @@ the value of @code{NF} do not change. @node Getline/File @subsection Using @code{getline} from a File +@cindex @code{getline} from a file @cindex input redirection @cindex redirection of input @cindex @code{<} (left angle bracket), @code{<} operator (I/O) @@ -7172,8 +7284,6 @@ from the file @var{file}, and put it in the variable @var{var}. As above, @var{file} is a string-valued expression that specifies the file from which to read. -@cindex @command{gawk}, @code{RT} variable in -@cindex @code{RT} variable In this version of @code{getline}, none of the built-in variables are changed and the record is not split into fields. The only variable changed is @var{var}.@footnote{This is not quite true. @code{RT} could @@ -7198,7 +7308,6 @@ Note here how the name of the extra input file is not built into the program; it is taken directly from the data, specifically from the second field on the @samp{@@include} line. -@cindex @code{close()} function The @code{close()} function is called to ensure that if two identical @samp{@@include} lines appear in the input, the entire specified file is included twice. @@ -7215,6 +7324,7 @@ that does handle nested @samp{@@include} statements. @subsection Using @code{getline} from a Pipe @c From private email, dated October 2, 1988. Used by permission, March 2013. +@cindex Kernighan, Brian @quotation @i{Omniscience has much to recommend it. Failing that, attention to details would be useful.} @@ -7224,7 +7334,7 @@ Failing that, attention to details would be useful.} @cindex @code{|} (vertical bar), @code{|} operator (I/O) @cindex vertical bar (@code{|}), @code{|} operator (I/O) @cindex input pipeline -@cindex pipes, input +@cindex pipe, input @cindex operators, input/output The output of a command can also be piped into @code{getline}, using @samp{@var{command} | getline}. In @@ -7248,7 +7358,6 @@ produced by running the rest of the line as a shell command: @end example @noindent -@cindex @code{close()} function The @code{close()} function is called to ensure that if two identical @samp{@@execute} lines appear in the input, the command is run for each one. @@ -7302,6 +7411,8 @@ because the concatenation operator is not parenthesized. You should write it as @samp{(@w{"echo "} "date") | getline} if you want your program to be portable to all @command{awk} implementations. +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility @quotation NOTE Unfortunately, @command{gawk} has not been consistent in its treatment of a construct like @samp{@w{"echo "} "date" | getline}. @@ -7626,6 +7737,7 @@ indefinitely until some other process opens it for writing. @node Command line directories @section Directories On The Command Line +@cindex differences in @command{awk} and @command{gawk}, command line directories @cindex directories, command line @cindex command line, directories on @@ -7869,13 +7981,29 @@ program by using a new value of @code{OFS}. @example $ @kbd{awk 'BEGIN @{ OFS = ";"; ORS = "\n\n" @}} -> @kbd{@{ print $1, $2 @}' BBS-list} -@print{} aardvark;555-5553 -@print{} -@print{} alpo-net;555-3412 -@print{} -@print{} barfly;555-7685 -@dots{} +> @kbd{@{ print $1, $2 @}' mail-list} +@print{} Amelia;555-5553 +@print{} +@print{} Anthony;555-3412 +@print{} +@print{} Becky;555-7685 +@print{} +@print{} Bill;555-1675 +@print{} +@print{} Broderick;555-0542 +@print{} +@print{} Camilla;555-2912 +@print{} +@print{} Fabius;555-1234 +@print{} +@print{} Julie;555-6699 +@print{} +@print{} Martin;555-6480 +@print{} +@print{} Samuel;555-3430 +@print{} +@print{} Jean-Paul;555-2127 +@print{} @end example If the value of @code{ORS} does not contain a newline, the program's output @@ -7897,7 +8025,7 @@ numbers can be formatted. The different format specifications are discussed more fully in @ref{Control Letters}. -@cindex @code{sprintf()} function +@cindexawkfunc{sprintf} @cindex @code{OFMT} variable @cindex output, format specifier@comma{} @code{OFMT} The built-in variable @code{OFMT} contains the default format specification @@ -7963,7 +8091,7 @@ parentheses are necessary if any of the item expressions use the @samp{>} relational operator; otherwise, it can be confused with an output redirection (@pxref{Redirection}). -@cindex format strings +@cindex format specifiers The difference between @code{printf} and @code{print} is the @var{format} argument. This is an expression whose value is taken as a string; it specifies how to output each of the other arguments. It is called the @@ -8349,30 +8477,30 @@ The following simple example shows how to use @code{printf} to make an aligned table: @example -awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list +awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @noindent This command -prints the names of the bulletin boards (@code{$1}) in the file -@file{BBS-list} as a string of 10 characters that are left-justified. It also +prints the names of the people (@code{$1}) in the file +@file{mail-list} as a string of 10 characters that are left-justified. It also prints the phone numbers (@code{$2}) next on the line. This produces an aligned two-column table of names and phone numbers, as shown here: @example -$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list} -@print{} aardvark 555-5553 -@print{} alpo-net 555-3412 -@print{} barfly 555-7685 -@print{} bites 555-1675 -@print{} camelot 555-0542 -@print{} core 555-2912 -@print{} fooey 555-1234 -@print{} foot 555-6699 -@print{} macfoo 555-6480 -@print{} sdace 555-3430 -@print{} sabafoo 555-2127 +$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list} +@print{} Amelia 555-5553 +@print{} Anthony 555-3412 +@print{} Becky 555-7685 +@print{} Bill 555-1675 +@print{} Broderick 555-0542 +@print{} Camilla 555-2912 +@print{} Fabius 555-1234 +@print{} Julie 555-6699 +@print{} Martin 555-6480 +@print{} Samuel 555-3430 +@print{} Jean-Paul 555-2127 @end example In this case, the phone numbers had to be printed as strings because @@ -8393,7 +8521,7 @@ the @command{awk} program: @example awk 'BEGIN @{ print "Name Number" print "---- ------" @} - @{ printf "%-10s %s\n", $1, $2 @}' BBS-list + @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example The above example mixes @code{print} and @code{printf} statements in @@ -8403,7 +8531,7 @@ same results: @example awk 'BEGIN @{ printf "%-10s %s\n", "Name", "Number" printf "%-10s %s\n", "----", "------" @} - @{ printf "%-10s %s\n", $1, $2 @}' BBS-list + @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @noindent @@ -8418,7 +8546,7 @@ emphasized by storing it in a variable, like this: awk 'BEGIN @{ format = "%-10s %s\n" printf format, "Name", "Number" printf format, "----", "------" @} - @{ printf format, $1, $2 @}' BBS-list + @{ printf format, $1, $2 @}' mail-list @end example @c !!! exercise @@ -8475,20 +8603,20 @@ before the first output is written to it. Subsequent writes to the same @var{output-file} do not erase @var{output-file}, but append to it. (This is different from how you use redirections in shell scripts.) If @var{output-file} does not exist, it is created. For example, here -is how an @command{awk} program can write a list of BBS names to one +is how an @command{awk} program can write a list of peoples' names to one file named @file{name-list}, and a list of phone numbers to another file named @file{phone-list}: @example $ @kbd{awk '@{ print $2 > "phone-list"} -> @kbd{print $1 > "name-list" @}' BBS-list} +> @kbd{print $1 > "name-list" @}' mail-list} $ @kbd{cat phone-list} @print{} 555-5553 @print{} 555-3412 @dots{} $ @kbd{cat name-list} -@print{} aardvark -@print{} alpo-net +@print{} Amelia +@print{} Anthony @dots{} @end example @@ -8506,7 +8634,7 @@ appended to the file. If @var{output-file} does not exist, then it is created. @cindex @code{|} (vertical bar), @code{|} operator (I/O) -@cindex pipes, output +@cindex pipe, output @cindex output, pipes @item print @var{items} | @var{command} It is possible to send output to another program through a pipe @@ -8517,7 +8645,7 @@ to another process created to execute @var{command}. The redirection argument @var{command} is actually an @command{awk} expression. Its value is converted to a string whose contents give the shell command to be run. For example, the following produces two -files, one unsorted list of BBS names, and one list sorted in reverse +files, one unsorted list of peoples' names, and one list sorted in reverse alphabetical order: @ignore @@ -8530,7 +8658,7 @@ alone for now and let's hope no-one notices. @example awk '@{ print $1 > "names.unsorted" command = "sort -r > names.sorted" - print $1 | command @}' BBS-list + print $1 | command @}' mail-list @end example The unsorted list is written with an ordinary redirection, while @@ -8740,9 +8868,9 @@ has been ported to, not just those that are POSIX-compliant: @cindex extensions, common@comma{} @code{/dev/stdout} special file @cindex extensions, common@comma{} @code{/dev/stderr} special file @cindex file names, standard streams in @command{gawk} -@cindex @code{/dev/@dots{}} special files (@command{gawk}) +@cindex @code{/dev/@dots{}} special files @cindex files, @code{/dev/@dots{}} special files -@cindex @code{/dev/fd/@var{N}} special files +@cindex @code{/dev/fd/@var{N}} special files (@command{gawk}) @table @file @item /dev/stdin The standard input (file descriptor 0). @@ -8843,7 +8971,7 @@ Doing so results in unpredictable behavior. @c STARTOFRANGE ofc @cindex output, files@comma{} closing @c STARTOFRANGE pc -@cindex pipes, closing +@cindex pipe, closing @c STARTOFRANGE cc @cindex coprocesses, closing @cindex @code{getline} command, coprocesses@comma{} using from @@ -8861,7 +8989,7 @@ the file name or command associated with it, and subsequent writes to the same file or command are appended to the previous writes. The file or pipe stays open until @command{awk} exits. -@cindex @code{close()} function +@cindexawkfunc{close} This implies that special steps are necessary in order to read the same file again from the beginning, or to rerun a shell command (rather than reading more output from the same command). The @code{close()} function @@ -8946,6 +9074,7 @@ a separate message. @cindex differences in @command{awk} and @command{gawk}, @code{close()} function @cindex portability, @code{close()} function and +@cindex @code{close()} function, portability If you use more files than the system allows you to have open, @command{gawk} attempts to multiplex the available open files among your data files. @command{gawk}'s ability to do this depends upon the @@ -9025,7 +9154,7 @@ retval = close(command) # syntax error in many Unix awks @end example @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @command{close()} function @command{gawk} treats @code{close()} as a function. The return value is @minus{}1 if the argument names something that was never opened with a redirection, or if there is @@ -9124,7 +9253,8 @@ have different forms, but are stored identically internally. @node Scalar Constants @subsubsection Numeric and String Constants -@cindex numeric, constants +@cindex constants, numeric +@cindex numeric constants A @dfn{numeric constant} stands for a number. This number can be an integer, a decimal fraction, or a number in scientific (exponential) notation.@footnote{The internal representation of all numbers, @@ -9150,7 +9280,7 @@ double-quotation marks. For example: @noindent @cindex differences in @command{awk} and @command{gawk}, strings -@cindex strings, length of +@cindex strings, length limitations represents the string whose contents are @samp{parrot}. Strings in @command{gawk} can be of any length, and they can contain any of the possible eight-bit ASCII characters including ASCII @sc{nul} (character code zero). @@ -9337,9 +9467,9 @@ upon the contents of the current input record. @cindex differences in @command{awk} and @command{gawk}, regexp constants @cindex dark corner, regexp constants, as arguments to user-defined functions -@cindex @code{gensub()} function (@command{gawk}) -@cindex @code{sub()} function -@cindex @code{gsub()} function +@cindexgawkfunc{gensub} +@cindexawkfunc{sub} +@cindexawkfunc{gsub} Constant regular expressions are also used as the first argument for the @code{gensub()}, @code{sub()}, and @code{gsub()} functions, as the second argument of the @code{match()} function, @@ -9472,7 +9602,7 @@ its position among the input file arguments---after the processing of the preceding input file argument. For example: @example -awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list +awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list @end example @noindent @@ -9481,10 +9611,10 @@ the first file is read, the command line sets the variable @code{n} equal to four. This causes the fourth field to be printed in lines from @file{inventory-shipped}. After the first file has finished, but before the second file is started, @code{n} is set to two, so that the -second field is printed in lines from @file{BBS-list}: +second field is printed in lines from @file{mail-list}: @example -$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list} +$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list} @print{} 15 @print{} 24 @dots{} @@ -9807,9 +9937,9 @@ specific operator to represent it. Instead, concatenation is performed by writing expressions next to one another, with no operator. For example: @example -$ @kbd{awk '@{ print "Field number one: " $1 @}' BBS-list} -@print{} Field number one: aardvark -@print{} Field number one: alpo-net +$ @kbd{awk '@{ print "Field number one: " $1 @}' mail-list} +@print{} Field number one: Amelia +@print{} Field number one: Anthony @dots{} @end example @@ -9817,9 +9947,9 @@ Without the space in the string constant after the @samp{:}, the line runs together. For example: @example -$ @kbd{awk '@{ print "Field number one:" $1 @}' BBS-list} -@print{} Field number one:aardvark -@print{} Field number one:alpo-net +$ @kbd{awk '@{ print "Field number one:" $1 @}' mail-list} +@print{} Field number one:Amelia +@print{} Field number one:Anthony @dots{} @end example @@ -9836,6 +9966,8 @@ name = "name" print "something meaningful" > file name @end example +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility @noindent This produces a syntax error with some versions of Unix @command{awk}.@footnote{It happens that Brian Kernighan's @@ -10780,10 +10912,10 @@ The Boolean operators are: @item @var{boolean1} && @var{boolean2} True if both @var{boolean1} and @var{boolean2} are true. For example, the following statement prints the current input record if it contains -both @samp{2400} and @samp{foo}: +both @samp{edu} and @samp{li}: @example -if ($0 ~ /2400/ && $0 ~ /foo/) print +if ($0 ~ /edu/ && $0 ~ /li/) print @end example @cindex side effects, Boolean operators @@ -10796,11 +10928,11 @@ no substring @samp{foo} in the record. @item @var{boolean1} || @var{boolean2} True if at least one of @var{boolean1} or @var{boolean2} is true. For example, the following statement prints all records in the input -that contain @emph{either} @samp{2400} or -@samp{foo} or both: +that contain @emph{either} @samp{edu} or +@samp{li} or both: @example -if ($0 ~ /2400/ || $0 ~ /foo/) print +if ($0 ~ /edu/ || $0 ~ /li/) print @end example The subexpression @var{boolean2} is evaluated only if @var{boolean1} @@ -11395,7 +11527,7 @@ slashes (@code{/@var{regexp}/}), or any expression whose string value is used as a dynamic regular expression (@pxref{Computed Regexps}). The following example prints the second field of each input record -whose first field is precisely @samp{foo}: +whose first field is precisely @samp{li}: @cindex @code{/} (forward slash), patterns and @cindex forward slash (@code{/}), patterns and @@ -11404,68 +11536,65 @@ whose first field is precisely @samp{foo}: @cindex @code{!} (exclamation point), @code{!~} operator @cindex exclamation point (@code{!}), @code{!~} operator @example -$ @kbd{awk '$1 == "foo" @{ print $2 @}' BBS-list} +$ @kbd{awk '$1 == "li" @{ print $2 @}' mail-list} @end example @noindent -(There is no output, because there is no BBS site with the exact name @samp{foo}.) +(There is no output, because there is no person with the exact name @samp{li}.) Contrast this with the following regular expression match, which -accepts any record with a first field that contains @samp{foo}: +accepts any record with a first field that contains @samp{li}: @example -$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' BBS-list} -@print{} 555-1234 +$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' mail-list} +@print{} 555-5553 @print{} 555-6699 -@print{} 555-6480 -@print{} 555-2127 @end example @cindex regexp constants, as patterns @cindex patterns, regexp constants as A regexp constant as a pattern is also a special case of an expression -pattern. The expression @code{/foo/} has the value one if @samp{foo} -appears in the current input record. Thus, as a pattern, @code{/foo/} -matches any record containing @samp{foo}. +pattern. The expression @code{/li/} has the value one if @samp{li} +appears in the current input record. Thus, as a pattern, @code{/li/} +matches any record containing @samp{li}. @cindex Boolean expressions, as patterns Boolean expressions are also commonly used as patterns. Whether the pattern matches an input record depends on whether its subexpressions match. For example, the following command prints all the records in -@file{BBS-list} that contain both @samp{2400} and @samp{foo}: +@file{mail-list} that contain both @samp{edu} and @samp{li}: @example -$ @kbd{awk '/2400/ && /foo/' BBS-list} -@print{} fooey 555-1234 2400/1200/300 B +$ @kbd{awk '/edu/ && /li/' mail-list} +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A @end example The following command prints all records in -@file{BBS-list} that contain @emph{either} @samp{2400} or @samp{foo} +@file{mail-list} that contain @emph{either} @samp{edu} or @samp{li} (or both, of course): @example -$ @kbd{awk '/2400/ || /foo/' BBS-list} -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} fooey 555-1234 2400/1200/300 B -@print{} foot 555-6699 1200/300 B -@print{} macfoo 555-6480 1200/300 A -@print{} sdace 555-3430 2400/1200/300 A -@print{} sabafoo 555-2127 1200/300 C +$ @kbd{awk '/edu/ || /li/' mail-list} +@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F +@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F +@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example The following command prints all records in -@file{BBS-list} that do @emph{not} contain the string @samp{foo}: +@file{mail-list} that do @emph{not} contain the string @samp{li}: @example -$ @kbd{awk '! /foo/' BBS-list} -@print{} aardvark 555-5553 1200/300 B -@print{} alpo-net 555-3412 2400/1200/300 A -@print{} barfly 555-7685 1200/300 A -@print{} bites 555-1675 2400/1200/300 A -@print{} camelot 555-0542 300 C -@print{} core 555-2912 1200/300 C -@print{} sdace 555-3430 2400/1200/300 A +$ @kbd{awk '! /li/' mail-list} +@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A +@print{} Becky 555-7685 becky.algebrarum@@gmail.com A +@print{} Bill 555-1675 bill.drowning@@hotmail.com A +@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R +@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F +@print{} Martin 555-6480 martin.codicibus@@hotmail.com A +@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R @end example @cindex @code{BEGIN} pattern, Boolean patterns and @@ -11569,6 +11698,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'} @error{} gawk: cmd. line:1: ^ syntax error @end example +@cindex range patterns, line continuation and +As a minor point of interest, although it is poor style, +POSIX allows you to put a newline after the comma in +a range pattern. @value{DARKCORNER} + @node BEGIN/END @subsection The @code{BEGIN} and @code{END} Special Patterns @@ -11593,28 +11727,30 @@ programmers. @node Using BEGIN/END @subsubsection Startup and Cleanup Actions +@cindex @code{BEGIN} pattern +@cindex @code{END} pattern A @code{BEGIN} rule is executed once only, before the first input record is read. Likewise, an @code{END} rule is executed once only, after all the input is read. For example: @example $ @kbd{awk '} -> @kbd{BEGIN @{ print "Analysis of \"foo\"" @}} -> @kbd{/foo/ @{ ++n @}} -> @kbd{END @{ print "\"foo\" appears", n, "times." @}' BBS-list} -@print{} Analysis of "foo" -@print{} "foo" appears 4 times. +> @kbd{BEGIN @{ print "Analysis of \"li\"" @}} +> @kbd{/li/ @{ ++n @}} +> @kbd{END @{ print "\"li\" appears in", n, "records." @}' mail-list} +@print{} Analysis of "li" +@print{} "li" appears in 4 records. @end example @cindex @code{BEGIN} pattern, operators and @cindex @code{END} pattern, operators and -This program finds the number of records in the input file @file{BBS-list} -that contain the string @samp{foo}. The @code{BEGIN} rule prints a title +This program finds the number of records in the input file @file{mail-list} +that contain the string @samp{li}. The @code{BEGIN} rule prints a title for the report. There is no need to use the @code{BEGIN} rule to initialize the counter @code{n} to zero, since @command{awk} does this automatically (@pxref{Variables}). The second rule increments the variable @code{n} every time a -record containing the pattern @samp{foo} is read. The @code{END} rule +record containing the pattern @samp{li} is read. The @code{END} rule prints the value of @code{n} at the end of the run. The special patterns @code{BEGIN} and @code{END} cannot be used in ranges @@ -11667,6 +11803,7 @@ to give @code{$0} a real value is to execute a @code{getline} command without a variable (@pxref{Getline}). Another way is simply to assign a value to @code{$0}. +@cindex Brian Kernighan's @command{awk} @cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns @cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns @cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and @@ -11735,7 +11872,7 @@ you can bypass the fatal error and move on to the next file on the command line. @cindex @command{gawk}, @code{ERRNO} variable in -@cindex @code{ERRNO} variable +@cindex @code{ERRNO} variable, with @code{BEGINFILE} pattern @cindex @code{nextfile} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and You do this by checking if the @code{ERRNO} variable is not the empty string; if so, then @command{gawk} was not able to open the file. In @@ -11777,7 +11914,7 @@ both @code{BEGINFILE} and @code{ENDFILE}. Only the @samp{getline In most other @command{awk} implementations, or if @command{gawk} is in compatibility mode (@pxref{Options}), they are not special. -@c FIXME: For 4.1 maybe deal with this? +@c FIXME: For 4.2 maybe deal with this? @ignore Date: Tue, 17 May 2011 02:06:10 PDT From: rankin@pactechdata.com (Pat Rankin) @@ -11808,7 +11945,7 @@ An empty (i.e., nonexistent) pattern is considered to match @emph{every} input record. For example, the program: @example -awk '@{ print $1 @}' BBS-list +awk '@{ print $1 @}' mail-list @end example @noindent @@ -12061,6 +12198,7 @@ the first thing on its line. @subsection The @code{while} Statement @cindex @code{while} statement @cindex loops +@cindex loops, @code{while} @cindex loops, See Also @code{while} statement In programming, a @dfn{loop} is a part of a program that can @@ -12121,6 +12259,7 @@ program is harder to read without it. @node Do Statement @subsection The @code{do}-@code{while} Statement @cindex @code{do}-@code{while} statement +@cindex loops, @code{do}-@code{while} The @code{do} loop is a variation of the @code{while} looping statement. The @code{do} loop executes the @var{body} once and then repeats the @@ -12166,6 +12305,7 @@ occasionally is there a real use for a @code{do} statement. @node For Statement @subsection The @code{for} Statement @cindex @code{for} statement +@cindex loops, @code{for}, iterative The @code{for} statement makes it more convenient to count iterations of a loop. The general form of the @code{for} statement looks like this: @@ -12272,6 +12412,8 @@ for more information on this version of the @code{for} loop. @cindex @code{case} keyword @cindex @code{default} keyword +This @value{SECTION} describes a @command{gawk}-specific feature. + The @code{switch} statement allows the evaluation of an expression and the execution of statements based on a @code{case} match. Case statements are checked for a match in the order they are defined. If no suitable @@ -12336,6 +12478,7 @@ it is not available. @subsection The @code{break} Statement @cindex @code{break} statement @cindex loops, exiting +@cindex loops, @code{break} statement and The @code{break} statement jumps out of the innermost @code{for}, @code{while}, or @code{do} loop that encloses it. The following example @@ -12395,6 +12538,7 @@ This is discussed in @ref{Switch Statement}. @cindex POSIX @command{awk}, @code{break} statement and @cindex dark corner, @code{break} statement @cindex @command{gawk}, @code{break} statement in +@cindex Brian Kernighan's @command{awk} The @code{break} statement has no meaning when used outside the body of a loop or @code{switch}. However, although it was never documented, @@ -12459,6 +12603,7 @@ This program loops forever once @code{x} reaches 5. @cindex POSIX @command{awk}, @code{continue} statement and @cindex dark corner, @code{continue} statement @cindex @command{gawk}, @code{continue} statement in +@cindex Brian Kernighan's @command{awk} The @code{continue} statement has no special meaning with respect to the @code{switch} statement, nor does it have any meaning when used outside the body of a loop. Historical versions of @command{awk} treated a @code{continue} @@ -12596,8 +12741,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}. @cindex functions, user-defined, @code{next}/@code{nextfile} statements and @cindex @code{nextfile} statement, user-defined functions and -The current version of the Brian Kernighan's @command{awk} (@pxref{Other -Versions}) also supports @code{nextfile}. However, it doesn't allow the +@cindex Brian Kernighan's @command{awk} +@cindex @command{mawk} utility +The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other +Versions}) also support @code{nextfile}. However, they don't allow the @code{nextfile} statement inside function bodies (@pxref{User-defined}). @command{gawk} does; a @code{nextfile} inside a function body reads the next record and starts processing it with the first rule in the program, @@ -12834,8 +12981,8 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment. @cindex @command{gawk}, @code{IGNORECASE} variable in @cindex @code{IGNORECASE} variable @cindex differences in @command{awk} and @command{gawk}, @code{IGNORECASE} variable -@cindex case sensitivity, string comparisons and -@cindex case sensitivity, regexps and +@cindex case sensitivity, and string comparisons +@cindex case sensitivity, and regexps @cindex regular expressions, case sensitivity @item IGNORECASE # If @code{IGNORECASE} is nonzero or non-null, then all string comparisons @@ -13000,16 +13147,16 @@ In the following example: $ @kbd{awk 'BEGIN @{} > @kbd{for (i = 0; i < ARGC; i++)} > @kbd{print ARGV[i]} -> @kbd{@}' inventory-shipped BBS-list} +> @kbd{@}' inventory-shipped mail-list} @print{} awk @print{} inventory-shipped -@print{} BBS-list +@print{} mail-list @end example @noindent @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]} contains @samp{inventory-shipped}, and @code{ARGV[2]} contains -@samp{BBS-list}. The value of @code{ARGC} is three, one more than the +@samp{mail-list}. The value of @code{ARGC} is three, one more than the index of the last element in @code{ARGV}, because the elements are numbered from zero. @@ -13052,7 +13199,7 @@ or if @command{gawk} is in compatibility mode it is not special. @cindex @code{ENVIRON} array -@cindex environment variables +@cindex environment variables, in @code{ENVIRON} array @item ENVIRON An associative array containing the values of the environment. The array indices are the environment variable names; the elements are the values of @@ -13175,10 +13322,12 @@ The following elements (listed alphabetically) are guaranteed to be available: @table @code +@cindex effective group ID of @command{gawk} user @item PROCINFO["egid"] The value of the @code{getegid()} system call. @item PROCINFO["euid"] +@cindex effective user ID of @command{gawk} user The value of the @code{geteuid()} system call. @item PROCINFO["FS"] @@ -13188,6 +13337,7 @@ This is or @code{"FPAT"} if field matching with @code{FPAT} is in effect. @item PROCINFO["identifiers"] +@cindex program identifiers A subarray, indexed by the names of all identifiers used in the text of the AWK program. For each identifier, the value of the element is one of the following: @@ -13216,15 +13366,19 @@ after it has finished parsing the program; they are @emph{not} updated while the program runs. @item PROCINFO["gid"] +@cindex group ID of @command{gawk} user The value of the @code{getgid()} system call. @item PROCINFO["pgrpid"] +@cindex process group idIDof @command{gawk} process The process group ID of the current process. @item PROCINFO["pid"] +@cindex process ID of @command{gawk} process The process ID of the current process. @item PROCINFO["ppid"] +@cindex parent process ID of @command{gawk} process The parent process ID of the current process. @item PROCINFO["sorted_in"] @@ -13244,25 +13398,31 @@ Assigning a new value to this element changes the default. The value of the @code{getuid()} system call. @item PROCINFO["version"] +@cindex version of @command{gawk} +@cindex @command{gawk} version The version of @command{gawk}. @end table The following additional elements in the array are available to provide information about the MPFR and GMP libraries if your version of @command{gawk} supports arbitrary precision numbers -(@pxref{Arbitrary Precision Arithmetic}): +(@pxref{Gawk and MPFR}): @table @code +@cindex version of GNU MPFR library @item PROCINFO["mpfr_version"] The version of the GNU MPFR library. @item PROCINFO["gmp_version"] +@cindex version of GNU MP library The version of the GNU MP library. @item PROCINFO["prec_max"] +@cindex maximum precision supported by MPFR library The maximum precision supported by MPFR. @item PROCINFO["prec_min"] +@cindex minimum precision supported by MPFR library The minimum precision required by MPFR. @end table @@ -13273,12 +13433,15 @@ of @command{gawk} supports dynamic loading of extension functions @table @code @item PROCINFO["api_major"] +@cindex version of @command{gawk} extension API +@cindex extension API, version number The major version of the extension API. @item PROCINFO["api_minor"] The minor version of the extension API. @end table +@cindex supplementary groups of @command{gawk} process On some systems, there may be elements in the array, @code{"group1"} through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of supplementary groups that the process has. Use the @code{in} operator @@ -13286,7 +13449,7 @@ to test for these elements (@pxref{Reference to Elements}). @cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, uses The @code{PROCINFO} array has the following additional uses: @itemize @bullet @@ -13358,7 +13521,7 @@ if an element in @code{SYMTAB} is an array. Also, you may not use the @code{delete} statement with the @code{SYMTAB} array. -You may use an index for @code{SYMTAB} that is not a predefined identifer: +You may use an index for @code{SYMTAB} that is not a predefined identifier: @example SYMTAB["xxx"] = 5 @@ -13426,7 +13589,7 @@ changed. @node ARGC and ARGV @subsection Using @code{ARGC} and @code{ARGV} -@cindex @code{ARGC}/@code{ARGV} variables +@cindex @code{ARGC}/@code{ARGV} variables, how to use @cindex arguments, command-line @cindex command line, arguments @@ -13438,16 +13601,16 @@ and @code{ARGV}: $ @kbd{awk 'BEGIN @{} > @kbd{for (i = 0; i < ARGC; i++)} > @kbd{print ARGV[i]} -> @kbd{@}' inventory-shipped BBS-list} +> @kbd{@}' inventory-shipped mail-list} @print{} awk @print{} inventory-shipped -@print{} BBS-list +@print{} mail-list @end example @noindent In this example, @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]} contains @samp{inventory-shipped}, and @code{ARGV[2]} contains -@samp{BBS-list}. +@samp{mail-list}. Notice that the @command{awk} program is not entered in @code{ARGV}. The other command-line options, with their arguments, are also not entered. This includes variable assignments done with the @option{-v} @@ -13571,7 +13734,7 @@ ability to support true multidimensional arrays. @cindex variables, names of @cindex functions, names of -@cindex arrays, names of +@cindex arrays, names of, and names of functions/variables @cindex names, arrays/variables @cindex namespace issues @command{awk} maintains a single set @@ -13747,10 +13910,9 @@ Here, the number @code{1} isn't double-quoted, since @command{awk} automatically converts it to a string. @cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable @cindex case sensitivity, array indices and -@cindex arrays, @code{IGNORECASE} variable and -@cindex @code{IGNORECASE} variable, array subscripts and +@cindex arrays, and @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, and array indices The value of @code{IGNORECASE} has no effect upon array subscripting. The identical string value used to store an array element must be used to retrieve it. @@ -13766,8 +13928,9 @@ is independent of the number of elements in the array. @node Reference to Elements @subsection Referring to an Array Element -@cindex arrays, elements, referencing -@cindex elements in arrays +@cindex arrays, referencing elements +@cindex array members +@cindex elements of arrays The principal way to use an array is to refer to one of its elements. An array reference is an expression as follows: @@ -13784,11 +13947,16 @@ The value of the array reference is the current value of that array element. For example, @code{foo[4.3]} is an expression for the element of array @code{foo} at index @samp{4.3}. +@cindex arrays, unassigned elements +@cindex unassigned array elements +@cindex empty array elements A reference to an array element that has no recorded value yields a value of @code{""}, the null string. This includes elements that have not been assigned any value as well as elements that have been deleted (@pxref{Delete}). +@cindex non-existent array elements +@cindex arrays, elements that don't exist @quotation NOTE A reference to an element that does not exist @emph{automatically} creates that array element, with the null string as its value. (In some cases, @@ -13808,7 +13976,7 @@ if it didn't exist before! @end quotation @c @cindex arrays, @code{in} operator and -@cindex @code{in} operator +@cindex @code{in} operator, testing if array element exists To determine whether an element exists in an array at a certain index, use the following expression: @@ -13843,8 +14011,8 @@ if (frequencies[2] != "") @node Assigning Elements @subsection Assigning Array Elements -@cindex arrays, elements, assigning -@cindex elements in arrays, assigning +@cindex arrays, elements, assigning values +@cindex elements in arrays, assigning values Array elements can be assigned values just like @command{awk} variables: @@ -13861,6 +14029,7 @@ assign to that element of the array. @node Array Example @subsection Basic Array Example +@cindex arrays, an example of using The following program takes a list of lines, each beginning with a line number, and prints them out in order of line number. The line numbers @@ -13930,7 +14099,9 @@ END @{ @node Scanning an Array @subsection Scanning All Elements of an Array @cindex elements in arrays, scanning +@cindex scanning arrays @cindex arrays, scanning +@cindex loops, @code{for}, array scanning In programs that use arrays, it is often necessary to use a loop that executes once for each element of an array. In other languages, where @@ -13947,7 +14118,7 @@ for (@var{var} in @var{array}) @end example @noindent -@cindex @code{in} operator +@cindex @code{in} operator, use in loops This loop executes @var{body} once for each index in @var{array} that the program has previously used, with the variable @var{var} set to that index. @@ -13986,8 +14157,9 @@ END @{ @xref{Word Sorting}, for a more detailed example of this type. -@cindex arrays, elements, order of -@cindex elements in arrays, order of +@cindex arrays, elements, order of access by @code{in} operator +@cindex elements in arrays, order of access by @code{in} operator +@cindex @code{in} operator, order of array access The order in which elements of the array are accessed by this statement is determined by the internal arrangement of the array elements within @command{awk} and normally cannot be controlled or changed. This can lead to @@ -14005,6 +14177,8 @@ determines the order in which the array is traversed. This order is usually based on the internal implementation of arrays and will vary from one version of @command{awk} to the next. +@cindex array scanning order, controlling +@cindex controlling array scanning order Often, though, you may wish to do something simple, such as ``traverse the array by comparing the indices in ascending order,'' or ``traverse the array by comparing the values in descending order.'' @@ -14021,6 +14195,7 @@ to use for comparison of array elements. This advanced feature is described later, in @ref{Array Sorting}. @end itemize +@cindex @code{PROCINFO}, values of @code{sorted_in} The following special values for @code{PROCINFO["sorted_in"]} are available: @table @code @@ -14181,7 +14356,7 @@ if (4 in foo) print "This will never be printed" @end example -@cindex null strings, array elements and +@cindex null strings, and deleting array elements It is important to note that deleting an element is @emph{not} the same as assigning it a null value (the empty string, @code{""}). For example: @@ -14203,6 +14378,7 @@ is not in the array is deleted. @cindex extensions, common@comma{} @code{delete} to delete entire arrays @cindex arrays, deleting entire contents @cindex deleting entire arrays +@cindex @code{delete} @var{array} @cindex differences in @command{awk} and @command{gawk}, array elements, deleting All the elements of an array may be deleted with a single statement by leaving off the subscript in the @code{delete} statement, @@ -14217,6 +14393,7 @@ Using this version of the @code{delete} statement is about three times more efficient than the equivalent loop that deletes each element one at a time. +@cindex Brian Kernighan's @command{awk} @quotation NOTE For many years, using @code{delete} without a subscript was a @command{gawk} extension. @@ -14259,9 +14436,9 @@ a = 3 @section Using Numbers to Subscript Arrays @cindex numbers, as array subscripts -@cindex arrays, subscripts +@cindex arrays, numeric subscripts @cindex subscripts in arrays, numbers as -@cindex @code{CONVFMT} variable, array subscripts and +@cindex @code{CONVFMT} variable, and array subscripts An important aspect to remember about arrays is that @emph{array subscripts are always strings}. When a numeric value is used as a subscript, it is converted to a string value before being used for subscripting @@ -14291,7 +14468,8 @@ string value from @code{xyz}---this time @code{"12.15"}---because the value of @code{CONVFMT} only allows two significant digits. This test fails, since @code{"12.15"} is different from @code{"12.153"}. -@cindex converting, during subscripting +@cindex converting integer array subscripts +@cindex integer array indices According to the rules for conversions (@pxref{Conversion}), integer values are always converted to strings as integers, no matter what the @@ -14397,7 +14575,7 @@ languages, including @command{awk}) to refer to an element of a two-dimensional array named @code{grid} is with @code{grid[@var{x},@var{y}]}. -@cindex @code{SUBSEP} variable, multidimensional arrays +@cindex @code{SUBSEP} variable, and multidimensional arrays Multidimensional arrays are supported in @command{awk} through concatenation of indices into one string. @command{awk} converts the indices into strings @@ -14429,6 +14607,7 @@ combined strings that are ambiguous. Suppose that @code{SUBSEP} is "b@@c"]}} are indistinguishable because both are actually stored as @samp{foo["a@@b@@c"]}. +@cindex @code{in} operator, index existence in multidimensional arrays To test whether a particular index sequence exists in a multidimensional array, use the same operator (@code{in}) that is used for single dimensional arrays. Write the whole sequence of indices @@ -14494,6 +14673,7 @@ multidimensional @emph{way of accessing} an array. @cindex subscripts in arrays, multidimensional, scanning @cindex arrays, multidimensional, scanning +@cindex scanning multidimensional arrays However, if your program has an array that is always accessed as multidimensional, you can get the effect of scanning it by combining the scanning @code{for} statement @@ -14535,6 +14715,7 @@ separate indices is recovered. @node Arrays of Arrays @section Arrays of Arrays +@cindex arrays of arrays @command{gawk} goes beyond standard @command{awk}'s multidimensional array access and provides true arrays of @@ -14794,6 +14975,7 @@ two arguments 11 and 10. @node Numeric Functions @subsection Numeric Functions +@cindex numeric functions The following list describes all of the built-in functions that work with numbers. @@ -14801,22 +14983,26 @@ Optional parameters are enclosed in square brackets@w{ ([ ]):} @table @code @item atan2(@var{y}, @var{x}) -@cindex @code{atan2()} function +@cindexawkfunc{atan2} +@cindex arctangent Return the arctangent of @code{@var{y} / @var{x}} in radians. You can use @samp{pi = atan2(0, -1)} to retrieve the value of @value{PI}. @item cos(@var{x}) -@cindex @code{cos()} function +@cindexawkfunc{cos} +@cindex cosine Return the cosine of @var{x}, with @var{x} in radians. @item exp(@var{x}) -@cindex @code{exp()} function +@cindexawkfunc{exp} +@cindex exponent Return the exponential of @var{x} (@code{e ^ @var{x}}) or report an error if @var{x} is out of range. The range of values @var{x} can have depends on your machine's floating-point representation. @item int(@var{x}) -@cindex @code{int()} function +@cindexawkfunc{int} +@cindex round to nearest integer Return the nearest integer to @var{x}, located between @var{x} and zero and truncated toward zero. @@ -14824,12 +15010,13 @@ For example, @code{int(3)} is 3, @code{int(3.9)} is 3, @code{int(-3.9)} is @minus{}3, and @code{int(-3)} is @minus{}3 as well. @item log(@var{x}) -@cindex @code{log()} function +@cindexawkfunc{log} +@cindex logarithm Return the natural logarithm of @var{x}, if @var{x} is positive; otherwise, report an error. @item rand() -@cindex @code{rand()} function +@cindexawkfunc{rand} @cindex random numbers, @code{rand()}/@code{srand()} functions Return a random number. The values of @code{rand()} are uniformly distributed between zero and one. @@ -14871,7 +15058,7 @@ function roll(n) @{ return 1 + int(rand() * n) @} @} @end example -@cindex numbers, random +@cindex seeding random number generator @cindex random numbers, seed of @quotation CAUTION In most @command{awk} implementations, including @command{gawk}, @@ -14887,17 +15074,19 @@ use @code{srand()}. @end quotation @item sin(@var{x}) -@cindex @code{sin()} function +@cindexawkfunc{sin} +@cindex sine Return the sine of @var{x}, with @var{x} in radians. @item sqrt(@var{x}) -@cindex @code{sqrt()} function +@cindexawkfunc{sqrt} +@cindex square root Return the positive square root of @var{x}. @command{gawk} prints a warning message if @var{x} is negative. Thus, @code{sqrt(4)} is 2. @item srand(@r{[}@var{x}@r{]}) -@cindex @code{srand()} function +@cindexawkfunc{srand} Set the starting point, or seed, for generating random numbers to the value @var{x}. @@ -14927,6 +15116,7 @@ sequences of random numbers. @node String Functions @subsection String-Manipulation Functions +@cindex string-manipulation functions The functions in this @value{SECTION} look at or change the text of one or more strings. @@ -14955,11 +15145,11 @@ pound sign@w{ (@samp{#}):} @table @code @item asort(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) # @itemx asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) # -@cindex @code{asorti()} function (@command{gawk}) +@cindexgawkfunc{asorti} +@cindex sort array @cindex arrays, elements, retrieving number of -@cindex @code{asort()} function (@command{gawk}) -@cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable +@cindexgawkfunc{asort} +@cindex sort array indices These two functions are similar in behavior, so they are described together. @@ -14977,7 +15167,9 @@ sequential integers starting with one. If the optional array @var{dest} is specified, then @var{source} is duplicated into @var{dest}. @var{dest} is then sorted, leaving the indices of @var{source} unchanged. -When comparing strings, @code{IGNORECASE} affects the sorting. If the +@cindex @command{gawk}, @code{IGNORECASE} variable in +When comparing strings, @code{IGNORECASE} affects the sorting +(@pxref{Array Sorting Functions}). If the @var{source} array contains subarrays as values (@pxref{Arrays of Arrays}), they will come last, after all scalar values. @@ -15020,7 +15212,9 @@ a[3] = "middle" are not available in compatibility mode (@pxref{Options}). @item gensub(@var{regexp}, @var{replacement}, @var{how} @r{[}, @var{target}@r{]}) # -@cindex @code{gensub()} function (@command{gawk}) +@cindexgawkfunc{gensub} +@cindex search and replace in strings +@cindex substitute in string Search the target string @var{target} for matches of the regular expression @var{regexp}. If @var{how} is a string beginning with @samp{g} or @samp{G} (short for ``global''), then replace all matches of @var{regexp} with @@ -15029,7 +15223,7 @@ which match of @var{regexp} to replace. If no @var{target} is supplied, use @code{$0}. It returns the modified string as the result of the function and the original target string is @emph{not} changed. -@code{gensub()} is a general substitution function. It's purpose is +@code{gensub()} is a general substitution function. Its purpose is to provide more features than the standard @code{sub()} and @code{gsub()} functions. @@ -15083,7 +15277,7 @@ is the original unchanged value of @var{target}. in compatibility mode (@pxref{Options}). @item gsub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]}) -@cindex @code{gsub()} function +@cindexawkfunc{gsub} Search @var{target} for @emph{all} of the longest, leftmost, @emph{nonoverlapping} matching substrings it can find and replace them with @var{replacement}. @@ -15105,8 +15299,9 @@ As in @code{sub()}, the characters @samp{&} and @samp{\} are special, and the third argument must be assignable. @item index(@var{in}, @var{find}) -@cindex @code{index()} function -@cindex searching +@cindexawkfunc{index} +@cindex search in string +@cindex find substring in string Search the string @var{in} for the first occurrence of the string @var{find}, and return the position in characters where that occurrence begins in the string @var{in}. Consider the following example: @@ -15123,7 +15318,9 @@ If @var{find} is not found, @code{index()} returns zero. It is a fatal error to use a regexp constant for @var{find}. @item length(@r{[}@var{string}@r{]}) -@cindex @code{length()} function +@cindexawkfunc{length} +@cindex string length +@cindex length of string Return the number of characters in @var{string}. If @var{string} is a number, the length of the digit string representing that number is returned. For example, @code{length("abcde")} is five. By @@ -15131,6 +15328,8 @@ contrast, @code{length(15 * 35)} works out to three. In this example, 15 * 35 = 525, and 525 is then converted to the string @code{"525"}, which has three characters. +@cindex length of input record +@cindex input record, length of If no argument is supplied, @code{length()} returns the length of @code{$0}. @c @cindex historical features @@ -15169,6 +15368,8 @@ warning about this. @cindex common extensions, @code{length()} applied to an array @cindex extensions, common@comma{} @code{length()} applied to an array @cindex differences between @command{gawk} and @command{awk} +@cindex number of array elements +@cindex array, number of elements With @command{gawk} and several other @command{awk} implementations, when given an array argument, the @code{length()} function returns the number of elements in the array. @value{COMMONEXT} @@ -15182,7 +15383,9 @@ If @option{--posix} is supplied, using an array argument is a fatal error (@pxref{Arrays}). @item match(@var{string}, @var{regexp} @r{[}, @var{array}@r{]}) -@cindex @code{match()} function +@cindexawkfunc{match} +@cindex string, regular expression match +@cindex match regexp in string Search @var{string} for the longest, leftmost substring matched by the regular expression, @var{regexp} and return the character position, or @dfn{index}, @@ -15297,7 +15500,8 @@ The @var{array} argument to @code{match()} is a using a third argument is a fatal error. @item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[}, @var{seps} @r{]} @r{]}) # -@cindex @code{patsplit()} function (@command{gawk}) +@cindexgawkfunc{patsplit} +@cindex split string into array Divide @var{string} into pieces defined by @var{fieldpat} and store the pieces in @var{array} and the separator strings in the @@ -15328,7 +15532,7 @@ The @code{patsplit()} function is a it is not available. @item split(@var{string}, @var{array} @r{[}, @var{fieldsep} @r{[}, @var{seps} @r{]} @r{]}) -@cindex @code{split()} function +@cindexawkfunc{split} Divide @var{string} into pieces separated by @var{fieldsep} and store the pieces in @var{array} and the separator strings in the @var{seps} array. The first piece is stored in @@ -15357,7 +15561,7 @@ split("cul-de-sac", a, "-", seps) @end example @noindent -@cindex strings, splitting +@cindex strings splitting, example splits the string @samp{cul-de-sac} into three fields using @samp{-} as the separator. It sets the contents of the array @code{a} as follows: @@ -15413,7 +15617,8 @@ If @var{string} does not match @var{fieldsep} at all (but is not null), @var{string}. @item sprintf(@var{format}, @var{expression1}, @dots{}) -@cindex @code{sprintf()} function +@cindexawkfunc{sprintf} +@cindex formatting strings Return (without printing) the string that @code{printf} would have printed out with the same arguments (@pxref{Printf}). @@ -15426,7 +15631,8 @@ pival = sprintf("pi = %.2f (approx.)", 22/7) @noindent assigns the string @w{@samp{pi = 3.14 (approx.)}} to the variable @code{pival}. -@cindex @code{strtonum()} function (@command{gawk}) +@cindexgawkfunc{strtonum} +@cindex convert string to number @item strtonum(@var{str}) # Examine @var{str} and return its numeric value. If @var{str} begins with a leading @samp{0}, @code{strtonum()} assumes that @var{str} @@ -15449,12 +15655,12 @@ you use the @option{--non-decimal-data} option, which isn't recommended. Note also that @code{strtonum()} uses the current locale's decimal point for recognizing numbers (@pxref{Locales}). -@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk}) @code{strtonum()} is a @command{gawk} extension; it is not available in compatibility mode (@pxref{Options}). @item sub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]}) -@cindex @code{sub()} function +@cindexawkfunc{sub} +@cindex replace in string Search @var{target}, which is treated as a string, for the leftmost, longest substring matched by the regular expression @var{regexp}. Modify the entire string @@ -15554,7 +15760,8 @@ Finally, if the @var{regexp} is not a regexp constant, it is converted into a string, and then the value of that string is treated as the regexp to match. @item substr(@var{string}, @var{start} @r{[}, @var{length}@r{]}) -@cindex @code{substr()} function +@cindexawkfunc{substr} +@cindex substring Return a @var{length}-character-long substring of @var{string}, starting at character number @var{start}. The first character of a string is character number one.@footnote{This is different from @@ -15568,6 +15775,7 @@ suffix is also returned if @var{length} is greater than the number of characters remaining in the string, counting from character @var{start}. +@cindex Brian Kernighan's @command{awk} If @var{start} is less than one, @code{substr()} treats it as if it was one. (POSIX doesn't specify what to do in this case: Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk} @@ -15610,16 +15818,18 @@ string = substr(string, 1, 2) "CDE" substr(string, 6) @end example @cindex case sensitivity, converting case -@cindex converting, case +@cindex strings, converting letter case @item tolower(@var{string}) -@cindex @code{tolower()} function +@cindexawkfunc{tolower} +@cindex convert string to lower case Return a copy of @var{string}, with each uppercase character in the string replaced with its corresponding lowercase character. Nonalphabetic characters are left unchanged. For example, @code{tolower("MiXeD cAsE 123")} returns @code{"mixed case 123"}. @item toupper(@var{string}) -@cindex @code{toupper()} function +@cindexawkfunc{toupper} +@cindex convert string to upper case Return a copy of @var{string}, with each lowercase character in the string replaced with its corresponding uppercase character. Nonalphabetic characters are left unchanged. For example, @@ -15647,6 +15857,7 @@ and builds an internal copy of it that can be executed. Then there is the runtime level, which is when @command{awk} actually scans the replacement string to determine what to generate. +@cindex Brian Kernighan's @command{awk} At both levels, @command{awk} looks for a defined set of characters that can come after a backslash. At the lexical level, it looks for the escape sequences listed in @ref{Escape Sequences}. @@ -16011,14 +16222,16 @@ Although this makes a certain amount of sense, it can be surprising. @node I/O Functions @subsection Input/Output Functions +@cindex input/output functions The following functions relate to input/output (I/O). Optional parameters are enclosed in square brackets ([ ]): @table @code @item close(@var{filename} @r{[}, @var{how}@r{]}) -@cindex @code{close()} function +@cindexawkfunc{close} @cindex files, closing +@cindex close file or coprocess Close the file @var{filename} for input or output. Alternatively, the argument may be a shell command that was used for creating a coprocess, or for redirecting to or from a pipe; then the coprocess or pipe is closed. @@ -16035,7 +16248,8 @@ not matter. which discusses this feature in more detail and gives an example. @item fflush(@r{[}@var{filename}@r{]}) -@cindex @code{fflush()} function +@cindexawkfunc{fflush} +@cindex flush buffered output Flush any buffered output associated with @var{filename}, which is either a file opened for writing or a shell command for redirecting output to a pipe or coprocess. @@ -16053,11 +16267,12 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also buffers its output and the @code{fflush()} function forces @command{gawk} to flush its buffers. -@code{fflush()} was added to Brian Kernighan's -version of @command{awk} in 1994. -For over two decades, it was not part of the POSIX standard. -As of December, 2012, it was accepted for -inclusion into the POSIX standard. +@cindex extensions, common@comma{} @code{fflush()} function +@cindex Brian Kernighan's @command{awk} +@code{fflush()} was added to Brian Kernighan's version of @command{awk} in +April of 1992. For two decades, it was not part of the POSIX standard. +As of December, 2012, it was accepted for inclusion into the POSIX +standard. See @uref{http://austingroupbugs.net/view.php?id=634, the Austin Group website}. POSIX standardizes @code{fflush()} as follows: If there @@ -16093,7 +16308,8 @@ or if @var{filename} is not an open file, pipe, or coprocess. In such a case, @code{fflush()} returns @minus{}1, as well. @item system(@var{command}) -@cindex @code{system()} function +@cindexawkfunc{system} +@cindex invoke shell command @cindex interacting with other programs Execute the operating-system command @var{command} and then return to the @command{awk} program. @@ -16240,6 +16456,7 @@ you would see the latter (undesirable) output. @node Time Functions @subsection Time Functions +@cindex time functions @c STARTOFRANGE tst @cindex timestamps @@ -16259,7 +16476,18 @@ it is the number of seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds.@footnote{@xref{Glossary}, especially the entries ``Epoch'' and ``UTC.''} All known POSIX-compliant systems support timestamps from 0 through -@math{2^{31} - 1}, which is sufficient to represent times through +@iftex +@math{2^{31} - 1}, +@end iftex +@ifnottex +@ifnotdocbook +2^31 - 1, +@end ifnotdocbook +@end ifnottex +@docbook +2<superscript>31</superscript> − 1, @c +@end docbook +which is sufficient to represent times through 2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps, including negative timestamps that represent times before the epoch. @@ -16278,7 +16506,8 @@ Optional parameters are enclosed in square brackets ([ ]): @table @code @item mktime(@var{datespec}) -@cindex @code{mktime()} function (@command{gawk}) +@cindexgawkfunc{mktime} +@cindex generate time values Turn @var{datespec} into a timestamp in the same form as is returned by @code{systime()}. It is similar to the function of the same name in ISO C. The argument, @var{datespec}, is a string of the form @@ -16308,7 +16537,8 @@ is out of range, @code{mktime()} returns @minus{}1. @cindex @code{PROCINFO} array @item strftime(@r{[}@var{format} @r{[}, @var{timestamp} @r{[}, @var{utc-flag}@r{]]]}) @c STARTOFRANGE strf -@cindex @code{strftime()} function (@command{gawk}) +@cindexgawkfunc{strftime} +@cindex format time string Format the time specified by @var{timestamp} based on the contents of the @var{format} string and return the result. It is similar to the function of the same name in ISO C. @@ -16325,11 +16555,12 @@ The default string value is @code{@w{"%a %b %e %H:%M:%S %Z %Y"}}. This format string produces output that is equivalent to that of the @command{date} utility. You can assign a new value to @code{PROCINFO["strftime"]} to -change the default format. +change the default format; see below for the various format directives. @item systime() -@cindex @code{systime()} function (@command{gawk}) +@cindexgawkfunc{systime} @cindex timestamps +@cindex current system time Return the current time as the number of seconds since the system epoch. On POSIX systems, this is the number of seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds. @@ -16623,6 +16854,7 @@ gawk 'BEGIN @{ @node Bitwise Functions @subsection Bit-Manipulation Functions +@cindex bit-manipulation functions @c STARTOFRANGE bit @cindex bitwise, operations @c STARTOFRANGE and @@ -16785,27 +17017,33 @@ bitwise operations just described. They are: @cindex @command{gawk}, bitwise operations in @table @code -@cindex @code{and()} function (@command{gawk}) +@cindexgawkfunc{and} +@cindex bitwise AND @item and(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise AND of the arguments. There must be at least two. -@cindex @code{compl()} function (@command{gawk}) +@cindexgawkfunc{compl} +@cindex bitwise complement @item compl(@var{val}) Return the bitwise complement of @var{val}. -@cindex @code{lshift()} function (@command{gawk}) +@cindexgawkfunc{lshift} +@cindex left shift @item lshift(@var{val}, @var{count}) Return the value of @var{val}, shifted left by @var{count} bits. -@cindex @code{or()} function (@command{gawk}) +@cindexgawkfunc{or} +@cindex bitwise OR @item or(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise OR of the arguments. There must be at least two. -@cindex @code{rshift()} function (@command{gawk}) +@cindexgawkfunc{rshift} +@cindex right shift @item rshift(@var{val}, @var{count}) Return the value of @var{val}, shifted right by @var{count} bits. -@cindex @code{xor()} function (@command{gawk}) +@cindexgawkfunc{xor} +@cindex bitwise XOR @item xor(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) Return the bitwise XOR of the arguments. There must be at least two. @end table @@ -16897,6 +17135,7 @@ $ @kbd{gawk -f testbits.awk} @cindex strings, converting @cindex numbers, converting @cindex converting, numbers to strings +@cindex number as string of bits The @code{bits2str()} function turns a binary number into a string. The number @code{1} represents a binary value where the rightmost bit is set to 1. Using this mask, @@ -16932,7 +17171,8 @@ that traverses every element of a true multidimensional array (@pxref{Arrays of Arrays}). @table @code -@cindex @code{isarray()} function (@command{gawk}) +@cindexgawkfunc{isarray} +@cindex scalar or array @item isarray(@var{x}) Return a true value if @var{x} is an array. Otherwise return false. @end table @@ -16940,7 +17180,7 @@ Return a true value if @var{x} is an array. Otherwise return false. @code{isarray()} is meant for use in two circumstances. The first is when traversing a multidimensional array: you can test if an element is itself an array or not. The second is inside the body of a user-defined function -(not discussed yet; @pxref{User-defined}), to test if a paramater is an +(not discussed yet; @pxref{User-defined}), to test if a parameter is an array or not. Note, however, that using @code{isarray()} at the global level to test @@ -16954,6 +17194,7 @@ will end up turning it into a scalar. @subsection String-Translation Functions @cindex @command{gawk}, string-translation functions @cindex functions, string-translation +@cindex string-translation functions @cindex internationalization @cindex @command{awk} programs, internationalizing @@ -16965,7 +17206,8 @@ for the full story. Optional parameters are enclosed in square brackets ([ ]): @table @code -@cindex @code{bindtextdomain()} function (@command{gawk}) +@cindexgawkfunc{bindtextdomain} +@cindex set directory of message catalogs @item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]}) Set the directory in which @command{gawk} will look for message translation files, in case they @@ -16978,14 +17220,15 @@ If @var{directory} is the null string (@code{""}), then @code{bindtextdomain()} returns the current binding for the given @var{domain}. -@cindex @code{dcgettext()} function (@command{gawk}) +@cindexgawkfunc{dcgettext} +@cindex translate string @item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the translation of @var{string} in text domain @var{domain} for locale category @var{category}. The default value for @var{domain} is the current value of @code{TEXTDOMAIN}. The default value for @var{category} is @code{"LC_MESSAGES"}. -@cindex @code{dcngettext()} function (@command{gawk}) +@cindexgawkfunc{dcngettext} @item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @@ -17002,7 +17245,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}. @section User-Defined Functions @c STARTOFRANGE udfunc -@cindex user-defined, functions +@cindex user-defined functions @c STARTOFRANGE funcud @cindex functions, user-defined Complicated @command{awk} programs can often be simplified by defining @@ -17061,7 +17304,7 @@ have a parameter with the same name as the function itself. In addition, according to the POSIX standard, function parameters cannot have the same name as one of the special built-in variables (@pxref{Built-in Variables}. Not all versions of @command{awk} -enforce this restriction. +enforce this restriction.) The @var{body-of-function} consists of @command{awk} statements. It is the most important part of the definition, because it says what the function @@ -17088,6 +17331,7 @@ conventional to place some extra space between the arguments and the local variables, in order to document how your function is supposed to be used. @cindex variables, shadowing +@cindex shadowing of variable values During execution of the function body, the arguments and local variable values hide, or @dfn{shadow}, any variables of the same names used in the rest of the program. The shadowed variables are not accessible in the @@ -17108,7 +17352,7 @@ function. When this happens, we say the function is @dfn{recursive}. The act of a function calling itself is called @dfn{recursion}. All the built-in functions return a value to their caller. -User-defined functions can do also, using the @code{return} statement, +User-defined functions can do so also, using the @code{return} statement, which is described in detail in @ref{Return Statement}. Many of the subsequent examples in this @value{SECTION} use the @code{return} statement. @@ -17146,6 +17390,7 @@ keyword @code{function} when defining a function. @node Function Example @subsection Function Definition Examples +@cindex function definition example Here is an example of a user-defined function, called @code{myprint()}, that takes a number and prints it in a specific format: @@ -17200,7 +17445,8 @@ Instead of having to repeat this loop everywhere that you need to clear out an array, your program can just call @code{delarray}. (This guarantees portability. The use of @samp{delete @var{array}} to delete -the contents of an entire array is a nonstandard extension.) +the contents of an entire array is a recent@footnote{Late in 2012.} +addition to the POSIX standard.) The following is an example of a recursive function. It takes a string as an input parameter and returns the string in backwards order. @@ -17256,7 +17502,10 @@ function ctime(ts, format) @subsection Calling User-Defined Functions @c STARTOFRANGE fudc -This section describes how to call a user-defined function. +@cindex functions, user-defined, calling +@dfn{Calling a function} means causing the function to run and do its job. +A function call is an expression and its value is the value returned by +the function. @menu * Calling A Function:: Don't use spaces. @@ -17267,11 +17516,6 @@ This section describes how to call a user-defined function. @node Calling A Function @subsubsection Writing A Function Call -@cindex functions, user-defined, calling -@dfn{Calling a function} means causing the function to run and do its job. -A function call is an expression and its value is the value returned by -the function. - A function call consists of the function name followed by the arguments in parentheses. @command{awk} expressions are what you write in the call for the arguments. Each time the call is executed, these @@ -17295,8 +17539,8 @@ an error. @node Variable Scope @subsubsection Controlling Variable Scope -@cindex local variables -@cindex variables, local +@cindex local variables, in a function +@cindex variables, local to a function There is no way to make a variable local to a @code{@{ @dots{} @}} block in @command{awk}, but you can make a variable local to a function. It is good practice to do so whenever a variable is needed only in that @@ -17741,7 +17985,7 @@ character: @example the_func = "sum" -result = @@the_func() # calls the `sum' function +result = @@the_func() # calls the sum() function @end example Here is a full program that processes the previously shown data, @@ -17862,8 +18106,9 @@ We can do something similar using @command{gawk}, like this: @ignore @c file eg/lib/quicksort.awk # -# Arnold Robbins, arnold@skeeve.com, Public Domain +# Arnold Robbins, arnold@@skeeve.com, Public Domain # January 2009 + @c endfile @end ignore @@ -17936,7 +18181,7 @@ or equal to), which yields data sorted in descending order. Next comes a sorting function. It is parameterized with the starting and ending field numbers and the comparison function. It builds an array with -the data and calls @code{quicksort} appropriately, and then formats the +the data and calls @code{quicksort()} appropriately, and then formats the results as a single string: @example @@ -18074,6 +18319,8 @@ it allows you to encapsulate algorithms and program tasks in a single place. It simplifies programming, making program development more manageable, and making programs more readable. +@cindex Kernighan, Brian +@cindex Plauger, P.J.@: In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35 years later, many of the lessons taught by this book have yet to be learned by a vast number of practicing programmers.} Brian Kernighan @@ -18203,7 +18450,7 @@ with the user's program. @cindex underscore (@code{_}), in names of private variables In addition, several of the library functions use a prefix that helps indicate what function or set of functions use the variables---for example, -@code{_pw_byname} in the user database routines +@code{_pw_byname()} in the user database routines (@pxref{Passwd Functions}). This convention is recommended, since it even further decreases the chance of inadvertent conflict among variable names. Note that this @@ -18222,7 +18469,7 @@ The leading capital letter indicates that it is global, while the fact that the variable name is not all capital letters indicates that the variable is not one of @command{awk}'s built-in variables, such as @code{FS}. -@cindex @option{--dump-variables} option +@cindex @option{--dump-variables} option, using for library functions It is also important that @emph{all} variables in library functions that do not need to save state are, in fact, declared local.@footnote{@command{gawk}'s @option{--dump-variables} command-line @@ -18517,9 +18764,9 @@ with an @code{exit} statement. The way @code{printf} and @code{sprintf()} (@pxref{Printf}) perform rounding often depends upon the system's C @code{sprintf()} -subroutine. On many machines, @code{sprintf()} rounding is ``unbiased,'' -which means it doesn't always round a trailing @samp{.5} up, contrary -to naive expectations. In unbiased rounding, @samp{.5} rounds to even, +subroutine. On many machines, @code{sprintf()} rounding is @dfn{unbiased}, +which means it doesn't always round a trailing .5 up, contrary +to naive expectations. In unbiased rounding, .5 rounds to even, rather than always up, so 1.5 rounds to 2 but 4.5 rounds to 4. This means that if you are using a format that does rounding (e.g., @code{"%.0f"}), you should check what your system does. The following function does @@ -18568,7 +18815,7 @@ function round(x, ival, aval, fraction) @c don't include test harness in the file that gets installed # test harness -@{ print $0, round($0) @} +# @{ print $0, round($0) @} @end example @node Cliff Random Function @@ -18635,6 +18882,7 @@ reason to build them into the @command{awk} interpreter: @cindex @code{ord()} user-defined function @cindex @code{chr()} user-defined function +@cindex @code{_ord_init()} user-defined function @example @c file eg/lib/ord.awk # ord.awk --- do ord and chr @@ -18681,8 +18929,9 @@ function _ord_init( low, high, i, t) @cindex character sets (machine character encodings) @cindex ASCII @cindex EBCDIC +@cindex Unicode @cindex mark parity -Some explanation of the numbers used by @code{chr()} is worthwhile. +Some explanation of the numbers used by @code{_ord_init()} is worthwhile. The most prominent character set in use today is ASCII.@footnote{This is changing; many systems use Unicode, a very large character set that includes ASCII as a subset. On systems with full Unicode support, @@ -18693,7 +18942,7 @@ Although an defines characters that use the values from 0 to 127.@footnote{ASCII has been extended in many countries to use the values from 128 to 255 for country-specific characters. If your system uses these extensions, -you can simplify @code{_ord_init} to loop from 0 to 255.} +you can simplify @code{_ord_init()} to loop from 0 to 255.} In the now distant past, at least one minicomputer manufacturer @c Pr1me, blech @@ -19338,7 +19587,7 @@ END @{ Occasionally, you might not want @command{awk} to process command-line variable assignments (@pxref{Assignment Options}). -In particular, if you have a file name that contain an @samp{=} character, +In particular, if you have a file name that contains an @samp{=} character, @command{awk} treats the file name as an assignment, and does not process it. Some users have suggested an additional command-line option for @command{gawk} @@ -20008,7 +20257,7 @@ from anywhere within a user's program, and the user may have his or her own way of splitting records and fields. -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, testing the field splitting The @code{using_fw} variable checks @code{PROCINFO["FS"]}, which is @code{"FIELDWIDTHS"} if field splitting is being done with @code{FIELDWIDTHS}. This makes it possible to restore the correct @@ -20017,7 +20266,7 @@ field-splitting mechanism later. The test can only be true for or on some other @command{awk} implementation. The code that checks for using @code{FPAT}, using @code{using_fpat} -and @code{PROCINFO["FS"]} is similar. +and @code{PROCINFO["FS"]}, is similar. The main part of the function uses a loop to read database lines, split the line into fields, and then store the line into each array as necessary. @@ -20047,10 +20296,9 @@ function getpwnam(name) @end example @cindex @code{getpwuid()} function (C library) -Similarly, -the @code{getpwuid} function takes a user ID number argument. If that -user number is in the database, it returns the appropriate line. Otherwise, it -returns the null string: +Similarly, the @code{getpwuid()} function takes a user ID number +argument. If that user number is in the database, it returns the +appropriate line. Otherwise, it returns the null string: @cindex @code{getpwuid()} user-defined function @example @@ -20132,7 +20380,7 @@ uses these functions. @cindex group database, reading @c STARTOFRANGE datagr @cindex database, group, reading -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and group membership @cindex @code{getgrent()} function (C library) @cindex @code{getgrent()} user-defined function @cindex groups@comma{} information about @@ -20554,7 +20802,7 @@ index and value, use the indirect function call syntax and the value. When calling @code{walk_array()}, you would pass the name of a user-defined -function that expects to receive and index and a value, and then processes +function that expects to receive an index and a value, and then processes the element. @@ -20908,7 +21156,7 @@ complete field list, including filler fields: @example @c file eg/prog/cut.awk -function set_charlist( field, i, j, f, g, t, +function set_charlist( field, i, j, f, g, n, m, t, filler, last, len) @{ field = 1 # count total fields @@ -21005,6 +21253,7 @@ of picking the input line apart by characters. @cindex searching, files for regular expressions @c STARTOFRANGE fsregexp @cindex files, searching for regular expressions +@c STARTOFRANGE egrep @cindex @command{egrep} utility The @command{egrep} utility searches files for patterns. It uses regular expressions that are almost identical to those available in @command{awk} @@ -21290,12 +21539,14 @@ or not. @c ENDOFRANGE regexps @c ENDOFRANGE sfregexp @c ENDOFRANGE fsregexp +@c ENDOFRANGE egrep @node Id Program @subsection Printing out User Information @cindex printing, user information @cindex users, information about, printing +@c STARTOFRANGE id @cindex @command{id} utility The @command{id} utility lists a user's real and effective user ID numbers, real and effective group ID numbers, and the user's group set, if any. @@ -21308,7 +21559,7 @@ $ @kbd{id} @print{} uid=500(arnold) gid=500(arnold) groups=6(disk),7(lp),19(floppy) @end example -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and user and group ID numbers This information is part of what is provided by @command{gawk}'s @code{PROCINFO} array (@pxref{Built-in Variables}). However, the @command{id} utility provides a more palatable output than just @@ -21409,7 +21660,6 @@ BEGIN \ @c endfile @end example -@cindex @code{in} operator The test in the @code{for} loop is worth noting. Any supplementary groups in the @code{PROCINFO} array have the indices @code{"group1"} through @code{"group@var{N}"} for some @@ -21419,7 +21669,7 @@ there are. This loop works by starting at one, concatenating the value with @code{"group"}, and then using @code{in} to see if that value is -in the array. Eventually, @code{i} is incremented past +in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past the last group in the array and the loop exits. The loop is also correct if there are @emph{no} supplementary @@ -21432,6 +21682,7 @@ The POSIX version of @command{id} takes arguments that control which information is printed. Modify this version to accept the same arguments and perform in the same way. @end ignore +@c ENDOFRANGE id @node Split Program @subsection Splitting a Large File into Pieces @@ -21440,6 +21691,7 @@ arguments and perform in the same way. @c STARTOFRANGE filspl @cindex files, splitting +@c STARTOFRANGE split @cindex @code{split} utility The @command{split} program splits large text files into smaller pieces. Usage is as follows:@footnote{This is the traditional usage. The @@ -21583,12 +21835,14 @@ which isn't true for EBCDIC systems. @c Exercise: Fix these problems. @c BFD... @c ENDOFRANGE filspl +@c ENDOFRANGE split @node Tee Program @subsection Duplicating Output into Multiple Files @cindex files, multiple@comma{} duplicating output into @cindex output, duplicating into files +@c STARTOFRANGE tee @cindex @code{tee} utility The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies its standard input to its standard output and also duplicates it to the @@ -21703,6 +21957,7 @@ END \ @} @c endfile @end example +@c ENDOFRANGE tee @node Uniq Program @subsection Printing Nonduplicated Lines of Text @@ -21713,6 +21968,7 @@ END \ @cindex printing, unduplicated lines of text @c STARTOFRANGE tpul @cindex text@comma{} printing, unduplicated lines of +@c STARTOFRANGE uniq @cindex @command{uniq} utility The @command{uniq} utility reads sorted lines of data on its standard input, and by default removes duplicate lines. In other words, it only @@ -21964,6 +22220,7 @@ END @{ @end example @c ENDOFRANGE prunt @c ENDOFRANGE tpul +@c ENDOFRANGE uniq @node Wc Program @subsection Counting Things @@ -21980,6 +22237,7 @@ END @{ @cindex characters, counting @c STARTOFRANGE lico @cindex lines, counting +@c STARTOFRANGE wc @cindex @command{wc} utility The @command{wc} (word count) utility counts lines, words, and characters in one or more input files. Its usage is as follows: @@ -22162,6 +22420,7 @@ END @{ @c ENDOFRANGE lico @c ENDOFRANGE woco @c ENDOFRANGE chco +@c ENDOFRANGE wc @c ENDOFRANGE posimawk @node Miscellaneous Programs @@ -22456,6 +22715,7 @@ seconds are necessary: @c STARTOFRANGE chtra @cindex characters, transliterating +@c STARTOFRANGE tr @cindex @command{tr} utility The system @command{tr} utility transliterates characters. For example, it is often used to map uppercase letters into lowercase for further processing: @@ -22604,6 +22864,7 @@ An obvious improvement to this program would be to set up the assumes that the ``from'' and ``to'' lists will never change throughout the lifetime of the program. @c ENDOFRANGE chtra +@c ENDOFRANGE tr @node Labels Program @subsection Printing Mailing Labels @@ -22663,6 +22924,7 @@ that there are two blank lines at the top and two blank lines at the bottom. The @code{END} rule arranges to flush the final page of labels; there may not have been an even multiple of 20 labels in the data: +@c STARTOFRANGE labels @cindex @code{labels.awk} program @example @c file eg/prog/labels.awk @@ -22730,6 +22992,7 @@ END \ @end example @c ENDOFRANGE prml @c ENDOFRANGE mlprint +@c ENDOFRANGE labels @node Word Sorting @subsection Generating Word-Usage Counts @@ -22796,6 +23059,7 @@ to remove punctuation characters. Finally, we solve the third problem by using the system @command{sort} utility to process the output of the @command{awk} script. Here is the new version of the program: +@c STARTOFRANGE wordfreq @cindex @code{wordfreq.awk} program @example @c file eg/prog/wordfreq.awk @@ -22857,6 +23121,7 @@ have true pipes at the command-line (or batch-file) level. See the general operating system documentation for more information on how to use the @command{sort} program. @c ENDOFRANGE worus +@c ENDOFRANGE wordfreq @node History Sorting @subsection Removing Duplicates from Unsorted Text @@ -22886,6 +23151,7 @@ Each element of @code{lines} is a unique command, and the indices of The @code{END} rule simply prints out the lines, in order: @cindex Rakitzis, Byron +@c STARTOFRANGE histsort @cindex @code{histsort.awk} program @example @c file eg/prog/histsort.awk @@ -22928,6 +23194,7 @@ print data[lines[i]], lines[i] This works because @code{data[$0]} is incremented each time a line is seen. @c ENDOFRANGE lidu +@c ENDOFRANGE histsort @node Extract Program @subsection Extracting Programs from Texinfo Source Files @@ -23038,6 +23305,7 @@ The first rule handles calling @code{system()}, checking that a command is given (@code{NF} is at least three) and also checking that the command exits with a zero exit status, signifying OK: +@c STARTOFRANGE extract @cindex @code{extract.awk} program @example @c file eg/prog/extract.awk @@ -23196,6 +23464,7 @@ END @{ @end example @c ENDOFRANGE texse @c ENDOFRANGE fitex +@c ENDOFRANGE extract @node Simple Sed @subsection A Simple Stream Editor @@ -23225,6 +23494,7 @@ additional arguments are treated as data file names to process. If none are provided, the standard input is used: @cindex Brennan, Michael +@c STARTOFRANGE awksed @cindex @command{awksed.awk} program @c @cindex simple stream editor @c @cindex stream editor, simple @@ -23321,6 +23591,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed? Others? @end ignore +@c ENDOFRANGE awksed @node Igawk Program @subsection An Easy Way to Use Library Functions @@ -23464,6 +23735,7 @@ program. The program is as follows: +@c STARTOFRANGE igawk @cindex @code{igawk.sh} program @example @c file eg/prog/igawk.sh @@ -23636,7 +23908,7 @@ BEGIN @{ @c endfile @end example -The stack is initialized with @code{ARGV[1]}, which will be @file{/dev/stdin}. +The stack is initialized with @code{ARGV[1]}, which will be @samp{/dev/stdin}. The main loop comes next. Input lines are read in succession. Lines that do not start with @samp{@@include} are printed verbatim. If the line does start with @samp{@@include}, the file name is in @code{$2}. @@ -23823,10 +24095,12 @@ statements for the desired library functions. @c ENDOFRANGE libfex @c ENDOFRANGE flibex @c ENDOFRANGE awkpex +@c ENDOFRANGE igawk @node Anagram Program @subsection Finding Anagrams From A Dictionary +@cindex anagrams, finding An interesting programming challenge is to search for @dfn{anagrams} in a word list (such as @@ -23846,6 +24120,7 @@ The following program uses arrays of arrays to bring together words with the same signature and array sorting to print the words in sorted order. +@c STARTOFRANGE anagram @cindex @code{anagram.awk} program @example @c file eg/prog/anagram.awk @@ -23953,10 +24228,13 @@ babels beslab babery yabber @dots{} @end example +@c ENDOFRANGE anagram @node Signature Program @subsection And Now For Something Completely Different +@cindex signature program +@cindex Brini, Davide The following program was written by Davide Brini @c (@email{dave_br@@gmx.com}) and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/, @@ -24088,12 +24366,15 @@ It contains the following chapters: @item @ref{Dynamic Extensions}. +@end itemize @end ifdocbook @end ignore @node Advanced Features @chapter Advanced Features of @command{gawk} +@ifset WITH_NETWORK_CHAPTER @cindex advanced features, network connections, See Also networks@comma{} connections +@end ifset @c STARTOFRANGE gawadv @cindex @command{gawk}, features, advanced @c STARTOFRANGE advgaw @@ -24500,9 +24781,9 @@ sorted array traversal is not the default. @subsection Sorting Array Values and Indices with @command{gawk} @cindex arrays, sorting -@cindex @code{asort()} function (@command{gawk}) +@cindexgawkfunc{asort} @cindex @code{asort()} function (@command{gawk}), arrays@comma{} sorting -@cindex @code{asorti()} function (@command{gawk}) +@cindexgawkfunc{asorti} @cindex @code{asorti()} function (@command{gawk}), arrays@comma{} sorting @cindex sort function, arrays, sorting In most @command{awk} implementations, sorting an array requires writing @@ -24597,9 +24878,8 @@ both arrays use the values. @c Document It And Call It A Feature. Sigh. @cindex @command{gawk}, @code{IGNORECASE} variable in -@cindex @code{IGNORECASE} variable -@cindex arrays, sorting, @code{IGNORECASE} variable and -@cindex @code{IGNORECASE} variable, array sorting and +@cindex arrays, sorting, and @code{IGNORECASE} variable +@cindex @code{IGNORECASE} variable, and array sorting functions Because @code{IGNORECASE} affects string comparisons, the value of @code{IGNORECASE} also affects sorting for both @code{asort()} and @code{asorti()}. Note also that the locale's sorting order does @emph{not} @@ -24678,7 +24958,7 @@ open a @emph{two-way} pipe to another process. The second process is termed a @dfn{coprocess}, since it runs in parallel with @command{gawk}. The two-way connection is created using the @samp{|&} operator (borrowed from the Korn shell, @command{ksh}):@footnote{This is very -different from the same operator in the C shell.} +different from the same operator in the C shell and in Bash.} @example do @{ @@ -24768,7 +25048,7 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort} command ensures traditional Unix (ASCII) sorting from @command{sort}. @cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array +@cindex @code{PROCINFO} array, and communications via ptys You may also use pseudo-ttys (ptys) for two-way communication instead of pipes, if your system supports them. This is done on a per-command basis, by setting a special element @@ -24966,52 +25246,60 @@ foo junk @end example -Here is the @file{awkprof.out} that results from running the @command{gawk} -profiler on this program and data (this example also illustrates that @command{awk} -programmers sometimes have to work late): +Here is the @file{awkprof.out} that results from running the +@command{gawk} profiler on this program and data. (This example also +illustrates that @command{awk} programmers sometimes get up very early +in the morning to work.) -@cindex @code{BEGIN} pattern -@cindex @code{END} pattern +@cindex @code{BEGIN} pattern, and profiling +@cindex @code{END} pattern, and profiling @example - # gawk profile, created Sun Aug 13 00:00:15 2000 + # gawk profile, created Thu Feb 27 05:16:21 2014 - # BEGIN block(s) + # BEGIN block(s) - BEGIN @{ - 1 print "First BEGIN rule" - 1 print "Second BEGIN rule" - @} + BEGIN @{ + 1 print "First BEGIN rule" + @} - # Rule(s) + BEGIN @{ + 1 print "Second BEGIN rule" + @} - 5 /foo/ @{ # 2 - 2 print "matched /foo/, gosh" - 6 for (i = 1; i <= 3; i++) @{ - 6 sing() - @} - @} + # Rule(s) - 5 @{ - 5 if (/foo/) @{ # 2 - 2 print "if is true" - 3 @} else @{ - 3 print "else is true" - @} - @} + 5 /foo/ @{ # 2 + 2 print "matched /foo/, gosh" + 6 for (i = 1; i <= 3; i++) @{ + 6 sing() + @} + @} - # END block(s) + 5 @{ + 5 if (/foo/) @{ # 2 + 2 print "if is true" + 3 @} else @{ + 3 print "else is true" + @} + @} - END @{ - 1 print "First END rule" - 1 print "Second END rule" - @} + # END block(s) - # Functions, listed alphabetically + END @{ + 1 print "First END rule" + @} - 6 function sing(dummy) - @{ - 6 print "I gotta be me!" - @} + END @{ + 1 print "Second END rule" + @} + + + # Functions, listed alphabetically + + 6 function sing(dummy) + @{ + 6 print "I gotta be me!" + @} @end example This example illustrates many of the basic features of profiling output. @@ -25019,15 +25307,16 @@ They are as follows: @itemize @bullet @item -The program is printed in the order @code{BEGIN} rule, -@code{BEGINFILE} rule, +The program is printed in the order @code{BEGIN} rules, +@code{BEGINFILE} rules, pattern/action rules, -@code{ENDFILE} rule, @code{END} rule and functions, listed +@code{ENDFILE} rules, @code{END} rules and functions, listed alphabetically. -Multiple @code{BEGIN} and @code{END} rules are merged together, -as are multiple @code{BEGINFILE} and @code{ENDFILE} rules. +Multiple @code{BEGIN} and @code{END} rules retain their +separate identities, as do +multiple @code{BEGINFILE} and @code{ENDFILE} rules. -@cindex patterns, counts +@cindex patterns, counts, in a profile @item Pattern-action rules have two counts. The first count, to the left of the rule, shows how many times @@ -25047,7 +25336,7 @@ is a count showing how many times the condition was true. The count for the @code{else} indicates how many times the test failed. -@cindex loops, count for header +@cindex loops, count for header, in a profile @item The count for a loop header (such as @code{for} or @code{while}) shows how many times the loop test was executed. @@ -25055,8 +25344,8 @@ or @code{while}) shows how many times the loop test was executed. statement in a rule to determine how many times the rule was executed. If the first statement is a loop, the count is misleading.) -@cindex functions, user-defined, counts -@cindex user-defined, functions, counts +@cindex functions, user-defined, counts, in a profile +@cindex user-defined, functions, counts, in a profile @item For user-defined functions, the count next to the @code{function} keyword indicates how many times the function was called. @@ -25070,8 +25359,8 @@ The layout uses ``K&R'' style with TABs. Braces are used everywhere, even when the body of an @code{if}, @code{else}, or loop is only a single statement. -@cindex @code{()} (parentheses) -@cindex parentheses @code{()} +@cindex @code{()} (parentheses), in a profile +@cindex parentheses @code{()}, in a profile @item Parentheses are used only where needed, as indicated by the structure of the program and the precedence rules. @@ -25106,8 +25395,8 @@ typed when you wrote it. This is because @command{gawk} creates the profiled version by ``pretty printing'' its internal representation of the program. The advantage to this is that @command{gawk} can produce a standard representation. The disadvantage is that all source-code -comments are lost, as are the distinctions among multiple @code{BEGIN}, -@code{END}, @code{BEGINFILE}, and @code{ENDFILE} rules. Also, things such as: +comments are lost. +Also, things such as: @example /foo/ @@ -25127,6 +25416,7 @@ which is correct, but possibly surprising. @cindex profiling @command{awk} programs, dynamically @cindex @command{gawk} program, dynamic profiling +@cindex dynamic profiling Besides creating profiles when a program has completed, @command{gawk} can produce a profile while it is running. This is useful if your @command{awk} program goes into an @@ -25140,9 +25430,9 @@ $ @kbd{gawk --profile -f myprog &} @end example @cindex @command{kill} command@comma{} dynamic profiling -@cindex @code{USR1} signal -@cindex @code{SIGUSR1} signal -@cindex signals, @code{USR1}/@code{SIGUSR1} +@cindex @code{USR1} signal, for dynamic profiling +@cindex @code{SIGUSR1} signal, for dynamic profiling +@cindex signals, @code{USR1}/@code{SIGUSR1}, for profiling @noindent The shell prints a job number and process ID number; in this case, 13992. Use the @command{kill} command to send the @code{USR1} signal @@ -25173,9 +25463,9 @@ You may send @command{gawk} the @code{USR1} signal as many times as you like. Each time, the profile and function call trace are appended to the output profile file. -@cindex @code{HUP} signal -@cindex @code{SIGHUP} signal -@cindex signals, @code{HUP}/@code{SIGHUP} +@cindex @code{HUP} signal, for dynamic profiling +@cindex @code{SIGHUP} signal, for dynamic profiling +@cindex signals, @code{HUP}/@code{SIGHUP}, for profiling If you use the @code{HUP} signal instead of the @code{USR1} signal, @command{gawk} produces the profile and the function call trace and then exits. @@ -25197,6 +25487,11 @@ keyboard. The @code{INT} signal is generated by the Finally, @command{gawk} also accepts another option, @option{--pretty-print}. When called this way, @command{gawk} ``pretty prints'' the program into @file{awkprof.out}, without any execution counts. + +@quotation NOTE +The @option{--pretty-print} option still runs your program. +This will change in the next major release. +@end quotation @c ENDOFRANGE advgaw @c ENDOFRANGE gawadv @c ENDOFRANGE awkp @@ -25308,6 +25603,7 @@ lookup of the translations. @cindex @code{.po} files @cindex files, @code{.po} +@c STARTOFRANGE portobfi @cindex portable object files @cindex files, portable object @item @@ -25319,6 +25615,7 @@ For example, there might be a @file{fr.po} for a French translation. @cindex @code{.gmo} files @cindex files, @code{.gmo} @cindex message object files +@c STARTOFRANGE portmsgfi @cindex files, message object @item Each language's @file{.po} file is converted into a binary @@ -25466,7 +25763,7 @@ String constants marked with a leading underscore are candidates for translation at runtime. String constants without a leading underscore are not translated. -@cindex @code{dcgettext()} function (@command{gawk}) +@cindexgawkfunc{dcgettext} @item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the translation of @var{string} in text domain @var{domain} for locale category @var{category}. @@ -25492,7 +25789,7 @@ chosen to be simple and to allow for reasonable @command{awk}-style default arguments. @end quotation -@cindex @code{dcngettext()} function (@command{gawk}) +@cindexgawkfunc{dcngettext} @item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @@ -25508,7 +25805,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app @cindex files, @code{.gmo}, specifying directory of @cindex message object files, specifying directory of @cindex files, message object, specifying directory of -@cindex @code{bindtextdomain()} function (@command{gawk}) +@cindexgawkfunc{bindtextdomain} @item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]}) Change the directory in which @code{gettext} looks for @file{.gmo} files, in case they @@ -25610,7 +25907,7 @@ and use translations from @command{awk}. @cindex portable object files @cindex files, portable object Once a program's translatable strings have been marked, they must -be extracted to create the initial @file{.po} file. +be extracted to create the initial @file{.pot} file. As part of translation, it is often helpful to rearrange the order in which arguments to @code{printf} are output. @@ -25659,6 +25956,8 @@ second argument to @code{dcngettext()}.@footnote{The @xref{I18N Example}, for the full list of steps to go through to create and test translations for @command{guide}. +@c ENDOFRANGE portobfi +@c ENDOFRANGE portmsgfi @node Printf Ordering @subsection Rearranging @code{printf} Arguments @@ -25705,7 +26004,7 @@ example, @samp{string} is the first argument and @samp{length(string)} is the se @example $ @kbd{gawk 'BEGIN @{} > @kbd{string = "Dont Panic"} -> @kbd{printf _"%2$d characters live in \"%1$s\"\n",} +> @kbd{printf "%2$d characters live in \"%1$s\"\n",} > @kbd{string, length(string)} > @kbd{@}'} @print{} 10 characters live in "Dont Panic" @@ -25739,7 +26038,7 @@ This is somewhat counterintuitive. and those with positional specifiers in the same string: @example -$ @kbd{gawk 'BEGIN @{ printf _"%d %3$s\n", 1, 2, "hi" @}'} +$ @kbd{gawk 'BEGIN @{ printf "%d %3$s\n", 1, 2, "hi" @}'} @error{} gawk: cmd. line:1: fatal: must use `count$' on all formats or none @end example @@ -26080,6 +26379,7 @@ The following list defines terms used throughout the rest of this @value{CHAPTER}. @table @dfn +@cindex stack frame @item Stack Frame Programs generally call functions during the course of their execution. One function can call another, or a function can call itself (recursion). @@ -26101,6 +26401,7 @@ invoked. Commands that print the call stack print information about each stack frame (as detailed later on). @item Breakpoint +@cindex breakpoint During debugging, you often wish to let the program run until it reaches a certain point, and then continue execution from there one statement (or instruction) at a time. The way to do this is to set @@ -26110,6 +26411,7 @@ take over control of the program's execution. You can add and remove as many breakpoints as you like. @item Watchpoint +@cindex watchpoint A watchpoint is similar to a breakpoint. The difference is that breakpoints are oriented around the code: stop when a certain point in the code is reached. A watchpoint, however, specifies that program execution @@ -26141,6 +26443,7 @@ by the higher-level @command{awk} commands. @node Sample Debugging Session @section Sample Debugging Session +@cindex sample debugging session In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample debugging session. We will use the @command{awk} implementation of the @@ -26154,13 +26457,16 @@ as our example. @node Debugger Invocation @subsection How to Start the Debugger +@cindex starting the debugger +@cindex debugger, how to start -Starting the debugger is almost exactly like running @command{awk}, except you have to -pass an additional option @option{--debug} or the corresponding short option @option{-D}. -The file(s) containing the program and any supporting code are given on the command -line as arguments to one or more @option{-f} options. (@command{gawk} is not designed -to debug command-line programs, only programs contained in files.) In our case, -we invoke the debugger like this: +Starting the debugger is almost exactly like running @command{gawk}, +except you have to pass an additional option @option{--debug} or the +corresponding short option @option{-D}. The file(s) containing the +program and any supporting code are given on the command line as arguments +to one or more @option{-f} options. (@command{gawk} is not designed +to debug command-line programs, only programs contained in files.) +In our case, we invoke the debugger like this: @example $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk inputfile} @@ -26293,7 +26599,7 @@ gawk> @kbd{p NR} @noindent So we can see that @code{are_equal()} was only called for the second record -of the file. Of course, this is because our program contained a rule for +of the file. Of course, this is because our program contains a rule for @samp{NR == 1}: @example @@ -26493,21 +26799,24 @@ controlling breakpoints are: @cindex debugger commands, @code{break} @cindex @code{break} debugger command @cindex @code{b} debugger command (alias for @code{break}) +@cindex set breakpoint +@cindex breakpoint, setting @item @code{break} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}] @itemx @code{b} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}] Without any argument, set a breakpoint at the next instruction to be executed in the selected stack frame. Arguments can be one of the following: +@c @asis for docbook @c nested table -@table @var -@item n +@table @asis +@item @var{n} Set a breakpoint at line number @var{n} in the current source file. -@item filename@code{:}n +@item @var{filename}@code{:}@var{n} Set a breakpoint at line number @var{n} in source file @var{filename}. -@item function +@item @var{function} Set a breakpoint at entry to (the first instruction of) function @var{function}. @end table @@ -26523,6 +26832,8 @@ it continues executing the program. @cindex debugger commands, @code{clear} @cindex @code{clear} debugger command +@cindex delete breakpoint at location +@cindex breakpoint at location, how to delete @item @code{clear} [[@var{filename}@code{:}]@var{n} | @var{function}] Without any argument, delete any breakpoint at the next instruction to be executed in the selected stack frame. If the program stops at @@ -26530,19 +26841,20 @@ a breakpoint, this deletes that breakpoint so that the program does not stop at that location again. Arguments can be one of the following: @c nested table -@table @var -@item n +@table @asis +@item @var{n} Delete breakpoint(s) set at line number @var{n} in the current source file. -@item filename@code{:}n +@item @var{filename}@code{:}@var{n} Delete breakpoint(s) set at line number @var{n} in source file @var{filename}. -@item function +@item @var{function} Delete breakpoint(s) set at entry to function @var{function}. @end table @cindex debugger commands, @code{condition} @cindex @code{condition} debugger command +@cindex breakpoint condition @item @code{condition} @var{n} @code{"@var{expression}"} Add a condition to existing breakpoint or watchpoint @var{n}. The condition is an @command{awk} expression that the debugger evaluates @@ -26556,6 +26868,8 @@ watchpoint is made unconditional. @cindex debugger commands, @code{delete} @cindex @code{delete} debugger command @cindex @code{d} debugger command (alias for @code{delete}) +@cindex delete breakpoint by number +@cindex breakpoint, delete by number @item @code{delete} [@var{n1 n2} @dots{}] [@var{n}--@var{m}] @itemx @code{d} [@var{n1 n2} @dots{}] [@var{n}--@var{m}] Delete specified breakpoints or a range of breakpoints. Deletes @@ -26563,6 +26877,8 @@ all defined breakpoints if no argument is supplied. @cindex debugger commands, @code{disable} @cindex @code{disable} debugger command +@cindex disable breakpoint +@cindex breakpoint, how to disable or enable @item @code{disable} [@var{n1 n2} @dots{} | @var{n}--@var{m}] Disable specified breakpoints or a range of breakpoints. Without any argument, disables all breakpoints. @@ -26571,6 +26887,7 @@ any argument, disables all breakpoints. @cindex debugger commands, @code{enable} @cindex @code{enable} debugger command @cindex @code{e} debugger command (alias for @code{enable}) +@cindex enable breakpoint @item @code{enable} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}] @itemx @code{e} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}] Enable specified breakpoints or a range of breakpoints. Without @@ -26590,6 +26907,7 @@ the program stops at the breakpoint. @cindex debugger commands, @code{ignore} @cindex @code{ignore} debugger command +@cindex ignore breakpoint @item @code{ignore} @var{n} @var{count} Ignore breakpoint number @var{n} the next @var{count} times it is hit. @@ -26598,6 +26916,7 @@ hit. @cindex debugger commands, @code{tbreak} @cindex @code{tbreak} debugger command @cindex @code{t} debugger command (alias for @code{tbreak}) +@cindex temporary breakpoint @item @code{tbreak} [[@var{filename}@code{:}]@var{n} | @var{function}] @itemx @code{t} [[@var{filename}@code{:}]@var{n} | @var{function}] Set a temporary breakpoint (enabled for only one stop). @@ -26618,6 +26937,8 @@ execution of the program than we saw in our earlier example: @cindex @code{silent} debugger command @cindex debugger commands, @code{end} @cindex @code{end} debugger command +@cindex breakpoint commands +@cindex commands to execute at breakpoint @item @code{commands} [@var{n}] @itemx @code{silent} @itemx @dots{} @@ -26645,6 +26966,7 @@ gawk> @cindex debugger commands, @code{c} (@code{continue}) @cindex debugger commands, @code{continue} +@cindex continue program, in debugger @item @code{continue} [@var{count}] @itemx @code{c} [@var{count}] Resume program execution. If continued from a breakpoint and @var{count} is @@ -26661,6 +26983,7 @@ Print the returned value. @cindex debugger commands, @code{next} @cindex @code{next} debugger command @cindex @code{n} debugger command (alias for @code{next}) +@cindex single-step execution, in the debugger @item @code{next} [@var{count}] @itemx @code{n} [@var{count}] Continue execution to the next source line, stepping over function calls. @@ -26755,6 +27078,7 @@ items on the list. @cindex debugger commands, @code{eval} @cindex @code{eval} debugger command +@cindex evaluate expressions, in debugger @item @code{eval "@var{awk statements}"} Evaluate @var{awk statements} in the context of the running program. You can do anything that an @command{awk} program would do: assign @@ -26772,6 +27096,7 @@ parameters defined by the program. @cindex debugger commands, @code{print} @cindex @code{print} debugger command @cindex @code{p} debugger command (alias for @code{print}) +@cindex print variables, in debugger @item @code{print} @var{var1}[@code{,} @var{var2} @dots{}] @itemx @code{p} @var{var1}[@code{,} @var{var2} @dots{}] Print the value of a @command{gawk} variable or field. @@ -26805,6 +27130,7 @@ No newline is printed unless one is specified. @cindex debugger commands, @code{set} @cindex @code{set} debugger command +@cindex assign values to variables, in debugger @item @code{set} @var{var}@code{=}@var{value} Assign a constant (number or string) value to an @command{awk} variable or field. @@ -26817,6 +27143,7 @@ You can also set special @command{awk} variables, such as @code{FS}, @cindex debugger commands, @code{watch} @cindex @code{watch} debugger command @cindex @code{w} debugger command (alias for @code{watch}) +@cindex set watchpoint @item @code{watch} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}] @itemx @code{w} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}] Add variable @var{var} (or field @code{$@var{n}}) to the watch list. @@ -26833,12 +27160,14 @@ then the debugger stops execution and prompts for a command. Otherwise, @cindex debugger commands, @code{undisplay} @cindex @code{undisplay} debugger command +@cindex stop automatic display, in debugger @item @code{undisplay} [@var{n}] Remove item number @var{n} (or all items, if no argument) from the automatic display list. @cindex debugger commands, @code{unwatch} @cindex @code{unwatch} debugger command +@cindex delete watchpoint @item @code{unwatch} [@var{n}] Remove item number @var{n} (or all items, if no argument) from the watch list. @@ -26859,6 +27188,8 @@ functions which called the one you are in. The commands for doing this are: @cindex debugger commands, @code{backtrace} @cindex @code{backtrace} debugger command @cindex @code{bt} debugger command (alias for @code{backtrace}) +@cindex call stack, display in debugger +@cindex traceback, display in debugger @item @code{backtrace} [@var{count}] @itemx @code{bt} [@var{count}] Print a backtrace of all function calls (stack frames), or innermost @var{count} @@ -26912,25 +27243,32 @@ The value for @var{what} should be one of the following: @c nested table @table @code @item args +@cindex show function arguments, in debugger Arguments of the selected frame. @item break +@cindex show breakpoints List all currently set breakpoints. @item display +@cindex automatic displays, in debugger List all items in the automatic display list. @item frame +@cindex describe call stack frame, in debugger Description of the selected stack frame. @item functions +@cindex list function definitions, in debugger List all function definitions including source file names and line numbers. @item locals +@cindex show local variables, in debugger Local variables of the selected frame. @item source +@cindex show name of current source file, in debugger The name of the current source file. Each time the program stops, the current source file is the file containing the current instruction. When the debugger first starts, the current source file is the first file @@ -26939,12 +27277,15 @@ included via the @option{-f} option. The be used at any time to change the current source. @item sources +@cindex show all source files, in debugger List all program sources. @item variables +@cindex list all global variables, in debugger List all global variables. @item watch +@cindex show watchpoints List all items in the watch list. @end table @end table @@ -26958,6 +27299,8 @@ from a file. The commands are: @cindex debugger commands, @code{option} @cindex @code{option} debugger command @cindex @code{o} debugger command (alias for @code{option}) +@cindex display debugger options +@cindex debugger options @item @code{option} [@var{name}[@code{=}@var{value}]] @itemx @code{o} [@var{name}[@code{=}@var{value}]] Without an argument, display the available debugger options @@ -26969,30 +27312,37 @@ The available options are: @c nested table @table @code @item history_size +@cindex debugger history size The maximum number of lines to keep in the history file @file{./.gawk_history}. The default is 100. @item listsize +@cindex debugger default list amount The number of lines that @code{list} prints. The default is 15. @item outfile +@cindex redirect @command{gawk} output, in debugger Send @command{gawk} output to a file; debugger output still goes to standard output. An empty string (@code{""}) resets output to standard output. @item prompt +@cindex debugger prompt The debugger prompt. The default is @samp{@w{gawk> }}. @item save_history @r{[}on @r{|} off@r{]} +@cindex debugger history file Save command history to file @file{./.gawk_history}. The default is @code{on}. @item save_options @r{[}on @r{|} off@r{]} +@cindex save debugger options Save current options to file @file{./.gawkrc} upon exit. The default is @code{on}. Options are read back in to the next session upon startup. @item trace @r{[}on @r{|} off@r{]} +@cindex instruction tracing, in debugger Turn instruction tracing on or off. The default is @code{off}. @end table @@ -27001,6 +27351,7 @@ Save the commands from the current session to the given file name, so that they can be replayed using the @command{source} command. @item @code{source} @var{filename} +@cindex debugger, read commands from a file Run command(s) from a file; an error in any command does not terminate execution of subsequent commands. Comments (lines starting with @samp{#}) are allowed in a command file. @@ -27099,8 +27450,8 @@ about the command @var{command}. @cindex debugger commands, @code{list} @cindex @code{list} debugger command @cindex @code{l} debugger command (alias for @code{list}) -@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}] -@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}] +@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}] +@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}] Print the specified lines (default 15) from the current source file or the file named @var{filename}. The possible arguments to @code{list} are as follows: @@ -27120,7 +27471,7 @@ Print lines centered around line number @var{n}. @item @var{n}--@var{m} Print lines from @var{n} to @var{m}. -@item @var{filename@code{:}n} +@item @var{filename}@code{:}@var{n} Print lines centered around line number @var{n} in source file @var{filename}. This command may change the current source file. @@ -27133,6 +27484,7 @@ function @var{function}. This command may change the current source file. @cindex debugger commands, @code{quit} @cindex @code{quit} debugger command @cindex @code{q} debugger command (alias for @code{quit}) +@cindex exit the debugger @item @code{quit} @itemx @code{q} Exit the debugger. Debugging is great fun, but sometimes we all have @@ -27156,6 +27508,8 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while @node Readline Support @section Readline Support +@cindex command completion, in debugger +@cindex history expansion, in debugger If @command{gawk} is compiled with the @code{readline} library, you can take advantage of that library's command completion and history expansion @@ -27243,9 +27597,7 @@ be added, and of course feel free to try to add them yourself! @cindex arbitrary precision @cindex multiple precision @cindex infinite precision -@cindex floating-point numbers, arbitrary precision -@cindex MPFR -@cindex GMP +@cindex floating-point, numbers@comma{} arbitrary precision @cindex Knuth, Donald @quotation @@ -27589,23 +27941,38 @@ then the answer is @math{2^{53}}. @end iftex @ifnottex +@ifnotdocbook 2^53. +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript>. @c +@end docbook The next representable number is the even number @iftex @math{2^{53} + 2}, @end iftex @ifnottex +@ifnotdocbook 2^53 + 2, +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript> + 2, @c +@end docbook meaning it is unlikely that you will be able to make @command{gawk} print @iftex @math{2^{53} + 1} @end iftex @ifnottex +@ifnotdocbook 2^53 + 1 +@end ifnotdocbook @end ifnottex +@docbook +2<superscript>53</superscript> + 1 @c +@end docbook in integer format. The range of integers exactly representable by a 64-bit double is @@ -27613,8 +27980,13 @@ is @math{[-2^{53}, 2^{53}]}. @end iftex @ifnottex +@ifnotdocbook [@minus{}2^53, 2^53]. +@end ifnotdocbook @end ifnottex +@docbook +[−2<superscript>53</superscript>, 2<superscript>53</superscript>]. @c +@end docbook If you ever see an integer outside this range in @command{awk} using 64-bit doubles, you have reason to be very suspicious about the accuracy of the output. Here is a simple program with erroneous output: @@ -27838,8 +28210,13 @@ number is then @math{s @cdot 2^e}. @end iftex @ifnottex +@ifnotdocbook @var{s * 2^e}. +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>s ⋅ 2<superscript>e</superscript></emphasis>. @c +@end docbook The first bit of a non-zero binary significand is always one, so the significand in an IEEE-754 format only includes the fractional part, leaving the leading one implicit. @@ -28009,6 +28386,8 @@ when you change the rounding mode. @node Gawk and MPFR @section @command{gawk} + MPFR = Powerful Arithmetic +@cindex MPFR +@cindex GMP The rest of this @value{CHAPTER} describes how to use the arbitrary precision (also known as @dfn{multiple precision} or @dfn{infinite precision}) numeric @@ -28021,12 +28400,17 @@ The easiest way to find out is to look at the output of the following command: @example -$ @kbd{gawk --version} -@print{} GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) -@print{} Copyright (C) 1989, 1991-2013 Free Software Foundation. +$ @kbd{./gawk --version} +@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2) +@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation. @dots{} @end example +@noindent +(You may see different version numbers than what's shown here. That's OK; +what's important is to see that GNU MPFR and GNU MP are listed in +the output.) + @command{gawk} uses the @uref{http://www.mpfr.org, GNU MPFR} and @@ -28080,8 +28464,13 @@ numbers are not implemented.} (@math{emax = 2^{30} - 1, emin = -emax}) @end iftex @ifnottex +@ifnotdocbook (@var{emax} = 2^30 @minus{} 1, @var{emin} = @minus{}@var{emax}) +@end ifnotdocbook @end ifnottex +@docbook +(<emphasis>emax</emphasis> = 2<superscript>30</superscript> − 1, <emphasis>emin</emphasis> = −<emphasis>emax</emphasis>) @c +@end docbook for all floating-point contexts. There is no explicit mechanism to adjust the exponent range. MPFR does not implement subnormal numbers by default, @@ -28113,6 +28502,7 @@ your program. @node Setting Precision @subsection Setting the Working Precision @cindex @code{PREC} variable +@cindex setting working precision @command{gawk} uses a global working precision; it does not keep track of the precision or accuracy of individual numbers. Performing an arithmetic @@ -28152,8 +28542,15 @@ formula: @math{prec = 3.322 @cdot dps} @end iftex @ifnottex +@ifnotdocbook @var{prec} = 3.322 * @var{dps} +@end ifnotdocbook @end ifnottex +@docbook +<para> +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis> @c +</para> +@end docbook @noindent Here, @var{prec} denotes the binary precision @@ -28188,6 +28585,7 @@ issues that occur because numbers are stored internally in binary. @node Setting Rounding Mode @subsection Setting the Rounding Mode @cindex @code{ROUNDMODE} variable +@cindex setting rounding mode The @code{ROUNDMODE} variable provides program level control over the rounding mode. @@ -28255,6 +28653,7 @@ In the first case, the number is stored with the default precision of 53 bits. @node Changing Precision @subsection Changing the Precision of a Number +@cindex changing precision of a number @cindex Laurie, Dirk @quotation @@ -28372,7 +28771,8 @@ the problem at hand is often the correct approach in such situations. @node Arbitrary Precision Integers @section Arbitrary Precision Integer Arithmetic with @command{gawk} -@cindex integer, arbitrary precision +@cindex integers, arbitrary precision +@cindex arbitrary precision integers If one of the options @option{--bignum} or @option{-M} is specified, @command{gawk} performs all @@ -28386,8 +28786,13 @@ For example, the following computes @math{5^{4^{3^{2}}}}, @end iftex @ifnottex +@ifnotdocbook 5^4^3^2, +@end ifnotdocbook @end ifnottex +@docbook +5<superscript>4<superscript>3<superscript>2</superscript></superscript></superscript>, @c +@end docbook the result of which is beyond the limits of ordinary @command{gawk} numbers: @@ -28409,9 +28814,16 @@ floating-point values instead, the precision needed for correct output would be @math{3.322 @cdot 183231}, @end iftex @ifnottex +@ifnotdocbook @samp{prec = 3.322 * dps}), would be 3.322 x 183231, +@end ifnotdocbook @end ifnottex +@docbook +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>), +would be +<emphasis>prec</emphasis> = 3.322 ⋅ 183231, @c +@end docbook or 608693. The result from an arithmetic operation with an integer and a floating-point value @@ -28460,7 +28872,7 @@ to begin with: gawk -M 'BEGIN @{ n = 13.0; print n % 2.0 @}' @end example -Note that for the particular example above, there is likely best +Note that for the particular example above, it is likely best to just use the following: @example @@ -28469,6 +28881,7 @@ gawk -M 'BEGIN @{ n = 13; print n % 2 @}' @node Dynamic Extensions @chapter Writing Extensions for @command{gawk} +@cindex dynamically loaded extensions It is possible to add new functions written in C or C++ to @command{gawk} using dynamically loaded libraries. This facility is available on systems @@ -28503,6 +28916,7 @@ When @option{--sandbox} is specified, extensions are disabled @node Extension Intro @section Introduction +@cindex plug-in An @dfn{extension} (sometimes called a @dfn{plug-in}) is a piece of external compiled code that @command{gawk} can load at runtime to provide additional functionality, over and above the built-in capabilities @@ -28548,8 +28962,14 @@ Communication between @command{gawk} and an extension is two-way. First, when an extension is loaded, it is passed a pointer to a @code{struct} whose fields are function pointers. +@ifnotdocbook This is shown in @ref{load-extension}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="load-extension"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,load-extension @caption{Loading The Extension} @c FIXME: One day, it should not be necessary to have two cases, @@ -28562,13 +28982,27 @@ This is shown in @ref{load-extension}. @center @image{api-figure1, , , Loading the extension} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="load-extension"> +<title>Loading the extension</title> +<graphic fileref="api-figure1.eps"/> +</figure> +@end docbook The extension can call functions inside @command{gawk} through these function pointers, at runtime, without needing (link-time) access to @command{gawk}'s symbols. One of these function pointers is to a function for ``registering'' new built-in functions. +@ifnotdocbook This is shown in @ref{load-new-function}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="load-new-function"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,load-new-function @caption{Loading The New Function} @ifinfo @@ -28578,14 +29012,28 @@ This is shown in @ref{load-new-function}. @center @image{api-figure2, , , Loading the new function} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="load-new-function"> +<title>Loading the new function</title> +<graphic fileref="api-figure2.eps"/> +</figure> +@end docbook In the other direction, the extension registers its new functions with @command{gawk} by passing function pointers to the functions that provide the new feature (@code{do_chdir()}, for example). @command{gawk} associates the function pointer with a name and can then call it, using a defined calling convention. +@ifnotdocbook This is shown in @ref{call-new-function}. +@end ifnotdocbook +@ifdocbook +This is shown in @inlineraw{docbook, <xref linkend="call-new-function"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,call-new-function @caption{Calling The New Function} @ifinfo @@ -28595,6 +29043,14 @@ This is shown in @ref{call-new-function}. @center @image{api-figure3, , , Calling the new function} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="call-new-function"> +<title>Calling The New Function</title> +<graphic fileref="api-figure3.eps"/> +</figure> +@end docbook The @code{do_@var{xxx}()} function, in turn, then uses the function pointers in the API @code{struct} to do its work, such as updating @@ -28631,6 +29087,7 @@ happen, but we all know how @emph{that} goes.) @node Extension API Description @section API Description +@cindex extension API This (rather large) @value{SECTION} describes the API in detail. @@ -28638,6 +29095,7 @@ This (rather large) @value{SECTION} describes the API in detail. * Extension API Functions Introduction:: Introduction to the API functions. * General Data Types:: The data types. * Requesting Values:: How to get a value. +* Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. * Registration Functions:: Functions to register things with @command{gawk}. @@ -28693,6 +29151,9 @@ Symbol table access: retrieving a global variable, creating one, or changing one. @item +Allocating, reallocating, and releasing memory. + +@item Creating and releasing cached values; this provides an efficient way to use values for multiple variables and can be a big performance win. @@ -28731,10 +29192,8 @@ corresponding standard header file @emph{before} including @file{gawkapi.h}: @item @code{EOF} @tab @code{<stdio.h>} @item @code{FILE} @tab @code{<stdio.h>} @item @code{NULL} @tab @code{<stddef.h>} -@item @code{malloc()} @tab @code{<stdlib.h>} @item @code{memcpy()} @tab @code{<string.h>} @item @code{memset()} @tab @code{<string.h>} -@item @code{realloc()} @tab @code{<stdlib.h>} @item @code{size_t} @tab @code{<sys/types.h>} @item @code{struct stat} @tab @code{<sys/stat.h>} @end multitable @@ -28764,8 +29223,9 @@ does not support this keyword, you should either place All pointers filled in by @command{gawk} are to memory managed by @command{gawk} and should be treated by the extension as read-only. Memory for @emph{all} strings passed into @command{gawk} -from the extension @emph{must} come from @code{malloc()} and is managed -by @command{gawk} from then on. +from the extension @emph{must} come from calling the API-provided function +pointers @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}, +and is managed by @command{gawk} from then on. @item The API defines several simple @code{struct}s that map values as seen @@ -28805,6 +29265,8 @@ the macros as if they were functions. @node General Data Types @subsection General Purpose Data Types +@cindex Robbins, Arnold +@cindex Ramey, Chet @quotation @i{I have a true love/hate relationship with unions.} @author Arnold Robbins @@ -28845,7 +29307,8 @@ A simple boolean type. This represents a mutable string. @command{gawk} owns the memory pointed to if it supplied the value. Otherwise, it takes ownership of the memory pointed to. -@strong{Such memory must come from @code{malloc()}!} +@strong{Such memory must come from calling the API-provided function +pointers @code{api_malloc()}, @code{api_calloc()}, or @code{api_realloc()}!} As mentioned earlier, strings are maintained using the current multibyte encoding. @@ -28961,7 +29424,94 @@ print an error message, or reissue the request for the actual value type, as appropriate. This behavior is summarized in @ref{table-value-types-returned}. +@c FIXME: Try to do this with spans... +@ifdocbook +@anchor{table-value-types-returned} +@end ifdocbook +@docbook +<informaltable> +<tgroup cols="2"> + <colspec colwidth="50*"/><colspec colwidth="50*"/> + <thead> + <row><entry></entry><entry><para>Type of Actual Value:</para></entry></row> + </thead> + <tbody> + <row><entry></entry><entry></entry></row> + </tbody> +</tgroup> +<tgroup cols="6"> + <colspec colwidth="16.6*"/> + <colspec colwidth="16.6*"/> + <colspec colwidth="19.8*"/> + <colspec colwidth="15*"/> + <colspec colwidth="15*"/> + <colspec colwidth="16.6*"/> + <thead> + <row> + <entry></entry> + <entry></entry> + <entry><para>String</para></entry> + <entry><para>Number</para></entry> + <entry><para>Array</para></entry> + <entry><para>Undefined</para></entry> + </row> + </thead> + <tbody> + <row> + <entry></entry> + <entry><para><emphasis role="bold">String</emphasis></para></entry> + <entry><para>String</para></entry> + <entry><para>String</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Number</emphasis></para></entry> + <entry><para>Number if can be converted, else false</para></entry> + <entry><para>Number</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry><para><emphasis role="bold">Type</emphasis></para></entry> + <entry><para><emphasis role="bold">Array</emphasis></para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + <entry><para>Array</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry><para><emphasis role="bold">Requested:</emphasis></para></entry> + <entry><para><emphasis role="bold">Scalar</emphasis></para></entry> + <entry><para>Scalar</para></entry> + <entry><para>Scalar</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Undefined</emphasis></para></entry> + <entry><para>String</para></entry> + <entry><para>Number</para></entry> + <entry><para>Array</para></entry> + <entry><para>Undefined</para></entry> + </row> + <row> + <entry></entry> + <entry><para><emphasis role="bold">Value Cookie</emphasis></para></entry> + <entry><para>false</para></entry> + <entry><para>false</para></entry> + <entry><para>false</para> + </entry><entry><para>false</para></entry> + </row> + </tbody> +</tgroup> +</informaltable> +@end docbook + @ifnotplaintext +@ifnotdocbook @float Table,table-value-types-returned @caption{Value Types Returned} @multitable @columnfractions .50 .50 @@ -28977,6 +29527,7 @@ value type, as appropriate. This behavior is summarized in @item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false @end multitable @end float +@end ifnotdocbook @end ifnotplaintext @ifplaintext @float Table,table-value-types-returned @@ -29007,45 +29558,46 @@ value type, as appropriate. This behavior is summarized in @end float @end ifplaintext -@node Constructor Functions -@subsection Constructor Functions and Convenience Macros +@node Memory Allocation Functions +@subsection Memory Allocation Functions and Convenience Macros +@cindex allocating memory for extensions +@cindex extensions, allocating memory -The API provides a number of @dfn{constructor} functions for creating -string and numeric values, as well as a number of convenience macros. -This @value{SUBSECTION} presents them all as function prototypes, in -the way that extension code would use them. +The API provides a number of @dfn{memory allocation} functions for +allocating memory that can be passed to @command{gawk}, as well as a number of +convenience macros. @table @code -@item static inline awk_value_t * -@itemx make_const_string(const char *string, size_t length, awk_value_t *result) -This function creates a string value in the @code{awk_value_t} variable -pointed to by @code{result}. It expects @code{string} to be a C string constant -(or other string data), and automatically creates a @emph{copy} of the data -for storage in @code{result}. It returns @code{result}. +@item void *gawk_malloc(size_t size); +Call @command{gawk}-provided @code{api_malloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result) -This function creates a string value in the @code{awk_value_t} variable -pointed to by @code{result}. It expects @code{string} to be a @samp{char *} -value pointing to data previously obtained from @code{malloc()}. The idea here -is that the data is passed directly to @command{gawk}, which assumes -responsibility for it. It returns @code{result}. +@item void *gawk_calloc(size_t nmemb, size_t size); +Call @command{gawk}-provided @code{api_calloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_null_string(awk_value_t *result) -This specialized function creates a null string (the ``undefined'' value) -in the @code{awk_value_t} variable pointed to by @code{result}. -It returns @code{result}. +@item void *gawk_realloc(void *ptr, size_t size); +Call @command{gawk}-provided @code{api_realloc()} to allocate storage that may +be passed to @command{gawk}. -@item static inline awk_value_t * -@itemx make_number(double num, awk_value_t *result) -This function simply creates a numeric value in the @code{awk_value_t} variable -pointed to by @code{result}. +@item void gawk_free(void *ptr); +Call @command{gawk}-provided @code{api_free()} to release storage that was +allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. @end table -Two convenience macros may be used for allocating storage from @code{malloc()} -and @code{realloc()}. If the allocation fails, they cause @command{gawk} to -exit with a fatal error message. They should be used as if they were +The API has to provide these functions because it is possible +for an extension to be compiled and linked against a different +version of the C library than was used for the @command{gawk} +executable.@footnote{This is more common on MS-Windows systems, but +can happen on Unix-like systems as well.} If @command{gawk} were +to use its version of @code{free()} when the memory came from an +unrelated version of @code{malloc()}, unexpected behavior would +likely result. + +Two convenience macros may be used for allocating storage +from the API-provided function pointers @code{api_malloc()} and +@code{api_realloc()}. If the allocation fails, they cause @command{gawk} +to exit with a fatal error message. They should be used as if they were procedure calls that do not return a value. @table @code @@ -29057,7 +29609,7 @@ The arguments to this macro are as follows: The pointer variable to point at the allocated storage. @item type -The type of the pointer variable, used to create a cast for the call to @code{malloc()}. +The type of the pointer variable, used to create a cast for the call to @code{api_malloc()}. @item size The total number of bytes to be allocated. @@ -29081,13 +29633,51 @@ make_malloced_string(message, strlen(message), & result); @end example @item #define erealloc(pointer, type, size, message) @dots{} -This is like @code{emalloc()}, but it calls @code{realloc()}, -instead of @code{malloc()}. +This is like @code{emalloc()}, but it calls @code{api_realloc()}, +instead of @code{api_malloc()}. The arguments are the same as for the @code{emalloc()} macro. @end table +@node Constructor Functions +@subsection Constructor Functions + +The API provides a number of @dfn{constructor} functions for creating +string and numeric values, as well as a number of convenience macros. +This @value{SUBSECTION} presents them all as function prototypes, in +the way that extension code would use them. + +@table @code +@item static inline awk_value_t * +@itemx make_const_string(const char *string, size_t length, awk_value_t *result) +This function creates a string value in the @code{awk_value_t} variable +pointed to by @code{result}. It expects @code{string} to be a C string constant +(or other string data), and automatically creates a @emph{copy} of the data +for storage in @code{result}. It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result) +This function creates a string value in the @code{awk_value_t} variable +pointed to by @code{result}. It expects @code{string} to be a @samp{char *} +value pointing to data previously obtained from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The idea here +is that the data is passed directly to @command{gawk}, which assumes +responsibility for it. It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_null_string(awk_value_t *result) +This specialized function creates a null string (the ``undefined'' value) +in the @code{awk_value_t} variable pointed to by @code{result}. +It returns @code{result}. + +@item static inline awk_value_t * +@itemx make_number(double num, awk_value_t *result) +This function simply creates a numeric value in the @code{awk_value_t} variable +pointed to by @code{result}. +@end table + @node Registration Functions @subsection Registration Functions +@cindex register extension +@cindex extension registration This @value{SECTION} describes the API functions for registering parts of your extension with @command{gawk}. @@ -29132,8 +29722,8 @@ Letter case in function names is significant. This is a pointer to the C function that provides the desired functionality. The function must fill in the result with either a number -or a string. @command{awk} takes ownership of any string memory. -As mentioned earlier, string memory @strong{must} come from @code{malloc()}. +or a string. @command{gawk} takes ownership of any string memory. +As mentioned earlier, string memory @strong{must} come from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The @code{num_actual_args} argument tells the C function how many actual parameters were passed from the calling @command{awk} code. @@ -29209,6 +29799,7 @@ is invoked with the @option{--version} option. @node Input Parsers @subsubsection Customized Input Parsers +@cindex customized input parser By default, @command{gawk} reads text files as its input. It uses the value of @code{RS} to find the end of the record, and then uses @code{FS} @@ -29456,7 +30047,9 @@ Register the input parser pointed to by @code{input_parser} with @node Output Wrappers @subsubsection Customized Output Wrappers +@cindex customized output wrapper +@cindex output wrapper An @dfn{output wrapper} is the mirror image of an input parser. It allows an extension to take over the output to a file opened with the @samp{>} or @samp{>>} I/O redirection operators (@pxref{Redirection}). @@ -29570,6 +30163,7 @@ Register the output wrapper pointed to by @code{output_wrapper} with @node Two-way processors @subsubsection Customized Two-way Processors +@cindex customized two-way processor A @dfn{two-way processor} combines an input parser and an output wrapper for two-way I/O with the @samp{|&} operator (@pxref{Redirection}). It makes identical @@ -29627,6 +30221,8 @@ Register the two-way processor pointed to by @code{two_way_processor} with @node Printing Messages @subsection Printing Messages +@cindex printing messages from extensions +@cindex messages from extensions You can print different kinds of warning messages from your extension, as described below. Note that for these functions, @@ -29700,6 +30296,7 @@ for more information on creating arrays. @node Symbol Table Access @subsection Symbol Table Access +@cindex accessing global variables from extensions Two sets of routines provide access to global variables, and one set allows you to create and release cached values. @@ -29745,6 +30342,13 @@ An extension can look up the value of @command{gawk}'s special variables. However, with the exception of the @code{PROCINFO} array, an extension cannot change any of those variables. +@quotation NOTE +It is possible for the lookup of @code{PROCINFO} to fail. This happens if +the @command{awk} program being run does not reference @code{PROCINFO}; +in this case @command{gawk} doesn't bother to create the array and +populate it. +@end quotation + @node Symbol table by cookie @subsubsection Variable Access and Update by Cookie @@ -29871,7 +30475,7 @@ assign those values to variables using @code{sym_update()} or @code{sym_update_scalar()}, as you like. However, you can understand the point of cached values if you remember that -@emph{every} string value's storage @emph{must} come from @code{malloc()}. +@emph{every} string value's storage @emph{must} come from @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. If you have 20 variables, all of which have the same string value, you must create 20 identical copies of the string.@footnote{Numeric values are clearly less problematic, requiring only a C @code{double} to store.} @@ -29957,6 +30561,7 @@ you should release any cached values that you created, using @node Array Manipulation @subsection Array Manipulation +@cindex array manipulation in extensions The primary data structure@footnote{Okay, the only data structure.} in @command{awk} is the associative array (@pxref{Arrays}). @@ -30068,7 +30673,7 @@ requires that you understand how such values are converted to strings (@pxref{Conversion}); thus using integral values is safest. As with @emph{all} strings passed into @code{gawk} from an extension, -the string value of @code{index} must come from @code{malloc()}, and +the string value of @code{index} must come from the API-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()} and @command{gawk} releases the storage. @item awk_bool_t set_array_element(awk_array_t a_cookie, @@ -30536,6 +31141,8 @@ information about how @command{gawk} was invoked. @node Extension Versioning @subsubsection API Version Constants and Variables +@cindex API version +@cindex extension API version The API provides both a ``major'' and a ``minor'' version number. The API versions are available at compile time as constants: @@ -30589,6 +31196,8 @@ provided in @file{gawkapi.h} (discussed later, in @node Extension API Informational Variables @subsubsection Informational Variables +@cindex API informational variables +@cindex extension API informational variables The API provides access to several variables that describe whether the corresponding command-line options were enabled when @@ -30734,6 +31343,8 @@ the version string with @command{gawk}. @node Finding Extensions @section How @command{gawk} Finds Extensions +@cindex extension search path +@cindex finding extensions Compiled extensions have to be installed in a directory where @command{gawk} can find them. If @command{gawk} is configured and @@ -30744,6 +31355,7 @@ path with a list of directories to search for compiled extensions. @node Extension Example @section Example: Some File Functions +@cindex extension example @quotation @i{No matter where you go, there you are.} @@ -31202,7 +31814,7 @@ do_stat(int nargs, awk_value_t *result) awk_array_t array; int ret; struct stat sbuf; - /* default is stat() */ + /* default is lstat() */ int (*statfunc)(const char *path, struct stat *sbuf) = lstat; assert(result != NULL); @@ -31388,6 +32000,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk} @node Extension Samples @section The Sample Extensions In The @command{gawk} Distribution +@cindex extensions distributed with @command{gawk} This @value{SECTION} provides brief overviews of the sample extensions that come in the @command{gawk} distribution. Some of them are intended @@ -31430,7 +32043,7 @@ upon success or less than zero upon error. In the latter case it updates @code{ERRNO}. @cindex @code{stat()} extension function -@item result = stat("/some/path", statdata [, follow]) +@item result = stat("/some/path", statdata @r{[}, follow@r{]}) The @code{stat()} function provides a hook into the @code{stat()} system call. It returns zero upon success or less than zero upon error. @@ -31640,19 +32253,23 @@ See @file{test/fts.awk} in the @command{gawk} distribution for an example. @node Extension Sample Fnmatch @subsection Interface To @code{fnmatch()} -@cindex @code{fnmatch()} extension function This extension provides an interface to the C library @code{fnmatch()} function. The usage is: -@example -@@load "fnmatch" +@table @code +@item @@load "fnmatch" +This is how you load the extension. -result = fnmatch(pattern, string, flags) -@end example +@cindex @code{fnmatch()} extension function +@item result = fnmatch(pattern, string, flags) +The return value is zero on success, @code{FNM_NOMATCH} +if the string did not match the pattern, or +a different non-zero value if an error occurred. +@end table -The @code{fnmatch} extension adds a single function named -@code{fnmatch()}, one constant (@code{FNM_NOMATCH}), and an array of -flag values named @code{FNM}. +Besides the @code{fnmatch()} function, the @code{fnmatch} extension +adds one constant (@code{FNM_NOMATCH}), and an array of flag values +named @code{FNM}. The arguments to @code{fnmatch()} are: @@ -31668,10 +32285,6 @@ Either zero, or the bitwise OR of one or more of the flags in the @code{FNM} array. @end table -The return value is zero on success, @code{FNM_NOMATCH} -if the string did not match the pattern, or -a different non-zero value if an error occurred. - The flags are follows: @multitable @columnfractions .25 .75 @@ -31715,15 +32328,15 @@ This is how you load the extension. @cindex @code{fork()} extension function @item pid = fork() -This function creates a new process. The return value is the zero in the -child and the process-id number of the child in the parent, or @minus{}1 +This function creates a new process. The return value is zero in the +child and the process-ID number of the child in the parent, or @minus{}1 upon error. In the latter case, @code{ERRNO} indicates the problem. In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are updated to reflect the correct values. @cindex @code{waitpid()} extension function @item ret = waitpid(pid) -This function takes a numeric argument, which is the process-id to +This function takes a numeric argument, which is the process-ID to wait for. The return value is that of the @code{waitpid()} system call. @@ -31979,7 +32592,7 @@ ret = reada("arraydump.bin", array) @subsection Reading An Entire File The @code{readfile} extension adds a single function -named @code{readfile()}: +named @code{readfile()}, and an input parser: @table @code @item @@load "readfile" @@ -31990,6 +32603,12 @@ This is how you load the extension. The argument is the name of the file to read. The return value is a string containing the entire contents of the requested file. Upon error, the function returns the empty string and sets @code{ERRNO}. + +@item BEGIN @{ PROCINFO["readfile"] = 1 @} +In addition, the extension adds an input parser that is activated if +@code{PROCINFO["readfile"]} exists. +When activated, each input file is returned in its entirety as @code{$0}. +@code{RT} is set to the null string. @end table Here is an example: @@ -32048,6 +32667,8 @@ tries to use @code{nanosleep()} or @code{select()} to implement the delay. @node gawkextlib @section The @code{gawkextlib} Project +@cindex @code{gawkextlib} +@cindex extensions, where to find @cindex @code{gawkextlib} project The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}} @@ -32081,6 +32702,7 @@ The @code{time} extension described earlier (@pxref{Extension Sample Time}) was originally from this project but has been moved in to the main @command{gawk} distribution. +@cindex @command{git} utility You can check out the code for the @code{gawkextlib} project using the @uref{http://git-scm.com, GIT} distributed source code control system. The command is as follows: @@ -33347,7 +33969,7 @@ The @option{-i} and @option{--include} options load @command{awk} library files. @item -The @option{-l} and @option{--load} options for load compiled dynamic extensions. +The @option{-l} and @option{--load} options load compiled dynamic extensions. @item The @option{-M} and @option{--bignum} options enable MPFR. @@ -33368,7 +33990,7 @@ Support for high precision arithmetic with MPFR. @item The @code{and()}, @code{or()} and @code{xor()} functions -allow any number of arguments, +changed to allow any number of arguments, with a minimum of two (@pxref{Bitwise Functions}). @@ -33393,18 +34015,18 @@ the three most widely-used freely available versions of @command{awk} @multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk} @headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk @item @samp{\x} Escape sequence @tab X @tab X @tab X -@item @code{RS} as regexp @tab @tab X @tab X @item @code{FS} as null string @tab X @tab X @tab X @item @file{/dev/stdin} special file @tab X @tab X @tab X @item @file{/dev/stdout} special file @tab X @tab X @tab X @item @file{/dev/stderr} special file @tab X @tab X @tab X -@item @code{**} and @code{**=} operators @tab X @tab @tab X -@item @code{fflush()} function @tab X @tab X @tab X -@item @code{func} keyword @tab X @tab @tab X -@item @code{nextfile} statement @tab X @tab X @tab X @item @code{delete} without subscript @tab X @tab X @tab X +@item @code{fflush()} function @tab X @tab X @tab X @item @code{length()} of an array @tab X @tab X @tab X +@item @code{nextfile} statement @tab X @tab X @tab X +@item @code{**} and @code{**=} operators @tab X @tab @tab X +@item @code{func} keyword @tab X @tab @tab X @item @code{BINMODE} variable @tab @tab X @tab X +@item @code{RS} as regexp @tab @tab X @tab X @item Time related functions @tab @tab X @tab X @end multitable @@ -33435,7 +34057,7 @@ as working in this fashion, and in particular, would teach that the that @samp{[A-Z]} was the ``correct'' way to match uppercase letters. And indeed, this was true.@footnote{And Life was good.} -The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}). +The 1992 POSIX standard introduced the idea of locales (@pxref{Locales}). Since many locales include other letters besides the plain twenty-six letters of the American English alphabet, the POSIX standard added character classes (@pxref{Bracket Expressions}) as a way to match @@ -33474,6 +34096,7 @@ This output is unexpected, since the @samp{bc} at the end of This result is due to the locale setting (and thus you may not see it on your system). +@cindex Unicode Similar considerations apply to other ranges. For example, @samp{["-/]} is perfectly valid in ASCII, but is not valid in many Unicode locales, such as @samp{en_US.UTF-8}. @@ -33487,16 +34110,17 @@ vendors started implementing non-ASCII locales, @emph{and making them the default}. Perhaps the most frequently asked question became something like ``why does @samp{[A-Z]} match lowercase letters?!?'' +@cindex Berry, Karl This situation existed for close to 10 years, if not more, and the @command{gawk} maintainer grew weary of trying to explain that @command{gawk} was being nicely standards-compliant, and that the issue was in the user's locale. During the development of version 4.0, he modified @command{gawk} to always treat ranges in the original, pre-POSIX fashion, unless @option{--posix} was used (@pxref{Options}).@footnote{And -thus was born the Campain for Rational Range Interpretation (or RRI). A number -of GNU tools, such as @command{grep} and @command{sed}, have either -implemented this change, or will soon. Thanks to Karl Berry for coining the phrase -``Rational Range Interpretation.''} +thus was born the Campaign for Rational Range Interpretation (or +RRI). A number of GNU tools have either implemented this change, +or will soon. Thanks to Karl Berry for coining the phrase ``Rational +Range Interpretation.''} Fortunately, shortly before the final release of @command{gawk} 4.0, the maintainer learned that the 2008 standard had changed the @@ -33509,7 +34133,7 @@ and By using this lovely technical term, the standard gives license to implementors to implement ranges in whatever way they choose. The @command{gawk} maintainer chose to apply the pre-POSIX meaning in all -cases: the default regexp matching; with @option{--traditional}, and with +cases: the default regexp matching; with @option{--traditional} and with @option{--posix}; in all cases, @command{gawk} remains POSIX compliant. @node Contributors @@ -33709,6 +34333,11 @@ environments. Anders Wallin helped keep the VMS port going for several years. @item +@cindex Gordon, Assaf +Assaf Gordon contributed the code to implement the +@option{--sandbox} option. + +@item @cindex Haque, John John Haque made the following contributions: @@ -33752,6 +34381,11 @@ Arnold Robbins and Andrew Schorr, with notable contributions from the rest of the development team. @item +@cindex Colombo, Antonio +Antonio Giovanni Colombo rewrote a number of examples in the early +chapters that were severely dated, for which I am incredibly grateful. + +@item @cindex Robbins, Arnold Arnold Robbins has been working on @command{gawk} since 1988, at first @@ -34150,7 +34784,7 @@ please send in a bug report (@pxref{Bugs}). Of course, once you've built @command{gawk}, it is likely that you will wish to install it. To do so, you need to run the command @samp{make -check}, as a user with the appropriate permissions. How to do this +install}, as a user with the appropriate permissions. How to do this varies by system, but on many systems you can use the @command{sudo} command to do so. The command then becomes @samp{sudo make install}. It is likely that you will be asked for your password, and you will have @@ -34476,11 +35110,10 @@ multibyte functionality is not available. @c STARTOFRANGE pcgawon @cindex PC operating systems, @command{gawk} on -With the exception of the Cygwin environment, -the @samp{|&} operator and TCP/IP networking -(@pxref{TCP/IP Networking}) -are not supported for MS-DOS or MS-Windows. EMX (OS/2 only) does support -at least the @samp{|&} operator. +Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support +both the @samp{|&} operator and TCP/IP networking +(@pxref{TCP/IP Networking}). +EMX (OS/2 only) supports at least the @samp{|&} operator. @cindex search paths @cindex search paths, for source files @@ -34610,7 +35243,7 @@ moved into the @code{BEGIN} rule. @command{gawk} can be built and used ``out of the box'' under MS-Windows if you are using the @uref{http://www.cygwin.com, Cygwin environment}. -This environment provides an excellent simulation of Unix, using the +This environment provides an excellent simulation of GNU/Linux, using the GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and other GNU programs. Compilation and installation for Cygwin is the same as for a Unix system: @@ -34626,13 +35259,6 @@ When compared to GNU/Linux on the same system, the @samp{configure} step on Cygwin takes considerably longer. However, it does finish, and then the @samp{make} proceeds as usual. -@quotation NOTE -The @samp{|&} operator and TCP/IP networking -(@pxref{TCP/IP Networking}) -are fully supported in the Cygwin environment. This is not true -for any other environment on MS-Windows. -@end quotation - @node MSYS @appendixsubsubsec Using @command{gawk} In The MSYS Environment @@ -34700,21 +35326,14 @@ can better handle @code{ODS-5} volumes with upper- and lowercase filenames. With @code{ODS-5} volumes and extended parsing enabled, the case of the target parameter may need to be exact. -Older versions of @command{gawk} could be built with VAX C or -GNU C on VAX/VMS, as well as with DEC C, but that is no longer -supported. DEC C (also briefly known as ``Compaq C'' and now known -as ``HP C,'' but referred to here as ``DEC C'') is required. Both -@code{vmsbuild.com} and @code{descrip.mms} contain some obsolete support -for the older compilers but are set up to use DEC C by default. - @command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -Work is currently being done for a procedure to build @command{gawk} and create -a PCSI kit for compatible with the GNV product. +The @file{[.vms]gawk_build_steps.txt} provides information on how to build +@command{gawk} into a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS @@ -34811,7 +35430,7 @@ add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. -Optionally, @file{gawk.hlp} entry can be loaded into a VMS help library: +Optionally, the @file{gawk.hlp} entry can be loaded into a VMS help library: @example $ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp} @@ -35066,22 +35685,23 @@ file should be considered authoritative if it conflicts with this The people maintaining the non-Unix ports of @command{gawk} are as follows: -@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} +@c put the index entries outside the table, for docbook @cindex Deifik, Scott +@cindex Zaretskii, Eli +@cindex Buening, Andreas +@cindex Rankin, Pat +@cindex Malmberg, John +@cindex Pitts, Dave +@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. -@cindex Zaretskii, Eli @item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. -@cindex Buening, Andreas @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. -@cindex Rankin, Pat -@cindex Malmberg, John @item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}. -@cindex Pitts, Dave @item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. @end multitable @@ -35116,7 +35736,7 @@ This @value{SECTION} briefly describes where to get them: @cindex Kernighan, Brian @cindex source code, Brian Kernighan's @command{awk} @cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk} -@cindex Brian Kernighan's @command{awk} +@cindex Brian Kernighan's @command{awk}, source code @item Unix @command{awk} Brian Kernighan, one of the original designers of Unix @command{awk}, has made his implementation of @@ -35136,6 +35756,7 @@ It is available in several archive formats: @uref{http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip} @end table +@cindex @command{git} utility You can also retrieve it from Git Hub: @example @@ -35155,7 +35776,7 @@ from GCC (the GNU Compiler Collection) works quite nicely. for a list of extensions in this @command{awk} that are not in POSIX @command{awk}. @cindex Brennan, Michael -@cindex @command{mawk} program +@cindex @command{mawk} utility @cindex source code, @command{mawk} @item @command{mawk} Michael Brennan wrote an independent implementation of @command{awk}, @@ -35201,7 +35822,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}. The project seems to be frozen; no new code changes have been made since approximately 2003. -@cindex Beebe, Nelson +@cindex Beebe, Nelson H.F.@: @cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @cindex source code, @command{pawk} @item @command{pawk} @@ -35264,6 +35885,7 @@ This is an embeddable @command{awk} interpreter derived from @uref{http://repo.hu/projects/libmawk/}. @item @code{pawk} +@cindex source code, @command{pawk} (Python version) @cindex @code{pawk}, @command{awk}-like facilities for Python This is a Python module that claims to bring @command{awk}-like features to Python. See @uref{https://github.com/alecthomas/pawk} @@ -35369,6 +35991,7 @@ As @command{gawk} is Free Software, the source code is always available. @ref{Gawk Distribution}, describes how to get and build the formal, released versions of @command{gawk}. +@cindex @command{git} utility However, if you want to modify @command{gawk} and contribute back your changes, you will probably wish to work with the development version. To do so, you will need to access the @command{gawk} source code @@ -35544,6 +36167,7 @@ If possible, please update the @command{man} page as well. You will also have to sign paperwork for your documentation changes. +@cindex @command{git} utility @item Submit changes as unified diffs. Use @samp{diff -u -r -N} to compare @@ -35677,6 +36301,8 @@ coding style and brace layout that suits your taste. @node Derived Files @appendixsubsec Why Generated Files Are Kept In @command{git} +@c STARTOFRANGE gawkgit +@cindex @command{git}, use of for @command{gawk} source code @c From emails written March 22, 2012, to the gawk developers list. If you look at the @command{gawk} source in the @command{git} @@ -35856,7 +36482,7 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta @noindent to retrieve a snapshot of the given branch. - +@c ENDOFRANGE gawkgit @node Future Extensions @appendixsec Probable Future Extensions @@ -36227,8 +36853,15 @@ other introductory texts that you should refer to instead.) @cindex processing data At the most basic level, the job of a program is to process -some input data and produce results. See @ref{figure-general-flow}. +some input data and produce results. +@ifnotdocbook +See @ref{figure-general-flow}. +@end ifnotdocbook +@ifdocbook +See @inlineraw{docbook, <xref linkend="figure-general-flow"/>}. +@end ifdocbook +@ifnotdocbook @float Figure,figure-general-flow @caption{General Program Flow} @ifinfo @@ -36238,6 +36871,14 @@ some input data and produce results. See @ref{figure-general-flow}. @center @image{general-program, , , General program flow} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="figure-general-flow"> +<title>General Program Flow</title> +<graphic fileref="general-program.eps"/> +</figure> +@end docbook @cindex compiled programs @cindex interpreted programs @@ -36253,9 +36894,15 @@ instructions in your program to process the data. @cindex programming, basic steps When you write a program, it usually consists -of the following, very basic set of steps, as shown -in @ref{figure-process-flow}: +of the following, very basic set of steps, +@ifnotdocbook +as shown in @ref{figure-process-flow}: +@end ifnotdocbook +@ifdocbook +as shown in @inlineraw{docbook <xref linkend="figure-process-flow"/>}: +@end ifdocbook +@ifnotdocbook @float Figure,figure-process-flow @caption{Basic Program Steps} @ifinfo @@ -36265,6 +36912,14 @@ in @ref{figure-process-flow}: @center @image{process-flow, , , Basic Program Stages} @end ifnotinfo @end float +@end ifnotdocbook + +@docbook +<figure id="figure-process-flow"> +<title>Basic Program Stages</title> +<graphic fileref="process-flow.eps"/> +</figure> +@end docbook @table @asis @item Initialization @@ -36435,7 +37090,7 @@ better written in another language. You can get it from @uref{http://awk.info/?awk100/aaa}. @cindex Ada programming language -@cindex Programming languages, Ada +@cindex programming languages, Ada @item Ada A programming language originally defined by the U.S.@: Department of Defense for embedded programming. It was designed to enforce good @@ -36503,9 +37158,6 @@ The GNU version of the standard shell @end ifinfo See also ``Bourne Shell.'' -@item BBS -See ``Bulletin Board System.'' - @item Bit Short for ``Binary Digit.'' All values in computer memory ultimately reduce to binary digits: values @@ -36580,11 +37232,6 @@ Changing some of them affects @command{awk}'s running environment. @item Braces See ``Curly Braces.'' -@item Bulletin Board System -A computer system allowing users to log in and read and/or leave messages -for other users of the system, much like leaving paper notes on a bulletin -board. - @item C The system programming language that most GNU software is written in. The @command{awk} programming language has C-like syntax, and this @value{DOCUMENT} @@ -36611,6 +37258,8 @@ The @uref{http://www.unicode.org, Unicode character set} is becoming increasingly popular and standard, and is particularly widely used on GNU/Linux systems. +@cindex Kernighan, Brian +@cindex Bentley, Jon @cindex @command{chem} utility @item CHEM A preprocessor for @command{pic} that reads descriptions of molecules @@ -36747,7 +37396,7 @@ ordinary expression. It could be a string constant, such as (@xref{Computed Regexps}.) @item Environment -A collection of strings, of the form @var{name@code{=}val}, that each +A collection of strings, of the form @var{name}@code{=}@code{val}, that each program has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables @env{HOME} and @env{PATH}. @@ -36916,7 +37565,7 @@ information about the name of the organization and its language-independent three-letter acronym. @cindex Java programming language -@cindex Programming languages, Java +@cindex programming languages, Java @item Java A modern programming language originally developed by Sun Microsystems (now Oracle) supporting Object-Oriented programming. Although usually @@ -37203,7 +37852,12 @@ record or a string. @c The GNU General Public License. @node Copying @unnumbered GNU General Public License +@ifnotdocbook @center Version 3, 29 June 2007 +@end ifnotdocbook +@docbook +<subtitle>Version 3, 29 June 2007</subtitle> +@end docbook @c This file is intended to be included within another document, @c hence no sectioning command or @node. @@ -37928,10 +38582,17 @@ first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. @c The GNU Free Documentation License. @node GNU Free Documentation License @unnumbered GNU Free Documentation License +@ifnotdocbook +@center Version 1.3, 3 November 2008 +@end ifnotdocbook + +@docbook +<subtitle>Version 1.3, 3 November 2008</subtitle> +@end docbook + @cindex FDL (Free Documentation License) @cindex Free Documentation License (FDL) @cindex GNU Free Documentation License -@center Version 1.3, 3 November 2008 @c This file is intended to be included within another document, @c hence no sectioning command or @node. @@ -38436,8 +39097,10 @@ to permit their use in free software. @c ispell-local-pdict: "ispell-dict" @c End: +@ifnotdocbook @node Index @unnumbered Index +@end ifnotdocbook @printindex cp @bye @@ -38548,8 +39211,6 @@ Suggestions: % Next edition: % 1. Standardize the error messages from the functions and programs % in the two sample code chapters. -% 2. Nuke the BBS stuff and use something that won't be obsolete -% 3. Turn the advanced notes into sidebars by using @cartouche Better sidebars can almost sort of be done with: @@ -38581,4 +39242,3 @@ But to use it you have to say } which sorta sucks. - diff --git a/doc/texinfo.tex b/doc/texinfo.tex index b51ac3dc..7506dffb 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2014-02-09.15} +\def\texinfoversion{2014-03-18.17} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -3935,19 +3935,23 @@ end } % multitable-only commands. -% -% @headitem starts a heading row, which we typeset in bold. -% Assignments have to be global since we are inside the implicit group -% of an alignment entry. \everycr resets \everytab so we don't have to +% +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % +% default for tables with no headings. +\let\headitemcrhook=\relax +% % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. @@ -3978,15 +3982,15 @@ end % \everycr = {% \noalign{% - \global\everytab={}% + \global\everytab={}% Reset from possible headitem. \global\colcount=0 % Reset the column counter. - % Check for saved footnotes, etc. + % + % Check for saved footnotes, etc.: \checkinserts - % Keeps underfull box messages off when table breaks over pages. - %\filbreak - % Maybe so, but it also creates really weird page breaks when the - % table breaks over pages. Wouldn't \vfil be better? Wait until the - % problem manifests itself, so it can be fixed for real --karl. + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax }% }% % @@ -4428,7 +4432,7 @@ end % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we - % should define @lbrace and @rbrace commands a la @comma. + % should use @lbracechar and @rbracechar? \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % @@ -4449,8 +4453,7 @@ end % @end macro % ... % @funindex commtest - % - % The above is not enough to reproduce the bug, but it gives the flavor. + % This is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} @@ -4663,6 +4666,9 @@ end \let\xeatspaces = \eatspaces } +% For testing: output @{ and @} in index sort strings as \{ and \}. +\newif\ifusebracesinindexes + % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string @@ -4691,11 +4697,16 @@ end % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. - \def\{{|a}% - \def\lbracechar{|a}% + \ifusebracesinindexes + \def\lbracechar{\lbracecmd}% + \def\rbracechar{\rbracecmd}% + \else + \def\lbracechar{|a}% + \def\rbracechar{|b}% + \fi + \let\{=\lbracechar + \let\}=\rbracechar % - \def\}{|b}% - \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% @@ -221,11 +221,11 @@ make_builtin(const awk_ext_func_t *funcinfo) fatal(_("make_builtin: missing function name")); if (! is_letter(*sp)) - return false; + return awk_false; for (sp++; (c = *sp++) != '\0';) { if (! is_identifier_char(c)) - return false; + return awk_false; } f = lookup(name); @@ -238,7 +238,7 @@ make_builtin(const awk_ext_func_t *funcinfo) /* multiple extension() calls etc. */ if (do_lint) lintwarn(_("make_builtin: function `%s' already defined"), name); - return false; + return awk_false; } else /* variable name etc. */ fatal(_("make_builtin: function name `%s' previously defined"), name); @@ -258,7 +258,7 @@ make_builtin(const awk_ext_func_t *funcinfo) symbol = install_symbol(estrdup(name, strlen(name)), Node_ext_func); symbol->code_ptr = b; track_ext_func(name); - return true; + return awk_true; } /* make_old_builtin --- register name to be called as func with a builtin body */ diff --git a/extension/ChangeLog b/extension/ChangeLog index ef5c725f..869c30a5 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,58 @@ +2014-04-11 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (install-data-hook): Use $(DESTDIR) when removing + the .la files. Thanks to Lars Wendler <polynomial-c@gentoo.org> + for the report and fix. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Bump version before release. + +2014-04-04 Arnold D. Robbins <arnold@skeeve.com> + + * time.c: Include <time.h> unconditionally to get declaration + of nanosleep on Linux. Avoids a warning. Thanks to Michal + Jaegermann. + +2014-03-31 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Remove -Wextra to avoid killing compilations + on older versions of gcc. Thanks to Antonio Diaz Diaz for + the report. + +2014-03-28 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Add AC_HEADER_TIME and AC_HEADER_DIRENT, and + rearrange order of macros some. May help on older systems. + +2014-03-27 Arnold D. Robbins <arnold@skeeve.com> + + * readfile.c: Add an input parser that works off of + PROCINFO["readfile"]. + * readfile.3am: Document same. + +2014-03-23 Arnold D. Robbins <arnold@skeeve.com> + + * gawkfts.c (MAXPATHLEN): Add a default definition. Thanks to + Antonio Diaz Dian and Nelson H.F. Beebe. + * readdir.c (PATH_MAX): Add a default definition. Thanks to + Nelson H.F. Beebe. + +2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * filefuncs.c (read_symlink, do_fts): Replace free with gawk_free. + * inplace.c (at_exit, do_inplace_end): Ditto. + * readdir.c (dir_close): Ditto. + * readfile.c (do_readfile): Ditto. + * revtwoway.c (close_two_proc_data): Ditto. + * rwarray.c (read_elem): Replace realloc with gawk_realloc. + (read_value): Replace malloc and free with gawk_malloc and gawk_free. + * testext.c (try_modify_environ): Replace free with gawk_free. + 2014-02-12 John E. Malmberg <wb8tyw@qsl.net> * time.c: Better hack for nanosleep bug based on feedback from HP. diff --git a/extension/Makefile.am b/extension/Makefile.am index 9c49bb81..11826e2b 100644 --- a/extension/Makefile.am +++ b/extension/Makefile.am @@ -100,7 +100,7 @@ testext_la_LIBADD = $(MY_LIBS) install-data-hook: for i in $(pkgextension_LTLIBRARIES) ; do \ - $(RM) $(pkgextensiondir)/$$i ; \ + $(RM) $(DESTDIR)$(pkgextensiondir)/$$i ; \ done # Keep the uninstall check working: diff --git a/extension/Makefile.in b/extension/Makefile.in index 040cdb8f..d81b1696 100644 --- a/extension/Makefile.in +++ b/extension/Makefile.in @@ -1231,7 +1231,7 @@ uninstall-man: uninstall-man3 install-data-hook: for i in $(pkgextension_LTLIBRARIES) ; do \ - $(RM) $(pkgextensiondir)/$$i ; \ + $(RM) $(DESTDIR)$(pkgextensiondir)/$$i ; \ done # Keep the uninstall check working: diff --git a/extension/build-aux/ChangeLog b/extension/build-aux/ChangeLog index b578de8b..697db607 100644 --- a/extension/build-aux/ChangeLog +++ b/extension/build-aux/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2014-01-03 Arnold D. Robbins <arnold@skeeve.com> * config.guess, config.rpath, config.sub, depcomp, diff --git a/extension/configh.in b/extension/configh.in index 8add211a..5842f2f4 100644 --- a/extension/configh.in +++ b/extension/configh.in @@ -30,7 +30,8 @@ */ #undef HAVE_DECL_DIRFD -/* Define to 1 if you have the <dirent.h> header file. */ +/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. + */ #undef HAVE_DIRENT_H /* Define to 1 if you have the `dirfd' function. */ @@ -75,6 +76,9 @@ /* Define to 1 if you have the `nanosleep' function. */ #undef HAVE_NANOSLEEP +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT @@ -93,6 +97,14 @@ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLKSIZE +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + /* Define to 1 if you have the <sys/param.h> header file. */ #undef HAVE_SYS_PARAM_H @@ -108,9 +120,6 @@ /* Define to 1 if you have the <sys/types.h> header file. */ #undef HAVE_SYS_TYPES_H -/* Define to 1 if you have the <time.h> header file. */ -#undef HAVE_TIME_H - /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H @@ -149,6 +158,9 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#undef TIME_WITH_SYS_TIME + /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE diff --git a/extension/configure b/extension/configure index 025e2723..2105648d 100755 --- a/extension/configure +++ b/extension/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.0. +# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.1. # # Report bugs to <bug-gawk@gnu.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Awk Bundled Extensions' PACKAGE_TARNAME='gawk-extensions' -PACKAGE_VERSION='4.1.0' -PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.0' +PACKAGE_VERSION='4.1.1' +PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.1' PACKAGE_BUGREPORT='bug-gawk@gnu.org' PACKAGE_URL='http://www.gnu.org/software/gawk-extensions/' @@ -1333,7 +1333,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 GNU Awk Bundled Extensions 4.1.0 to adapt to many kinds of systems. +\`configure' configures GNU Awk Bundled Extensions 4.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1403,7 +1403,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.0:";; + short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.1:";; esac cat <<\_ACEOF @@ -1518,7 +1518,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk Bundled Extensions configure 4.1.0 +GNU Awk Bundled Extensions configure 4.1.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1990,7 +1990,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Awk Bundled Extensions $as_me 4.1.0, which was +It was created by GNU Awk Bundled Extensions $as_me 4.1.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4172,7 +4172,7 @@ fi # Define the identity of the package. PACKAGE='gawk-extensions' - VERSION='4.1.0' + VERSION='4.1.1' cat >>confdefs.h <<_ACEOF @@ -14034,7 +14034,7 @@ pkgextensiondir='${libdir}/gawk' if test "$GCC" = yes then - CFLAGS="$CFLAGS -Wall -Wextra" + CFLAGS="$CFLAGS -Wall" # Don't add -Wextra, hurts older gcc fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5 @@ -14052,6 +14052,177 @@ else $as_echo "no" >&6; } fi +for ac_header in fnmatch.h limits.h sys/time.h sys/select.h sys/param.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if eval \${$as_ac_Header+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" +else + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 $as_echo_n "checking whether sys/types.h defines makedev... " >&6; } if ${ac_cv_header_sys_types_h_makedev+:} false; then : @@ -14102,18 +14273,40 @@ fi fi fi -for ac_header in dirent.h fnmatch.h limits.h time.h sys/time.h sys/select.h sys/param.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then -done +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi for ac_func in fdopendir fnmatch gettimeofday \ @@ -14824,7 +15017,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk Bundled Extensions $as_me 4.1.0, which was +This file was extended by GNU Awk Bundled Extensions $as_me 4.1.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14892,7 +15085,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -GNU Awk Bundled Extensions config.status 4.1.0 +GNU Awk Bundled Extensions config.status 4.1.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/extension/configure.ac b/extension/configure.ac index 412fec09..1f876a0e 100644 --- a/extension/configure.ac +++ b/extension/configure.ac @@ -1,7 +1,7 @@ dnl dnl configure.ac --- autoconf input file for gawk dnl -dnl Copyright (C) 2012, 2013 the Free Software Foundation, Inc. +dnl Copyright (C) 2012-2014 the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Programming Language. @@ -23,7 +23,7 @@ dnl dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk Bundled Extensions], 4.1.0, bug-gawk@gnu.org, gawk-extensions) +AC_INIT([GNU Awk Bundled Extensions], 4.1.1, bug-gawk@gnu.org, gawk-extensions) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) @@ -51,7 +51,7 @@ AC_SUBST([pkgextensiondir], ['${libdir}/gawk']) if test "$GCC" = yes then - CFLAGS="$CFLAGS -Wall -Wextra" + CFLAGS="$CFLAGS -Wall" # Don't add -Wextra, hurts older gcc fi AC_MSG_CHECKING([for special development options]) @@ -66,8 +66,10 @@ else AC_MSG_RESULT([no]) fi +AC_CHECK_HEADERS(fnmatch.h limits.h sys/time.h sys/select.h sys/param.h) +AC_HEADER_DIRENT AC_HEADER_MAJOR -AC_CHECK_HEADERS(dirent.h fnmatch.h limits.h time.h sys/time.h sys/select.h sys/param.h) +AC_HEADER_TIME AC_CHECK_FUNCS(fdopendir fnmatch gettimeofday \ getdtablesize nanosleep select GetSystemTimeAsFileTime) diff --git a/extension/filefuncs.c b/extension/filefuncs.c index 3eb2a6b5..d5249a4e 100644 --- a/extension/filefuncs.c +++ b/extension/filefuncs.c @@ -9,7 +9,7 @@ */ /* - * Copyright (C) 2001, 2004, 2005, 2010, 2011, 2012, 2013 + * Copyright (C) 2001, 2004, 2005, 2010, 2011, 2012, 2013, 2014 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -284,7 +284,7 @@ read_symlink(const char *fname, size_t bufsize, ssize_t *linksize) returns -1 with errno == ERANGE if the buffer is too small. */ if (errno != ERANGE) { - free(buf); + gawk_free(buf); return NULL; } } @@ -293,7 +293,7 @@ read_symlink(const char *fname, size_t bufsize, ssize_t *linksize) buf[*linksize] = '\0'; return buf; } - free(buf); + gawk_free(buf); if (bufsize <= MAXSIZE/2) bufsize *= 2; else if (bufsize < MAXSIZE) @@ -854,7 +854,7 @@ do_fts(int nargs, awk_value_t *result) out: if (pathvector != NULL) - free(pathvector); + gawk_free(pathvector); if (path_array != NULL) (void) release_flattened_array(pathlist.array_cookie, path_array); diff --git a/extension/gawkfts.c b/extension/gawkfts.c index 25a4c108..4a712153 100644 --- a/extension/gawkfts.c +++ b/extension/gawkfts.c @@ -139,6 +139,10 @@ static int fts_safe_changedir(const FTS *, const FTSENT *, int, #define _DIAGASSERT(expression) +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 /* a guess */ +#endif + FTS * fts_open(char * const *argv, int options, int (*compar)(const FTSENT **, const FTSENT **)) diff --git a/extension/inplace.c b/extension/inplace.c index 91b1a229..e2f8b73f 100644 --- a/extension/inplace.c +++ b/extension/inplace.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2013 the Free Software Foundation, Inc. + * Copyright (C) 2013, 2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -96,7 +96,7 @@ at_exit(void *data, int exit_status) (void) exit_status; /* silence warnings */ if (state.tname) { unlink(state.tname); - free(state.tname); + gawk_free(state.tname); state.tname = NULL; } } @@ -242,7 +242,7 @@ do_inplace_end(int nargs, awk_value_t *result) if (link(filename.str_value.str, bakname) < 0) fatal(ext_id, _("inplace_end: link(`%s', `%s') failed (%s)"), filename.str_value.str, bakname, strerror(errno)); - free(bakname); + gawk_free(bakname); } #ifdef __MINGW32__ @@ -252,7 +252,7 @@ do_inplace_end(int nargs, awk_value_t *result) if (rename(state.tname, filename.str_value.str) < 0) fatal(ext_id, _("inplace_end: rename(`%s', `%s') failed (%s)"), state.tname, filename.str_value.str, strerror(errno)); - free(state.tname); + gawk_free(state.tname); state.tname = NULL; return make_number(0, result); } diff --git a/extension/m4/ChangeLog b/extension/m4/ChangeLog index 821ef9ed..349bbcc8 100644 --- a/extension/m4/ChangeLog +++ b/extension/m4/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2013-12-21 Arnold D. Robbins <arnold@skeeve.com> * libtool.m4, ltoptions.m4, ltversion.m4: Update to diff --git a/extension/readdir.c b/extension/readdir.c index 91296801..7bcabcb0 100644 --- a/extension/readdir.c +++ b/extension/readdir.c @@ -10,7 +10,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -67,6 +67,10 @@ #define _(msgid) gettext(msgid) #define N_(msgid) msgid +#ifndef PATH_MAX +#define PATH_MAX 1024 /* a good guess */ +#endif + static const gawk_api_t *api; /* for convenience macros to work */ static awk_ext_id_t *ext_id; static const char *ext_version = "readdir extension: version 1.0"; @@ -235,8 +239,8 @@ dir_close(awk_input_buf_t *iobuf) the_dir = (open_directory_t *) iobuf->opaque; closedir(the_dir->dp); - free(the_dir->buf); - free(the_dir); + gawk_free(the_dir->buf); + gawk_free(the_dir); iobuf->fd = -1; } diff --git a/extension/readfile.3am b/extension/readfile.3am index 688d9cd5..0cb2eb5b 100644 --- a/extension/readfile.3am +++ b/extension/readfile.3am @@ -1,4 +1,4 @@ -.TH READFILE 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules" +.TH READFILE 3am "Mar 24 2013" "Free Software Foundation" "GNU Awk Extension Modules" .SH NAME readfile \- return the entire contents of a file as a string .SH SYNOPSIS @@ -6,6 +6,14 @@ readfile \- return the entire contents of a file as a string @load "readfile" .sp result = readfile("/some/path") +.sp +.ft R +For making whole files be single records: +.sp +.ft CW +@load "readfile" +.br +BEGIN { PROCINFO["readfile"] = 1 } .ft R .SH DESCRIPTION The @@ -18,6 +26,14 @@ the requested file. .PP Upon error, the function returns the empty string and sets .BR ERRNO . +.PP +In addition, it adds an input parser that is activated if +.ft CW +PROCINFO["readfile"] +.ft R +exists. +When activated, each input file is returned in its entirety as \f(CW$0\fR. +\f(CWRT\fP is set to the null string. ... .SH NOTES ... .SH BUGS .SH EXAMPLE @@ -47,7 +63,7 @@ if (contents == "" && ERRNO != "") { Arnold Robbins, .BR arnold@skeeve.com . .SH COPYING PERMISSIONS -Copyright \(co 2012, 2013, +Copyright \(co 2012, 2013, 2014, Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of diff --git a/extension/readfile.c b/extension/readfile.c index 06889c3d..d4b4aef9 100644 --- a/extension/readfile.c +++ b/extension/readfile.c @@ -8,10 +8,11 @@ * Revised for new dynamic function facilities * Mon Jun 14 14:53:07 IDT 2004 * Revised for formal API May 2012 + * Added input parser March 2014 */ /* - * Copyright (C) 2002, 2003, 2004, 2011, 2012, 2013 + * Copyright (C) 2002, 2003, 2004, 2011, 2012, 2013, 2014 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -61,11 +62,39 @@ static const gawk_api_t *api; /* for convenience macros to work */ static awk_ext_id_t *ext_id; -static const char *ext_version = "readfile extension: version 1.0"; -static awk_bool_t (*init_func)(void) = NULL; +static const char *ext_version = "readfile extension: version 2.0"; +static awk_bool_t init_readfile(); +static awk_bool_t (*init_func)(void) = init_readfile; int plugin_is_GPL_compatible; +/* read_file_to_buffer --- handle the mechanics of reading the file */ + +static char * +read_file_to_buffer(int fd, const struct stat *sbuf) +{ + char *text = NULL; + int ret; + + if ((sbuf->st_mode & S_IFMT) != S_IFREG) { + errno = EINVAL; + update_ERRNO_int(errno); + goto done; + } + + emalloc(text, char *, sbuf->st_size + 2, "do_readfile"); + memset(text, '\0', sbuf->st_size + 2); + + if ((ret = read(fd, text, sbuf->st_size)) != sbuf->st_size) { + update_ERRNO_int(errno); + gawk_free(text); + text = NULL; + /* fall through to return */ + } +done: + return text; +} + /* do_readfile --- read a file into memory */ static awk_value_t * @@ -90,10 +119,6 @@ do_readfile(int nargs, awk_value_t *result) if (ret < 0) { update_ERRNO_int(errno); goto done; - } else if ((sbuf.st_mode & S_IFMT) != S_IFREG) { - errno = EINVAL; - update_ERRNO_int(errno); - goto done; } if ((fd = open(filename.str_value.str, O_RDONLY|O_BINARY)) < 0) { @@ -101,15 +126,9 @@ do_readfile(int nargs, awk_value_t *result) goto done; } - emalloc(text, char *, sbuf.st_size + 2, "do_readfile"); - memset(text, '\0', sbuf.st_size + 2); - - if ((ret = read(fd, text, sbuf.st_size)) != sbuf.st_size) { - (void) close(fd); - update_ERRNO_int(errno); - free(text); - goto done; - } + text = read_file_to_buffer(fd, & sbuf); + if (text == NULL) + goto done; /* ERRNO already updated */ close(fd); make_malloced_string(text, sbuf.st_size, result); @@ -117,12 +136,110 @@ do_readfile(int nargs, awk_value_t *result) } else if (do_lint) lintwarn(ext_id, _("readfile: called with no arguments")); - done: /* Set the return value */ return result; } +/* readfile_get_record --- read the whole file as one record */ + +static int +readfile_get_record(char **out, awk_input_buf_t *iobuf, int *errcode, + char **rt_start, size_t *rt_len) +{ + char *text; + + /* + * The caller sets *errcode to 0, so we should set it only if an + * error occurs. + */ + + if (out == NULL || iobuf == NULL) + return EOF; + + if (iobuf->opaque != NULL) { + /* + * Already read the whole file, + * free up stuff and return EOF + */ + gawk_free(iobuf->opaque); + iobuf->opaque = NULL; + return EOF; + } + + /* read file */ + text = read_file_to_buffer(iobuf->fd, & iobuf->sbuf); + if (text == NULL) + return EOF; + + /* set up the iobuf for next time */ + iobuf->opaque = text; + + /* set return values */ + *rt_start = NULL; + *rt_len = 0; + *out = text; + + /* return count */ + return iobuf->sbuf.st_size; +} + +/* readfile_can_take_file --- return true if we want the file */ + +static awk_bool_t +readfile_can_take_file(const awk_input_buf_t *iobuf) +{ + awk_value_t array, index, value; + + if (iobuf == NULL) + return awk_false; + + /* + * This could fail if PROCINFO isn't referenced from + * the awk program. It's not a "can't happen" error. + */ + if (! sym_lookup("PROCINFO", AWK_ARRAY, & array)) { + return awk_false; + } + + (void) make_const_string("readfile", 8, & index); + + if (! get_array_element(array.array_cookie, & index, AWK_UNDEFINED, & value)) { + return awk_false; + } + + return awk_true; +} + +/* readfile_take_control_of --- take over the file */ + +static awk_bool_t +readfile_take_control_of(awk_input_buf_t *iobuf) +{ + if (iobuf == NULL) + return awk_false; + + iobuf->get_record = readfile_get_record; + return awk_true; +} + +static awk_input_parser_t readfile_parser = { + "readfile", + readfile_can_take_file, + readfile_take_control_of, + NULL +}; + +/* init_readfile --- set things up */ + +static awk_bool_t +init_readfile() +{ + register_input_parser(& readfile_parser); + + return awk_true; +} + static awk_ext_func_t func_table[] = { { "readfile", do_readfile, 1 }, }; diff --git a/extension/revtwoway.c b/extension/revtwoway.c index 5f490825..c0d9381a 100644 --- a/extension/revtwoway.c +++ b/extension/revtwoway.c @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -119,8 +119,8 @@ close_two_proc_data(two_way_proc_data_t *proc_data) return; } - free(proc_data->data); - free(proc_data); + gawk_free(proc_data->data); + gawk_free(proc_data); } /* diff --git a/extension/rwarray.c b/extension/rwarray.c index 6185000b..aa05a0d5 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2009, 2010, 2011, 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2009-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -408,7 +408,7 @@ read_elem(FILE *fp, awk_element_t *element) buflen = index_len; } else if (buflen < index_len) { /* reallocate buffer */ - char *cp = realloc(buffer, index_len); + char *cp = gawk_realloc(buffer, index_len); if (cp == NULL) return awk_false; @@ -468,11 +468,11 @@ read_value(FILE *fp, awk_value_t *value) len = ntohl(len); value->val_type = AWK_STRING; value->str_value.len = len; - value->str_value.str = malloc(len + 2); + value->str_value.str = gawk_malloc(len + 2); memset(value->str_value.str, '\0', len + 2); if (fread(value->str_value.str, 1, len, fp) != (ssize_t) len) { - free(value->str_value.str); + gawk_free(value->str_value.str); return awk_false; } } diff --git a/extension/testext.c b/extension/testext.c index d11272b8..2dda339f 100644 --- a/extension/testext.c +++ b/extension/testext.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 + * Copyright (C) 2012, 2013, 2014 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -237,8 +237,8 @@ try_modify_environ(int nargs, awk_value_t *result) printf("try_modify_environ: set_array_element of ENVIRON passed\n"); } else { printf("try_modify_environ: set_array_element of ENVIRON failed\n"); - free(index.str_value.str); - free(value.str_value.str); + gawk_free(index.str_value.str); + gawk_free(value.str_value.str); } if (! flatten_array(environ_array, & flat_array)) { diff --git a/extension/time.c b/extension/time.c index c336df88..e6b2b39f 100644 --- a/extension/time.c +++ b/extension/time.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 + * Copyright (C) 2012, 2013, 2014 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -85,15 +85,13 @@ static awk_bool_t (*init_func)(void) = NULL; int plugin_is_GPL_compatible; +#include <time.h> #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) #include <sys/time.h> #endif #if defined(HAVE_SELECT) && defined(HAVE_SYS_SELECT_H) #include <sys/select.h> #endif -#if defined(HAVE_NANOSLEEP) && defined(HAVE_TIME_H) -#include <time.h> -#endif #if defined(HAVE_GETSYSTEMTIMEASFILETIME) #define WIN32_LEAN_AND_MEAN #include <windows.h> @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -43,7 +43,7 @@ api_get_argument(awk_ext_id_t id, size_t count, NODE *arg; if (result == NULL) - return false; + return awk_false; (void) id; @@ -59,7 +59,7 @@ api_get_argument(awk_ext_id_t id, size_t count, */ arg = get_argument(count); if (arg == NULL) - return false; + return awk_false; /* if type is undefined */ if (arg->type == Node_var_new) { @@ -84,7 +84,7 @@ array: /* get the array here */ arg = get_array_argument(count, false); if (arg == NULL) - return false; + return awk_false; return node_to_awk_value(arg, result, wanted); @@ -92,11 +92,11 @@ scalar: /* at this point we have a real type that is not an array */ arg = get_scalar_argument(count, false); if (arg == NULL) - return false; + return awk_false; return node_to_awk_value(arg, result, wanted); #else - return false; + return awk_false; #endif } @@ -114,23 +114,23 @@ api_set_argument(awk_ext_id_t id, (void) id; if (array == NULL || array->type != Node_var_array) - return false; + return awk_false; if ( (arg = get_argument(count)) == NULL || arg->type != Node_var_new) - return false; + return awk_false; arg = get_array_argument(count, false); if (arg == NULL) - return false; + return awk_false; array->vname = arg->vname; *arg = *array; freenode(array); - return true; + return awk_true; #else - return false; + return awk_false; #endif } @@ -314,12 +314,12 @@ api_add_ext_func(awk_ext_id_t id, (void) namespace; if (func == NULL) - return false; + return awk_false; #ifdef DYNAMIC return make_builtin(func); #else - return false; + return awk_false; #endif } @@ -378,7 +378,7 @@ api_awk_atexit(awk_ext_id_t id, static awk_bool_t node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) { - awk_bool_t ret = false; + awk_bool_t ret = awk_false; if (node == NULL) fatal(_("node_to_awk_value: received null node")); @@ -390,7 +390,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) case Node_var_new: /* undefined variable */ val->val_type = AWK_UNDEFINED; if (wanted == AWK_UNDEFINED) { - ret = true; + ret = awk_true; } break; @@ -399,7 +399,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) if (wanted == AWK_SCALAR) { val->val_type = AWK_SCALAR; val->scalar_cookie = (void *) node; - ret = true; + ret = awk_true; break; } @@ -414,7 +414,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) (void) force_number(node); if ((node->flags & NUMCUR) != 0) { val->num_value = get_number_d(node); - ret = true; + ret = awk_true; } break; @@ -425,7 +425,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) if ((node->flags & STRCUR) != 0) { val->str_value.str = node->stptr; val->str_value.len = node->stlen; - ret = true; + ret = awk_true; } break; @@ -436,7 +436,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) val->val_type = AWK_STRING; } else val->val_type = AWK_UNDEFINED; - ret = false; + ret = awk_false; break; case AWK_UNDEFINED: @@ -444,12 +444,12 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) if ((node->flags & NUMBER) != 0) { val->val_type = AWK_NUMBER; val->num_value = get_number_d(node); - ret = true; + ret = awk_true; } else if ((node->flags & STRING) != 0) { val->val_type = AWK_STRING; val->str_value.str = node->stptr; val->str_value.len = node->stlen; - ret = true; + ret = awk_true; } else val->val_type = AWK_UNDEFINED; break; @@ -464,15 +464,14 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) val->val_type = AWK_ARRAY; if (wanted == AWK_ARRAY || wanted == AWK_UNDEFINED) { val->array_cookie = node; - ret = true; - } else { - ret = false; - } + ret = awk_true; + } else + ret = awk_false; break; default: val->val_type = AWK_UNDEFINED; - ret = false; + ret = awk_false; break; } @@ -510,7 +509,7 @@ api_sym_lookup(awk_ext_id_t id, || *name == '\0' || result == NULL || (node = lookup(name)) == NULL) - return false; + return awk_false; if (is_off_limits_var(name)) /* a built-in variable */ node->flags |= NO_EXT_SET; @@ -531,7 +530,7 @@ api_sym_lookup_scalar(awk_ext_id_t id, if (node == NULL || result == NULL || node->type != Node_var) - return false; + return awk_false; update_global_values(); /* make sure stuff like NF, NR, are up to date */ @@ -551,7 +550,7 @@ api_sym_update(awk_ext_id_t id, if ( name == NULL || *name == '\0' || value == NULL) - return false; + return awk_false; switch (value->val_type) { case AWK_NUMBER: @@ -564,7 +563,7 @@ api_sym_update(awk_ext_id_t id, default: /* fatal(_("api_sym_update: invalid value for type of new value (%d)"), value->val_type); */ - return false; + return awk_false; } node = lookup(name); @@ -586,7 +585,7 @@ api_sym_update(awk_ext_id_t id, node->var_value = awk_value_to_node(value); } - return true; + return awk_true; } /* @@ -596,7 +595,7 @@ api_sym_update(awk_ext_id_t id, if ( (node->flags & NO_EXT_SET) != 0 || is_off_limits_var(name)) { /* most built-in vars not allowed */ node->flags |= NO_EXT_SET; - return false; + return awk_false; } if ( value->val_type != AWK_ARRAY @@ -606,10 +605,10 @@ api_sym_update(awk_ext_id_t id, if (node->type == Node_var_new && value->val_type != AWK_UNDEFINED) node->type = Node_var; - return true; + return awk_true; } - return false; + return awk_false; } /* api_sym_update_scalar --- update a scalar cookie */ @@ -625,7 +624,7 @@ api_sym_update_scalar(awk_ext_id_t id, || node == NULL || node->type != Node_var || (node->flags & NO_EXT_SET) != 0) - return false; + return awk_false; /* * Optimization: if valref is 1, and the new value is a string or @@ -650,7 +649,7 @@ api_sym_update_scalar(awk_ext_id_t id, r->flags = MALLOC|NUMBER|NUMCUR; r->stptr = NULL; r->stlen = 0; - return true; + return awk_true; } break; case AWK_STRING: @@ -670,7 +669,7 @@ api_sym_update_scalar(awk_ext_id_t id, r->stfmt = -1; r->stptr = value->str_value.str; r->stlen = value->str_value.len; - return true; + return awk_true; } break; case AWK_UNDEFINED: @@ -679,13 +678,13 @@ api_sym_update_scalar(awk_ext_id_t id, break; default: /* AWK_ARRAY or invalid type */ - return false; + return awk_false; } /* do it the hard (slow) way */ unref(node->var_value); node->var_value = awk_value_to_node(value); - return true; + return awk_true; } /* @@ -694,7 +693,7 @@ api_sym_update_scalar(awk_ext_id_t id, * Any scalar value is fine, so only AWK_ARRAY (or an invalid type) is illegal. */ -static inline int +static inline bool valid_subscript_type(awk_valtype_t valtype) { switch (valtype) { @@ -733,21 +732,21 @@ api_get_array_element(awk_ext_id_t id, || result == NULL || index == NULL || ! valid_subscript_type(index->val_type)) - return false; + return awk_false; subscript = awk_value_to_node(index); /* if it doesn't exist, return false */ if (in_array(array, subscript) == NULL) { unref(subscript); - return false; + return awk_false; } aptr = assoc_lookup(array, subscript); if (aptr == NULL) { /* can't happen */ unref(subscript); - return false; + return awk_false; } unref(subscript); @@ -777,7 +776,7 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie, || index == NULL || value == NULL || ! valid_subscript_type(index->val_type)) - return false; + return awk_false; tmp = awk_value_to_node(index); aptr = assoc_lookup(array, tmp); @@ -791,7 +790,7 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie, make_aname(elem); } - return true; + return awk_true; } /* @@ -843,13 +842,13 @@ api_del_array_element(awk_ext_id_t id, || (array->flags & NO_EXT_SET) != 0 || index == NULL || ! valid_subscript_type(index->val_type)) - return false; + return awk_false; sub = awk_value_to_node(index); remove_element(array, sub); unref(sub); - return true; + return awk_true; } /* @@ -864,10 +863,10 @@ api_get_element_count(awk_ext_id_t id, NODE *node = (NODE *) a_cookie; if (count == NULL || node == NULL || node->type != Node_var_array) - return false; + return awk_false; *count = node->table_size; - return true; + return awk_true; } /* api_create_array --- create a new array cookie to which elements may be added */ @@ -894,10 +893,10 @@ api_clear_array(awk_ext_id_t id, awk_array_t a_cookie) if ( node == NULL || node->type != Node_var_array || (node->flags & NO_EXT_SET) != 0) - return false; + return awk_false; assoc_clear(node); - return true; + return awk_true; } /* api_flatten_array --- flatten out an array so that it can be looped over easily. */ @@ -916,7 +915,7 @@ api_flatten_array(awk_ext_id_t id, || array->type != Node_var_array || array->table_size == 0 || data == NULL) - return false; + return awk_false; alloc_size = sizeof(awk_flat_array_t) + (array->table_size - 1) * sizeof(awk_element_t); @@ -954,7 +953,7 @@ api_flatten_array(awk_ext_id_t id, (int) i); } } - return true; + return awk_true; } /* @@ -978,7 +977,7 @@ api_release_flattened_array(awk_ext_id_t id, || array != (NODE *) data->opaque1 || data->count != array->table_size || data->opaque2 == NULL) - return false; + return awk_false; list = (NODE **) data->opaque2; @@ -995,7 +994,7 @@ api_release_flattened_array(awk_ext_id_t id, efree(list); efree(data); - return true; + return awk_true; } /* api_create_value --- create a cached value */ @@ -1005,7 +1004,7 @@ api_create_value(awk_ext_id_t id, awk_value_t *value, awk_value_cookie_t *result) { if (value == NULL || result == NULL) - return false; + return awk_false; switch (value->val_type) { case AWK_NUMBER: @@ -1013,10 +1012,10 @@ api_create_value(awk_ext_id_t id, awk_value_t *value, break; default: /* reject anything other than a simple scalar */ - return false; + return awk_false; } - return (*result = awk_value_to_node(value)) != NULL; + return (awk_bool_t) ((*result = awk_value_to_node(value)) != NULL); } /* api_release_value --- release a cached value */ @@ -1027,10 +1026,10 @@ api_release_value(awk_ext_id_t id, awk_value_cookie_t value) NODE *val = (NODE *) value; if (val == NULL) - return false; + return awk_false; unref(val); - return true; + return awk_true; } /* @@ -1112,6 +1111,12 @@ gawk_api_t api_impl = { api_clear_array, api_flatten_array, api_release_flattened_array, + + /* Memory allocation */ + malloc, + calloc, + realloc, + free, }; /* init_ext_api --- init the extension API */ @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -30,7 +30,6 @@ * * FILE - <stdio.h> * NULL - <stddef.h> - * malloc() - <stdlib.h> * memset(), memcpy() - <string.h> * size_t - <sys/types.h> * struct stat - <sys/stat.h> @@ -62,7 +61,7 @@ * * Additional important information: * - * 1. ALL string values in awk_value_t objects need to come from malloc(). + * 1. ALL string values in awk_value_t objects need to come from api_malloc(). * Gawk will handle releasing the storage if necessary. This is slightly * awkward, in that you can't take an awk_value_t that you got from gawk * and reuse it directly, even for something that is conceptually pass @@ -264,7 +263,7 @@ typedef struct awk_two_way_processor { /* Current version of the API. */ enum { GAWK_API_MAJOR_VERSION = 1, - GAWK_API_MINOR_VERSION = 0 + GAWK_API_MINOR_VERSION = 1 }; /* A number of typedefs related to different types of values. */ @@ -665,6 +664,16 @@ typedef struct gawk_api { awk_bool_t (*api_release_flattened_array)(awk_ext_id_t id, awk_array_t a_cookie, awk_flat_array_t *data); + + /* + * Hooks to provide access to gawk's memory allocation functions. + * This ensures that memory passed between gawk and the extension + * is allocated and released by the same library. + */ + void *(*api_malloc)(size_t size); + void *(*api_calloc)(size_t nmemb, size_t size); + void *(*api_realloc)(void *ptr, size_t size); + void (*api_free)(void *ptr); } gawk_api_t; #ifndef GAWK /* these are not for the gawk code itself! */ @@ -736,6 +745,11 @@ typedef struct gawk_api { #define release_flattened_array(array, data) \ (api->api_release_flattened_array(ext_id, array, data)) +#define gawk_malloc(size) (api->api_malloc(size)) +#define gawk_calloc(nmemb, size) (api->api_calloc(nmemb, size)) +#define gawk_realloc(ptr, size) (api->api_realloc(ptr, size)) +#define gawk_free(ptr) (api->api_free(ptr)) + #define create_value(value, result) \ (api->api_create_value(ext_id, value,result)) @@ -747,13 +761,13 @@ typedef struct gawk_api { #define emalloc(pointer, type, size, message) \ do { \ - if ((pointer = (type) malloc(size)) == 0) \ + if ((pointer = (type) gawk_malloc(size)) == 0) \ fatal(ext_id, "%s: malloc of %d bytes failed\n", message, size); \ } while(0) #define erealloc(pointer, type, size, message) \ do { \ - if ((pointer = (type) realloc(pointer, size)) == 0) \ + if ((pointer = (type) gawk_realloc(pointer, size)) == 0) \ fatal(ext_id, "%s: realloc of %d bytes failed\n", message, size); \ } while(0) diff --git a/helpers/ChangeLog b/helpers/ChangeLog index 91d43464..17624c3f 100644 --- a/helpers/ChangeLog +++ b/helpers/ChangeLog @@ -1,3 +1,16 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-03-10 Arnold D. Robbins <arnold@skeeve.com> + + * quoteconvert2.sh: Use .UTF-8 locales per request from + Michal Jaegermann. + +2014-03-08 Arnold D. Robbins <arnold@skeeve.com> + + * quoteconvert2.sh, tryfmt.c, scanfmt.c: New files. + 2013-12-21 Arnold D. Robbins <arnold@skeeve.com> * testdfa.c: Fix some bugs and compiler warnings. diff --git a/helpers/quoteconvert2.sh b/helpers/quoteconvert2.sh new file mode 100755 index 00000000..63750a37 --- /dev/null +++ b/helpers/quoteconvert2.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# quoteconvert2.sh --- test locale dependent output of numbers +# Michal Jaegermann, michal@harddata.com, 2014/Mar/1 + +#AWK="../gawk" +SCRIPT=`basename $0` + +if [ "$AWK" = "" ] +then + echo $0: You must set AWK >&2 + exit 1 +fi + +# The last entry on this list represents "a locale with a typo". + +llist=" +C +en_US +en_US.UTF-8 +de_DE +de_DE.UTF-8 +fr_FR +fr_FR.UTF-8 +pt_PT +pt_PT.UTF-8 +pt_BR +pt_BR.UTF-8 +ru_RU +ru_RU.UTF-8 +pl_PX +" + +error=0 +for lc in $llist ; do + wanted=`LC_ALL=$lc locale -c LC_NUMERIC 2>/dev/null | \ + $AWK 'NR == 2 { decimal_point = $0 } + NR == 3 { thousands_sep = $0 } + END { printf("123%s456%s789%s15\n", + thousands_sep, thousands_sep, decimal_point)}'` + got=`LC_ALL=$lc $AWK "BEGIN {printf(\"%'.2f\n\",123456789.15)}"` + if [ "$wanted" != "$got" ] ; then + echo "$lc - unexpected output $got instead of $wanted" + error=1 + fi +done + +[ "$error" = 0 ] && echo ok || echo bummer +exit $error diff --git a/helpers/scanfmt.c b/helpers/scanfmt.c new file mode 100644 index 00000000..2d7bd73a --- /dev/null +++ b/helpers/scanfmt.c @@ -0,0 +1,22 @@ +/* + * Test out ' flag in different locales. + * Michal Jaegermann + * March, 2014 + */ + +#include <stdio.h> +#include <locale.h> +#include <stdlib.h> +int +main(int argc, char **argv) +{ + double t; + + if (argc == 1) + return 1; + + setlocale(LC_ALL, getenv("LC_ALL")); + sscanf(argv[1], "%lf", &t); + printf("%.2f\n", t); + return 0; +} diff --git a/helpers/tryfmt.c b/helpers/tryfmt.c new file mode 100644 index 00000000..8166d3f1 --- /dev/null +++ b/helpers/tryfmt.c @@ -0,0 +1,23 @@ +/* + * Test out ' flag in different locales. + * Michal Jaegermann + * March, 2014 + */ + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +int +main(int argc, char **argv) +{ + const char *fmt; + if (argc == 1) + fmt = "%'.2f"; + else + fmt = argv[1]; + + setlocale(LC_ALL, getenv("LC_ALL")); + printf(fmt, 12456789.01); + printf("\n"); + return 0; +} diff --git a/interpret.h b/interpret.h index b855576a..0572583a 100644 --- a/interpret.h +++ b/interpret.h @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -166,6 +166,12 @@ # define SOCKET int #endif +#else /* HAVE_SOCKETS */ + +#ifndef closemaybesocket +# define closemaybesocket(fd) close(fd) +#endif + #endif /* HAVE_SOCKETS */ #ifndef HAVE_SETSID @@ -3968,7 +3974,7 @@ init_output_wrapper(awk_output_buf_t *outbuf) outbuf->mode = NULL; outbuf->fp = NULL; outbuf->opaque = NULL; - outbuf->redirected = false; + outbuf->redirected = awk_false; outbuf->gawk_fwrite = gawk_fwrite; outbuf->gawk_fflush = gawk_fflush; outbuf->gawk_ferror = gawk_ferror; diff --git a/m4/ChangeLog b/m4/ChangeLog index 9e2c279b..81fdcec0 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,13 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-03-11 Arnold D. Robbins <arnold@skeeve.com> + + * readline.m4: Add manual check for *bsd* OS and add -ltermcap + if so. Hack, slash. Can you say "quick and dirty" boys and girls? + I knew you could. + 2013-10-16 Arnold D. Robbins <arnold@skeeve.com> * readline.m4: Add check for NULL return from readline() in diff --git a/m4/readline.m4 b/m4/readline.m4 index af2745db..77ed8b25 100644 --- a/m4/readline.m4 +++ b/m4/readline.m4 @@ -1,5 +1,5 @@ dnl Check for readline and dependencies -dnl Copyright (C) 2004, 2005, 2013 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2005, 2013, 2014 Free Software Foundation, Inc. dnl dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General @@ -70,6 +70,10 @@ dnl action if cross compiling: LIBS=$_readline_save_libs if test $_found_readline = yes ; then + case $host_os in + *bsd* ) _combo="$_combo -ltermcap" + ;; + esac AC_DEFINE(HAVE_LIBREADLINE,1, [Define to 1 if you have a fully functional readline library.]) AC_SUBST(LIBREADLINE,$_combo) @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -24,7 +24,7 @@ */ /* FIX THIS BEFORE EVERY RELEASE: */ -#define UPDATE_YEAR 2013 +#define UPDATE_YEAR 2014 #include "awk.h" #include "getopt.h" diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog index f94c070d..70fbde64 100644 --- a/missing_d/ChangeLog +++ b/missing_d/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2013-05-09 Arnold D. Robbins <arnold@skeeve.com> * 4.1.0: Release tar ball made. diff --git a/pc/ChangeLog b/pc/ChangeLog index 404bcb68..d8e60c98 100644 --- a/pc/ChangeLog +++ b/pc/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2014-02-03 Scott Deifik <scottd.mail@sbcglobal.net> * Makefile.tst: Include original test/Makefile.in lines as diff --git a/pc/Makefile b/pc/Makefile index 9d98cb1c..d1c08069 100644 --- a/pc/Makefile +++ b/pc/Makefile @@ -6,6 +6,17 @@ # Tested with GNU make on Windows, OS/2 and DOS. +# Copyright (C) 1989-2014 Free Software Foundation, Inc. + +# This Makefile is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + default: @echo "Enter $(MAK) target " @echo " where 'target' is chosen from " diff --git a/pc/Makefile.tst b/pc/Makefile.tst index cab49423..866b4692 100644 --- a/pc/Makefile.tst +++ b/pc/Makefile.tst @@ -1,6 +1,6 @@ # Makefile for GNU Awk test suite. # -# Copyright (C) 1988-2013 the Free Software Foundation, Inc. +# Copyright (C) 1988-2014 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. diff --git a/pc/config.h b/pc/config.h index 1d9be09b..c5d78a96 100644 --- a/pc/config.h +++ b/pc/config.h @@ -423,7 +423,7 @@ #define PACKAGE_NAME "GNU Awk" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU Awk 4.1.0e" +#define PACKAGE_STRING "GNU Awk 4.1.60" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gawk" @@ -432,7 +432,7 @@ #define PACKAGE_URL "http://www.gnu.org/software/gawk/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.1.0e" +#define PACKAGE_VERSION "4.1.60" /* Define to 1 if *printf supports %F format */ #undef PRINTF_HAS_F_FORMAT @@ -494,7 +494,7 @@ /* Version number of package */ -#define VERSION "4.1.0e" +#define VERSION "4.1.60" /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE diff --git a/po/ChangeLog b/po/ChangeLog index 31d9fa1d..a9cca765 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2013-05-09 Arnold D. Robbins <arnold@skeeve.com> * 4.1.0: Release tar ball made. Binary files differ@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" -"PO-Revision-Date: 2014-02-10 07:25+0100\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"PO-Revision-Date: 2014-02-26 20:18+0100\n" "Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n" "Language-Team: Catalan <ca@dodds.net>\n" "Language: ca\n" @@ -36,8 +36,8 @@ msgstr "s'ha intentat usar un parmetre escalar `%s' com a una matriu" msgid "attempt to use scalar `%s' as an array" msgstr "s'ha intentat usar la dada escalar `%s' com a una matriu" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -76,28 +76,36 @@ msgstr "asort: el primer argument no s una matriu" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" +"asort: no es pot usar una submatriu com a primer argument per al segon " +"argument" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" +"asorti: no es pot usar una submatriu com a primer argument per al segon " +"argument" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" +"asort: no es pot usar una submatriu com a segon argument per al primer " +"argument" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" +"asorti: no es pot usar una submatriu com a segon argument per al primer " +"argument" #: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" -msgstr "" +msgstr "`%s' no s vlid com a nom de funci" #: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" -msgstr "la funci de commparaci d'ordenaci `%s' no est definida" +msgstr "la funci de comparaci d'ordenaci `%s' no est definida" #: awkgram.y:233 #, c-format @@ -119,27 +127,32 @@ msgstr "`%s' s una funci interna, no pot ser redefinida" #: awkgram.y:419 msgid "regexp constant `//' looks like a C++ comment, but is not" -msgstr "la constant d'expressi regular `//' sembla un comentari en C++, per no ho s" +msgstr "" +"la constant d'expressi regular `//' sembla un comentari en C++, per no ho " +"s" #: awkgram.y:423 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" -msgstr "la constant d'expressi regular `/%s/' sembla un comentari en C, per no ho s" +msgstr "" +"la constant d'expressi regular `/%s/' sembla un comentari en C, per no ho " +"s" #: awkgram.y:515 #, c-format msgid "duplicate case values in switch body: %s" -msgstr "" +msgstr "valors duplicats de casos al cos de l'expressi switch: %s" #: awkgram.y:536 msgid "duplicate `default' detected in switch body" msgstr "" +"s'ha detectat el cas predeterminat `default' duplicat a l'expressi switch " -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "no es permet `break' a fora d'un bucle o bifurcaci" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "no es permet `continue' a fora d'un bucle" @@ -159,19 +172,21 @@ msgstr "`return' s usat fora del context d'una funci" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "el `print' simple en la regla BEGIN o END probablement ha de ser `print \"\"'" +msgstr "" +"el `print' simple en la regla BEGIN o END probablement ha de ser `print " +"\"\"'" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" -msgstr "" +msgstr "no es permet `delete' amb SYMTAB" #: awkgram.y:990 awkgram.y:1039 msgid "`delete' is not allowed with FUNCTAB" -msgstr "" +msgstr "no es permet `delete' a FUNCTAB" #: awkgram.y:1024 awkgram.y:1028 msgid "`delete(array)' is a non-portable tawk extension" -msgstr "`delete(array)' s una extenci tawk no portable" +msgstr "`delete(array)' s una extensi tawk no portable" #: awkgram.y:1149 msgid "multistage two-way pipelines don't work" @@ -187,11 +202,12 @@ msgstr "expressi regular a l'esquerra de l'operador `~' o `!~'" #: awkgram.y:1291 awkgram.y:1442 msgid "old awk does not support the keyword `in' except after `for'" -msgstr "l'antic awk no dna suport a la paraula clau `in' excepte desprs de `for'" +msgstr "" +"l'antic awk no dna suport a la paraula clau `in' excepte desprs de `for'" #: awkgram.y:1301 msgid "regular expression on right of comparison" -msgstr "expressi regular a la derta de la comparaci" +msgstr "expressi regular a la dreta de la comparaci" #: awkgram.y:1417 #, c-format @@ -223,267 +239,273 @@ msgstr "les crides a funcions indirectes sn una extensi gawk" #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" +"no es pot usar la variable especial `%s' per a una crida indirecta de funci" #: awkgram.y:1698 msgid "invalid subscript expression" -msgstr "expressi de subscript no vlida" +msgstr "expressi de subndex no vlida" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " -msgstr "ADVERTIMENT: " +msgstr "advertiment: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " -msgstr "Fatal: " +msgstr "fatal: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "nova lnia inesperada o final d'una cadena de carcters" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "no es pot obrir el fitxer font `%s' per a lectura (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "no es pot obrir la llibreria compartida `%s' per a lectura (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "motiu desconegut" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" -msgstr "" +msgstr "no es pot incloure `%s' i usar-lo com un fitxer de programa" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "ja s'ha incls el fitxer font `%s'" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" -msgstr "" +msgstr "ja s'ha carregat la biblioteca compartida `%s'" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include s una extensi de gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" -msgstr "" +msgstr "nom de fitxer buit desprs de @include" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load s una extensi de gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" -msgstr "" +msgstr "fitxer buit desprs de @load" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "el text del programa en la lnia de comandaments est buit" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no es pot llegir el fitxer font `%s' (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "el fitxer font `%s' est buit" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "el fitxer font no finalitza amb un retorn de carro" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expressi regular sense finalitzar acaba amb `\\' al final del fitxer" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "" +msgstr "%s: %d: el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "" +msgstr "el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "expressi regular sense finalitzar" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "expressi regular sense finalitzar al final del fitxer" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "l's de `\\ #...' com a continuaci de lnia no s portable" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "la barra invertida no s l'ltim carcter en la lnia" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permet l'operador `**='" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permet l'operador `**'" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "l'operador `^=' no est suportat en l'antic awk" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "l'operador `^' no est suportat en l'antic awk" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "cadena sense finalitzar" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "carcter `%c' no vlid en l'expressi" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' s una extensi de gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permet %s" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no est suportat en l'antic awk" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" -msgstr "`goto' se considera nefast!\n" +msgstr "`goto' es considera perjudicial!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d no s vlid com a nombre d'arguments per a %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: la cadena literal com a ltim argument de substituci no t efecte" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s el tercer parmetre no s un objecte intercanviable" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argument s una extensi de gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: el segon argument s una extensi de gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" -msgstr "l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" +msgstr "" +"l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" -msgstr "l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" +msgstr "" +"l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" -msgstr "ndex: no es permert una constant regexp com a segon argument" +msgstr "ndex: no es permet una constant regexp com a segon argument" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funci `%s': parmetre `%s' ofusca la variable global" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "no es pot obrir `%s' per a escriptura (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "s'est enviant la llista de variables a l'eixida d'error estndard" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: tancament erroni (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" -msgstr "shadow_funcs() crida dos vegades!" +msgstr "shadow_funcs() s'ha cridat dues vegades!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." -msgstr "" +msgstr "hi ha hagut variables a l'ombra" -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "nom de la funci `%s' definida prviament" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funci `%s: no pot usar el nom de la funci com a parmetre" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "funci `%s': no es pot usar la variable especial `%s' com a un parmetre de funci" +msgstr "" +"funci `%s': no es pot usar la variable especial `%s' com a un parmetre de " +"funci" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funci `%s': parmetre #%d, `%s', duplica al parmetre #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "es crida a la funci `%s' per no s'ha definit" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "la funci `%s' est definida per no s'ha cridat mai directament" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" -msgstr "l'expressi regular constant per al parmetre #%d condueix a un valor boole" +msgstr "" +"l'expressi regular constant per al parmetre #%d condueix a un valor boole" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -492,20 +514,23 @@ msgstr "" "s'ha cridat a la funci `%s' amb espai entre el nom i el '(',\n" "o s'ha usat com a variable o matriu" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "s'ha intentat una divisi per zero" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "s'ha intentat una divisi per zero en `%%'" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" msgstr "" +"no es pot assignar un valor al resultat d'una expressi post-increment de " +"camp" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "dest no vlid d'assignaci (opcode %s)" @@ -517,7 +542,7 @@ msgstr "%s a \"%s\" ha fallat (%s)" #: builtin.c:134 msgid "standard output" -msgstr "eixida estndard" +msgstr "sortida estndard" #: builtin.c:148 msgid "exp: received non-numeric argument" @@ -531,12 +556,16 @@ msgstr "exp: l'argument %g est fora de rang" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush: no es pot netejar: la canonada `%s' s'ha obert per a lectura, no per a escriptura" +msgstr "" +"fflush: no es pot netejar: la canonada `%s' s'ha obert per a lectura, no per " +"a escriptura" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush: no es pot netejar: el fitxer `%s' s'ha obert per a lectura, no per a escriptura" +msgstr "" +"fflush: no es pot netejar: el fitxer `%s' s'ha obert per a lectura, no per a " +"escriptura" #: builtin.c:244 #, c-format @@ -578,22 +607,22 @@ msgstr "log: s'ha rebut l'argument negatiu %g" #: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" -msgstr "" +msgstr "fatal: s'ha d'usar `count$' a tots els format o a cap" #: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" -msgstr "" +msgstr "l'amplada de camp s'ignorar per a l'especificador `%%'" #: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" -msgstr "" +msgstr "la precisi s'ignorar per a l'especificador `%%'" #: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" -msgstr "" +msgstr "l'amplada de camp i la precisi s'ignoraran per a l'especificador `%%'" #: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" @@ -606,7 +635,9 @@ msgstr "fatal: el recompte d'arguments amb `$' ha de ser > 0" #: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" -msgstr "fatal: el recompte d'arguments %ld s major que el nombre total d'arguments proporcionats" +msgstr "" +"fatal: el recompte d'arguments %ld s major que el nombre total d'arguments " +"proporcionats" #: builtin.c:923 msgid "fatal: `$' not permitted after period in format" @@ -614,299 +645,310 @@ msgstr "fatal: no es permet `$' desprs d'un punt en el format" #: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "fatal: no es proporciona `$' per a l'ample o precisi del camp de posici" +msgstr "" +"fatal: no es proporciona `$' per a l'ample o precisi del camp de posici" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatal: `l' no est perms en els formats POSIX de awk" +msgstr "fatal: `l' no est perms en els formats POSIX de awk" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: `L' no est perms en els formats POSIX de awk" +msgstr "fatal: `L' no est perms en els formats POSIX de awk" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: `h' no est perms en els formats POSIX de awk" +msgstr "fatal: `h' no est perms en els formats POSIX de awk" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" -msgstr "" +msgstr "[s]printf: el valor %g est fora de rang per al format `%%%c'" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" +"s'ignorar el carcter especificador de format `%c': no s'ha convertit cap " +"argument" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: no hi ha prou arguments per a satisfer el format d'una cadena" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ desbordament per a aquest" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: l'especificador de format no cont lletra de control" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "s'han proporcionat masses arguments per a la cadena de format" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: sense arguments" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: sense arguments" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: s'ha rebut un argument no numric" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: cridat amb l'argument negatiu %g" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no s >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no s >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: la longitud sobre un nombre no enter %g ser truncada" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" +"substr: la llargada %g s massa gran per a la indexaci de cadenes de " +"carcters, es truncar a %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: l'ndex d'inici %g no s vlid, usant 1" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: l'ndex d'inici no enter %g ser truncat" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: la cadena font s de longitud zero" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: l'ndex d'inici %g sobrepassa l'acabament de la cadena" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: la longitud %g a l'ndex d'inici %g excedeix la longitud del 1er argument (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: la longitud %g a l'ndex d'inici %g excedeix la longitud del primer " +"argument (%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -msgstr "" +msgstr "strftime: el valor de format a PROCINFO[\"strftime\"] t tipus numric" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: s'ha rebut un segon argument no numric" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" +"strftime: el segon argument s ms petit que 0 o massa gran per a time_t" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argument rebut no s una cadena" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: s'ha rebut una cadena de format buida" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: s'ha rebut un argument que no s una cadena" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" -msgstr "" +msgstr "mktime: almenys un dels valors est forra del rang predeterminat" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" -msgstr "" +msgstr "la funci 'system' no es permet fora del mode entorn de proves" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: s'ha rebut un argument que no s una cadena" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referncia a una variable sense inicialitzar `$%d'" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: s'ha rebut un argument que no s una cadena" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: s'ha rebut un argument que no s una cadena" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argument rebut no s numric" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segon argument rebut no s numric" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: s'ha rebut un argument que no s numric" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: s'ha rebut un argument que no s numric" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: s'ha rebut un argument que no s numric" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: el tercer argument no s una matriu" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: el tercer argument de 0 s tractat com a 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argument rebut no s numric" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segon argument rebut no s numric" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): els valors fraccionaris sernn truncats" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" -msgstr "lshift(%f, %f): un valor de desplaament massa gran donar resultats estranys" +msgstr "" +"lshift(%f, %f): un valor de desplaament massa gran donar resultats estranys" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argument rebut no s numric" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segon argument rebut no s numric" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): els valors fraccionaris seran truncats" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "rshift(%f, %f): un valor de desplaament massa gran donar resultats estranys" +msgstr "" +"rshift(%f, %f): un valor de desplaament massa gran donar resultats estranys" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: cridat amb menys de dos arguments" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "exp: l'argument %d no s numric" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: l'argument %d amb valor negatiu %g donar resultats estranys" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: cridat amb menys de dos arguments" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: l'argument %d no s numric" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: l'argument %d amb valor negatiu %g donar resultats estranys" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xort: cridat amb menys de dos arguments" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: l'argument %d no s numric" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: l'argument %d del valor negatiu %g donar resultats estranys" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: s'ha rebut un argument que no s numric" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): el valor negatiu donar resultats estranys" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): el valor fraccionari ser truncat" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no s una categoria local vlida" @@ -914,7 +956,7 @@ msgstr "dcgettext: `%s' no s una categoria local vlida" #: command.y:225 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" -msgstr "" +msgstr "Escriviu proposici(ns) g(awk). Termineu amb la instrucci \"end\"\n" #: command.y:289 #, c-format @@ -929,42 +971,44 @@ msgstr "info: opci no vlida - \"%s\"" #: command.y:321 #, c-format msgid "source \"%s\": already sourced." -msgstr "" +msgstr "source \"%s\": ja s'ha utilitzat." #: command.y:326 #, c-format msgid "save \"%s\": command not permitted." -msgstr "" +msgstr "save \"%s\": ordre no permesa." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" +"No es pot usar l'ordre `commands' per a ordres de punt d'interrupci/" +"inspecci" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" -msgstr "" +msgstr "no s'ha establert encara cap punt d'interrupci/verificaci" #: command.y:343 msgid "invalid breakpoint/watchpoint number" -msgstr "" +msgstr "nmero de punt d'interrupci/inspecci no vlid" #: command.y:348 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" -msgstr "" +msgstr "Escriviu les ordres per a quan s'assoleix %s %d, una per lnia.\n" #: command.y:350 #, c-format msgid "End with the command \"end\"\n" -msgstr "" +msgstr "Termineu amb l'ordre \"end\"\n" #: command.y:357 msgid "`end' valid only in command `commands' or `eval'" -msgstr "" +msgstr "`end' s vlid sols a les ordres `commands' o `eval'" #: command.y:367 msgid "`silent' valid only in command `commands'" -msgstr "" +msgstr "`silent' s vlid sols a l'ordre `commands'" #: command.y:373 #, c-format @@ -973,7 +1017,7 @@ msgstr "tra: opci no vlida - \"%s\"" #: command.y:387 msgid "condition: invalid breakpoint/watchpoint number" -msgstr "" +msgstr "condici: nmero de punt d'interrupci/inspecci no vlid" #: command.y:449 msgid "argument not a string" @@ -982,12 +1026,12 @@ msgstr "l'argument no s una cadena de carcters" #: command.y:459 command.y:464 #, c-format msgid "option: invalid parameter - \"%s\"" -msgstr "" +msgstr "opci: parmetre no vlid - \"%s\"" #: command.y:474 #, c-format msgid "no such function - \"%s\"" -msgstr "" +msgstr "no existeix aquesta funci - \"%s\"" #: command.y:531 #, c-format @@ -1001,194 +1045,247 @@ msgstr "especificaci no vlida de rang: %d - %d" #: command.y:659 msgid "non-numeric value for field number" -msgstr "" +msgstr "valor no numric per al nmero de camp" #: command.y:680 command.y:687 msgid "non-numeric value found, numeric expected" -msgstr "" +msgstr "s'ha trobat un valor no numric, s'esperava un valor numric" #: command.y:712 command.y:718 msgid "non-zero integer value" -msgstr "" +msgstr "valor enter no zero" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." msgstr "" +"backtrace [N] - imprimeix la traa de tot els N marcs interiors (exteriors " +"si N < 0)." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" +"break [[fitxer:]N|funci] - estableix el punt d'interrupci a la ubicaci " +"especificada." #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" +"clear [[fitxer:]N|funci] - suprimeix els punts establerts prviament." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" +"commands [num] - inicia una llista d'ordres a executar quan s'arribi a un " +"punt d'interrupci/inspecci." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" +"condition num [expr] - estableix o neteja una condici de punt d'interrupci " +"o d'inspecci." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." -msgstr "" +msgstr "continue [RECOMPTE] - continua el programa que s'est depurant." #: command.y:829 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" +"delete [punts d'interrupci] [rang] - esborra els punts d'interrupci " +"especificats." #: command.y:831 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" +"disable [punts d'interrupci] [rang] - deshabilita els punts d'interrupci " +"especificats." #: command.y:833 msgid "display [var] - print value of variable each time the program stops." msgstr "" +"display [var] - imprimeix el valor de la variable cada cop que el programa " +"s'atura" #: command.y:835 msgid "down [N] - move N frames down the stack." -msgstr "" +msgstr "down [N] - mou N marcs cap a baix a la pila." #: command.y:837 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" +"dump [filename] - aboca les instruccions a un fitxer o a la sortida " +"estndard." #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" +"enable [once|del] [punts d'interrupci] [rang] - habilita els punts " +"d'interrupci especificats." #: command.y:841 msgid "end - end a list of commands or awk statements." -msgstr "" +msgstr "end - finalitza una llista de ordres o declaracions awk." #: command.y:843 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "" +msgstr "eval stmt|[p1, p2, ...] - avalua la(es) declaraci(ns) awk." #: command.y:845 msgid "finish - execute until selected stack frame returns." msgstr "" +"finish - executa fins que hi hagi un retorn del marc de pila seleccionat." #: command.y:847 msgid "frame [N] - select and print stack frame number N." -msgstr "" +msgstr "frame [N] - selecciona i imprimeix el marc de pila amb nmero N." #: command.y:849 msgid "help [command] - print list of commands or explanation of command." -msgstr "" +msgstr "help [ordre] - imprimeix una llista d'ordres o una explica de l'ordre." #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" +"ignore N RECOMPTE - estableix ignore-count del punt d'interrupci nmero N " +"fins RECOMPTE." #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." msgstr "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" +"list [-|+|[fitxer:]nmero-de-lnia|funci|rang] - fes una llista la(es) " +"lnia(es) especificada(es)." #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" +"next [RECOMPTE] - avana el programa pas per pas, tot procedint a travs de " +"les crides de subrutines." #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" +"nexti [RECOMPTE] - avana una instrucci, per procedeix a travs de crides " +"de subrutines." #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" +"option [nom[=valor]] - estableix o mostra la(es) opci(ns) del depurador." #: command.y:863 msgid "print var [var] - print value of a variable or array." -msgstr "" +msgstr "print var [var] - imprimeix el valor de la variable o matriu." #: command.y:865 msgid "printf format, [arg], ... - formatted output." -msgstr "" +msgstr "printf format, [arg], ... - sortida amb format." #: command.y:867 msgid "quit - exit debugger." -msgstr "" +msgstr "quit - surt del depurador." #: command.y:869 msgid "return [value] - make selected stack frame return to its caller." msgstr "" +"return [valor] - fes que el marc seleccionat de pila retorni a l'element que " +"l'ha cridat." #: command.y:871 msgid "run - start or restart executing program." -msgstr "" +msgstr "run - inicia o reinicia el programa que s'est executant." #: command.y:874 msgid "save filename - save commands from the session to file." -msgstr "" +msgstr "save filename - desa les ordres de la sessi a un fitxer." #: command.y:877 msgid "set var = value - assign value to a scalar variable." -msgstr "" +msgstr "set var = valor - assigna un valor a una variable escalar." #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" +"silent - suspn els missatges habituals quan s'autra a un punt d'interrupci/" +"inspecci." #: command.y:881 msgid "source file - execute commands from file." -msgstr "" +msgstr "source file - executa una ordre des d'un fitxer." #: command.y:883 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" +"step [RECOMPTE] - avana pas per pas pel programa fins que arribi a una " +"lnia diferent de la font." #: command.y:885 msgid "stepi [COUNT] - step one instruction exactly." -msgstr "" +msgstr "stepi [RECOMPTE] - avana exactament una instrucci." #: command.y:887 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" +"tbreak [[fitxer:]N|funci] - estableix un punt temporari d'interrupci." #: command.y:889 msgid "trace on|off - print instruction before executing." -msgstr "" +msgstr "trace on|off - imprimeix la instrucci abans d'executar-la." #: command.y:891 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" +"undisplay [N] - remou la(es) variable(s) de la llista automtica " +"visualitzaci." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." msgstr "" +"until [[fitxer:]N|funci] - executa fins que el programa arribi a una lnia " +"diferent a la lnia N dins del marc actual." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "" +msgstr "unwatch [N] - remou la(es) variable(s) de la llista d'inspecci." #: command.y:897 msgid "up [N] - move N frames up the stack." -msgstr "" +msgstr "up [N] - mou-te N marcs cap a dalt de la pila." #: command.y:899 msgid "watch var - set a watchpoint for a variable." -msgstr "" +msgstr "watch var - estableix un punt d'inspecci per a una variable." #: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " -msgstr "Error: " +msgstr "error: " #: command.y:1051 #, c-format msgid "can't read command (%s)\n" -msgstr "no es pot llegir la instraucci (%s)\n" +msgstr "no es pot llegir l'ordre (%s)\n" #: command.y:1065 #, c-format msgid "can't read command (%s)" -msgstr "no es pot llegir la instrucci (%s)" +msgstr "no es pot llegir l'ordre (%s)" #: command.y:1116 msgid "invalid character in command" @@ -1197,12 +1294,12 @@ msgstr "carcter no vlida en la instucci" #: command.y:1152 #, c-format msgid "unknown command - \"%.*s\", try help" -msgstr "" +msgstr "ordre desconeguda - \"%.*s\", prova l'ajuda" #: command.y:1222 #, c-format msgid "%s" -msgstr "" +msgstr "%s" #: command.y:1284 msgid "invalid character" @@ -1211,39 +1308,43 @@ msgstr "carcter no vlid" #: command.y:1455 #, c-format msgid "undefined command: %s\n" -msgstr "" +msgstr "ordre no definida: %s\n" #: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" +"estableix o mostra el nmero de lnies a mantenir al fitxer d'histria." #: debug.c:254 msgid "set or show the list command window size." -msgstr "" +msgstr "estableix o mostra la mida de la finestra de llista d'ordres." #: debug.c:256 msgid "set or show gawk output file." -msgstr "" +msgstr "estableix o mostra el fitxer de sortida gawk." #: debug.c:258 msgid "set or show debugger prompt." -msgstr "" +msgstr "estableix o mostra l'indicador del depurador." #: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" +"estableix(anulla) o mostra el desament de la histria d'ordres (valor=on|" +"off)." #: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." -msgstr "" +msgstr "estableix(anulla) o mostra el desament d'opcions (valor=on|off)." #: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" +"estableix(anulla) o mostra el seguiment d'instruccions (valor=on|off)." #: debug.c:345 msgid "program not running." -msgstr "" +msgstr "el programa no s'est executant." #: debug.c:448 debug.c:606 #, c-format @@ -1257,7 +1358,7 @@ msgstr "el fitxer font `%s' est buit\n" #: debug.c:480 msgid "no current source file." -msgstr "" +msgstr "no hi ha un fitxer font." #: debug.c:505 #, c-format @@ -1268,81 +1369,87 @@ msgstr "no es pot trobar el fitxer font `%s' (%s)" #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" +"ADVERTIMENT: el fitxer font `%s' s'ha modificat des de la compilaci del " +"programa.\n" #: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" -msgstr "" +msgstr "lnia nmero %d fora de rang; `%s' t %d lnies" #: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" -msgstr "final de fitxer no esperat quan s'estava llegint el fitxer `%s', lina %d" +msgstr "" +"final de fitxer no esperat quan s'estava llegint el fitxer `%s', lnia %d" #: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" +"el fitxer font `%s' s'ha modificat des de l'inici de l'execuci del programa" #: debug.c:732 #, c-format msgid "Current source file: %s\n" -msgstr "" +msgstr "Fitxer font actual: %s\n" #: debug.c:733 #, c-format msgid "Number of lines: %d\n" -msgstr "" +msgstr "Nombre de lnies: %d\n" #: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" -msgstr "" +msgstr "Fitxer font (lnies): %s (%d)\n" #: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" +"Ubicaci habilitada per nmero disp\n" +"\n" #: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" -msgstr "" +msgstr "\tnmero de accessos = %ld\n" #: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" -msgstr "" +msgstr "\tignora el(s) prxim(s) %ld accs(sos)\n" #: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" -msgstr "" +msgstr "\tcondici d'aturada: %s\n" #: debug.c:771 debug.c:911 msgid "\tcommands:\n" -msgstr "" +msgstr "\tordres:\n" #: debug.c:793 #, c-format msgid "Current frame: " -msgstr "" +msgstr "Marc actual: " #: debug.c:796 #, c-format msgid "Called by frame: " -msgstr "" +msgstr "Cridat per marc: " #: debug.c:800 #, c-format msgid "Caller of frame: " -msgstr "" +msgstr "Cridador de marc: " #: debug.c:818 #, c-format msgid "None in main().\n" -msgstr "" +msgstr "Cap a main().\n" #: debug.c:848 msgid "No arguments.\n" @@ -1350,46 +1457,54 @@ msgstr "Sense arguments.\n" #: debug.c:849 msgid "No locals.\n" -msgstr "" +msgstr "No hi ha locals.\n" #: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" +"Totes les variables definides:\n" +"\n" #: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" +"Totes les funcions definides:\n" +"\n" #: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" +"Mostra automticament les variables:\n" +"\n" #: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" +"Inspecciona les variables:\n" +"\n" #: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" -msgstr "" +msgstr "no hi ha el smbol `%s' al context actual\n" #: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" -msgstr "" +msgstr "`%s' no s una matriu\n" #: debug.c:1055 #, c-format msgid "$%ld = uninitialized field\n" -msgstr "" +msgstr "$%ld = camp sense inicialitzar\n" #: debug.c:1076 #, c-format @@ -1404,12 +1519,12 @@ msgstr "[\"%s\"] no est a la matriu `%s'\n" #: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" -msgstr "" +msgstr "`%s[\"%s\"]' no s una matriu\n" #: debug.c:1236 debug.c:4964 #, c-format msgid "`%s' is not a scalar variable" -msgstr "" +msgstr "`%s' no s una variable escalar" #: debug.c:1258 debug.c:4994 #, c-format @@ -1429,20 +1544,20 @@ msgstr "`%s' s una funci" #: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" -msgstr "" +msgstr "el punt d'inspecci %d s incondicional\n" #: debug.c:1499 #, c-format msgid "No display item numbered %ld" -msgstr "" +msgstr "No hi ha un element de visualitzaci numerat %ld" #: debug.c:1502 #, c-format msgid "No watch item numbered %ld" -msgstr "" +msgstr "No hi ha un element d'inspecci numerat %ld" #: debug.c:1528 -#, fuzzy, c-format +#, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "%d: [\"%s\"] no est a la matriu `%s'\n" @@ -1454,11 +1569,12 @@ msgstr "s'ha intentat usar una dada escalar com a una matriu" #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" +"El punt d'inspecci %d s'ha esborrat perqu el parmetre est fora d'abast.\n" #: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" -msgstr "" +msgstr "La vista %d s'ha suprimit perqu el parmetre est fora de l'abast.\n" #: debug.c:1900 #, c-format @@ -1468,17 +1584,17 @@ msgstr "al fitxer `%s', lnia %d\n" #: debug.c:1921 #, c-format msgid " at `%s':%d" -msgstr "" +msgstr " a `%s':%d" #: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " -msgstr "" +msgstr "#%ld\ten " #: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" -msgstr "" +msgstr "Segueixen ms marcs de pila ...\n" #: debug.c:2017 msgid "invalid frame number" @@ -1488,21 +1604,27 @@ msgstr "nmero no vlid de rang" #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" +"Nota: el punt d'interrupci %d (habilitat, ignora els %ld accessos " +"segents), tamb s'ha establert a %s:%d" #: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" +"Nota: el punt d'interrupci %d (habilitat), tamb s'ha establert a %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" +"Nota: el punt d'interrupci %d (deshabilitat, ignora els %ld accessos " +"segents), tamb s'ha establert a %s:%d" #: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" +"Nota: el punt d'interrupci %d (deshabilitat), tamb s'ha establert a %s:%d" #: debug.c:2238 #, c-format @@ -1512,7 +1634,7 @@ msgstr "Punt d'interrupci %d establert al fitxer `%s', lnia %d\n" #: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" -msgstr "" +msgstr "No es pot establir el punt d'interrupci al fitxer `%s'\n" #: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format @@ -1522,32 +1644,34 @@ msgstr "el nmero de lnia %d al fitxer `%s' est fora de rang" #: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" -msgstr "" +msgstr "No es pot trobar la regla!!!\n" #: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" -msgstr "" +msgstr "No es pot establir el punt d'interrupci a `%s':%d\n" #: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" -msgstr "" +msgstr "No est pot establir el punt d'interrupci a la funci `%s'\n" #: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" +"el punt d'interrupci %d establert al fitxer `%s', lnia %d s " +"incondicional\n" #: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" -msgstr "" +msgstr "Punt interrupci suprimit %d" #: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" -msgstr "" +msgstr "No hi ha punt(s) d'interrupci a l'entrada a la funci `%s'\n" #: debug.c:2541 #, c-format @@ -1556,113 +1680,115 @@ msgstr "No hi ha un punt d'interrupci al fitxer `%s', lnia #%d\n" #: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" -msgstr "" +msgstr "nmero no vlid de punt d'interrupci" #: debug.c:2612 msgid "Delete all breakpoints? (y or n) " -msgstr "" +msgstr "Suprimir tots els punts d'interrupci (s o n) " #: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" -msgstr "" +msgstr "s" #: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" +"S'ignoraran el(s) %ld creuament(s) segent(s) del punt d'interrupci %d.\n" #: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" +"S'aturar la prxima vegada que s'assoleixi el punt d'interrupci %d.\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" -msgstr "" +msgstr "Sols es poden depurar programes que tenen l'opci `-f'.\n" #: debug.c:2908 #, c-format msgid "Failed to restart debugger" -msgstr "" +msgstr "No s'ha pogut reiniciar el depurador." #: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " -msgstr "" +msgstr "El programa ja est corrent. S'ha de reiniciar des del principi (s/n)?" #: debug.c:2926 #, c-format msgid "Program not restarted\n" -msgstr "" +msgstr "No s'ha reiniciat el programa\n" #: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" -msgstr "" +msgstr "error: no es pot reiniciar, l'operaci no est permesa\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" -msgstr "" +msgstr "error (%s): no es pot reiniciar, s'ignoraran la resta de les ordres\n" #: debug.c:2950 #, c-format msgid "Starting program: \n" -msgstr "" +msgstr "S'est iniciant el programa: \n" #: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" -msgstr "" +msgstr "El programa ha tingut la sortida %s amb el valor de sortida: %d\n" #: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " -msgstr "" +msgstr "El programa s'est executant. Voleu sortir tot i aix (s/n)? " #: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" -msgstr "" +msgstr "No s'ha detingut a cap punt d'interrupci; s'ignorar l'argument.\n" #: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." -msgstr "" +msgstr "nmero no vlid de punt d'interrupci %d." #: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" -msgstr "" +msgstr "S'ignoraran els prxims %ld creuaments de punt d'interrupci %d.\n" #: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" -msgstr "" +msgstr "'finish' no t significat al marc ms extern main()\n" #: debug.c:3212 #, c-format msgid "Run till return from " -msgstr "" +msgstr "Executa fins retornar de " #: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" -msgstr "" +msgstr "'return' no t significat al marc ms extern main()\n" #: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" -msgstr "" +msgstr "No es pot trobar la ubicaci especificada a la funci `%s'\n" #: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" -msgstr "" +msgstr "lnia %d no vlida de font al fitxer `%s'" #: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" -msgstr "" +msgstr "No es pot trobar la ubicaci especificada %d al fitxer `%s'\n" #: debug.c:3424 #, c-format @@ -1672,30 +1798,30 @@ msgstr "l'element no est a la matriu\n" #: debug.c:3424 #, c-format msgid "untyped variable\n" -msgstr "" +msgstr "variable sense tipus\n" #: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" -msgstr "" +msgstr "S'est aturant a %s ...\n" #: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" -msgstr "" +msgstr "'finish' no t significat amb salt no local '%s'\n" #: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" -msgstr "" +msgstr "'until' no t significat amb salt no local '%s'\n" #: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" -msgstr "" +msgstr "\t------[Intro] per continuar o q [Intro] per sortir------" #: debug.c:4186 msgid "q" -msgstr "" +msgstr "q" #: debug.c:5001 #, c-format @@ -1705,67 +1831,67 @@ msgstr "[\"%s\"] no est a la matriu `%s'" #: debug.c:5207 #, c-format msgid "sending output to stdout\n" -msgstr "" +msgstr "s'est enviant la sortida a la sortida estndard\n" #: debug.c:5247 msgid "invalid number" -msgstr "" +msgstr "nmero no vlid" #: debug.c:5381 #, c-format msgid "`%s' not allowed in current context; statement ignored" -msgstr "" +msgstr "`%s' no est perms al context actual; s'ignorar la declaraci" #: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" -msgstr "" +msgstr "`return' no est perms al context actual; s'ignorar la declaraci" #: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" -msgstr "" +msgstr "No hi ha un smbol `%s' al context actual" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "[ sense aparellar" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "classe no vlida de carcters" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" -msgstr "" +msgstr "la sintaxi de la classe de carcters s [[:espai:]], no [:espai:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "seqncia d'escapada \\ sense finalitzar" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Contingut no vlid de \\{\\}" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "L'expressi regular s massa gran" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "( sense aparellar" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" -msgstr "no s'ha especificat una sintaxis" +msgstr "no s'ha especificat una sintaxi" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr ") sense aparellar" #: eval.c:394 #, c-format msgid "unknown nodetype %d" -msgstr "tipo de node %d desconegut" +msgstr "tipus de node %d desconegut" #: eval.c:405 eval.c:419 #, c-format @@ -1775,7 +1901,7 @@ msgstr "opcode %d desconegut" #: eval.c:416 #, c-format msgid "opcode %s not an operator or keyword" -msgstr "" +msgstr "l'opcode %s no s un operador o una paraula clau" #: eval.c:472 msgid "buffer overflow in genflags2str" @@ -1789,7 +1915,7 @@ msgid "" "\n" msgstr "" "\n" -"\t# Pila de Crides a les Funcions:\n" +"\t# Pila de crida a les funcions:\n" "\n" #: eval.c:704 @@ -1803,7 +1929,7 @@ msgstr "`BINMODE' s una extensi de gawk" #: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" -msgstr "" +msgstr "El valor BINMODE `%s' no s vlid, es tractar com 3" #: eval.c:885 #, c-format @@ -1850,7 +1976,7 @@ msgstr "s'ha cridat a la funci `%s' amb ms arguments dels declarats" #: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" -msgstr "" +msgstr "unwind_stack: tipus no esperat `%s'" #: eval.c:1569 msgid "division by zero attempted in `/='" @@ -1863,7 +1989,7 @@ msgstr "s'ha intentat una divisi per zero en `%%='" #: ext.c:89 ext.c:171 msgid "extensions are not allowed in sandbox mode" -msgstr "" +msgstr "les extensions no estan permeses en mode de proves" #: ext.c:92 msgid "-l / @load are gawk extensions" @@ -1871,7 +1997,7 @@ msgstr "-l / @load sn extensions gawk" #: ext.c:95 msgid "load_ext: received NULL lib_name" -msgstr "" +msgstr "load_ext: s'ha rebut lib_name nul" #: ext.c:98 #, c-format @@ -1880,8 +2006,10 @@ msgstr "load_ext: no es pot obrir la llibreria `%s' (%s)\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" +"load_ext: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)\n" #: ext.c:110 #, c-format @@ -1892,6 +2020,7 @@ msgstr "load_ext: biblioteca `%s': no es pot cridar a la funci `%s' (%s)\n" #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" +"load_ext: la biblioteca `%s' amb rutina d'inicialitzaci `%s' ha fallat\n" #: ext.c:174 msgid "`extension' is a gawk extension" @@ -1899,7 +2028,7 @@ msgstr "`extension' s una extensi gawk" #: ext.c:177 msgid "extension: received NULL lib_name" -msgstr "" +msgstr "extension: s'ha rebut lib_name nul" #: ext.c:180 #, c-format @@ -1908,8 +2037,10 @@ msgstr "extension: no es pot obrir la biblioteca `%s' (%s)" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)" #: ext.c:190 #, c-format @@ -1918,12 +2049,12 @@ msgstr "extension: biblioteca `%s': no es pot cridar a la funci `%s' (%s)" #: ext.c:221 msgid "make_builtin: missing function name" -msgstr "" +msgstr "make_builtin: nom absent de funci" #: ext.c:236 #, c-format msgid "make_builtin: can't redefine function `%s'" -msgstr "" +msgstr "make_builtin: no es pot redefinir la funci `%s'" #: ext.c:240 #, c-format @@ -1938,16 +2069,16 @@ msgstr "make_builtin: nom de la funci `%s' definida prviament" #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "" +msgstr "make_builtin: no es pot usar el nom intern `%s' com a nom de funci" #: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" -msgstr "" +msgstr "make_builtin: recompte negatiu d'arguments per a la funci `%s'" #: ext.c:276 msgid "extension: missing function name" -msgstr "" +msgstr "extension: nom absent de funci" #: ext.c:279 ext.c:283 #, c-format @@ -1972,7 +2103,7 @@ msgstr "extension: nom de la funci `%s' definida prviament" #: ext.c:301 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "" +msgstr "extension: no es pot usar el nom intern `%s' com a nom de funci" #: ext.c:375 #, c-format @@ -1987,16 +2118,19 @@ msgstr "funci `%s': falta l'argument #%d" #: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" -msgstr "funci `%s': argument #%d: s'ha intentat usar una dada escalar `com a una matriu" +msgstr "" +"funci `%s': argument #%d: s'ha intentat usar una dada escalar com a una " +"matriu" #: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" +"funci `%s': argument #%d: s'ha intentat usar una matriu com a un escalar" #: ext.c:413 msgid "dynamic loading of library not supported" -msgstr "" +msgstr "no est suportada la crrega dinmica de la biblioteca" #: extension/filefuncs.c:159 msgid "chdir: called with incorrect number of arguments, expecting 1" @@ -2005,7 +2139,7 @@ msgstr "chdir: cridat amb un nombre incorrecte d'arguments, s'esperava 1" #: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" -msgstr "" +msgstr "stat: no s'ha pogut llegir l'enlla simblic `%s'" #: extension/filefuncs.c:472 msgid "stat: called with wrong number of arguments" @@ -2013,12 +2147,12 @@ msgstr "stat: cridat amb un nombre incorrecte d'arguments" #: extension/filefuncs.c:479 msgid "stat: bad parameters" -msgstr "stata: argumetns dolents" +msgstr "stata: arguments dolents" #: extension/filefuncs.c:533 #, c-format msgid "fts init: could not create variable %s" -msgstr "" +msgstr "fts init: no s'ha pogut crear la variable %s" #: extension/filefuncs.c:554 msgid "fts is not supported on this system" @@ -2026,28 +2160,28 @@ msgstr "fts no est suportat en aquest sistema" #: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" -msgstr "" +msgstr "fill_stat_element: no s'ha pogut crear la matriu" #: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" -msgstr "" +msgstr "fill_stat_element: no s'ha pogut establir l'element" #: extension/filefuncs.c:597 msgid "fill_path_element: could not set element" -msgstr "" +msgstr "fill_path_element: no s'ha pogut establir l'element" #: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" -msgstr "" +msgstr "fill_error_element: no s'ha pogut establir l'element" #: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" -msgstr "" +msgstr "fts-process: no s'ha pogut crear la matriu" #: extension/filefuncs.c:670 extension/filefuncs.c:717 #: extension/filefuncs.c:735 msgid "fts-process: could not set element" -msgstr "" +msgstr "fts-process: no s'ha pogut establir l'element" #: extension/filefuncs.c:784 msgid "fts: called with incorrect number of arguments, expecting 3" @@ -2067,15 +2201,15 @@ msgstr "fts: el tercer parmeter es dolent" #: extension/filefuncs.c:806 msgid "fts: could not flatten array\n" -msgstr "" +msgstr "fts: no s'ha pogut aplanar la matriu\n" #: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." -msgstr "" +msgstr "fts: s'ignorar l'indicador FTS_NOSTAT furtiu. T'he enxampat!" #: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" -msgstr "" +msgstr "fts: clear_array() ha fallat\n" #: extension/fnmatch.c:112 msgid "fnmatch: called with less than three arguments" @@ -2095,24 +2229,24 @@ msgstr "fnmatch: no s'ha pogut obtenir el segon argument" #: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" -msgstr "" +msgstr "fnmatch: no s'ha pogut obtenir el tercer argument" #: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" -msgstr "" +msgstr "fnmatch no est implementat en aquest sistema\n" #: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" -msgstr "" +msgstr "fnmatch init: no s'ha pogut afegir la variable FNM_NOMATCH" #: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" -msgstr "" +msgstr "fnmatch init: no s'ha pogut establir l'element de matriu %s" #: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" -msgstr "" +msgstr "fnmatch init: no s'ha pogut installar la matriu FNM" #: extension/fork.c:81 msgid "fork: called with too many arguments" @@ -2120,7 +2254,7 @@ msgstr "fork: s'ha cridat amb massa arguments" #: extension/fork.c:94 msgid "fork: PROCINFO is not an array!" -msgstr "" +msgstr "fork: PROCINFO no s una matriu!" #: extension/fork.c:118 msgid "waitpid: called with too many arguments" @@ -2136,21 +2270,25 @@ msgstr "wait: s'ha cridat amb massa arguments" #: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" -msgstr "" +msgstr "inplace_begin: l'edici in situ ja est activa" #: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" -msgstr "" +msgstr "inplace_begin: s'esperaven 2 arguments per s'ha cridat amb %d" #: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" +"inplace_begin: no es pot obtenir el primer argument com nom de fitxer cadena " +"de carcters" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" +"inplace_begin: s'est deshabilitant l'edici in situ per al nom de fitxer no " +"vlid `%s'" #: extension/inplace.c:151 #, c-format @@ -2160,12 +2298,12 @@ msgstr "implace_begin: No es pot obrir `%s' (%s)" #: extension/inplace.c:158 #, c-format msgid "inplace_begin: `%s' is not a regular file" -msgstr "" +msgstr "inplace_begin: `%s' no s un fitxer regular" #: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" -msgstr "" +msgstr "inplace_begin: mkstemp(`%s') ha fallat (%s)" #: extension/inplace.c:178 #, c-format @@ -2175,12 +2313,12 @@ msgstr "inplace_begin: ha fallat chmod (%s)" #: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" -msgstr "" +msgstr "inplace_begin: dup(stdout) ha fallat(%s)" #: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" -msgstr "" +msgstr "inplace_begin: dup2(%d, stdout) ha fallat (%s)" #: extension/inplace.c:191 #, c-format @@ -2190,15 +2328,17 @@ msgstr "inplace begin: close(%d) ha fallat (%s)" #: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" +"inplace_end: no es pot obtenir el primer argument com un nom de fitxer " +"cadena de carcters" #: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" -msgstr "" +msgstr "inplace_end: no est activa l'edici in situ" #: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" -msgstr "" +msgstr "inplace_end: dup2(%d, stdout) ha fallat (%s)" #: extension/inplace.c:226 #, c-format @@ -2208,7 +2348,7 @@ msgstr "inplace_end: close(%d) ha fallat (%s)" #: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" -msgstr "" +msgstr "inplace_end: fsetpos(stdout) ha fallat (%s)" #: extension/inplace.c:243 #, c-format @@ -2244,16 +2384,16 @@ msgstr "chr: s'ha cridat amb cap argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr: s'ha cridat amb argument(s) no apropiat(s)" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" -msgstr "" +msgstr "dir_take_control_of: opendir/fdopendir ha fallat: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: s'ha cridat amb massa arguments" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: s'ha cridat amb cap argument" @@ -2274,12 +2414,12 @@ msgstr "do_writea: l'argument 1 no s una matriu\n" #: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" -msgstr "" +msgstr "write_array: no s'ha pogut aplanar la matriu\n" #: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" -msgstr "" +msgstr "write_array: no s'ha pogut alliberar la matriu aplanada\n" #: extension/rwarray.c:280 msgid "reada: called with too many arguments" @@ -2298,36 +2438,36 @@ msgstr "do_reada: l'argument 1 no s una matriu\n" #: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" -msgstr "" +msgstr "do_reada: clear_array ha fallat\n" #: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" -msgstr "" +msgstr "read_array: set_array_element ha fallat\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: s'estan ignorant els arguments" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" -msgstr "" +msgstr "gettimeofday: no est suportat en aquesta plataforma" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: s'ha cridat amb massa arguments" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: no hi ha un argument numric requerit" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: l'argument s negatiu" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" -msgstr "" +msgstr "sleep: no est suportat en aquesta plataforma" #: field.c:345 msgid "NF set to negative value" @@ -2348,14 +2488,17 @@ msgstr "split: el segon argument no s una matriu" #: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "" +"split: no es pot usar una submatriu de segon argument per a quart argument" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" +"split: no es pot usar una submatriu de segon argument per a quart argument" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" +"split: no est pot usar una submatriu de quart argument per a segon argument" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" @@ -2376,14 +2519,17 @@ msgstr "patsplit: el segon argument no s una matriu" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" +"patsplit: no es pot usar la mateixa matriu per a segon i quart argument" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" +"patsplit: no es pot usar una submatriu de segon argument per a quart argument" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" +"patsplit: no es pot usar una submatriu de quart argument per a segon argument" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2392,7 +2538,7 @@ msgstr "`FIELDWIDTHS' s una extensi de gawk" #: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" -msgstr "" +msgstr "valor FIELDWIDTHS no vlid, a prop de `%s'" #: field.c:1270 msgid "null string for `FS' is a gawk extension" @@ -2408,33 +2554,33 @@ msgstr "`FPAT' s una extensi gawk" #: gawkapi.c:146 msgid "awk_value_to_node: received null retval" -msgstr "" +msgstr "awk_value_to_node: s'ha rebut retval nul" #: gawkapi.c:384 msgid "node_to_awk_value: received null node" -msgstr "" +msgstr "node_to_awk_value: s'ha rebut un node nul" #: gawkapi.c:387 msgid "node_to_awk_value: received null val" -msgstr "" +msgstr "node_to_awk_value: s'ha rebut un valor nul" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" -msgstr "" +msgstr "remove_element: s'ha rebut una matriu nulla" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" -msgstr "" +msgstr "remove_element: s'ha rebut un subndex nul" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" -msgstr "" +msgstr "api_flatten_array: no s'ha pogut convertir l'ndex %d\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" -msgstr "" +msgstr "api_flatten_array: no s'ha pogut convertir el valor %d\n" #: getopt.c:604 getopt.c:633 #, c-format @@ -2494,7 +2640,7 @@ msgstr "%s: l'opci `-W %s' requereix un argument\n" #: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" -msgstr "" +msgstr "l'argument `%s' de lnia d'ordres s un directori: s'ignorar" #: io.c:395 io.c:513 #, c-format @@ -2508,7 +2654,7 @@ msgstr "la finalitzaci del descriptor fd %d (`%s') ha fallat (%s)" #: io.c:716 msgid "redirection not allowed in sandbox mode" -msgstr "" +msgstr "no est permeten redireccions en mode de proves" #: io.c:750 #, c-format @@ -2523,7 +2669,9 @@ msgstr "l'expressi per a la redirecci `%s' t un valor de cadena nulla" #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "el fitxer `%s' per a la redirecci `%s' pot ser resultat d'una expressi lgica" +msgstr "" +"el fitxer `%s' per a la redirecci `%s' pot ser resultat d'una expressi " +"lgica" #: io.c:809 #, c-format @@ -2543,7 +2691,9 @@ msgstr "no es pot obrir la canonada `%s' per a l'entrada (%s)" #: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" -msgstr "no es pot obrir una canonada bidireccional `%s' per a les entrades/eixides (%s)" +msgstr "" +"no es pot obrir una canonada bidireccional `%s' per a les entrades/eixides " +"(%s)" #: io.c:986 #, c-format @@ -2556,8 +2706,11 @@ msgid "can't redirect to `%s' (%s)" msgstr "no es pot redirigir cap a `%s' (%s)" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "s'ha arribat al lmit del sistema per a fitxers oberts: es comenar a multiplexar els descriptors de fitxer" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"s'ha arribat al lmit del sistema per a fitxers oberts: es comenar a " +"multiplexar els descriptors de fitxer" #: io.c:1056 #, c-format @@ -2584,17 +2737,18 @@ msgstr "finalitzaci d'una redirecci que no s'ha obert" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close: la redirecci `%s' no s'obre amb `|&', s'ignora el segon argument" +msgstr "" +"close: la redirecci `%s' no s'obre amb `|&', s'ignora el segon argument" #: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" -msgstr "estaus de falla (%d) en la finalitzaci de la canonada `%s' (%s)" +msgstr "estat de fallada (%d) en la finalitzaci de la canonada `%s' (%s)" #: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" -msgstr "estatus de falla (%d) en la finalitzaci del fitxer `%s' (%s)" +msgstr "estat de falla (%d) en la finalitzaci del fitxer `%s' (%s)" #: io.c:1245 #, c-format @@ -2619,12 +2773,12 @@ msgstr "no s'aporta la finalitzaci explcita del fitxer `%s'" #: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" -msgstr "error a l'escriure en l'eixida estndard (%s)" +msgstr "error en escriure a la sortida estndard (%s)" #: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" -msgstr "error a l'escriure en l'eixida d'error estndard (%s)" +msgstr "error en escriure a la sortida d'error estndard (%s)" #: io.c:1297 #, c-format @@ -2639,17 +2793,17 @@ msgstr "la neteja de la canonada per al co-procs de `%sx' ha fallat (%s)." #: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." -msgstr "la neteja del fitxer `%sx' ha fallat (%s)." +msgstr "la neteja del fitxer `%s' ha fallat (%s)." #: io.c:1420 -#, fuzzy, c-format +#, c-format msgid "local port %s invalid in `/inet'" -msgstr "port local no vlid en `%s'" +msgstr "port local %s no vlid a `/inet'" #: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" -msgstr "" +msgstr "amfitri remot i informaci de port (%s, %s) no vlids" #: io.c:1590 #, c-format @@ -2679,44 +2833,54 @@ msgid "could not open `%s', mode `%s'" msgstr "no es pot obrir `%s', mode `%s'" #: io.c:1917 -#, fuzzy, c-format +#, c-format msgid "close of master pty failed (%s)" -msgstr "ha fallat la finalitzaci de la canonada (%s)" +msgstr "ha fallat el tancament del pty mestre (%s)" #: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" -msgstr "ha fallat la finalitzaci de l'eixida estndard en els processos fills (%s)" +msgstr "" +"ha fallat la finalitzaci de la sortida estndard en els processos fills (%s)" #: io.c:1922 -#, fuzzy, c-format +#, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "ha fallat la redirecci cap a l'eixida estndard dels processos fills (dup: %s)" +msgstr "" +"ha fallat el trasllat del pty esclau cap a l'eixida estndard dels processos " +"fills (dup: %s)" #: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" -msgstr "ha fallat la finalitzaci de l'entrada estndard en els processos fills (%s)" +msgstr "" +"ha fallat la finalitzaci de l'entrada estndard en els processos fills (%s)" #: io.c:1927 -#, fuzzy, c-format +#, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "ha fallat la redirecci cap a l'entrada estndard dels processos fills (dup: %s)" +msgstr "" +"ha fallat el trasllat del pty esclau cap a l'entrada estndard dels " +"processos fills (dup: %s)" #: io.c:1929 io.c:1951 -#, fuzzy, c-format +#, c-format msgid "close of slave pty failed (%s)" -msgstr "ha fallat la finalitzaci de la canonada (%s)" +msgstr "ha fallat el tancament del pty esclau (%s)" #: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" -msgstr "ha fallat la redirecci cap a l'eixida estndard dels processos fills (dup: %s)" +msgstr "" +"ha fallat la redirecci cap a l'eixida estndard dels processos fills (dup: " +"%s)" #: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" -msgstr "ha fallat la redirecci cap a l'entrada estndard dels processos fills (dup: %s)" +msgstr "" +"ha fallat la redirecci cap a l'entrada estndard dels processos fills (dup: " +"%s)" #: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" @@ -2747,45 +2911,54 @@ msgstr "no es pot crear el procs fill per a `%s' (fork: %s)" #: io.c:2790 msgid "register_input_parser: received NULL pointer" -msgstr "" +msgstr "register_input_parser: s'ha rebut un punter nul" #: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" +"l'analitzador d'entrades `%s' est en conflicte amb analitzador d'entrades `" +"%s' installat prviament" #: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" -msgstr "" +msgstr "l'analitzador d'entrada `%s' no ha pogut obrir `%s'" #: io.c:2845 msgid "register_output_wrapper: received NULL pointer" -msgstr "" +msgstr "register_output_wrapper: s'ha rebut un punter nul" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" +"l'embolcall de sortida `%s' est en conflicte amb l'embolcall de sortida `" +"%s' installat prviament" #: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" -msgstr "" +msgstr "l'embolcall de sortida `%s' no ha pogut obrir `%s'" #: io.c:2901 msgid "register_output_processor: received NULL pointer" -msgstr "" +msgstr "register_output_processor: s'ha rebut un punter nul" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" msgstr "" +"el processsador de dues vies `%s' est en conflicte amb el processador de " +"dues vies `%s' installat prviament" #: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" -msgstr "" +msgstr "el processador de dues vies `%s' no ha pogut obrir `%s'" #: io.c:3064 #, c-format @@ -2794,21 +2967,19 @@ msgstr "el fitxer de dades `%s' est buit" #: io.c:3106 io.c:3114 msgid "could not allocate more input memory" -msgstr "" +msgstr "no s'ha pogut assignar ms memria d'entrada" #: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicarcter de `RS' s una extensi de gawk" #: io.c:3771 -#, fuzzy msgid "IPv6 communication is not supported" -msgstr "les comunicacions TCP/IP no estan suportades" +msgstr "la comunicaci IPv6 no est suportada" #: main.c:405 -#, fuzzy msgid "empty argument to `-e/--source' ignored" -msgstr "s'igonar l'argument buit per a l'opci `--source'" +msgstr "s'ignonar l'argument buit de `-e/--source'" #: main.c:495 #, c-format @@ -2822,7 +2993,8 @@ msgstr "%s: l'opci requereix un argument -- %c\n" #: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "la variable d'entorn `POSIXLY_CORRECT' est establerta: usant `--posix'" +msgstr "" +"la variable d'entorn `POSIXLY_CORRECT' est establerta: usant `--posix'" #: main.c:568 msgid "`--posix' overrides `--traditional'" @@ -2833,27 +3005,26 @@ msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix' i `--traditional' solapen a `--non-decimal-data'" #: main.c:583 -#, fuzzy, c-format +#, c-format msgid "running %s setuid root may be a security problem" msgstr "executar %s com a setuid root pot ser un problema de seguretat" #: main.c:588 -#, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" -msgstr "`--posix' solapa a `--traditional'" +msgstr "`--posix' anulla a `--characters-as-bytes'" #: main.c:647 -#, fuzzy, c-format +#, c-format msgid "can't set binary mode on stdin (%s)" -msgstr "no es pot establir el mode en l'entrada estndard (%s)" +msgstr "no es pot establir el mode binari en l'entrada estndard (%s)" #: main.c:650 -#, fuzzy, c-format +#, c-format msgid "can't set binary mode on stdout (%s)" msgstr "no es pot establir el mode en l'eixida estndard (%s)" #: main.c:652 -#, fuzzy, c-format +#, c-format msgid "can't set binary mode on stderr (%s)" msgstr "no es pot establir el mode en l'eixida d'error estndard (%s)" @@ -2872,9 +3043,8 @@ msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "s: %s [opcions d'estil POSIX o GNU] [--] %cprograma%c fitxer ...\n" #: main.c:806 -#, fuzzy msgid "POSIX options:\t\tGNU long options: (standard)\n" -msgstr "Opcions POSIX:\t\tOpcions llargues GNU:\n" +msgstr "Opcions POSIX:\t\tOpcions llargues GNU: (estndard)\n" #: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" @@ -2889,126 +3059,108 @@ msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" #: main.c:810 -#, fuzzy msgid "Short options:\t\tGNU long options: (extensions)\n" -msgstr "Opcions POSIX:\t\tOpcions llargues GNU:\n" +msgstr "Opcions curtes:\t\tOpcions llargues GNU: (extensions)\n" #: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" -msgstr "" +msgstr "\t-b\t\t\t--characters-as-bytes\n" #: main.c:812 -#, fuzzy msgid "\t-c\t\t\t--traditional\n" -msgstr "\t-W traditional\t\t--traditional\n" +msgstr "\t-c\t\t\t--traditional\n" #: main.c:813 -#, fuzzy msgid "\t-C\t\t\t--copyright\n" -msgstr "\t-W copyright\t\t--copyright\n" +msgstr "\t-C\t\t\t--copyright\n" #: main.c:814 -#, fuzzy msgid "\t-d[file]\t\t--dump-variables[=file]\n" -msgstr "\t-W dump-variables[=fitxer] --dump-variables[=fitxer]\n" +msgstr "\t-d[file]\t\t--dump-variables[=file]\n" #: main.c:815 -#, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" -msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n" +msgstr "\t-D[file]\t\t--debug[=file]\n" #: main.c:816 -#, fuzzy msgid "\t-e 'program-text'\t--source='program-text'\n" -msgstr "\t-W source=text_prog\t--source=text_prog\n" +msgstr "\t-e 'program-text'\t--source='program-text'\n" #: main.c:817 -#, fuzzy msgid "\t-E file\t\t\t--exec=file\n" -msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n" +msgstr "\t-E file\t\t\t--exec=file\n" #: main.c:818 -#, fuzzy msgid "\t-g\t\t\t--gen-pot\n" -msgstr "\t-W gen-po\t\t--gen-po\n" +msgstr "\t-g\t\t\t--gen-pot\n" #: main.c:819 -#, fuzzy msgid "\t-h\t\t\t--help\n" -msgstr "\t-W help\t\t\t--help\n" +msgstr "\t-h\t\t\t--help\n" #: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" -msgstr "" +msgstr "\t-i includefile\t\t--include=fitxer a incloure\n" #: main.c:821 msgid "\t-l library\t\t--load=library\n" -msgstr "" +msgstr "\t-l library\t\t--load=biblioteca\n" #: main.c:822 -#, fuzzy msgid "\t-L [fatal]\t\t--lint[=fatal]\n" -msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n" +msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" #: main.c:823 -#, fuzzy msgid "\t-n\t\t\t--non-decimal-data\n" -msgstr "\t-W non-decimal-data\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" #: main.c:824 msgid "\t-M\t\t\t--bignum\n" -msgstr "" +msgstr "\t-M\t\t\t--bignum\n" #: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" -msgstr "" +msgstr "\t-N\t\t\t--use-lc-numeric\n" #: main.c:826 -#, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" -msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n" +msgstr "\t-o[file]\t\t--pretty-print[=file]\n" #: main.c:827 msgid "\t-O\t\t\t--optimize\n" -msgstr "" +msgstr "\t-O\t\t\t--optimize\n" #: main.c:828 -#, fuzzy msgid "\t-p[file]\t\t--profile[=file]\n" -msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n" +msgstr "\t-p[file]\t\t--profile[=file]\n" #: main.c:829 -#, fuzzy msgid "\t-P\t\t\t--posix\n" -msgstr "\t-W posix\t\t--posix\n" +msgstr "\t-P\t\t\t--posix\n" #: main.c:830 -#, fuzzy msgid "\t-r\t\t\t--re-interval\n" -msgstr "\t-W re-interval\t\t--re-interval\n" +msgstr "\t-r\t\t\t--re-interval\n" #: main.c:831 msgid "\t-S\t\t\t--sandbox\n" -msgstr "" +msgstr "\t-S\t\t\t--sandbox\n" #: main.c:832 -#, fuzzy msgid "\t-t\t\t\t--lint-old\n" -msgstr "\t-W lint-old\t\t--lint-old\n" +msgstr "\t-t\t\t\t--lint-old\n" #: main.c:833 -#, fuzzy msgid "\t-V\t\t\t--version\n" -msgstr "\t-W version\t\t--version\n" +msgstr "\t-V\t\t\t--version\n" #: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" #: main.c:838 -#, fuzzy msgid "\t-Y\t\t--parsedebug\n" -msgstr "\t-W parsedebug\t\t--parsedebug\n" +msgstr "\t-Y\t\t--parsedebug\n" #. TRANSLATORS: --help output 5 (end) #. TRANSLATORS: the placeholder indicates the bug-reporting address @@ -3016,13 +3168,16 @@ msgstr "\t-W parsedebug\t\t--parsedebug\n" #. address for translation bugs. #. no-wrap #: main.c:847 -#, fuzzy msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" "section `Reporting Problems and Bugs' in the printed version.\n" "\n" -msgstr "a la secci `Reporting Problems and Bugs' de la versi impresa.\n" +msgstr "" +"\n" +"Per informar d'errors, vegeu el node `Bugs' a `gawk.info', que\n" +"s la secci `Informant sobre problemes i errors' a la versi impresa.\n" +"Informeu dels errors de traducci a <ca@li.org>\n" #: main.c:851 msgid "" @@ -3030,6 +3185,9 @@ msgid "" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" +"gawk s un llenguatge d'anlisi i processament de patrons.\n" +"De forma predeterminada llegeix l'entrada estndard i escriu a la sortida " +"estndar.\n" #: main.c:855 msgid "" @@ -3037,9 +3195,12 @@ msgid "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" +"Exemples:\n" +"\tgawk '{ sum += $1 }; END { print sum }' fitxer\n" +"\tgawk -F: '{ print $1 }' /etc/passwd\n" #: main.c:880 -#, fuzzy, c-format +#, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" "\n" @@ -3053,7 +3214,7 @@ msgstr "" "\n" "Aquest programa s programari lliure; pot redistribuir-se i/o modificar-se\n" "sota els termes de la Llicncia Pblica General de GNU tal i como est\n" -"publicada per la Free Software Foundation; ja siga en la versi 2 de la\n" +"publicada per la Free Software Foundation; ja siga en la versi 3 de la\n" "Llicncia, o (a la vostra elecci) qualsevol versi posterior.\n" "\n" @@ -3072,14 +3233,12 @@ msgstr "" "\n" #: main.c:894 -#, fuzzy msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -"Junt amb aquest programa haureu d'haber rebut una cpia de la Llicncia\n" -"Pblica General de GNU; si no s aix, escriviu a la Free Software\n" -"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" +"Junt amb aquest programa haureu d'haver rebut una cpia de la Llicncia\n" +"Pblica General de GNU; si no s aix, vegeu http://www.gnu.org/licenses/.\n" #: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" @@ -3088,7 +3247,7 @@ msgstr "-Ft no permet inicialitzar FS a un tabulador en la versi POSIX de awk" #: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" -msgstr "" +msgstr "valor desconegut per a l'especificaci de camp: %d\n" #: main.c:1306 #, c-format @@ -3096,26 +3255,29 @@ msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" +"%s: `%s' l'argument per a `-v' no est en forma `var=valor'\n" +"\n" #: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" -msgstr "" +msgstr "`%s' no s nom legal de variable" #: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" -msgstr "" +msgstr "`%s' no s un valor de variable, s'esperava fitxer `%s=%s'" #: main.c:1339 -#, fuzzy, c-format +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "no es pot usar el nom de la funci `%s' com a variable o matriu" +msgstr "" +"no es pot usar el nom de la funci integrada `%s' com a nom de variable" #: main.c:1344 -#, fuzzy, c-format +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "no es pot usar el nom de la funci `%s' com a variable o matriu" +msgstr "no es pot usar el nom de la funci interna `%s' com nom de variable" #: main.c:1397 msgid "floating point exception" @@ -3126,14 +3288,12 @@ msgid "fatal error: internal error" msgstr "error fatal: error intern" #: main.c:1419 -#, fuzzy msgid "fatal error: internal error: segfault" -msgstr "error fatal: error intern" +msgstr "error fatal: error intern: segfault" #: main.c:1431 -#, fuzzy msgid "fatal error: internal error: stack overflow" -msgstr "error fatal: error intern" +msgstr "error fatal: error intern: sobreeiximent de pila" #: main.c:1490 #, c-format @@ -3148,56 +3308,52 @@ msgstr "no es pot pre-obrir /dev/null per al descriptor fd %d" #: mpfr.c:550 #, c-format msgid "PREC value `%.*s' is invalid" -msgstr "" +msgstr "Valor PREC `%.*s' no s vlid" #: mpfr.c:608 #, c-format msgid "RNDMODE value `%.*s' is invalid" -msgstr "" +msgstr "Valor RNDMODE `%.*s' no s vlid" #: mpfr.c:698 -#, fuzzy, c-format +#, c-format msgid "%s: received non-numeric argument" -msgstr "cos: s'ha rebut un argument que no s numric" +msgstr "%s: s'ha rebut un argument que no s numric" #: mpfr.c:800 -#, fuzzy msgid "compl(%Rg): negative value will give strange results" -msgstr "compl(%lf): el valor negatiu donar resultats estranys" +msgstr "compl(%Rg): el valor negatiu donar resultats estranys" #: mpfr.c:804 -#, fuzzy msgid "comp(%Rg): fractional value will be truncated" -msgstr "compl(%lf): el valor fraccionari ser truncat" +msgstr "compl(%Rg): el valor fraccionari ser truncat" #: mpfr.c:816 -#, fuzzy, c-format +#, c-format msgid "cmpl(%Zd): negative values will give strange results" -msgstr "compl(%lf): el valor negatiu donar resultats estranys" +msgstr "cmpl(%Zd): els valors negatius donaran resultats estranys" #: mpfr.c:835 -#, fuzzy, c-format +#, c-format msgid "%s: received non-numeric argument #%d" -msgstr "cos: s'ha rebut un argument que no s numric" +msgstr "%s: s'ha rebut un argument no numric #%d" #: mpfr.c:845 msgid "%s: argument #%d has invalid value %Rg, using 0" -msgstr "" +msgstr "%s: l'argument #%d t valor no vlid %Rg, s'usar 0" #: mpfr.c:857 -#, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" -msgstr "and(%lf, %lf): els valors negatius donaran resultats estranys" +msgstr "%s: l'argument #%d amb valor negatiu %Rg donar resultats estranys" #: mpfr.c:863 -#, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" -msgstr "and(%lf, %lf): els valors fraccionaris seran truncats" +msgstr "%s: l'argument #%d amb valor fraccional %Rg ser truncat" #: mpfr.c:878 -#, fuzzy, c-format +#, c-format msgid "%s: argument #%d negative value %Zd will give strange results" -msgstr "and(%lf, %lf): els valors negatius donaran resultats estranys" +msgstr "%s: l'argument #%d amb valor negatiu %Zd donar resultats estranys" #: msg.c:68 #, c-format @@ -3209,9 +3365,9 @@ msgid "backslash at end of string" msgstr "barra invertida al final de la cadena" #: node.c:500 -#, fuzzy, c-format +#, c-format msgid "old awk does not support the `\\%c' escape sequence" -msgstr "l'antic awk no suporta l'operador `**='" +msgstr "l'antic awk no dna suport a la seqencia d'escapada `\\%c'" #: node.c:551 msgid "POSIX does not allow `\\x' escapes" @@ -3223,8 +3379,12 @@ msgstr "no hi ha dgits hexadecimals en la seqncia d'escapada `\\x'" #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" msgstr "" +"probablement no s'han interpretat els carcters hex escape \\x%.*s of %d de " +"la manera que esperveu" #: node.c:594 #, c-format @@ -3232,18 +3392,23 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la seqncia d'escapada `\\%c' s tractada com a una simple `%c'" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." msgstr "" +"S'han detectat dades multibyte no vlides. Pot haver-hi una discordana " +"entre les vostres dades i la vostra configuraci local" #: posix/gawkmisc.c:177 -#, fuzzy, c-format +#, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" -msgstr "%s %s `%s': no es pot inicialitzar close-on-exec: (fcntl: %s)" +msgstr "" +"%s %s `%s': no s'han pogut obtenir els indicadors fd: (fcntl F_GETFD: %s)" #: posix/gawkmisc.c:189 -#, fuzzy, c-format +#, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" -msgstr "%s %s `%s': no es pot inicialitzar close-on-exec: (fcntl: %s)" +msgstr "%s %s `%s': no s'ha pogut establir close-on-exec: (fcntl F_SETFD: %s)" #: profile.c:71 #, c-format @@ -3255,12 +3420,12 @@ msgid "sending profile to standard error" msgstr "enviant el perfil a l'eixida d'error estndard" #: profile.c:193 -#, fuzzy, c-format +#, c-format msgid "" "\t# %s block(s)\n" "\n" msgstr "" -"\t# Bloc(s) FINAL\n" +"\t# %s bloc(s)\n" "\n" #: profile.c:198 @@ -3273,14 +3438,13 @@ msgstr "" "\n" #: profile.c:272 -#, fuzzy, c-format +#, c-format msgid "internal error: %s with null vname" -msgstr "error intern: Node_var amb vname nul" +msgstr "error intern: %s amb vname nul" #: profile.c:537 -#, fuzzy msgid "internal error: builtin with null fname" -msgstr "error intern: Node_var amb vname nul" +msgstr "error intern: funci integrada amb fname nul" #: profile.c:949 #, c-format @@ -3288,6 +3452,8 @@ msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" +"\t# Extensions carregades (-l i/o @load)\n" +"\n" #: profile.c:972 #, c-format @@ -3306,12 +3472,12 @@ msgstr "" #: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" -msgstr "" +msgstr "redir2str: tipus desconegut de redireccionament %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "" +msgstr "el component regexp `%.*s' probablement hauria de ser `[%.*s]'" #: regcomp.c:131 msgid "Success" @@ -3339,7 +3505,7 @@ msgstr "Barra invertida extra al final" #: regcomp.c:149 msgid "Invalid back reference" -msgstr "Referncia cap enradera no vlida" +msgstr "Referncia cap endarrere no vlida" #: regcomp.c:152 msgid "Unmatched [ or [^" @@ -3379,7 +3545,7 @@ msgstr "No hi ha una expressi regular prvia" #: symbol.c:741 msgid "can not pop main context" -msgstr "" +msgstr "no es pot mostrar el context principal" #~ msgid "reference to uninitialized element `%s[\"%s\"]'" #~ msgstr "referncia a un element sense valor inicial `%s[\"%s\"]'" @@ -3449,7 +3615,8 @@ msgstr "" #~ "To report bugs, see node `Bugs' in `gawk.info', which is\n" #~ msgstr "" #~ "\n" -#~ "Per a informar d'errors, consulteu el node Bugs' en gawk.info', que est\n" +#~ "Per a informar d'errors, consulteu el node Bugs' en gawk.info', que " +#~ "est\n" #~ msgid "invalid syntax in name `%s' for variable assignment" #~ msgstr "sintaxi no vlida en el nom %s' per a l'asignaci de la variable" @@ -3473,7 +3640,8 @@ msgstr "" #~ msgstr "%s s una funci, l'assignaci no s permesa" #~ msgid "assignment is not allowed to result of builtin function" -#~ msgstr "no es permet l'assignaci per a obtindre un resultat d'una funci interna" +#~ msgstr "" +#~ "no es permet l'assignaci per a obtindre un resultat d'una funci interna" #~ msgid "" #~ "\t# BEGIN block(s)\n" @@ -3518,8 +3686,11 @@ msgstr "" #~ msgid "field %d in FIELDWIDTHS, must be > 0" #~ msgstr "el camp %d en FIELDWIDTHS, hauria de ser > 0" -#~ msgid "for loop: array `%s' changed size from %d to %d during loop execution" -#~ msgstr "bucle for: la matriu %s ha canviat de mida de %d a %d durant l'execuci del bucle" +#~ msgid "" +#~ "for loop: array `%s' changed size from %d to %d during loop execution" +#~ msgstr "" +#~ "bucle for: la matriu %s ha canviat de mida de %d a %d durant l'execuci " +#~ "del bucle" #~ msgid "`break' outside a loop is not portable" #~ msgstr "break a fora d'un bucle no s portable" @@ -3545,8 +3716,12 @@ msgstr "" #~ msgid "assignment used in conditional context" #~ msgstr "assignaci usada en un context condicional" -#~ msgid "concatenation: side effects in one expression have changed the length of another!" -#~ msgstr "concatenaci: els efectes colaterals en una expressi han canviat la longitud d'una altra!" +#~ msgid "" +#~ "concatenation: side effects in one expression have changed the length of " +#~ "another!" +#~ msgstr "" +#~ "concatenaci: els efectes colaterals en una expressi han canviat la " +#~ "longitud d'una altra!" #~ msgid "function %s called\n" #~ msgstr "s'ha cridat a la funci %s\n" @@ -3558,7 +3733,9 @@ msgstr "" #~ msgstr "tipus d'arbre %s no vlid dintre de redirect()" #~ msgid "can't open two way socket `%s' for input/output (%s)" -#~ msgstr "no es pot obrir un socket bidireccional %s per a les entrades/eixides (%s)" +#~ msgstr "" +#~ "no es pot obrir un socket bidireccional %s per a les entrades/eixides " +#~ "(%s)" #~ msgid "/inet/raw client not ready yet, sorry" #~ msgstr "el client /inet/raw encara no est a punt, ho sento" Binary files differ@@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2012-02-06 10:37+0100\n" "Last-Translator: Keld Simonsen <keld@keldix.com>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" @@ -21,89 +21,89 @@ msgstr "" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "fra %s" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "forsg p at bruge en skalar som array" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "forsg p at bruge skalarparameteren '%s' som et array" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "forsg p at bruge skalar '%s' som et array" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "forsg p at bruge array '%s' i skalarsammenhng" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "forsg p at bruge skalaren '%s[\"%.*s\"]' som array" -#: array.c:773 +#: array.c:776 #, fuzzy msgid "adump: first argument not an array" msgstr "adump: argument er ikke et array" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "asort: andet argument er ikke et array" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "asorti: andet argument er ikke et array" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "asort: frste argument er ikke et array" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "asorti: frste argument er ikke et array" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: kan ikke bruge et underarray af frste argument for andet argument" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: kan ikke bruge et underarray af frste argument for andet argument" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: kan ikke bruge et underarray af andet argument for frste argument" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: kan ikke bruge et underarray af andet argument for frste argument" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' er ugyldigt som funktionsnavn" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" @@ -145,11 +145,11 @@ msgstr "dublet case-vrdier i switch-krop %s" msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' uden for en lkke eller switch er ikke tilladt" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "'continue' uden for en lkke er ikke tilladt" @@ -241,272 +241,272 @@ msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald" msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "advarsel: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan ikke bne kildefilen '%s' for lsning (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan ikke bne kildefilen '%s' for lsning (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "ukendt rsag" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2385 +#: awkgram.y:2409 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2470 +#: awkgram.y:2494 #, fuzzy msgid "@load is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2476 +#: awkgram.y:2500 #, fuzzy msgid "empty filename after @load" msgstr "tomt filnavn efter @include" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "tom programtekst p kommandolinjen" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan ikke lse kildefilen '%s' (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "uafsluttet regulrt udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regex-ndringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regex-ndringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "uafsluttet regulrt udtryk" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "uafsluttet regulrt udtryk i slutningen af filen" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "brug af '\\ #...' for linjefortsttelse er ikke portabelt" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "sidste tegn p linjen er ikke en omvendt skrstreg" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillader ikke operatoren '**='" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "gamle versioner af awk understtter ikke operatoren '**='" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "gamle versioner af awk understtter ikke operatoren '**'" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "operatoren '^=' understttes ikke i gamle versioner af awk" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "operatoren '^' understttes ikke i gamle versioner af awk" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "'%s' understttes ikke i gamle versioner af awk" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: bogstavelig streng som sidste argument til erstatning har ingen effekt" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argument er ikke et ndringsbart objekt" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: tredje argument er en gawk-udvidelse" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:3992 +#: awkgram.y:4016 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "indeks: andet argument er ikke en streng" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunne ikke bne '%s' for skrivning (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "der var skyggede variable." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funktionen '%s': kan ikke bruge specialvariabel '%s' som en " "funktionsparameter" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant regulrt udtryk for parameter %d giver en boolesk vrdi" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -515,232 +515,242 @@ msgstr "" "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "forsgte at dividere med nul" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "forsgte at dividere med nul i '%%'" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" + +#: awkgram.y:5052 +#, fuzzy, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "%d er et ugyldigt antal argumenter for %s" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s til '%s' mislykkedes (%s)" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "standard ud" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: fik et ikke-numerisk argument" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: kan ikke rense: datakanalen '%s' bnet for lsning, ikke skrivning" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "fflush: kan ikke rense: filen '%s' bnet for lsning, ikke skrivning" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: '%s' er ikke en ben fil, datakanal eller ko-proces" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "indeks: frste argument er ikke en streng" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "indeks: andet argument er ikke en streng" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "int: fik et ikke-numerisk argument" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "length: fik et array-argument" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' er en gawk-udvidelse" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "length: fik et argument som ikke er en streng" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "log: fik et ikke-numerisk argument" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "log: fik et negativt argument %g" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: skal bruge 'count$' p alle formater eller ikke nogen" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "feltbredde ignoreret for '%%'-angivelse" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "prcision ignoreret for '%%'-angivelse" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "feltbredde og prcision ignoreret for '%%'-angivelse" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: '$' tillades ikke i awk-formater" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argumentantallet med '$' skal vre > 0" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fatal: argumentantallet %ld er strre end antal givne argumenter" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: '$' tillades ikke efter et punktum i formatet" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: intet '$' angivet for bredde eller prcision af positionsangivet felt" -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' er meningslst i awk-formater, ignoreret" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: 'l' tillades ikke i POSIX awk-formater" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' er meningslst i awk-formater, ignoreret" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' er meningslst i awk-formater, ignoreret" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: vrdi %g er uden for omrde for '%%%c'-format" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: for f argumenter til formatstrengen" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ sluttede her" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifikation har intet kommandobogstav" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" -#: builtin.c:1610 +#: builtin.c:1634 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fik ikke-numerisk argument" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lngden %g er ikke >= 1" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lngden %g er ikke >= 0" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lngden %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: lngden %g for stor til strengindeksering, trunkerer til %g" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindeks %g er ugyldigt, bruger 1" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindeks %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: kildestrengen er tom" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindeks %g er forbi slutningen p strengen" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -748,191 +758,191 @@ msgstr "" "substr: lngden %g ved startindeks %g overskrider lngden af frste argument " "(%lu)" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvrdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: fik et ikke-numerisk andet argument" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andet argument mindre end 0 eller for stort til time_t" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: fik et frste argument som ikke er en streng" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: fik et argument som ikke er en streng" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindst n af vrdierne er udenfor standardomrdet" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: fik et argument som ikke er en streng" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: fik et argument som ikke er en streng" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: fik et ikke-numerisk frste argument" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: fik et ikke-numerisk argument" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 0 i tredje argument behandlet som 1" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: fik et ikke-numerisk frste argument" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: fik et ikke-numerisk andet argument" -#: builtin.c:3011 +#: builtin.c:3038 #, fuzzy, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%lf, %lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3013 +#: builtin.c:3040 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3015 +#: builtin.c:3042 #, fuzzy, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%lf, %lf): for store skiftevrdier vil give mrkelige resultater" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: fik et ikke-numerisk frste argument" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: fik et ikke-numerisk andet argument" -#: builtin.c:3048 +#: builtin.c:3075 #, fuzzy, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%lf, %lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3050 +#: builtin.c:3077 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3052 +#: builtin.c:3079 #, fuzzy, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): for store skiftevrdier vil give mrkelige resultater" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3082 +#: builtin.c:3109 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3086 +#: builtin.c:3113 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3114 +#: builtin.c:3141 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3118 +#: builtin.c:3145 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3146 +#: builtin.c:3173 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3150 +#: builtin.c:3177 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: builtin.c:3181 +#: builtin.c:3208 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3183 +#: builtin.c:3210 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" @@ -1056,8 +1066,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1214,7 +1224,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fejl: " @@ -1254,557 +1264,557 @@ msgstr "Ugyldigt sorteringstegn" msgid "undefined command: %s\n" msgstr "" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, fuzzy, c-format msgid "can't read source file `%s' (%s)" msgstr "kan ikke lse kildefilen '%s' (%s)" -#: debug.c:447 +#: debug.c:453 #, fuzzy, c-format msgid "source file `%s' is empty.\n" msgstr "kildefilen '%s' er tom" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "" -#: debug.c:499 +#: debug.c:505 #, fuzzy, c-format msgid "cannot find source file named `%s' (%s)" msgstr "kan ikke lse kildefilen '%s' (%s)" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, fuzzy, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "uventet nylinjetegn eller strengafslutning" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:723 +#: debug.c:732 #, fuzzy, c-format msgid "Current source file: %s\n" msgstr "allerede inkluderet kildefil '%s'" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 #, fuzzy msgid "No arguments.\n" msgstr "printf: ingen argumenter" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1020 +#: debug.c:1029 #, fuzzy, c-format msgid "no symbol `%s' in current context\n" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, fuzzy, c-format msgid "`%s' is not an array\n" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: debug.c:1046 +#: debug.c:1055 #, fuzzy, c-format msgid "$%ld = uninitialized field\n" msgstr "reference til ikke-initieret felt '$%d'" -#: debug.c:1067 +#: debug.c:1076 #, fuzzy, c-format msgid "array `%s' is empty\n" msgstr "datafilen '%s' er tom" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "forsg p at bruge array '%s[\"%.*s\"]' i skalarsammenhng" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "forsg p at bruge skalaren '%s[\"%.*s\"]' som array" -#: debug.c:1414 +#: debug.c:1423 #, fuzzy, c-format msgid "`%s' is a function" msgstr "'%s' er ugyldigt som funktionsnavn" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, fuzzy, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: debug.c:1758 +#: debug.c:1767 #, fuzzy msgid "attempt to use scalar value as array" msgstr "forsg p at bruge en skalar som array" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 #, fuzzy msgid "invalid frame number" msgstr "Ugyldig intervalslutning" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, fuzzy, c-format msgid "line number %d in file `%s' out of range" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, fuzzy, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "fejl ved lsning af inddatafilen '%s': %s" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, fuzzy, c-format msgid "element not in array\n" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "" -#: debug.c:4986 +#: debug.c:5001 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "" -#: debug.c:5366 +#: debug.c:5381 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:5374 +#: debug.c:5389 #, fuzzy msgid "`return' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:5575 +#: debug.c:5590 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "forsg p at bruge array '%s' i skalarsammenhng" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "" -#: dfa.c:1052 +#: dfa.c:1174 #, fuzzy msgid "invalid character class" msgstr "Ugyldigt tegnklassenavn" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1281 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Ugyldigt indhold i \\{\\}" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Regulrt udtryk for stort" -#: dfa.c:1816 +#: dfa.c:1936 msgid "unbalanced (" msgstr "" -#: dfa.c:1943 +#: dfa.c:2062 msgid "no syntax specified" msgstr "" -#: dfa.c:1951 +#: dfa.c:2070 msgid "unbalanced )" msgstr "" @@ -1823,11 +1833,11 @@ msgstr "ukendt opkode %d" msgid "opcode %s not an operator or keyword" msgstr "opkode %s er ikke en operator eller et ngleord" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "bufferoverlb i genflags2str" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1838,71 +1848,71 @@ msgstr "" "\t# Funktionskaldsstak:\n" "\n" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' er en gawk-udvidelse" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' er en gawk-udvidelse" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE vrdi '%s' er ugyldig, behandles som 3" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "forkert '%sFMT'-specifikation '%s'" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "deaktiverer '--lint' p grund af en tildeling til 'LINT'" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "reference til ikke-initieret argument '%s'" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "reference til ikke-initieret variabel '%s'" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "forsg p at referere til et felt fra ikke-numerisk vrdi" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "forsg p at referere til et felt fra tom streng" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "forsg p at f adgang til felt %ld" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "reference til ikke-initieret felt '$%ld'" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen '%s' kaldt med flere argumenter end deklareret" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: uventet type `%s'" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "forsgte at dividere med nul i '/='" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "forsgte at dividere med nul i '%%='" @@ -1916,7 +1926,7 @@ msgstr "udvidelser er ikke tilladt i sandkasse-tilstand" msgid "-l / @load are gawk extensions" msgstr "@include er en gawk-udvidelse" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "" @@ -1948,6 +1958,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "'extension' er en gawk-udvidelse" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "" + #: ext.c:180 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" @@ -1972,37 +1986,37 @@ msgstr "" msgid "make_builtin: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:238 +#: ext.c:236 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:242 +#: ext.c:240 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:246 +#: ext.c:244 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" -#: ext.c:248 +#: ext.c:246 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal for funktion '%s'" -#: ext.c:278 +#: ext.c:276 #, fuzzy msgid "extension: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'" @@ -2027,155 +2041,160 @@ msgstr "funktionsnavnet '%s' er allerede defineret" msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funktionen '%s' defineret til at tage ikke mere end %d argumenter" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "funktion '%s': mangler argument nummer %d" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "funktion '%s': argument nummer %d: forsg p at bruge skalar som et array" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "funktion '%s': argument nummer %d: forsg p at bruge array som en skalar" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: bad parameters" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, fuzzy, c-format msgid "fts init: could not create variable %s" msgstr "indeks: andet argument er ikke en streng" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +#, fuzzy +msgid "fts is not supported on this system" +msgstr "'%s' understttes ikke i gamle versioner af awk" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 #, fuzzy msgid "fill_path_element: could not set element" msgstr "indeks: andet argument er ikke en streng" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 #, fuzzy msgid "fts-process: could not set element" msgstr "indeks: andet argument er ikke en streng" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 #, fuzzy msgid "fts: could not flatten array\n" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 #, fuzzy msgid "fnmatch: called with less than three arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 #, fuzzy msgid "fnmatch: called with more than three arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 #, fuzzy msgid "fnmatch: could not get first argument" msgstr "strftime: fik et frste argument som ikke er en streng" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 #, fuzzy msgid "fnmatch: could not get second argument" msgstr "indeks: andet argument er ikke en streng" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "" @@ -2203,88 +2222,88 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "wait: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "atalt: extension: kan ikke bne '%s' (%s)\n" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, fuzzy, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" @@ -2319,177 +2338,177 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 #, fuzzy msgid "readfile: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/readfile.c:118 +#: extension/readfile.c:137 #, fuzzy msgid "readfile: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: argumentet %g er uden for det tilladte omrde\n" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: fjerde argument er ikke et array\n" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: tredje argument er ikke et array" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:81 +#: extension/time.c:113 #, fuzzy msgid "gettimeofday: ignoring arguments" msgstr "mktime: fik et argument som ikke er en streng" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:133 +#: extension/time.c:165 #, fuzzy msgid "sleep: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/time.c:136 +#: extension/time.c:168 #, fuzzy msgid "sleep: missing required numeric argument" msgstr "exp: fik et ikke-numerisk argument" -#: extension/time.c:142 +#: extension/time.c:174 #, fuzzy msgid "sleep: argument is negative" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "NF sat til en negativ vrdi" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "split: fjerde argument er en gawk-udvidelse" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "split: fjerde argument er ikke et array" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "split: kan ikke bruge det samme array som andet og fjerde argument" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: kan ikke bruge et underarray af andet argument som fjerde argument" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: kan ikke bruge et underarray af fjerde argument som andet argument" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "split: tom streng som tredje argument er en gawk-udvidelse" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjerde argument er ikke et array" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "patsplit: andet argument er ikke et array" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "patmatch: tredje argument er ikke et array" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: kan ikke bruge det samme array som andet og fjerde argument" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: kan ikke bruge et underarray af andet argument som fjerde argument" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: kan ikke bruge et underarray af fjerde argument som andet argument" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' er en gawk-udvidelse" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ugyldig FIELDWIDTHS vrdi, nr '%s" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "tom streng som 'FS' er en gawk-udvidelse" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "gamle versioner af awk understtter ikke regexp'er som vrdi for 'FS'" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' er en gawk-udvidelse" @@ -2505,590 +2524,590 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 #, fuzzy msgid "remove_element: received null array" msgstr "length: fik et array-argument" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: flaget '%s' er flertydigt\n" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flaget '--%s' tillader ikke noget argument\n" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flaget '%c%s' tillader ikke noget argument\n" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: flaget '--%s' krver et argument\n" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ukendt flag '--%s'\n" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ukendt flag '%c%s'\n" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ugyldigt flag - '%c'\n" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: flaget krver et argument - '%c'\n" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flaget '-W %s' er flertydigt\n" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flaget '-W %s' tillader ikke noget argument\n" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaget '-W %s' krver et argument\n" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandolinjeargument '%s' er et katalog, oversprunget" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan ikke bne filen '%s' for lsning (%s)" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering ikke tilladt i sandkasse-tilstand" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "udtrykket i '%s'-omdirigering har kun numerisk vrdi" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "udtrykket for '%s'-omdirigering har en tom streng som vrdi" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "filnavnet '%s' for '%s'-omdirigering kan vre resultatet af et logisk udtryk" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "undig blanding af '>' og '>>' for filen '%.*s'" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan ikke bne datakanalen '%s' for udskrivning (%s)" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan ikke bne datakanalen '%s' for indtastning (%s)" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "kan ikke bne tovejsdatakanalen '%s' for ind-/uddata (%s)" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan ikke omdirigere til '%s' (%s)" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "nede systembegrnsningen for bne filer: begynder at multiplekse " "fildeskriptorer" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "lukning af '%s' mislykkedes (%s)." -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "for mange datakanaler eller inddatafiler bne" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "close: andet argument skal vre 'to' eller 'from'" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: '%.*s' er ikke en ben fil, datakanal eller ko-proces" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "lukning af omdirigering som aldrig blev bnet" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen '%s' blev ikke bnet med '|&', andet argument ignoreret" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen eksplicit lukning af soklen '%s' angivet" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen eksplicit lukning af ko-processen '%s' angivet" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen eksplicit lukning af datakanalen '%s' angivet" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "fejl ved skrivning til standard ud (%s)" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "fejl ved skrivning til standard fejl (%s)" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)." -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "filrensning af '%s' mislykkedes (%s)." -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ugyldig i '/inet'" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "fjernvrt og portinformation (%s, %s) ugyldige" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "special-filnavn '%s' er ufuldstndigt" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "fjernmaskinenavn til '/inet' skal angives" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "fjernport til '/inet' skal angives" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation understttes ikke" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunne ikke bne '%s', tilstand '%s'" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "genskabelse af standard ud i forlderprocessen mislykkedes\n" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "genskabelse af standard ind i forlderprocessen mislykkedes\n" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "'|&' understttes ikke" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan ikke bne datakanalen '%s' (%s)" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "'RS' som flertegnsvrdi er en gawk-udvidelse" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation understttes ikke" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument til '-e/--source' ignoreret" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaget krver et argument -- %c\n" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' tilsidestter '--traditional'" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' tilsidestter '--non-decimal-data'" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "at kre %s setuid root kan vre et sikkerhedsproblem" -#: main.c:571 +#: main.c:588 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' tilsidestter '--binary'" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan ikke stte binr tilstand p standard ind (%s)" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan ikke stte binr tilstand p standard ud (%s)" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan ikke stte binr tilstand p standard fejl (%s)" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "ingen programtekst overhovedet!" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] -f progfil [--] fil ...\n" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] %cprogram%c fil ...\n" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=vrdi\t\t--assign=var=vrdi\n" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" -#: main.c:795 +#: main.c:815 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtekst'\t--source='programtekst'\n" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:804 +#: main.c:824 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:806 +#: main.c:826 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3097,7 +3116,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3110,7 +3129,7 @@ msgstr "" "\n" "Rapportr kommentarer til oversttelsen til <dansk@dansk-gruppen.dk>.\n" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3120,7 +3139,7 @@ msgstr "" "Almindeligvis lser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3130,7 +3149,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3150,7 +3169,7 @@ msgstr "" "enhver senere version.\n" "\n" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3164,7 +3183,7 @@ msgstr "" "General Public License for yderligere information.\n" "\n" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3172,16 +3191,16 @@ msgstr "" "Du br have fet en kopi af GNU General Public License sammen\n" "med dette program. Hvis ikke, s se http://www.gnu.org/licenses/.\n" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft stter ikke FS til tab i POSIX-awk" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "ukendt vrdi for felt-spec: %d\n" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3190,48 +3209,48 @@ msgstr "" "%s: '%s' argument til '-v' ikke p formen 'var=vrdi'\n" "\n" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' er ikke et variabelnavn, leder efter fil '%s=%s'" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn" -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan ikke bruge funktion '%s' som variabelnavn" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "fatal fejl: intern fejl: stakoverlb" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "ingen fd %d bnet i forvejen" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunne ikke i forvejen bne /dev/null for fd %d" @@ -3290,7 +3309,7 @@ msgstr "or(%lf, %lf): kommatalsvrdier vil blive trunkeret" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "kommandolinje:" @@ -3344,16 +3363,16 @@ msgstr "%s %s '%s': kunne ikke f fat p fd flag: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s '%s': kunne ikke stte luk-ved-exec (fcntl F_SETFD: %s)" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunne ikke bne '%s' for skrivning: %s" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "sender profilen til standard fejl" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" @@ -3362,7 +3381,7 @@ msgstr "" "\t# %s blokke\n" "\n" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3371,29 +3390,29 @@ msgstr "" "\t# Regler\n" "\n" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:530 +#: profile.c:537 #, fuzzy msgid "internal error: builtin with null fname" msgstr "intern fejl: %s med null vname" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" @@ -3402,17 +3421,12 @@ msgstr "" "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" -#: re.c:583 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "omrde p formen `[%c-%c]' er locale-afhngig" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp-komponent `%.*s' skulle nok vre `[%.*s]'" @@ -3481,10 +3495,13 @@ msgstr "Ubalanceret ) eller \\)" msgid "No previous regular expression" msgstr "Intet foregende regulrt udtryk" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "" +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "omrde p formen `[%c-%c]' er locale-afhngig" + #, fuzzy #~ msgid "[s]printf called with no arguments" #~ msgstr "sqrt: kaldt med negativt argument %g" Binary files differ@@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2012-01-30 16:21+0100\n" "Last-Translator: Philipp Thomas <pth@suse.de>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" @@ -17,93 +17,93 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "von %s" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "Es wird versucht, einen Skalar als Feld zu verwenden" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "Es wird versucht, den Skalar »%s« als Array zu verwenden" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" -#: array.c:773 +#: array.c:776 #, fuzzy msgid "adump: first argument not an array" msgstr "adump: Das Argument ist kein Feld" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "asort: Das zweite Argument ist kein Feld" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "asorti: Das zweite Argument ist kein Feld" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "asort: Das erste Argument ist kein Feld" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "asorti: Das erste Argument ist kein Feld" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " "Argument verwendet werden" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " "Argument verwendet werden" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " "Argument verwendet werden" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " "Argument verwendet werden" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "»%s« ist ein unzulässiger Funktionsname" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "Die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert" @@ -148,12 +148,12 @@ msgstr "doppelte Case-Werte im Switch-Block: %s" msgid "duplicate `default' detected in switch body" msgstr "doppeltes »default« im Switch-Block gefunden" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "" "»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "»continue« ist außerhalb einer Schleife nicht zulässig" @@ -246,279 +246,279 @@ msgstr "" msgid "invalid subscript expression" msgstr "Ungültiger Index-Ausdruck" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "Warnung: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "Fatal: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "Unbekannte Ursache" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: awkgram.y:2385 +#: awkgram.y:2409 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2470 +#: awkgram.y:2494 #, fuzzy msgid "@load is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2476 +#: awkgram.y:2500 #, fuzzy msgid "empty filename after @load" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "Kein Programmtext auf der Kommandozeile" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "Die Quelldatei »%s« ist leer" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "Die Quelldatei hört nicht mit einem Zeilenende auf" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "Nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert " "nicht in gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "Der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert nicht in " "gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "Nicht beendeter regulärer Ausdruck" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "Nicht beendeter regulärer Ausdruck am Dateiende" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX erlaubt den Operator »**=« nicht" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "Das alte awk unterstützt den Operator »**=« nicht" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX erlaubt den Operator »**« nicht" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "Das alte awk unterstützt den Operator »**« nicht" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "Das alte awk unterstützt den Operator »^=« nicht" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "Das alte awk unterstützt den Operator »^« nicht" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "Nicht beendete Zeichenkette" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "Ungültiges Zeichen »%c« in einem Ausdruck" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "»%s« ist eine gawk-Erweiterung" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX erlaubt »%s« nicht" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "»%s« wird im alten awk nicht unterstützt" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "»goto« gilt als schlechter Stil!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "Unzulässige Argumentzahl %d für %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: Ein String als letztes Argument von substitute hat keinen Effekt" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "Der dritte Parameter von %s ist ein unveränderliches Objekt" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: Das dritte Argument ist eine gawk-Erweiterung" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: Das zweite Argument ist eine gawk-Erweiterung" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcgettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcngettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:3992 +#: awkgram.y:4016 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: Zweites Argument ist kein string" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "»%s« kann nicht zum Schreiben geöffne werden(%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() zweimal aufgerufen!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "es sind verdeckte Variablen vorhanden" -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "Funktion »%s« wurde bereits definiert" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "Funktion »%s«: Funktionsnamen können nicht als Parameternamen benutzen" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "Funktion »%s«: die spezielle Variable »%s« kann nicht als Parameter " "verwendet werden" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "Aufgerufene Funktion »%s« ist nirgends definiert" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "Regulärer-Ausdruck-Konstante für Parameter #%d ergibt einen \n" "logischen Wert" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -527,238 +527,248 @@ msgstr "" "Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n" "oder als Variable oder Feld verwendet" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "Division durch Null wurde versucht" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "Division durch Null versucht in »%%«" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" + +#: awkgram.y:5052 +#, fuzzy, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "Unzulässige Argumentzahl %d für %s" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s to \"%s\" fehlgeschlagen (%s)" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "Standardausgabe" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: das Argument ist keine Zahl" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: Leeren der Puffer nicht möglich, Pipe »%s« ist nur zum Lesen geöffnet" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: Leeren der Puffer nicht möglich, Datei »%s« ist nur zum Lesen " "geöffnet" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: »%s« ist keine geöffnete Datei, Pipe oder Prozess" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "index: Erstes Argument ist kein String" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "index: Zweites Argument ist kein string" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "Argument ist keine Zahl" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "length: Argument ist ein Feld" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "»length(array)« ist eine gawk-Erweiterung" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "length: Argument ist kein String" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "log: Argument ist keine Zahl" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "log: Negatives Argument %g" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "Fatal: »count$« muss auf alle Formate angewandt werden oder auf keines" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "Feldbreite wird für die »%%«-Angabe ignoriert" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "Fatal: die Anzahl der Argumen bei »$« muss > 0 sein" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "Fatal: Argumentenanzahl %ld ist größer als die Gesamtzahl angegebener " "Argumente" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit" # -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine " "Argumente umgewandelt" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "Fatal: Nicht genügend Argumente für die Formatangabe" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ hierfür fehlte es" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "Zu viele Argumente für den Formatstring" -#: builtin.c:1610 +#: builtin.c:1634 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: Keine Argumente" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: Keine Argumente" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: das Argument ist keine Zahl" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: Länge %g ist nicht >= 1" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: Länge %g ist nicht >= 0" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: Nicht ganzzahlige Länge %g wird abgeschnitten" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: Länge %g ist zu groß für Stringindizierung, wird auf %g gekürzt" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: Quellstring ist leer" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: Start-Wert %g liegt hinter dem Ende des Strings" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -766,197 +776,197 @@ msgstr "" "substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten " "Arguments (%lu)" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: Das zweite Argument ist keine Zahl" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: das zweite Argument ist kleiner als 0 oder zu groß für time_t" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: Das erste Argument ist kein String" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: Der Format-String ist leer" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: Das Argument ist kein String" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindestens einer der Werte ist außerhalb des normalen Bereichs" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "Die Funktion »system« ist im Sandbox-Modus nicht erlaubt" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: Das Argument ist kein String" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: das Argument ist kein String" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: das Argument ist kein String" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: das erste Argument ist keine Zahl" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: das zweite Argument ist keine Zahl" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: das Argument ist keine Zahl" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: das Argument ist keine Zahl" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: das Argument ist keine Zahl" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: das dritte Argument ist kein Array" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: das erste Argument ist keine Zahl" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: das zweite Argument ist keine Zahl" -#: builtin.c:3011 +#: builtin.c:3038 #, fuzzy, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" "lshift(%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3013 +#: builtin.c:3040 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:3015 +#: builtin.c:3042 #, fuzzy, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: das erste Argument ist keine Zahl" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: das zweite Argument ist keine Zahl" -#: builtin.c:3048 +#: builtin.c:3075 #, fuzzy, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" "rshift (%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3050 +#: builtin.c:3077 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:3052 +#: builtin.c:3079 #, fuzzy, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:3082 +#: builtin.c:3109 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: builtin.c:3086 +#: builtin.c:3113 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" "and(%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:3114 +#: builtin.c:3141 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: builtin.c:3118 +#: builtin.c:3145 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:3146 +#: builtin.c:3173 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: builtin.c:3150 +#: builtin.c:3177 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf: Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: das erste Argument ist keine Zahl" -#: builtin.c:3181 +#: builtin.c:3208 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen" -#: builtin.c:3183 +#: builtin.c:3210 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): Dezimalteil wird abgeschnitten" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie" @@ -1080,8 +1090,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1238,7 +1248,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "Fehler: " @@ -1278,558 +1288,558 @@ msgstr "Ungültiges Zeichen" msgid "undefined command: %s\n" msgstr "" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, fuzzy, c-format msgid "can't read source file `%s' (%s)" msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" -#: debug.c:447 +#: debug.c:453 #, fuzzy, c-format msgid "source file `%s' is empty.\n" msgstr "Die Quelldatei »%s« ist leer" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "" -#: debug.c:499 +#: debug.c:505 #, fuzzy, c-format msgid "cannot find source file named `%s' (%s)" msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, fuzzy, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:723 +#: debug.c:732 #, fuzzy, c-format msgid "Current source file: %s\n" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 #, fuzzy msgid "No arguments.\n" msgstr "printf: Keine Argumente" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1020 +#: debug.c:1029 #, fuzzy, c-format msgid "no symbol `%s' in current context\n" msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, fuzzy, c-format msgid "`%s' is not an array\n" msgstr "»%s« ist kein gültiger Variablenname" -#: debug.c:1046 +#: debug.c:1055 #, fuzzy, c-format msgid "$%ld = uninitialized field\n" msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: debug.c:1067 +#: debug.c:1076 #, fuzzy, c-format msgid "array `%s' is empty\n" msgstr "Die Datei »%s« ist leer" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "»%s« ist kein gültiger Variablenname" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "" "Es wird versucht, das Feld »%s[\"%.*s\"]« in einem Skalarkontext zu verwenden" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" -#: debug.c:1414 +#: debug.c:1423 #, fuzzy, c-format msgid "`%s' is a function" msgstr "»%s« ist ein unzulässiger Funktionsname" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, fuzzy, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: debug.c:1758 +#: debug.c:1767 #, fuzzy msgid "attempt to use scalar value as array" msgstr "Es wird versucht, einen Skalar als Feld zu verwenden" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 #, fuzzy msgid "invalid frame number" msgstr "Ungültiges Bereichsende" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, fuzzy, c-format msgid "line number %d in file `%s' out of range" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, fuzzy, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Fehler beim Lesen der Eingabedatei »%s«: %s" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, fuzzy, c-format msgid "element not in array\n" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "" -#: debug.c:4986 +#: debug.c:5001 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "" -#: debug.c:5366 +#: debug.c:5381 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden" -#: debug.c:5374 +#: debug.c:5389 #, fuzzy msgid "`return' not allowed in current context; statement ignored" msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden" -#: debug.c:5575 +#: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "" -#: dfa.c:1052 +#: dfa.c:1174 #, fuzzy msgid "invalid character class" msgstr "Ungültiger Name für eine Zeichenklasse" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1281 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Ungültiger Inhalt von \\{\\}" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Regulärer Ausdruck ist zu groß" -#: dfa.c:1816 +#: dfa.c:1936 msgid "unbalanced (" msgstr "" -#: dfa.c:1943 +#: dfa.c:2062 msgid "no syntax specified" msgstr "" -#: dfa.c:1951 +#: dfa.c:2070 msgid "unbalanced )" msgstr "" @@ -1848,11 +1858,11 @@ msgstr "Unbekannter Opcode %d" msgid "opcode %s not an operator or keyword" msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "Pufferüberlauf in genflags2str" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1863,71 +1873,71 @@ msgstr "" "\t# Funktions-Aufruf-Stack\n" "\n" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "»IGNORECASE« ist eine gawk-Erweiterung" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "»BINMODE« ist eine gawk-Erweiterung" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE Wert »%s« ist ungültig und wird als 3 behandelt" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "Falsche »%sFMT«-Angabe »%s«" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "Referenz auf nicht initialisiertes Argument »%s«" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "Referenz auf die nicht initialisierte Variable »%s«" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "Nicht numerischer Wert für Feldreferenz verwendet" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "Referenz auf ein Feld von einem Null-String" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "Versuch des Zugriffs auf Feld %ld" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "Referenz auf das nicht initialisierte Feld »$%ld«" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "Funktion »%s« mit zu vielen Argumenten aufgerufen" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unerwarteter Typ »%s«" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "Division durch Null versucht in »/=«" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "Division durch Null versucht in »%%=«" @@ -1941,7 +1951,7 @@ msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt" msgid "-l / @load are gawk extensions" msgstr "»@include« ist eine gawk-Erweiterung" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "" @@ -1974,6 +1984,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "»extension« ist eine gawk-Erweiterung" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "" + #: ext.c:180 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" @@ -1999,39 +2013,39 @@ msgstr "" msgid "make_builtin: missing function name" msgstr "Erweiterung: Funktionsname fehlt" -#: ext.c:238 +#: ext.c:236 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "Erweiterung: Funktion »%s« kann nicht neu definiert werden" -#: ext.c:242 +#: ext.c:240 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "Erweiterung: Funktion »%s« wurde bereits definiert" -#: ext.c:246 +#: ext.c:244 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "Erweiterung: Funktion »%s« wurde bereits vorher definiert" -#: ext.c:248 +#: ext.c:246 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "Erweiterung: die eingebaute Funktion »%s« kann nicht als Funktionsname " "verwendet werden" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negative Anzahl von Argumenten für Funktion »%s«" -#: ext.c:278 +#: ext.c:276 #, fuzzy msgid "extension: missing function name" msgstr "Erweiterung: Funktionsname fehlt" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "Erweiterung: unzulässiges Zeichen »%c« in Funktionsname »%s«" @@ -2058,159 +2072,164 @@ msgstr "" "Erweiterung: die eingebaute Funktion »%s« kann nicht als Funktionsname " "verwendet werden" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "" "Funktion »%s« wird als Funktion definiert, die nie mehr als %d Argument(e) " "akzeptiert" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "Funktion »%s«: fehlendes Argument #%d" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "Funktion »%s«: Argument #%d: Es wird versucht, einen Skalar als Feld zu " "verwenden" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "Funktion »%s«: Argument #%d: Es wird versucht, ein Feld als Skalar zu " "verwenden" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: das Argument %g ist negativ" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: bad parameters" msgstr "%s: ist ein Parameter\n" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, fuzzy, c-format msgid "fts init: could not create variable %s" msgstr "index: Zweites Argument ist kein string" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +#, fuzzy +msgid "fts is not supported on this system" +msgstr "»%s« wird im alten awk nicht unterstützt" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 #, fuzzy msgid "fill_path_element: could not set element" msgstr "index: Zweites Argument ist kein string" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 #, fuzzy msgid "fts-process: could not set element" msgstr "index: Zweites Argument ist kein string" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: das Argument %g ist negativ" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: ist ein Parameter\n" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: ist ein Parameter\n" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: ist ein Parameter\n" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 #, fuzzy msgid "fts: could not flatten array\n" msgstr "»%s« ist kein gültiger Variablenname" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 #, fuzzy msgid "fnmatch: called with less than three arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 #, fuzzy msgid "fnmatch: called with more than three arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 #, fuzzy msgid "fnmatch: could not get first argument" msgstr "strftime: Das erste Argument ist kein String" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 #, fuzzy msgid "fnmatch: could not get second argument" msgstr "index: Zweites Argument ist kein string" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "" @@ -2238,88 +2257,88 @@ msgstr "sqrt: das Argument %g ist negativ" msgid "wait: called with too many arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "Fatal: extension: »%s« kann nicht geöffnet werden (%s)\n" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, fuzzy, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "»%s« ist kein gültiger Variablenname" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)" @@ -2354,185 +2373,185 @@ msgstr "sqrt: das Argument %g ist negativ" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: das Argument %g ist negativ" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 #, fuzzy msgid "readfile: called with too many arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/readfile.c:118 +#: extension/readfile.c:137 #, fuzzy msgid "readfile: called with no arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: das vierte Argument ist kein Feld" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: das dritte Argument ist kein Array" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:81 +#: extension/time.c:113 #, fuzzy msgid "gettimeofday: ignoring arguments" msgstr "mktime: Das Argument ist kein String" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:133 +#: extension/time.c:165 #, fuzzy msgid "sleep: called with too many arguments" msgstr "sqrt: das Argument %g ist negativ" -#: extension/time.c:136 +#: extension/time.c:168 #, fuzzy msgid "sleep: missing required numeric argument" msgstr "exp: das Argument ist keine Zahl" -#: extension/time.c:142 +#: extension/time.c:174 #, fuzzy msgid "sleep: argument is negative" msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "NF wird ein negativer Wert zugewiesen" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "split: das vierte Argument ist eine gawk-Erweiterung" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "split: das vierte Argument ist kein Feld" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "split: das zweite Argument ist kein Feld" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: Ein untergeordnetes Feld des zweiten Arguments kann nicht als viertes " "Argument verwendet werden" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: Ein untergeordnetes Feld des vierten Arguments kann nicht als zweites " "Argument verwendet werden" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: Das vierte Argument ist kein Feld" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "patsplit: Das zweite Argument ist kein Feld" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "patsplit: Das dritte Argument darf nicht Null sein" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: Ein untergeordnetes Feld des zweiten Arguments kann nicht als " "viertes Argument verwendet werden" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: Ein untergeordnetes Feld des vierten Arguments kann nicht als " "zweites Argument verwendet werden" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ungültiger FIELDWIDTHS-Wert nah bei »%s«" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "Null-String für »FS« ist eine gawk-Erweiterung" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "Das alte awk unterstützt keine regulären Ausdrücke als Wert von »FS«" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "»FPAT« ist eine gawk-Erweiterung" @@ -2548,610 +2567,610 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 #, fuzzy msgid "remove_element: received null array" msgstr "length: Argument ist ein Feld" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: Option »%s« ist mehrdeutig\n" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: Die Option »--%s« hat keine Argumente\n" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: Die Option »%c%s« hat keine Argument\n" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: Die Option »%s« erfordert ein Argument\n" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: Die Option »--%s« ist unbekannt\n" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: Die Option »%c%s« ist unbekannt\n" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: Ungültige Option -- »%c«\n" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s Die Option »%c« erfordert ein Argument\n" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Die Option »-W %s« ist mehrdeutig\n" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: Die Option »-W %s« hat keine Argumente\n" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: Die Option »-W %s« erfordert ein Argument\n" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" "das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" "Der Ausdruck in einer Umlenkung mittels »%s« hat nur einen numerischen Wert" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "Der Ausdruck für eine Umlenkung mittels »%s« ist ein leerer String" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "Der Dateiname »%s« für eine Umlenkung mittels »%s« kann das Ergebnis eines " "logischen Ausdrucks sein" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "Die Pipe »%s« kann nicht für die Ausgabe geöffnet werden (%s)" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "Die Pipe »%s« kann nicht für die Eingabe geöffnet werden (%s)" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" "Die bidirektionale Pipe »%s« kann nicht für die Ein-/Ausgabe geöffnet werden " "(%s)" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "Von »%s« kann nicht umgelenkt werden (%s)" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "Zu »%s« kann nicht umgelenkt werden (%s)" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "Die Systemgrenze offener Dateien ist erreicht, daher werden nun " "Dateideskriptoren mehrfach verwendet" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "Das Schließen von »%s« ist gescheitert (%s)." -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "Zu viele Pipes oder Eingabedateien offen" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "close: Das zweite Argument muss »to« oder »from« sein" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: »%.*s« ist weder offene Datei, noch Pipe oder Ko-Prozess" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "»close« für eine Umlenkung, die nie geöffnet wurde" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: Umlenkung »%s« wurde nicht mit »[&« geöffnet, das zweite Argument " "wird ignoriert" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "Fehlerstatus (%d) beim Schließen der Pipe »%s« (%s)" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "Fehlerstatus (%d) beim Schließen der Datei »%s« (%s)" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "Das explizite Schließen des Sockets »%s« fehlt" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "Das explizite Schließen des Ko-Prozesses »%s« fehlt" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "Das explizite Schließen der Pipe »%s« fehlt" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "Das explizite Schließen der Datei »%s« fehlt" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)" -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "Ko-Prozess: Das Leeren der Pipe zu »%s« ist gescheitert (%s)" -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "Das Leeren der Datei »%s« ist gescheitert (%s)" -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "Der lokale Port »%s« ist ungültig in »/inet«" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "Die Angaben zu entferntem Host und Port (%s, %s) sind ungültig" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen »%s« angegeben" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "Der Dateiname »%s« ist unvollständig" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "Sie müssen in /inet einen Rechnernamen angeben" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "Sie müssen in »/inet« einen Port angeben" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-Verbindungen werden nicht unterstützt" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "" "Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "Das Schließen der Standardausgabe im Kindprozess ist gescheitert (%s)" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe " "im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "Schließen von stdin im Kindprozess gescheitert (%s)" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe " "im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "" "Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert " "(dup: %s)" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert " "(dup: %s)" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "Das Schließen der Pipe ist gescheitert (%s)" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "»|&« wird nicht unterstützt" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "Pipe »%s« kann nicht geöffnet werden (%s)" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "Die Datei »%s« ist leer" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "IPv6-Verbindungen werden nicht unterstützt" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "Das leere Argument für »--source« wird ignoriert" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: Die Option »-W %s« ist unbekannt und wird ignoriert\n" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: Die Option %c erfordert ein Argument\n" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird " "eingeschaltet" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "»--posix« hat Vorrang vor »--traditional«" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "»--posix« /»--traditional« hat Vorrang vor »--non-decimal-data«" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "%s als setuid root auszuführen kann zu Sicherheitsproblemen führen" -#: main.c:571 +#: main.c:588 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "»--posix« hat Vorrang vor »--binary«" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardeingabe ist nicht möglich (%s)" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardausgabe ist nicht möglich (%s)" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardfehlerausgabe ist nicht möglich " "(%s)" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "Es wurde überhaupt kein Programmtext angegeben!" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f PROGRAMM [--] Datei ...\n" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cPROGRAMM%c Datei ...\n" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=Wert\t\t--assign=var=Wert\n" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n" -#: main.c:795 +#: main.c:815 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'Programmtext'\t--source=Programmtext\n" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E Datei\t\t\t--exec=Datei\n" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:804 +#: main.c:824 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:806 +#: main.c:826 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3160,7 +3179,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3176,7 +3195,7 @@ msgstr "" "an translation-team-de@lists.sourceforge.net\n" "\n" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3187,7 +3206,7 @@ msgstr "" "auf der Standardausgabe aus.\n" "\n" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3197,7 +3216,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3217,7 +3236,7 @@ msgstr "" "spätere Version.\n" "\n" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3230,7 +3249,7 @@ msgstr "" "leistung einer HANDELBARKEIT oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.\n" "Sehen Sie bitte die GNU General Public License für weitere Details.\n" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3239,16 +3258,16 @@ msgstr "" "diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "unbekannter Wert für eine Feldangabe: %d\n" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3257,50 +3276,50 @@ msgstr "" "%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n" "\n" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "»%s« ist kein gültiger Variablenname" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "»%s« ist kein Variablenname, es wird nach der Datei »%s=%s« gesucht" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" # c-format -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "Funktion »%s« kann nicht als Name einer Variablen verwendet werden" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "Fließkomma-Ausnahme" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "Fataler Fehler: interner Fehler" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "Kein bereits geöffneter Dateideskriptor %d" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden" @@ -3359,7 +3378,7 @@ msgstr "or(%lf, %lf): Dezimalteil wird abgeschnitten" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "Kommandozeile:" @@ -3416,16 +3435,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" "%s %s »%s«: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "»%s« konnte nicht zum Schreiben geöffnet werden: %s" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" @@ -3434,7 +3453,7 @@ msgstr "" "\t# %s Blöcke\n" "\n" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3443,29 +3462,29 @@ msgstr "" "\t# Regeln(s)\n" "\n" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:530 +#: profile.c:537 #, fuzzy msgid "internal error: builtin with null fname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-Profil, erzeugt %s\n" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" @@ -3474,18 +3493,12 @@ msgstr "" "\n" "\t# Funktionen in alphabetischer Reihenfolge\n" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unbekannter Umlenkungstyp %d" -#: re.c:583 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "" -"Ein Bereich in der Form »[%c-%c]« ist abhängig von der gesetzten Locale" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" @@ -3555,10 +3568,14 @@ msgstr ") oder \\) werden nicht geöffnet" msgid "No previous regular expression" msgstr "Kein vorangehender regulärer Ausdruck" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "" +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "" +#~ "Ein Bereich in der Form »[%c-%c]« ist abhängig von der gesetzten Locale" + #, fuzzy #~ msgid "[s]printf called with no arguments" #~ msgstr "sqrt: das Argument %g ist negativ" Binary files differ@@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2012-01-30 07:42-0600\n" "Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n" "Language-Team: Spanish <es@li.org>\n" @@ -16,93 +16,93 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "desde %s" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "se intentó usar un valor escalar como una matriz" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "se intentó usar el parámetro escalar `%s como una matriz'" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "se intentó usar el escalar `%s' como una matriz" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz" -#: array.c:773 +#: array.c:776 #, fuzzy msgid "adump: first argument not an array" msgstr "adump: el argumento no es una matriz" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "asort: el segundo argumento no es una matriz" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "asorti: el segundo argumento no es una matriz" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "asort: el primer argumento no es una matriz" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "asorti: el primer argumento no es una matriz" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: no se puede usar una submatriz del primer argumento para el segundo " "argumento" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: no se puede usar una submatriz del primer argumento para el segundo " "argumento" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' es inválido como un nombre de función" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la función de comparación de ordenamiento `%s' no está definida" @@ -147,11 +147,11 @@ msgstr "valores case duplicados en el cuerpo de un switch: %s" msgid "duplicate `default' detected in switch body" msgstr "se detectó un `default' duplicado en el cuerpo de un switch" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "no se permite `break' fuera de un bucle o switch" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "no se permite `continue' fuera de un bucle" @@ -243,275 +243,275 @@ msgstr "" msgid "invalid subscript expression" msgstr "expresión de subíndice inválida" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "aviso: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "nueva línea o fin de la cadena inesperados" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "razón desconocida" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2385 +#: awkgram.y:2409 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2470 +#: awkgram.y:2494 #, fuzzy msgid "@load is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 #, fuzzy msgid "empty filename after @load" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "texto de programa vacío en la linea de órdenes" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "el fichero fuente `%s' está vacío" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "el fichero fuente no termina con línea nueva" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expresión regular sin terminar termina con `\\` al final del fichero" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: el modificador de expresión regular `/.../%c` de tawk no funciona en " "gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "el modificador de expresión regular `/.../%c` de tawk no funciona en gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "expresión regular sin terminar" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "expresión regular sin terminar al final del fichero" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "el uso de la continuación de línea `\\ #...' no es transportable" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "la barra invertida no es el último caracter en la línea" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permite el operador `**='" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permite el operador `**'" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "el operador `^=' no se admite en el awk antiguo" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "el operador `^' no se admite en el awk antiguo" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "cadena sin terminar" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "caracter '%c' inválido en la expresión" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' es una extensión de gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permite `%s'" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no se admite en el awk antiguo" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "¡`goto' se considera dañino!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d es inválido como número de argumentos para %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: la literal de cadena como último argumento de substitute no tiene efecto" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "el tercer argumento de %s no es un objecto modificable" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argumento es una extensión de gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: el segundo argumento es una extensión de gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:3992 +#: awkgram.y:4016 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: el segundo argumento recibido no es una cadena" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "función `%s': parámetro `%s' oscurece la variable global" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "no se puede abrir `%s' para escritura (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "se envía la lista de variables a la salida estándar de error" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: falló close (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "¡se llamó shadow_funcs() dos veces!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "hay variables opacadas." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "el nombre de función `%s' se definió previamente" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" "función `%s': no se puede usar un nombre de función como nombre de parámetro" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "función `%s': no se puede usar la variable especial `%s' como un parámetro " "de función" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "se llamó a la función `%s' pero nunca se definió" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "se definió la función `%s' pero nunca se llamó directamente" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "la constante de expresión regular para el parámetro #%d da un valor booleano" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -520,243 +520,253 @@ msgstr "" "se llamó la función `%s' con espacio entre el nombre y el `(',\n" "o se usó como una variable o una matriz" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "se intentó una división por cero" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "se intentó una división por cero en `%%'" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" + +#: awkgram.y:5052 +#, fuzzy, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "%d es inválido como número de argumentos para %s" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "falló %s a \"%s\" (%s)" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "salida estándar" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: se recibió un argumento que no es númerico" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para " "escritura" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para " "escritura" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' no es un fichero abierto, tubería o co-proceso" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "index: el primer argumento recibido no es una cadena" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "index: el segundo argumento recibido no es una cadena" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "int: se recibió un argumento que no es númerico" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "length: se recibió un argumento de matriz" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' es una extensión de gawk" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "length: se recibió un argumento que no es una cadena" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "log: se recibió un argumento que no es númerico" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "log: se recibió el argumento negativo %g" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: se debe utilizar `count$' en todos los formatos o en ninguno" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "se descarta la anchura del campo para el especificador `%%'" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "se descarta la precisión para el especificador `%%'" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" "se descartan la anchura del campo y la precisión para el especificador `%%'" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no se permite `$' en los formatos de awk" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: la cuenta de argumentos %ld es mayor que el número total de " "argumentos proporcionados" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no se permite `$' después de un punto en el formato" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: no se proporciona `$' para la anchura o la precisión del campo " "posicional" -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `l' en los formatos POSIX de awk" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `L' en los formatos POSIX de awk" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `h' en los formatos POSIX de awk" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "se descarta el carácter especificador de formato `%c' desconocido: no se " "convirtió ningún argumento" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: no hay suficientes argumentos para satisfacer a la cadena de formato" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "se acabó ^ para éste" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: el especificador de formato no tiene letras de control" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "se proporcionaron demasiados argumentos para la cadena de formato" -#: builtin.c:1610 +#: builtin.c:1634 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: se recibió un argumento que no es un númerico" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no es >= 1" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no es >= 0" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: se truncará la longitud no entera %g" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: la longitud %g es demasiado grande para ser índice de cadena, se " "trunca a %g" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: el índice de inicio %g es inválido, se usa 1" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: se truncará el índice de inicio no entero %g" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: la cadena de origen es de longitud cero" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: el índice de inicio %g está después del fin de la cadena" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -764,196 +774,196 @@ msgstr "" "substr: la cadena %g en el índice de inicio %g excede la longitud del primer " "argumento (%lu)" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: el segundo argumento recibido no es númerico" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: el segundo argumento es menor que 0 o demasiado grande para time_t" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argumento recibido no es una cadena" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: se recibió una cadena de formato vacía" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: se recibió un argumento que no es una cadena" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "" "mktime: por lo menos uno de los valores está fuera del rango por defecto" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "no se permite la función 'system' en modo sandbox" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: se recibió un argumento que no es una cadena" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referencia al campo sin inicializar `$%d'" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: se recibió un argumento que no es una cadena" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: se recibió un argumento que no es una cadena" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argumento recibido no es númerico" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segundo argumento recibido no es númerico" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: se recibió un argumento que no es númerico" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: se recibió un argumento que no es númerico" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: se recibió un argumento que no es númerico" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: el tercer argumento de 0 se trata como 1" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argumento recibido no es númerico" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segundo argumento recibido no es númerico" -#: builtin.c:3011 +#: builtin.c:3038 #, fuzzy, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3013 +#: builtin.c:3040 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán" -#: builtin.c:3015 +#: builtin.c:3042 #, fuzzy, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " "extraños" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argumento recibido no es númerico" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segundo argumento recibido no es númerico" -#: builtin.c:3048 +#: builtin.c:3075 #, fuzzy, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3050 +#: builtin.c:3077 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:3052 +#: builtin.c:3079 #, fuzzy, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " "extraños" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3082 +#: builtin.c:3109 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3086 +#: builtin.c:3113 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3114 +#: builtin.c:3141 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3118 +#: builtin.c:3145 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3146 +#: builtin.c:3173 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3150 +#: builtin.c:3177 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: se recibió un argumento que no es númerico" -#: builtin.c:3181 +#: builtin.c:3208 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:3183 +#: builtin.c:3210 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): el valor fraccionario se truncará" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no es una categoría local válida" @@ -1077,8 +1087,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1235,7 +1245,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " @@ -1275,561 +1285,561 @@ msgstr "Caracter de ordenación inválido" msgid "undefined command: %s\n" msgstr "" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, fuzzy, c-format msgid "can't read source file `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: debug.c:447 +#: debug.c:453 #, fuzzy, c-format msgid "source file `%s' is empty.\n" msgstr "el fichero fuente `%s' está vacío" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "" -#: debug.c:499 +#: debug.c:505 #, fuzzy, c-format msgid "cannot find source file named `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, fuzzy, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "error interno: fichero `%s', línea %d\n" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:723 +#: debug.c:732 #, fuzzy, c-format msgid "Current source file: %s\n" msgstr "ya se incluyó el fichero fuente `%s'" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 #, fuzzy msgid "No arguments.\n" msgstr "printf: sin argumentos" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1020 +#: debug.c:1029 #, fuzzy, c-format msgid "no symbol `%s' in current context\n" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, fuzzy, c-format msgid "`%s' is not an array\n" msgstr "`%s' no es un nombre de variable legal" -#: debug.c:1046 +#: debug.c:1055 #, fuzzy, c-format msgid "$%ld = uninitialized field\n" msgstr "referencia al campo sin inicializar `$%d'" -#: debug.c:1067 +#: debug.c:1076 #, fuzzy, c-format msgid "array `%s' is empty\n" msgstr "el fichero de datos `%s' está vacío" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' no es un nombre de variable legal" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz" -#: debug.c:1414 +#: debug.c:1423 #, fuzzy, c-format msgid "`%s' is a function" msgstr "`%s' es inválido como un nombre de función" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, fuzzy, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: debug.c:1758 +#: debug.c:1767 #, fuzzy msgid "attempt to use scalar value as array" msgstr "se intentó usar un valor escalar como una matriz" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, fuzzy, c-format msgid " in file `%s', line %d\n" msgstr "error interno: fichero `%s', línea %d\n" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 #, fuzzy msgid "invalid frame number" msgstr "Final de rango inválido" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, fuzzy, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "error interno: fichero `%s', línea %d\n" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, fuzzy, c-format msgid "line number %d in file `%s' out of range" msgstr "exp: el argumento %g está fuera de rango" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, fuzzy, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "error interno: fichero `%s', línea %d\n" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, fuzzy, c-format msgid "element not in array\n" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "" -#: debug.c:4986 +#: debug.c:5001 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "" -#: debug.c:5366 +#: debug.c:5381 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:5374 +#: debug.c:5389 #, fuzzy msgid "`return' not allowed in current context; statement ignored" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:5575 +#: debug.c:5590 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 #, fuzzy msgid "unbalanced [" msgstr "[ desbalanceado" -#: dfa.c:1052 +#: dfa.c:1174 #, fuzzy msgid "invalid character class" msgstr "Nombre de clase de caracter inválido" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1281 +#: dfa.c:1366 #, fuzzy msgid "unfinished \\ escape" msgstr "Escape \\ sin terminar" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Contenido inválido de \\{\\}" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "La expresión regular es demasiado grande" -#: dfa.c:1816 +#: dfa.c:1936 #, fuzzy msgid "unbalanced (" msgstr "( desbalanceado" -#: dfa.c:1943 +#: dfa.c:2062 #, fuzzy msgid "no syntax specified" msgstr "No se especifican los bits de sintaxis de la expresión regular" -#: dfa.c:1951 +#: dfa.c:2070 #, fuzzy msgid "unbalanced )" msgstr ") desbalanceado" @@ -1849,11 +1859,11 @@ msgstr "código de operación %d desconocido" msgid "opcode %s not an operator or keyword" msgstr "el código de operación %s no es un operador o una palabra clave" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "desbordamiento de almacenamiento temporal en genflags2str" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1864,71 +1874,71 @@ msgstr "" "\t# Pila de Llamadas de Funciones:\n" "\n" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' es una extensión de gawk" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' es una extensión de gawk" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "especificación `%sFMT' `%s' errónea" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "se desactiva `--lint' debido a una asignación a `LINT'" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referencia al argumento sin inicializar `%s'" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referencia a la variable sin inicializar `%s'" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "se intentó una referencia de campo desde un valor que no es númerico" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "se intentó una referencia de campo desde una cadena nula" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "se intentó acceder al campo %ld" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referencia al campo sin inicializar `$%ld'" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "se llamó a la función `%s' con más argumentos de los declarados" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo `%s' inesperado" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "se intentó una división por cero en `/='" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "se intentó una división por cero en `%%='" @@ -1942,7 +1952,7 @@ msgstr "no se permiten las extensiones en modo sandbox" msgid "-l / @load are gawk extensions" msgstr "@include es una extensión de gawk" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "" @@ -1975,6 +1985,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "`extension' es una extensión de gawk" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "" + #: ext.c:180 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" @@ -2000,39 +2014,39 @@ msgstr "" msgid "make_builtin: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:238 +#: ext.c:236 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:242 +#: ext.c:240 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: la función `%s' ya está definida" -#: ext.c:246 +#: ext.c:244 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: el nombre de función `%s' se definió previamente" -#: ext.c:248 +#: ext.c:246 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "extension: no se puede utilizar la orden interna de gawk `%s' como nombre de " "función" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: cuenta de argumento negativa para la función `%s'" -#: ext.c:278 +#: ext.c:276 #, fuzzy msgid "extension: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'" @@ -2059,155 +2073,160 @@ msgstr "" "extension: no se puede utilizar la orden interna de gawk `%s' como nombre de " "función" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "la función `%s' se definió para tomar no más de %d argumento(s)" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "función `%s': falta el argumento #%d" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "función `%s': argumento #%d: se intentó usar un escalar como una matriz" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "función `%s': argumento #%d: se intentó usar una matriz como un escalar" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: bad parameters" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, fuzzy, c-format msgid "fts init: could not create variable %s" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +#, fuzzy +msgid "fts is not supported on this system" +msgstr "`%s' no se admite en el awk antiguo" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 #, fuzzy msgid "fill_path_element: could not set element" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 #, fuzzy msgid "fts-process: could not set element" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 #, fuzzy msgid "fts: could not flatten array\n" msgstr "`%s' no es un nombre de variable legal" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 #, fuzzy msgid "fnmatch: called with less than three arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 #, fuzzy msgid "fnmatch: called with more than three arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 #, fuzzy msgid "fnmatch: could not get first argument" msgstr "strftime: el primer argumento recibido no es una cadena" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 #, fuzzy msgid "fnmatch: could not get second argument" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "" @@ -2235,88 +2254,88 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "wait: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, fuzzy, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "`%s' no es un nombre de variable legal" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "falló la limpieza de la tubería de `%s' (%s)." -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" @@ -2351,185 +2370,185 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 #, fuzzy msgid "readfile: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/readfile.c:118 +#: extension/readfile.c:137 #, fuzzy msgid "readfile: called with no arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: el argumento %g está fuera de rango" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: el cuarto argumento no es una matriz" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: el argumento %g está fuera de rango" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: el tercer argumento no es una matriz" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:81 +#: extension/time.c:113 #, fuzzy msgid "gettimeofday: ignoring arguments" msgstr "mktime: se recibió un argumento que no es una cadena" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:133 +#: extension/time.c:165 #, fuzzy msgid "sleep: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/time.c:136 +#: extension/time.c:168 #, fuzzy msgid "sleep: missing required numeric argument" msgstr "exp: se recibió un argumento que no es númerico" -#: extension/time.c:142 +#: extension/time.c:174 #, fuzzy msgid "sleep: argument is negative" msgstr "exp: el argumento %g está fuera de rango" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "se definió NF con un valor negativo" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "split: el cuarto argumento es una extensión de gawk" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "split: el cuarto argumento no es una matriz" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "split: el segundo argumento no es una matriz" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: no se puede usar la misma matriz para el segundo y cuarto argumentos" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: no se puede usar una submatriz del segundo argumento para el cuarto " "argumento" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: no se puede usar una submatriz del cuarto argumento para el segundo " "argumento" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "" "split: la cadena nula para el tercer argumento es una extensión de gawk" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el cuarto argumento no es una matriz" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "patsplit: el segundo argumento no es una matriz" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el tercer argumento no debe ser nulo" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: no se puede usar la misma matriz para el segundo y cuarto " "argumentos" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: no se puede usar una submatriz del segundo argumento para el " "cuarto argumento" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: no se puede usar una submatriz del cuarto argumento para el " "segundo argumento" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' es una extensión gawk" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "la cadena nula para `FS' es una extensión de gawk" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "el awk antiguo no admite expresiones regulares como valor de `FS'" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' es una extensión de gawk" @@ -2545,602 +2564,602 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 #, fuzzy msgid "remove_element: received null array" msgstr "length: se recibió un argumento de matriz" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: la opción '%s' es ambigua\n" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: la opción '--%s' no admite ningún argumento\n" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: la opción '%c%s' no admite ningún argumento\n" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: la opción '--%s' requiere un argumento\n" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: no se reconoce la opción '--%s'\n" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: no se reconoce la opción '%c%s'\n" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opción inválida -- '%c'\n" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: la opción requiere un argumento -- '%c'\n" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: la opción '-W %s' es ambigua\n" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: la opción '-W %s' no admite ningún argumento\n" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: la opción '-W %s' requiere un argumento\n" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "el argumento de la línea de órdenes `%s' es un directorio: se salta" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no se puede abrir el fichero `%s' para lectura (%s)" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "no se permite la redirección en modo sandbox" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "la expresión en la redirección `%s' sólo tiene valor numérico" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "la expresión para la redirección `%s' tiene un valor de cadena nula" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "el fichero `%s' para la redirección `%s' puede ser resultado de una " "expresión lógica" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "no se puede abrir la tubería `%s' para la salida (%s)" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "no se puede abrir la tubería `%s' para la entrada (%s)" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "no se puede abrir la tubería de dos vías `%s' para entrada/salida (%s)" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "no se puede redirigir desde `%s' (%s)" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "no se puede redirigir a `%s' (%s)" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "se alcanzó el límite del sistema para ficheros abiertos: comenzando a " "multiplexar los descriptores de fichero" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "falló al cerrar `%s' (%s)." -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "demasiadas tuberías o ficheros de entrada abiertos" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "close: el segundo argumento debe ser `to' o `from'" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' no es un fichero abierto, tubería o co-proceso" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "se cerró una redirección que nunca se abrió" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: la redirección `%s' no se abrió con `|&', se descarta el segundo " "argumento" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "estado de fallo (%d) al cerrar la tubería de `%s' (%s)" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "estado de fallo (%d) al cerrar el fichero de `%s' (%s)" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no se provee el cerrado explícito del `socket' `%s'" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "no se provee el cerrado explícito del co-proceso `%s'" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "no se provee el cerrado explícito del la tubería `%s'" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no se provee el cerrado explícito del fichero `%s'" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "error al escribir en la salida estándar (%s)" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "error al escribir en la salida estándar de error (%s)" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "falló la limpieza de la tubería de `%s' (%s)." -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "falló la limpieza del co-proceso de la tubería a `%s' (%s)." -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "falló la limpieza del fichero de `%s' (%s)." -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "puerto local %s inválido en `/inet'" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "" "no se proporciona algún protocolo (conocido) en el nombre de fichero " "especial `%s'" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "el nombre de fichero especial `%s' está incompleto" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "se debe proporcionar a `/inet' un puerto remoto" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "no se admiten las comunicaciones TCP/IP" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no se puede abrir `%s', modo `%s'" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "falló al cerrar el pty maestro (%s)" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "falló al cerrar la salida estándar en el hijo (%s)" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "falló el movimiento del pty esclavo a la salida estándar en el hijo (dup: %s)" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "falló al cerrar la entrada estándar en el hijo (%s)" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "falló el movimiento del pty esclavo a la entrada estándar en el hijo (dup: " "%s)" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "falló al cerrar el pty esclavo (%s)" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "falló el movimiento a la salida estándar en el hijo (dup: %s)" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "falló el movimiento de la tubería a la entrada estándar en el hijo (dup: %s)" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "falló la restauración de la salida estándar en el proceso padre\n" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "falló la restauración de la entrada estándar en el proceso padre\n" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "falló al cerrar la tubería (%s)" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "no se admite `|&'" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "no se puede abrir la tubería `%s' (%s)" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "no se puede crear el proceso hijo para `%s' (fork: %s)" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "el fichero de datos `%s' está vacío" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "no se puede reservar más memoria de entrada" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaracter de `RS' es una extensión de gawk" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "no se admite la comunicación IPv6" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "se descarta el argumento vacío para `-e/--source'" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: no se reconoce la opción `-W %s', se descarta\n" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' se impone a `--traditional'" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "ejecutar %s como setuid root puede ser un problema de seguridad" -#: main.c:571 +#: main.c:588 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' se impone a `--binary'" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "no se puede establecer el modo binario en la entrada estándar (%s)" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "no se puede establecer el modo binario en la salida estándar (%s)" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" "no se puede establecer el modo binario en la salida estándar de error (%s)" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "¡No hay ningún programa de texto!" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] " "fichero ...\n" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c " "fichero ...\n" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F sc\t\t\t--field-separator=sc\n" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n" -#: main.c:795 +#: main.c:815 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" # Esta es la línea más larga de la lista de argumentos. # Probar con gawk para revisar tabuladores. cfuga -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichero\t\t--exec=fichero\n" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:804 +#: main.c:824 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:806 +#: main.c:826 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3149,7 +3168,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3163,7 +3182,7 @@ msgstr "" "Reporte los errores de los mensajes en español a <es@li.org>.\n" "\n" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3173,7 +3192,7 @@ msgstr "" "Por defecto lee la entrada estándar y escribe en la salida estándar.\n" "\n" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3183,7 +3202,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fichero\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3203,7 +3222,7 @@ msgstr "" "(a su elección) cualquier versión posterior.\n" "\n" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3217,7 +3236,7 @@ msgstr "" "Licencia Pública General de GNU para más detalles.\n" "\n" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3226,16 +3245,16 @@ msgstr "" "junto con este programa. Si no es así, consulte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft no establece FS a tabulador en el awk de POSIX" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valor desconocido para la especificación de campo: %d\n" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3244,49 +3263,49 @@ msgstr "" "%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n" "\n" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no es un nombre de variable legal" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' no es un nombre de variable, se busca el fichero `%s=%s'" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no se puede utilizar la orden interna de gawk `%s' como nombre de variable" -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no se puede usar la función `%s' como nombre de variable" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "excepción de coma flotante" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "error fatal: error interno" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "error fatal: error interno: falla de segmentación" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error interno: desbordamiento de pila" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "no existe el df %d abierto previamente" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "no se puede abrir previamente /dev/null para el df %d" @@ -3345,7 +3364,7 @@ msgstr "or(%lf, %lf): los valores fraccionarios serán truncados" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "línea ord.:" @@ -3400,16 +3419,16 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': no se puede establecer close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "no se puede abrir `%s' para escritura: %s" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "se envía el perfil a la salida estándar de error" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" @@ -3418,7 +3437,7 @@ msgstr "" "\t# bloque(s) %s\n" "\n" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3427,29 +3446,29 @@ msgstr "" "\t# Regla(s)\n" "\n" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "error interno: %s con vname nulo" -#: profile.c:530 +#: profile.c:537 #, fuzzy msgid "internal error: builtin with null fname" msgstr "error interno: %s con vname nulo" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil de gawk, creado %s\n" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" @@ -3458,17 +3477,12 @@ msgstr "" "\n" "\t# Funciones, enumeradas alfabéticamente\n" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redirección %d desconocida" -#: re.c:583 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "el rango de la forma `[%c-%c]' depende del local" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" @@ -3538,10 +3552,13 @@ msgstr ") o \\) desemparejados" msgid "No previous regular expression" msgstr "No hay una expresión regular previa" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "" +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "el rango de la forma `[%c-%c]' depende del local" + #, fuzzy #~ msgid "[s]printf called with no arguments" #~ msgstr "sqrt: se llamó con el argumento negativo %g" Binary files differ@@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-01-16 13:32+0200\n" "Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" @@ -37,8 +37,8 @@ msgstr "yritettiin käyttää skalaariparametria ”%s” taulukkona" msgid "attempt to use scalar `%s' as an array" msgstr "yritettiin käyttää skalaaria ”%s” taulukkona" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -76,19 +76,27 @@ msgstr "asorti: ensimmäinen argumentti ei ole taulukko" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" -msgstr "asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille epäonnistui" +msgstr "" +"asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " +"epäonnistui" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" -msgstr "asorti: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille epäonnistui" +msgstr "" +"asorti: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " +"epäonnistui" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" -msgstr "asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille epäonnistui" +msgstr "" +"asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " +"epäonnistui" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" -msgstr "asorti: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille epäonnistui" +msgstr "" +"asorti: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " +"epäonnistui" #: array.c:1314 #, c-format @@ -120,12 +128,14 @@ msgstr "”%s” on sisäänrakennettu funktio. Sitä ei voi määritellä uudel #: awkgram.y:419 msgid "regexp constant `//' looks like a C++ comment, but is not" -msgstr "säännöllisen lausekkeen vakio ”//” näyttää C++-kommentilta, mutta ei ole" +msgstr "" +"säännöllisen lausekkeen vakio ”//” näyttää C++-kommentilta, mutta ei ole" #: awkgram.y:423 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" -msgstr "säännöllisen lausekkeen vakio ”/%s/” näyttää C-kommentilta, mutta ei ole" +msgstr "" +"säännöllisen lausekkeen vakio ”/%s/” näyttää C-kommentilta, mutta ei ole" #: awkgram.y:515 #, c-format @@ -136,11 +146,11 @@ msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s" msgid "duplicate `default' detected in switch body" msgstr "kaksoiskappale ”default” havaittu switch-rungossa" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "”break” ei ole sallittu silmukan tai switch-lauseen ulkopuolella" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "”continue” ei ole sallittu silmukan ulkopuolella" @@ -160,7 +170,8 @@ msgstr "”return” käytetty funktiokontekstin ulkopuolella" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "pelkkä ”print” BEGIN- tai END-säännössä pitäisi luultavasti olla ”print \"\"”" +msgstr "" +"pelkkä ”print” BEGIN- tai END-säännössä pitäisi luultavasti olla ”print \"\"”" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" @@ -229,262 +240,266 @@ msgstr "erikoismuuttujan ”%s” käyttö epäsuoralle funktiokutsulle epäonni msgid "invalid subscript expression" msgstr "virheellinen indeksointilauseke" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "varoitus: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "tuhoisa: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "odottamaton rivinvaihto tai merkkijonon loppu" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "lähdetiedoston ”%s” avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "jaetun kirjaston ”%s” avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "syy tuntematon" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kohteen ”%s” sisällyttäminen ja käyttö ohjelmatiedostona epäonnistui" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "on jo sisällytetty lähdetiedostoon ”%s”" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "jaettu kirjasto ”%s” on jo ladattu" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "tyhjä tiedostonimi @include:n jälkeen" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load on gawk-laajennus" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "tyhjä tiedostonimi @load:n jälkeen" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "tyhjä ohjelmateksti komentorivillä" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "lähdetiedoston ”%s” (%s) lukeminen epäonnistui" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "lähdetiedosto ”%s” on tyhjä" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "päättämätön säännöllinen lauseke loppuu ”\\”-merkkeihin tiedoston lopussa" +msgstr "" +"päättämätön säännöllinen lauseke loppuu ”\\”-merkkeihin tiedoston lopussa" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk:n regex-määre ”/.../%c” ei toimi gawk:ssa" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawkin regex-määre ”/.../%c” ei toimi gawkissa" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "päättämätön säännöllinen lauseke" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "päättämätön säännöllinen lauseke tiedoston lopussa" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "”\\ #...”-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "kenoviiva ei ole rivin viimeinen merkki" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX ei salli operaattoria ”**=”" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "vanha awk ei tue operaattoria ”**=”" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX ei salli operaattoria ”**”" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "vanha awk ei tue operaattoria ”**”" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "operaattoria ”^=” ei tueta vanhassa awk:ssa" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "operaattoria ”^” ei tueta vanhassa awk:ssa" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "päättämätön merkkijono" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "virheellinen merkki ’%c’ lausekkeessa" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "”%s” on gawk-laajennus" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ei salli operaattoria ”%s”" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "”%s” ei ole tuettu vanhassa awk-ohjelmassa" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "”goto”-käskyä pidetään haitallisena!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" -msgstr "%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä argumenttina" +msgstr "" +"%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä " +"argumenttina" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s kolmas parametri ei ole vaihdettava objekti" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: kolmas argumentti on gawk-laajennus" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: toinen argumentti on gawk-laajennus" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" msgstr "index: regexp-vakio toisena argumenttina ei ole sallittu" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktio ”%s”: parametri ”%s” varjostaa yleismuuttujaa" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "tiedoston ”%s” avaaminen kirjoittamista varten (%s) epäonnistui" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "lähetetään muuttujaluettelo vakiovirheeseen" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sulkeminen epäonnistui (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kutsuttu kahdesti!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "siellä oli varjostettuja muuttujia." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "funktionimi ”%s” on jo aikaisemmin määritelty" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktio ”%s”: funktionimen käyttö parametrinimenä epäonnistui" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "funktio ”%s”: erikoismuuttujan ”%s” käyttö funktioparametrina epäonnistui" +msgstr "" +"funktio ”%s”: erikoismuuttujan ”%s” käyttö funktioparametrina epäonnistui" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktio ”%s”: parametri #%d, ”%s”, samanlainen parametri #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "funktiota ”%s” kutsuttiin, mutta sitä ei ole koskaan määritelty" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktio ”%s” määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -493,20 +508,21 @@ msgstr "" "funktio ”%s” kutsuttu välilyönnillä nimen ja ”(”-merkin\n" "välillä, tai käytetty muuttujana tai taulukkona" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "nollalla jakoa yritettiin" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "jakoa nollalla yritettiin operaattorissa ”%%”" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" msgstr "arvon liittäminen kenttäjälkiaskelkasvatuslausekkeeseen epäonnistui" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "virheellinen liittämiskohde (käskykoodi %s)" @@ -533,12 +549,16 @@ msgstr "exp: argumentti %g on lukualueen ulkopuolella" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush: tyhjentäminen epäonnistui: putki ”%s” avattu lukemista varten, ei kirjoittamiseen" +msgstr "" +"fflush: tyhjentäminen epäonnistui: putki ”%s” avattu lukemista varten, ei " +"kirjoittamiseen" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush: tyhjentäminen epäonnistui: tiedosto ”%s” avattu lukemista varten, ei kirjoittamiseen" +msgstr "" +"fflush: tyhjentäminen epäonnistui: tiedosto ”%s” avattu lukemista varten, ei " +"kirjoittamiseen" #: builtin.c:244 #, c-format @@ -608,7 +628,9 @@ msgstr "kohtalokas: argumenttilukumäärän argumentilla ”$” on oltava > 0" #: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" -msgstr "kohtalokas: argumenttilukumäärä %ld on suurempi kuin toimitettujen argumenttien lukumäärä" +msgstr "" +"kohtalokas: argumenttilukumäärä %ld on suurempi kuin toimitettujen " +"argumenttien lukumäärä" #: builtin.c:923 msgid "fatal: `$' not permitted after period in format" @@ -616,299 +638,309 @@ msgstr "kohtalokas: ”$”-argumentti ei ole sallittu pisteen jälkeen muodossa #: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "kohtalokas: ei ”$”-argumenttia tarjottu sijantikenttäleveydelle tai tarkkuudelle" +msgstr "" +"kohtalokas: ei ”$”-argumenttia tarjottu sijantikenttäleveydelle tai " +"tarkkuudelle" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "”l” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”l” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "”L” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”L” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "”h” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”h” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: arvo %g on lukualueen ulkopuolella ”%%%c”-muodolle" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" -msgstr "ohitetaan tuntematon muotoargumenttimerkki ”%c”: ei muunnettu argumenttia" +msgstr "" +"ohitetaan tuntematon muotoargumenttimerkki ”%c”: ei muunnettu argumenttia" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ tällainen loppui kesken" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "muotomerkkijonoon toimitettu liian monta argumenttia" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: ei argumentteja" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: ei argumentteja" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kutsuttu negatiivisella argumentilla %g" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: pituus %g ei ole >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: pituus %g ei ole >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" -msgstr "substr: pituus %g liian suuri merkkijononindeksointiin, typistetään arvoon %g" +msgstr "" +"substr: pituus %g liian suuri merkkijononindeksointiin, typistetään arvoon %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: lähdemerkkijono on nollapituinen" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden " +"(%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -msgstr "strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" +msgstr "" +"strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" -msgstr "strftime: toinen argumentti on pienempi kuin 0 tai liian suuri time_t-rakenteeseen" +msgstr "" +"strftime: toinen argumentti on pienempi kuin 0 tai liian suuri time_t-" +"rakenteeseen" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: vastaanotettu tyhjä muotomerkkijono" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: vähintään yksi arvoista on oletuslukualueen ulkopuolella" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "’system’-funktio ei ole sallittu hiekkalaatikkotilassa" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "viite alustamattomaan kenttään ”$%d”" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 0-arvoinen kolmas argumentti käsitellään kuin 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argumentti %d ei ole numeeraaliargumentti" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatiivinen arvo antaa outoja tuloksia" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): jaosarvo typistetään" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: ”%s” ei ole kelvollinen paikallinen kategoria" @@ -940,7 +972,8 @@ msgstr "save ”%s”: komento ei ole sallittu." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" -msgstr "Komennon ”commands” käyttö breakpoint/watchpoint-komentoja varten epäonnistui" +msgstr "" +"Komennon ”commands” käyttö breakpoint/watchpoint-komentoja varten epäonnistui" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" @@ -1014,24 +1047,36 @@ msgid "non-zero integer value" msgstr "nollasta poikkeava kokonaislukuarvo" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - tulosta kaikkien tai N:n sisimmäisen (ulommaisin, jos N < 0) kehyksen jäljet." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - tulosta kaikkien tai N:n sisimmäisen (ulommaisin, jos N < 0) " +"kehyksen jäljet." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[filename:]N|function] - aseta breakpoint määriteltyyn sijaintiin." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." +msgstr "" +"break [[filename:]N|function] - aseta breakpoint määriteltyyn sijaintiin." #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[filename:]N|function] - poista aiemmin asetetut breakpoint-kohdat." +msgstr "" +"clear [[filename:]N|function] - poista aiemmin asetetut breakpoint-kohdat." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [num] - aloittaa komentojen luettelon, joka suoritetaan keskeytyskohta(watchpoint)osumassa." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [num] - aloittaa komentojen luettelon, joka suoritetaan " +"keskeytyskohta(watchpoint)osumassa." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition num [expr] - aseta tai nollaa keskeytyskohta- tai vahtikohtaehdot." +msgstr "" +"condition num [expr] - aseta tai nollaa keskeytyskohta- tai vahtikohtaehdot." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1039,15 +1084,19 @@ msgstr "continue [COUNT] - continue program being debugged." #: command.y:829 msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [keskeytyskohdat] [lukualue] - poista määritellyt keskeytyskohdat." +msgstr "" +"delete [keskeytyskohdat] [lukualue] - poista määritellyt keskeytyskohdat." #: command.y:831 msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disable [keskeytyskohdat] [lukualue] - ota pois käytöstä määritellyt keskeytyskohdat." +msgstr "" +"disable [keskeytyskohdat] [lukualue] - ota pois käytöstä määritellyt " +"keskeytyskohdat." #: command.y:833 msgid "display [var] - print value of variable each time the program stops." -msgstr "display [muuttuja] - tulosta muuttujan arvo joka kerta kun ohjelma pysähtyy." +msgstr "" +"display [muuttuja] - tulosta muuttujan arvo joka kerta kun ohjelma pysähtyy." #: command.y:835 msgid "down [N] - move N frames down the stack." @@ -1059,7 +1108,9 @@ msgstr "dump [tiedostonimi] - vedosta käskyt tiedostoon tai vakiotulosteeseen." #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "enable [once|del] [keskeytyskohdat] [lukualue] - ota käyttöön määritellyt keskeytyskohdat." +msgstr "" +"enable [once|del] [keskeytyskohdat] [lukualue] - ota käyttöön määritellyt " +"keskeytyskohdat." #: command.y:841 msgid "end - end a list of commands or awk statements." @@ -1083,23 +1134,32 @@ msgstr "help [komento] - tulosta komentoluettelo tai komennon selitys." #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N COUNT - aseta keskeytyskohdan ignore-count numero N arvoon COUNT." +msgstr "" +"ignore N COUNT - aseta keskeytyskohdan ignore-count numero N arvoon COUNT." #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." -msgstr "info aihe - source|sources|variables|functions|break|frame|args|locals|display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." +msgstr "" +"info aihe - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -msgstr "list [-|+|[tiedostonimi:]rivinumero|funktio|lukualue] - luettele määritellyt rivit." +msgstr "" +"list [-|+|[tiedostonimi:]rivinumero|funktio|lukualue] - luettele määritellyt " +"rivit." #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [COUNT] - askella ohjelmaa, etene alirutiinikutsujen kautta." #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [COUNT] - askella yksi käsky, mutta etene alirutiinikutsujen kautta." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgstr "" +"nexti [COUNT] - askella yksi käsky, mutta etene alirutiinikutsujen kautta." #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." @@ -1134,8 +1194,11 @@ msgid "set var = value - assign value to a scalar variable." msgstr "set var = arvo - liitä arvo skalaarimuuttujaan." #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - pysäyttää tavallisen viestin kun pysähdytään katkaisukohdassa/vahtipisteessä." +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - pysäyttää tavallisen viestin kun pysähdytään katkaisukohdassa/" +"vahtipisteessä." #: command.y:881 msgid "source file - execute commands from file." @@ -1143,7 +1206,8 @@ msgstr "source file - suorita komennot tiedostosta." #: command.y:883 msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [COUNT] - askella ohjelmaa, kunnes se saavuttaa eri lähdekoodirivin." +msgstr "" +"step [COUNT] - askella ohjelmaa, kunnes se saavuttaa eri lähdekoodirivin." #: command.y:885 msgid "stepi [COUNT] - step one instruction exactly." @@ -1162,8 +1226,12 @@ msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - poista muuttuja(t) automaattisesta näyttöluettelosta." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[tiedostonimi:]N|funktio] - suorita kunnes ohjelma tavoittaa eri rivin tai rivin N nykyisen kehyksen sisällä." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[tiedostonimi:]N|funktio] - suorita kunnes ohjelma tavoittaa eri " +"rivin tai rivin N nykyisen kehyksen sisällä." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1233,7 +1301,8 @@ msgstr "aseta tai näytä vianjäljittäjäkehote." #: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." -msgstr "aseta, poista asetus tai näytä komentohistoriatallennus (value=on|off)." +msgstr "" +"aseta, poista asetus tai näytä komentohistoriatallennus (value=on|off)." #: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." @@ -1269,7 +1338,9 @@ msgstr "lähdetiedostoa nimeltä ”%s” (%s) ei kyetä lukemaan" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" -msgstr "VAROITUS: lähdekooditiedostoa ”%s” on muokattu ohjelman kääntämisen jälkeen.\n" +msgstr "" +"VAROITUS: lähdekooditiedostoa ”%s” on muokattu ohjelman kääntämisen " +"jälkeen.\n" #: debug.c:551 #, c-format @@ -1279,12 +1350,14 @@ msgstr "rivinumero %d lukualueen ulkopuolella; kohteessa ”%s” on %d riviä" #: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" -msgstr "odottamaton eof-tiedostonloppumerkki luettaessa tiedostoa ”%s”, rivi %d" +msgstr "" +"odottamaton eof-tiedostonloppumerkki luettaessa tiedostoa ”%s”, rivi %d" #: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" -msgstr "lähdekooditiedostoa ”%s” on muokattu ohjelman suorituksen aloituksen jälkeen" +msgstr "" +"lähdekooditiedostoa ”%s” on muokattu ohjelman suorituksen aloituksen jälkeen" #: debug.c:732 #, c-format @@ -1465,7 +1538,8 @@ msgstr "yritettiin käyttää skalaariarvoa taulukkona" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" -msgstr "Watchpoint %d poistettiin, koska parametri on lukualueen ulkopuolella.\n" +msgstr "" +"Watchpoint %d poistettiin, koska parametri on lukualueen ulkopuolella.\n" #: debug.c:1867 #, c-format @@ -1499,22 +1573,29 @@ msgstr "virheellinen kehysnumero" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Huomaa: keskeytyskohta %d (otettu käyttöön, ohita seuraavat %ld osumaa), asetettu myös osoitteessa %s:%d" +msgstr "" +"Huomaa: keskeytyskohta %d (otettu käyttöön, ohita seuraavat %ld osumaa), " +"asetettu myös osoitteessa %s:%d" #: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" -msgstr "Huomaa: keskeytyskohta %d (otettu käyttöön), asetettu myös kohdassa %s:%d" +msgstr "" +"Huomaa: keskeytyskohta %d (otettu käyttöön), asetettu myös kohdassa %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Huomaa: keskeytyskohta %d (otettu pois käytöstä, ohita seuraavat %ld osumaa), asetettu myös kohdassa %s:%d" +msgstr "" +"Huomaa: keskeytyskohta %d (otettu pois käytöstä, ohita seuraavat %ld " +"osumaa), asetettu myös kohdassa %s:%d" #: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" -msgstr "Huomaa: keskeytyskohta %d (otettu pois käytöstä), asetettu myös kohdassa %s:%d" +msgstr "" +"Huomaa: keskeytyskohta %d (otettu pois käytöstä), asetettu myös kohdassa %s:" +"%d" #: debug.c:2238 #, c-format @@ -1591,7 +1672,8 @@ msgstr "Pysähtyy seuraavalla kerralla kun keskeytyskohta %d saavutetaan.\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" -msgstr "Vain ohjelmia, jotka tarjoavat valitsimen ”-f”, voidaan vikajäljittää.\n" +msgstr "" +"Vain ohjelmia, jotka tarjoavat valitsimen ”-f”, voidaan vikajäljittää.\n" #: debug.c:2908 #, c-format @@ -1615,7 +1697,8 @@ msgstr "virhe: uudelleenkäynnistys epäonnistui, toiminto ei ole sallittu\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" -msgstr "virhe (%s): uudelleenkäynnistys epäonnistui, loput komennot ohitetaan\n" +msgstr "" +"virhe (%s): uudelleenkäynnistys epäonnistui, loput komennot ohitetaan\n" #: debug.c:2950 #, c-format @@ -1649,7 +1732,8 @@ msgstr "Ohittaa seuraavat %ld keskeytyskohdan %d ylitystä.\n" #: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" -msgstr "’finish’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" +msgstr "" +"’finish’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" #: debug.c:3212 #, c-format @@ -1659,7 +1743,8 @@ msgstr "Suorita kunnes paluu kohteesta " #: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" -msgstr "’return’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" +msgstr "" +"’return’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" #: debug.c:3369 #, c-format @@ -1737,40 +1822,40 @@ msgstr "”return” ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaa msgid "No symbol `%s' in current context" msgstr "Symbolia ”%s” ei ole nykyisesssä asiayhteydessä" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "pariton [" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "virheellinen merkkiluokka" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "päättymätön \\-koodinvaihtomerkki" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Virheellinen \\{\\}-sisältö" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Säännöllinen lauseke on liian iso" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "pariton (" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "syntaksi ei ole määritelty" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr "pariton )" @@ -1892,8 +1977,10 @@ msgstr "load_ext: kirjaston ”%s” (%s) avaus epäonnistui\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext: kirjasto ”%s”: ei määrittele ”plugin_is_GPL_compatible” (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext: kirjasto ”%s”: ei määrittele ”plugin_is_GPL_compatible” (%s)\n" #: ext.c:110 #, c-format @@ -1920,8 +2007,10 @@ msgstr "extension: kirjaston ”%s” (%s) avaus epäonnistui" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension: kirjasto ”%s”: ei määrittele ”plugin_is_GPL_compatible” (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension: kirjasto ”%s”: ei määrittele ”plugin_is_GPL_compatible” (%s)" #: ext.c:190 #, c-format @@ -1950,7 +2039,9 @@ msgstr "make_builtin: funktionimi ”%s” on määritelty jo aiemmin" #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin: gawk-ohjelman sisäisen muuttujanimen ”%s” käyttö funktionimenä epäonnistui" +msgstr "" +"make_builtin: gawk-ohjelman sisäisen muuttujanimen ”%s” käyttö funktionimenä " +"epäonnistui" #: ext.c:249 ext.c:304 #, c-format @@ -1984,7 +2075,9 @@ msgstr "extension: funktionimi ”%s” on määritelty jo aiemmin" #: ext.c:301 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "extension: gawk-ohjelman sisäisen muuttujanimen käyttö ”%s” funktionimenä epäonnistui" +msgstr "" +"extension: gawk-ohjelman sisäisen muuttujanimen käyttö ”%s” funktionimenä " +"epäonnistui" #: ext.c:375 #, c-format @@ -2153,16 +2246,21 @@ msgstr "inplace_begin: kohdallaanmuokkaus on jo aktivoitu" #: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" -msgstr "inplace_begin: odotetaan 2 argumenttia, mutta kutsussa oli %d argumenttia" +msgstr "" +"inplace_begin: odotetaan 2 argumenttia, mutta kutsussa oli %d argumenttia" #: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" -msgstr "inplace_begin: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä epäonnistui" +msgstr "" +"inplace_begin: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä " +"epäonnistui" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" -msgstr "inplace_begin: ottaen pois käytöstä virheellisen TIEDOSTONIMI ”%s” muokkauksen" +msgstr "" +"inplace_begin: ottaen pois käytöstä virheellisen TIEDOSTONIMI ”%s” " +"muokkauksen" #: extension/inplace.c:151 #, c-format @@ -2201,7 +2299,9 @@ msgstr "inplace_begin: close(%d) epäonnistui (%s)" #: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" -msgstr "inplace_end: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä epäonnistui" +msgstr "" +"inplace_end: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä " +"epäonnistui" #: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" @@ -2256,16 +2356,16 @@ msgstr "chr: kutsuttu ilman argumentteja" msgid "chr: called with inappropriate argument(s)" msgstr "chr: kutsuttu sopimattomalla argumentilla" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir epäonnistui: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: kutsuttu liian monella argumentilla" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: kutsuttu ilman argumentteja" @@ -2317,27 +2417,27 @@ msgstr "do_reada: clear_array epäonnistui\n" msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element epäonnistui\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: ohitetaan argumentit" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: ei ole tuettu tällä alustalla" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: kutsuttu liian monella argumentilla" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: puuttuu vaadittu numeerinen argumentti" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: argumentti on negatiivinen" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: ei ole tuettu tällä alustalla" @@ -2359,15 +2459,20 @@ msgstr "split: toinen argumentti ei ole taulukko" #: field.c:993 msgid "split: cannot use the same array for second and fourth args" -msgstr "split: saman taulukon käyttö toiselle ja neljännelle argumentille epäonnistui" +msgstr "" +"split: saman taulukon käyttö toiselle ja neljännelle argumentille epäonnistui" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "split: toisen argumentin käyttö alitaulukkoa neljännelle argumentille epäonnistui" +msgstr "" +"split: toisen argumentin käyttö alitaulukkoa neljännelle argumentille " +"epäonnistui" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "split: neljännen argumentin käyttö alitaulukkoa toiselle argumentille epäonnistui" +msgstr "" +"split: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " +"epäonnistui" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" @@ -2387,15 +2492,21 @@ msgstr "patsplit: kolmas argumentti ei ole taulukko" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" -msgstr "patsplit: saman taulukon käyttö toiselle ja neljännelle argumentille epäonnistui" +msgstr "" +"patsplit: saman taulukon käyttö toiselle ja neljännelle argumentille " +"epäonnistui" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "patsplit: toisen argumentin käyttö alitaulukkkoa neljännelle argumentille epäonnistui" +msgstr "" +"patsplit: toisen argumentin käyttö alitaulukkkoa neljännelle argumentille " +"epäonnistui" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "patsplit: neljännen argumentin käyttö alitaulukkoa toiselle argumentille epäonnistui" +msgstr "" +"patsplit: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " +"epäonnistui" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2430,20 +2541,20 @@ msgstr "node_to_awk_value: vastaaotti null-solmun" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: vastaanotti null-arvon" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element: vastaanotettu null-taulukko" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element: vastaanotti null-alaindeksin" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: indeksin %d muuntaminen epäonnistui\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: arvon %d muuntaminen epäonnistui\n" @@ -2535,7 +2646,9 @@ msgstr "lausekkeella ”%s”-uudelleenohjauksessa on null-merkkijonoarvo" #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "tiedostonimi ”%s” ”%s”-uudelleenohjaukselle saattaa olla loogisen lausekkeen tulos" +msgstr "" +"tiedostonimi ”%s” ”%s”-uudelleenohjaukselle saattaa olla loogisen lausekkeen " +"tulos" #: io.c:809 #, c-format @@ -2555,7 +2668,8 @@ msgstr "putken ”%s” avaaminen syötteelle (%s) epäonnistui" #: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" -msgstr "kaksisuuntaisen putken ”%s” avaaminen syötteelle/tulosteelle (%s) epäonnistui" +msgstr "" +"kaksisuuntaisen putken ”%s” avaaminen syötteelle/tulosteelle (%s) epäonnistui" #: io.c:986 #, c-format @@ -2568,8 +2682,11 @@ msgid "can't redirect to `%s' (%s)" msgstr "uudelleenohjaus putkeen ”%s” (%s) epäonnistui" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "saavutettiin avoimien tiedostojen järjestelmäraja: aloitetaan tiedostomäärittelijöiden lomittaminen" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"saavutettiin avoimien tiedostojen järjestelmäraja: aloitetaan " +"tiedostomäärittelijöiden lomittaminen" #: io.c:1056 #, c-format @@ -2596,7 +2713,9 @@ msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close: uudelleenohjaus ”%s” ei ole avattu operaattoreilla ”|&”, toinen argumentti ohitettu" +msgstr "" +"close: uudelleenohjaus ”%s” ei ole avattu operaattoreilla ”|&”, toinen " +"argumentti ohitettu" #: io.c:1222 #, c-format @@ -2703,7 +2822,9 @@ msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)" #: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "”slave pty”:n siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" +msgstr "" +"”slave pty”:n siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui " +"(dup: %s)" #: io.c:1924 io.c:2110 #, c-format @@ -2713,7 +2834,9 @@ msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)" #: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "”slave pty”:n siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" +msgstr "" +"”slave pty”:n siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui " +"(dup: %s)" #: io.c:1929 io.c:1951 #, c-format @@ -2723,12 +2846,14 @@ msgstr "”slave pty”:n sulkeminen epäonnistui (%s)" #: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" -msgstr "putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" +msgstr "" +"putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" #: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" -msgstr "putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" +msgstr "" +"putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" #: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" @@ -2764,7 +2889,9 @@ msgstr "register_input_parser: vastaanotettiin NULL-osoitin" #: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" -msgstr "syötejäsennin ”%s” on ristiriidassa aiemmin asennetun syötejäsentimen ”%s” kanssa" +msgstr "" +"syötejäsennin ”%s” on ristiriidassa aiemmin asennetun syötejäsentimen ”%s” " +"kanssa" #: io.c:2825 #, c-format @@ -2777,8 +2904,11 @@ msgstr "register_output_wrapper: vastaanotti NULL-osoittimen" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "tulostekäärin ”%s” on ristiriidassa aiemmin asennetun tulostekäärimen ”%s” kanssa" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"tulostekäärin ”%s” on ristiriidassa aiemmin asennetun tulostekäärimen ”%s” " +"kanssa" #: io.c:2880 #, c-format @@ -2791,8 +2921,12 @@ msgstr "register_output_processor: vastaanotti NULL-osoittimen" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" -msgstr "kaksisuuntainen prosessori ”%s” on ristiriidassa aiemmin asennetun kaksisuuntaisen prosessorin ”%s” kanssa" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"kaksisuuntainen prosessori ”%s” on ristiriidassa aiemmin asennetun " +"kaksisuuntaisen prosessorin ”%s” kanssa" #: io.c:2939 #, c-format @@ -2832,7 +2966,9 @@ msgstr "%s: valitsin vaatii argumentin -- %c\n" #: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "ympäristömuuttuja ”POSIXLY_CORRECT” asetettu: käännetään päälle valitsin ”--posix”" +msgstr "" +"ympäristömuuttuja ”POSIXLY_CORRECT” asetettu: käännetään päälle valitsin ”--" +"posix”" #: main.c:568 msgid "`--posix' overrides `--traditional'" @@ -2840,7 +2976,8 @@ msgstr "valitsin ”--posix” korvaa valitsimen ”--traditional”" #: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" -msgstr "valitsin ”--posix” tai ”--traditional” korvaa valitsimen ”--non-decimal-data”" +msgstr "" +"valitsin ”--posix” tai ”--traditional” korvaa valitsimen ”--non-decimal-data”" #: main.c:583 #, c-format @@ -2873,12 +3010,16 @@ msgstr "ei ohjelmatekstiä ollenkaan!" #: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" -msgstr "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] -f ohjelmatiedosto [--] tiedosto ...\n" +msgstr "" +"Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] -f ohjelmatiedosto [--] " +"tiedosto ...\n" #: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" -msgstr "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] [--] %cohjelma%c tiedosto ...\n" +msgstr "" +"Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] [--] %cohjelma%c " +"tiedosto ...\n" #: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" @@ -3013,7 +3154,8 @@ msgid "" "\n" msgstr "" "\n" -"Virheiden ilmoittamista varten, katso solmua ”Bugs” tiedostossa ”gawk.info”,\n" +"Virheiden ilmoittamista varten, katso solmua ”Bugs” tiedostossa ”gawk." +"info”,\n" "joka on kappale ”Reporting Problems and Bugs” painetussa versiossa.\n" "\n" @@ -3109,7 +3251,8 @@ msgstr "”%s” ei ole muuttujanimi, etsitään tiedostoa ”%s=%s”" #: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "gawk-ohjelman sisäisen ”%s”-määrittelyn käyttö muuttujanimenä epäonnistui" +msgstr "" +"gawk-ohjelman sisäisen ”%s”-määrittelyn käyttö muuttujanimenä epäonnistui" #: main.c:1344 #, c-format @@ -3140,7 +3283,8 @@ msgstr "ei avattu uudelleen tiedostomäärittelijää %d" #: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" -msgstr "laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui" +msgstr "" +"laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui" #: mpfr.c:550 #, c-format @@ -3216,8 +3360,12 @@ msgstr "ei heksadesimaalilukuja ”\\x”-koodinvaihtosekvenssissä" #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "heksadesimaalikoodinvaihtomerkkejä \\x%.*s / %d ei ole luultavasti tulkittu sillä tavalla kuin odotat" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"heksadesimaalikoodinvaihtomerkkejä \\x%.*s / %d ei ole luultavasti tulkittu " +"sillä tavalla kuin odotat" #: node.c:594 #, c-format @@ -3225,8 +3373,12 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "koodinvaihtosekvenssi ”\\%c” käsitelty kuin pelkkä ”%c”" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." -msgstr "Virheellinen monitavutieto havaittu. Paikallisasetuksesi ja tietojesi välillä saattaa olla täsmäämättömyys." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." +msgstr "" +"Virheellinen monitavutieto havaittu. Paikallisasetuksesi ja tietojesi " +"välillä saattaa olla täsmäämättömyys." #: posix/gawkmisc.c:177 #, c-format @@ -3236,7 +3388,8 @@ msgstr "%s %s ”%s”: fd-lippujen hakeminen epäonnistui: (fcntl F_GETFD: %s)" #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" -msgstr "%s %s ”%s”: close-on-exec -asettaminen epäonnistui: (fcntl F_SETFD: %s)" +msgstr "" +"%s %s ”%s”: close-on-exec -asettaminen epäonnistui: (fcntl F_SETFD: %s)" #: profile.c:71 #, c-format @@ -3305,7 +3458,8 @@ msgstr "redir2str: tuntematon edelleenohjaustyyppi %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "säännöllisen lausekkeen komponentin ”%.*s” pitäisi luultavasti olla ”[%.*s]”" +msgstr "" +"säännöllisen lausekkeen komponentin ”%.*s” pitäisi luultavasti olla ”[%.*s]”" #: regcomp.c:131 msgid "Success" @@ -3447,8 +3601,11 @@ msgstr "pääsisällön pop-toiminto epäonnistui" #~ msgid "statement has no effect" #~ msgstr "käskyllä ei ole vaikutusta" -#~ msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" -#~ msgstr "for-silmukka: taulukon ”%s” koko muuttui arvosta %ld arvoon %ld silmukan suorituksen aikana" +#~ msgid "" +#~ "for loop: array `%s' changed size from %ld to %ld during loop execution" +#~ msgstr "" +#~ "for-silmukka: taulukon ”%s” koko muuttui arvosta %ld arvoon %ld silmukan " +#~ "suorituksen aikana" #~ msgid "function called indirectly through `%s' does not exist" #~ msgstr "kohteen ”%s” kautta epäsuorasti kutsuttu funktio ei ole olemassa" @@ -3496,7 +3653,8 @@ msgstr "pääsisällön pop-toiminto epäonnistui" #~ msgstr "muisti loppui" #~ msgid "call of `length' without parentheses is deprecated by POSIX" -#~ msgstr "”length”-kutsu ilman sulkumerkkejä on vanhentunut POSIX-standardissa" +#~ msgstr "" +#~ "”length”-kutsu ilman sulkumerkkejä on vanhentunut POSIX-standardissa" #~ msgid "division by zero attempted in `/'" #~ msgstr "jakoa nollalla yritettiin operaatiossa ”/”" @@ -3519,8 +3677,12 @@ msgstr "pääsisällön pop-toiminto epäonnistui" #~ msgid "`nextfile' cannot be called from a BEGIN rule" #~ msgstr "”nextfile” ei voida kutsua BEGIN-säännöstä" -#~ msgid "concatenation: side effects in one expression have changed the length of another!" -#~ msgstr "concatenation: sivuvaikutukset yhdessä lausekkeessa ovat muuttaneet toisen pituutta!" +#~ msgid "" +#~ "concatenation: side effects in one expression have changed the length of " +#~ "another!" +#~ msgstr "" +#~ "concatenation: sivuvaikutukset yhdessä lausekkeessa ovat muuttaneet " +#~ "toisen pituutta!" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "virheellinen tyyppi (%s) funktiossa tree_eval" @@ -3584,7 +3746,9 @@ msgstr "pääsisällön pop-toiminto epäonnistui" #~ msgstr "Tuntematon solmutyyppi %s funktiossa pp_var" #~ msgid "can't open two way socket `%s' for input/output (%s)" -#~ msgstr "kaksisuuntaisen vastakkeen ”%s” avaaminen syötteelle/tulosteelle (%s) epäonnistui" +#~ msgstr "" +#~ "kaksisuuntaisen vastakkeen ”%s” avaaminen syötteelle/tulosteelle (%s) " +#~ "epäonnistui" #~ msgid "attempt to use scalar `%s' as array" #~ msgstr "yritettiin käyttää skalaaria ”%s” taulukkona" Binary files differ@@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-01-16 00:31+0100\n" -"Last-Translator: Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>\n" +"Last-Translator: Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir." +"org>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" "MIME-Version: 1.0\n" @@ -38,8 +39,8 @@ msgstr "tentative d'utiliser le paramètre scalaire « %s » comme tableau" msgid "attempt to use scalar `%s' as an array" msgstr "tentative d'utiliser le scalaire « %s » comme tableau" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -137,11 +138,11 @@ msgstr "le corps du switch comporte des cas répétés : %s" msgid "duplicate `default' detected in switch body" msgstr "plusieurs « default » ont été détectés dans le corps du switch" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "« break » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch" @@ -161,7 +162,9 @@ msgstr "« return » est utilisé hors du contexte d'une fonction" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "dans BEGIN ou END, un « print » seul devrait sans doute être un « print \"\" »" +msgstr "" +"dans BEGIN ou END, un « print » seul devrait sans doute être un « print " +"\"\" »" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" @@ -224,268 +227,285 @@ msgstr "les appels indirects de fonctions sont une extension gawk" #: awkgram.y:1620 #, c-format msgid "can not use special variable `%s' for indirect function call" -msgstr "impossible d'utiliser la variable spéciale « %s » pour un appel indirect de fonction" +msgstr "" +"impossible d'utiliser la variable spéciale « %s » pour un appel indirect de " +"fonction" #: awkgram.y:1698 msgid "invalid subscript expression" msgstr "expression indice incorrecte" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "avertissement : " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal : " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "fin de chaîne ou passage à la ligne inattendu" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "impossible d'ouvrir le fichier source « %s » en lecture (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "impossible d'ouvrir la bibliothèque partagée « %s » en lecture (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "raison inconnue" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "impossible d'inclure « %s » et de l'utiliser comme extension" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "le fichier source « %s » a déjà été intégré" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "la bibliothèque partagée « %s » est déjà chargée" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include est une extension gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "Le nom de fichier après @include est vide" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load est une extension gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "Le nom de fichier après @load est vide" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "le programme indiqué en ligne de commande est vide" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "impossible de lire le fichier source « %s » (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "le fichier source « %s » est vide" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "le fichier source ne se termine pas par un passage à la ligne" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "expression rationnelle non refermée terminée par un « \\ » en fin de fichier" +msgstr "" +"expression rationnelle non refermée terminée par un « \\ » en fin de fichier" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "%s : %d : le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas dans gawk" +msgstr "" +"%s : %d : le modificateur d'expressions rationnelles « /.../%c » de tawk ne " +"marche pas dans gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas dans gawk" +msgstr "" +"le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas " +"dans gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "expression rationnelle non refermée" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "expression rationnelle non refermée en fin de fichier" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" -msgstr "l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" +msgstr "" +"l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX n'autorise pas l'opérateur « **= »" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "l'ancien awk ne dispose pas de l'opérateur « **= »" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX n'autorise pas l'opérateur « ** »" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "l'ancien awk ne dispose pas de l'opérateur « ** »" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^= »" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^ »" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "chaîne non refermée" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "caractère incorrect « %c » dans l'expression" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "« %s » est une extension gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX n'autorise pas « %s »" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de « %s »" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "« goto est jugé dangereux ! » (Edsger W. Dijkstra)\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d n'est pas un nombre d'arguments valide de %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" -msgstr "%s : une chaîne littérale en dernier argument d'une substitution est sans effet" +msgstr "" +"%s : une chaîne littérale en dernier argument d'une substitution est sans " +"effet" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "le 3e paramètre de %s n'est pas un objet modifiable" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match : le 3e argument est une extension gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close : le 2e argument est une extension gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" -msgstr "utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" +msgstr "" +"utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" -msgstr "utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" +msgstr "" +"utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" -msgstr "index : le second argument ne peut être une expression rationnelle constante" +msgstr "" +"index : le second argument ne peut être une expression rationnelle constante" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fonction « %s » : le paramètre « %s » masque la variable globale" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "impossible d'ouvrir « %s » en écriture (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "envoi de la liste des variables vers la sortie d'erreur standard" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s : échec de la fermeture (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadows_funcs() a été appelé deux fois !" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "il y avait des variables masquées." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "nom de fonction « %s » déjà défini" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" -msgstr "fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre" +msgstr "" +"fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "fonction « %s » : impossible d'utiliser la variable spéciale « %s » comme paramètre d'une fonction" +msgstr "" +"fonction « %s » : impossible d'utiliser la variable spéciale « %s » comme " +"paramètre d'une fonction" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" -msgstr "fonction « %s » : paramètre #%d, « %s » est un doublon du paramètre #%d" +msgstr "" +"fonction « %s » : paramètre #%d, « %s » est un doublon du paramètre #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "fonction « %s » appelée sans être définie" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "fonction « %s » définie mais jamais appelée directement" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "le paramètre #%d, une expr. rationnelle constante, fournit un booléen" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -494,21 +514,24 @@ msgstr "" "fonction « %s » appelée avec un espace entre son nom\n" "et « ( », ou utilisée comme variable ou tableau" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "tentative de division par zéro" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentative de division par zéro dans « %% »" # gawk 'BEGIN { $1++ = 1 }' -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" -msgstr "impossible d'assigner une valeur au résultat de la post-incrémentation d'un champ" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" +"impossible d'assigner une valeur au résultat de la post-incrémentation d'un " +"champ" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "cible de l'assignement incorrecte (opcode %s)" @@ -534,17 +557,22 @@ msgstr "exp : l'argument %g est hors limite" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush : vidage impossible : le tube « %s » est ouvert en lecture et non en écriture" +msgstr "" +"fflush : vidage impossible : le tube « %s » est ouvert en lecture et non en " +"écriture" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush : vidage impossible : fichier « %s » ouvert en lecture, pas en écriture" +msgstr "" +"fflush : vidage impossible : fichier « %s » ouvert en lecture, pas en " +"écriture" #: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" -msgstr "fflush : « %s » n'est ni un fichier ouvert, ni un tube, ni un co-processus" +msgstr "" +"fflush : « %s » n'est ni un fichier ouvert, ni un tube, ni un co-processus" #: builtin.c:362 msgid "index: received non-string first argument" @@ -581,7 +609,8 @@ msgstr "log : l'argument est négatif %g" #: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" -msgstr "fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun" +msgstr "" +"fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun" #: builtin.c:851 #, c-format @@ -609,7 +638,8 @@ msgstr "fatal : le numéro d'argument de « $ » doit être > 0" #: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" -msgstr "fatal : le numéro d'argument %ld est > au nombre total d'arguments fournis" +msgstr "" +"fatal : le numéro d'argument %ld est > au nombre total d'arguments fournis" #: builtin.c:923 msgid "fatal: `$' not permitted after period in format" @@ -617,300 +647,312 @@ msgstr "fatal : dans un format, « $ » ne doit pas suivre un point" #: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné" +msgstr "" +"fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "« l » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal : « l » est interdit dans un format awk POSIX" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "« L » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal : « L » est interdit dans un format awk POSIX" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "« h » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal : « h » est interdit dans un format awk POSIX" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "caractère de format inconnu « %c » ignoré : aucun argument converti" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ à court pour celui-ci" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf : spécification de format sans lettre de contrôle" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "trop d'arguments pour la chaîne de formatage" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf : aucun argument" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf : aucun argument" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt : l'argument n'est pas numérique" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt : appelé avec un argument négatif %g" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr : la longueur %g n'est pas >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr : la longueur %g n'est pas >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr : la longueur %g n'est pas entière, elle sera tronquée" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr : la longueur %g est trop grande, tronquée à %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr : l'index de début %g n'est pas valide, utilisation de 1" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr : l'index de début %g n'est pas un entier, il sera tronqué" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr : la chaîne source est de longueur nulle" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr : l'index de début %g est au-delà de la fin de la chaîne" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr : la longueur %g à partir de %g dépasse la fin du 1er argument (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr : la longueur %g à partir de %g dépasse la fin du 1er argument (%lu)" # Exemple : gawk --lint 'BEGIN { PROCINFO["strftime"]=123 ; print strftime() }' -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -msgstr "strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type numérique" +msgstr "" +"strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type " +"numérique" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime : le second argument n'est pas numérique" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: second argument négatif ou trop grand pour time_t" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftim : le premier argument n'est pas une chaîne" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime : la chaîne de formatage est vide" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime : l'argument n'est pas une chaîne" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" -msgstr "mktime : au moins l'une des valeurs est en dehors de la plage par défaut" +msgstr "" +"mktime : au moins l'une des valeurs est en dehors de la plage par défaut" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "La fonction « system » est interdite en isolement (mode sandbox)" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system : l'argument n'est pas une chaîne" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "référence à un champ non initialisé « $%d »" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower : l'argument n'est pas une chaîne" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper : l'argument n'est pas une chaîne" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2 : le premier argument n'est pas numérique" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2 : le second argument n'est pas numérique" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin : l'argument n'est pas numérique" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos : l'argument n'est pas numérique" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand : l'argument n'est pas numérique" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match : le 3e argument n'est pas un tableau" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub : le 3e argument vaut 0, il sera traité comme un 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift : le premier argument n'est pas numérique" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift : le second argument reçu n'est pas numérique" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" -msgstr "lshift(%f, %f) : les valeurs négatives donnent des résultats inattendus" +msgstr "" +"lshift(%f, %f) : les valeurs négatives donnent des résultats inattendus" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f) : un décalage trop grand donne des résultats inattendus" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift : le premier argument n'est pas numérique" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift : le second argument reçu n'est pas numérique" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" -msgstr "rshift(%f, %f) : les valeurs négatives donneront des résultats inattendus" +msgstr "" +"rshift(%f, %f) : les valeurs négatives donneront des résultats inattendus" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "rshift(%f, %f) : un décalage trop grand donnera des résultats inattendus" +msgstr "" +"rshift(%f, %f) : un décalage trop grand donnera des résultats inattendus" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and : appelé avec moins de 2 arguments" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and : l'argument %d n'est pas numérique" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" -msgstr "and : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" +msgstr "" +"and : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or : appelé avec moins de 2 arguments" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or : l'argument %d n'est pas numérique" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" -msgstr "or : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" +msgstr "" +"or : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor : appelé avec moins de 2 arguments" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor : l'argument %d n'est pas numérique" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" -msgstr "xor : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" +msgstr "" +"xor : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl : l'argument n'est pas numérique" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f) : les valeurs négatives donneront des résultats inattendus" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f) : les valeurs non entières seront tronquées" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext : « %s » n'est pas dans un catégorie valide de la locale" @@ -942,7 +984,8 @@ msgstr "sauve « %s » : commande interdite." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" -msgstr "Impossible d'utiliser « commands » pour des points d'arrêt ou de surveillance" +msgstr "" +"Impossible d'utiliser « commands » pour des points d'arrêt ou de surveillance" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" @@ -955,7 +998,8 @@ msgstr "numéro de point d'arrêt ou de surveillance incorrect" #: command.y:348 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" -msgstr "Entrez les commandes exécutées lors de l'appui de %s %d, une par ligne.\n" +msgstr "" +"Entrez les commandes exécutées lors de l'appui de %s %d, une par ligne.\n" #: command.y:350 #, c-format @@ -1016,24 +1060,36 @@ msgid "non-zero integer value" msgstr "valeur entière non nulle" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - affiche la trace de tout ou des N dernières trames (du début si N < 0)." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - affiche la trace de tout ou des N dernières trames (du début " +"si N < 0)." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[fichier:]N|fonction] - définit un point d'arrêt à l'endroit indiqué." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." +msgstr "" +"break [[fichier:]N|fonction] - définit un point d'arrêt à l'endroit indiqué." #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[fichier:]N|fonction] - détruit un point d'arrêt existant." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [no] - débute une liste de commande à lancer aux points d'arrêt ou de surveillance." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [no] - débute une liste de commande à lancer aux points d'arrêt ou " +"de surveillance." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition no [expr] - défini ou détruit une condition d'arrêt ou de surveillance." +msgstr "" +"condition no [expr] - défini ou détruit une condition d'arrêt ou de " +"surveillance." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1045,7 +1101,8 @@ msgstr "delete [points d'arrêt] [plage] - détruit les points d'arrêt indiqué #: command.y:831 msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disable [points d'arrêt] [plage] - désactive les points d'arrêt indiqués." +msgstr "" +"disable [points d'arrêt] [plage] - désactive les points d'arrêt indiqués." #: command.y:833 msgid "display [var] - print value of variable each time the program stops." @@ -1057,11 +1114,13 @@ msgstr "down [N] - descend de N trames dans la pile." #: command.y:837 msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [fichier] - vide les instructions vers la sortie standard ou un fichier." +msgstr "" +"dump [fichier] - vide les instructions vers la sortie standard ou un fichier." #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "enable [once|del] [points d'arrêt] [plage] - active les points d'arrêt." +msgstr "" +"enable [once|del] [points d'arrêt] [plage] - active les points d'arrêt." #: command.y:841 msgid "end - end a list of commands or awk statements." @@ -1081,27 +1140,35 @@ msgstr "frame [N] - sélectionne et affiche la trame N de la pile." #: command.y:849 msgid "help [command] - print list of commands or explanation of command." -msgstr "help [commande] - affiche la liste des commandes ou explique la commande." +msgstr "" +"help [commande] - affiche la liste des commandes ou explique la commande." #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N NB - ignore les NB prochaines occurrences du point d'arrêt N." #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." -msgstr "info sujet - source|sources|variables|functions|break|frame|args|locals|display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." +msgstr "" +"info sujet - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -msgstr "list [-|+|[fichier:]no_ligne|fonction|plage] - affiche les lignes indiquées." +msgstr "" +"list [-|+|[fichier:]no_ligne|fonction|plage] - affiche les lignes indiquées." #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [NB] - avance ligne par ligne, sans détailler les sous-routines." #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [NB] - avance d'une instruction, sans détailler les sous-routines." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgstr "" +"nexti [NB] - avance d'une instruction, sans détailler les sous-routines." #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." @@ -1129,15 +1196,19 @@ msgstr "run - démarre et redémarre l'exécution du programme." #: command.y:874 msgid "save filename - save commands from the session to file." -msgstr "save fichier - enregistre les commandes de la sessions dans un fichier." +msgstr "" +"save fichier - enregistre les commandes de la sessions dans un fichier." #: command.y:877 msgid "set var = value - assign value to a scalar variable." msgstr "set var = valeur - assigne une valeur à une variable scalaire." #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - suspend les messages habituels lors des points d'arrêt et de surveillance." +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - suspend les messages habituels lors des points d'arrêt et de " +"surveillance." #: command.y:881 msgid "source file - execute commands from file." @@ -1161,11 +1232,17 @@ msgstr "trace on|off - affiche les instructions avant de les exécuter." #: command.y:891 msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] - retire la ou les variables de la liste d'affichage automatique." +msgstr "" +"undisplay [N] - retire la ou les variables de la liste d'affichage " +"automatique." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[fichier:]N|fonction] - exécution jusqu'à dépasser la ligne courant ou la ligne N, dans la trame actuelle." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[fichier:]N|fonction] - exécution jusqu'à dépasser la ligne courant " +"ou la ligne N, dans la trame actuelle." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1235,7 +1312,8 @@ msgstr "affiche ou définit l'invite du débogueur." #: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." -msgstr "affiche ou (dés)active l'enregistrement de l'historique (valeur=on|off)." +msgstr "" +"affiche ou (dés)active l'enregistrement de l'historique (valeur=on|off)." #: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." @@ -1271,7 +1349,8 @@ msgstr "impossible de trouver le fichier source nommé « %s » (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" -msgstr "ATTENTION : fichier source « %s » modifié après compilation du programme.\n" +msgstr "" +"ATTENTION : fichier source « %s » modifié après compilation du programme.\n" #: debug.c:551 #, c-format @@ -1468,7 +1547,8 @@ msgstr "tentative d'utiliser un scalaire comme tableau" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" -msgstr "Point de surveillance %d détruit, car son paramètre est hors contexte.\n" +msgstr "" +"Point de surveillance %d détruit, car son paramètre est hors contexte.\n" #: debug.c:1867 #, c-format @@ -1502,7 +1582,8 @@ msgstr "Numéro de trame incorrect" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Note : point d'arrêt %d (activé, ignore %ld occurrences) déjà défini à %s:%d" +msgstr "" +"Note : point d'arrêt %d (activé, ignore %ld occurrences) déjà défini à %s:%d" #: debug.c:2207 #, c-format @@ -1512,7 +1593,9 @@ msgstr "Note : point d'arrêt %d (activé) déjà défini à %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Note : point d'arrêt %d (désactivé, ignore %ld occurrences) déjà défini à %s:%d" +msgstr "" +"Note : point d'arrêt %d (désactivé, ignore %ld occurrences) déjà défini à %s:" +"%d" #: debug.c:2221 #, c-format @@ -1552,7 +1635,9 @@ msgstr "Impossible de définir un point d'arrêt dans la fonction « %s »\n" #: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" -msgstr "le point d'arrêt %d défini sur le fichier « %s », ligne %d est inconditionnel\n" +msgstr "" +"le point d'arrêt %d défini sur le fichier « %s », ligne %d est " +"inconditionnel\n" #: debug.c:2508 debug.c:2530 #, c-format @@ -1594,7 +1679,8 @@ msgstr "S'arrêtera à la prochaine occurrence du point d'arrêt %d.\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" -msgstr "Seuls les programmes fournis via l'option « -f » peuvent être débogués.\n" +msgstr "" +"Seuls les programmes fournis via l'option « -f » peuvent être débogués.\n" #: debug.c:2908 #, c-format @@ -1740,40 +1826,40 @@ msgstr "« return » interdit dans ce contexte ; instruction ignorée" msgid "No symbol `%s' in current context" msgstr "Pas de symbole « %s » dans le contexte actuel" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "[ non apparié" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "classe de caractères incorrecte" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la syntaxe des classes de caractères est [[:space:]], et non [:space:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "échappement \\ non terminé" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Contenu de \\{\\} incorrect" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Expression rationnelle trop grande" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "( non apparié" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "aucune syntaxe indiquée" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr ") non apparié" @@ -1895,18 +1981,25 @@ msgstr "load_ext : impossible d'ouvrir la bibliothèque « %s » (%s)\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext : bibliothèque « %s » : ne définit pas « plugin_is_GPL_compatible » (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext : bibliothèque « %s » : ne définit pas " +"« plugin_is_GPL_compatible » (%s)\n" #: ext.c:110 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" -msgstr "load_ext : bibliothèque « %s » : impossible d'appeler la fonction « %s » (%s)\n" +msgstr "" +"load_ext : bibliothèque « %s » : impossible d'appeler la fonction " +"« %s » (%s)\n" #: ext.c:114 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" -msgstr "load_ext : bibliothèque « %s » : échec de la routine d'initialisation « %s »\n" +msgstr "" +"load_ext : bibliothèque « %s » : échec de la routine d'initialisation « %s " +"»\n" #: ext.c:174 msgid "`extension' is a gawk extension" @@ -1923,13 +2016,18 @@ msgstr "extension : impossible d'ouvrir la bibliothèque « %s » (%s)" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension : bibliothèque « %s » : ne définit pas « plugin_is_GPL_compatible » (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension : bibliothèque « %s » : ne définit pas " +"« plugin_is_GPL_compatible » (%s)" #: ext.c:190 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" -msgstr "extension : bibliothèque « %s » : impossible d'appeler la fonction « %s » (%s)" +msgstr "" +"extension : bibliothèque « %s » : impossible d'appeler la fonction " +"« %s » (%s)" #: ext.c:221 msgid "make_builtin: missing function name" @@ -1953,7 +2051,9 @@ msgstr "make_builtin : nom de la fonction « %s » déjà défini" #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin : impossible d'utiliser la fonction gawk « %s » comme nom de fonction" +msgstr "" +"make_builtin : impossible d'utiliser la fonction gawk « %s » comme nom de " +"fonction" #: ext.c:249 ext.c:304 #, c-format @@ -1987,7 +2087,9 @@ msgstr "extension : nom de la fonction « %s » déjà défini" #: ext.c:301 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "extension : impossible d'utiliser la fonction interne gawk « %s » comme nom de fonction" +msgstr "" +"extension : impossible d'utiliser la fonction interne gawk « %s » comme nom " +"de fonction" #: ext.c:375 #, c-format @@ -2002,12 +2104,16 @@ msgstr "fonction « %s » : argument #%d manquant" #: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" -msgstr "fonction « %s » : argument #%d : tentative d'utilisation d'un scalaire comme tableau" +msgstr "" +"fonction « %s » : argument #%d : tentative d'utilisation d'un scalaire comme " +"tableau" #: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" -msgstr "fonction « %s » : argument #%d : tentative d'utiliser un tableau comme scalaire" +msgstr "" +"fonction « %s » : argument #%d : tentative d'utiliser un tableau comme " +"scalaire" #: ext.c:413 msgid "dynamic loading of library not supported" @@ -2160,12 +2266,15 @@ msgstr "inplace_begin : 2 arguments attendu, appelé avec %d" #: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" -msgstr "inplace_begin : impossible de récupérer le 1er argument comme nom de fichier" +msgstr "" +"inplace_begin : impossible de récupérer le 1er argument comme nom de fichier" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" -msgstr "inplace_begin : modification sur place annulée pour le fichier incorrect « %s »" +msgstr "" +"inplace_begin : modification sur place annulée pour le fichier incorrect " +"« %s »" #: extension/inplace.c:151 #, c-format @@ -2204,7 +2313,8 @@ msgstr "inplace_begin : échec de close(%d) (%s)" #: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" -msgstr "inplace_end : impossible de récupérer le 1er argument comme nom de fichier" +msgstr "" +"inplace_end : impossible de récupérer le 1er argument comme nom de fichier" #: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" @@ -2259,16 +2369,16 @@ msgstr "chr : appelé sans argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr : appelé avec des arguments incorrects" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of : échec de opendir/fdopendir : %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile : appelé avec trop d'arguments" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile : appelé sans argument" @@ -2320,27 +2430,27 @@ msgstr "do_reada : échec de clear_array\n" msgid "read_array: set_array_element failed\n" msgstr "read_array : échec de set_array_element\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday : arguments ignorés" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday : n'est pas disponible sur cette plateforme" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep : appelé avec trop d'arguments" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep : l'argument numérique requis est absent" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep : l'argument est négatif" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep : n'est pas disponible sur cette plateforme" @@ -2366,11 +2476,13 @@ msgstr "split : impossible d'utiliser le même tableau comme 2e et 4e argument" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "split : impossible d'utiliser un sous-tableau du 2e argument en 4e argument" +msgstr "" +"split : impossible d'utiliser un sous-tableau du 2e argument en 4e argument" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "split : impossible d'utiliser un sous-tableau du 4e argument en 2e argument" +msgstr "" +"split : impossible d'utiliser un sous-tableau du 4e argument en 2e argument" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" @@ -2390,15 +2502,20 @@ msgstr "patsplit : le 3e argument n'est pas un tableau" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" -msgstr "patsplit : impossible d'utiliser le même tableau comme 2e et 4e argument" +msgstr "" +"patsplit : impossible d'utiliser le même tableau comme 2e et 4e argument" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "patsplit : impossible d'utiliser un sous-tableau du 2e argument en 4e argument" +msgstr "" +"patsplit : impossible d'utiliser un sous-tableau du 2e argument en 4e " +"argument" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "patsplit : impossible d'utiliser un sous-tableau du 4e argument en 2e argument" +msgstr "" +"patsplit : impossible d'utiliser un sous-tableau du 4e argument en 2e " +"argument" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2415,7 +2532,8 @@ msgstr "utiliser une chaîne vide pour « FS » est une extension gawk" #: field.c:1274 msgid "old awk does not support regexps as value of `FS'" -msgstr "l'ancien awk n'accepte pas les expr. rationnelles comme valeur de « FS »" +msgstr "" +"l'ancien awk n'accepte pas les expr. rationnelles comme valeur de « FS »" #: field.c:1393 msgid "`FPAT' is a gawk extension" @@ -2433,20 +2551,20 @@ msgstr "node_to_awk_value : node nul reçu" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value : val nul reçu" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element : tableau nul reçu" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element : indice nul reçu" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array : impossible de convertir l'indice %d\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array : impossible de convertir la valeur %d\n" @@ -2538,7 +2656,9 @@ msgstr "l'expression dans la redirection « %s » donne une chaîne nulle" #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "le fichier « %s » de la redirection « %s » pourrait être le résultat d'une expression booléenne" +msgstr "" +"le fichier « %s » de la redirection « %s » pourrait être le résultat d'une " +"expression booléenne" #: io.c:809 #, c-format @@ -2558,7 +2678,8 @@ msgstr "impossible d'ouvrir le tube « %s » en entrée (%s)" #: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" -msgstr "impossible d'ouvrir un tube bidirectionnel « %s » en entrées-sorties (%s)" +msgstr "" +"impossible d'ouvrir un tube bidirectionnel « %s » en entrées-sorties (%s)" #: io.c:986 #, c-format @@ -2571,8 +2692,11 @@ msgid "can't redirect to `%s' (%s)" msgstr "impossible de rediriger vers « %s » (%s)" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "limite système du nombre de fichiers ouverts atteinte : début du multiplexage des descripteurs de fichiers" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"limite système du nombre de fichiers ouverts atteinte : début du " +"multiplexage des descripteurs de fichiers" #: io.c:1056 #, c-format @@ -2590,7 +2714,8 @@ msgstr "close : le second argument doit être « to » ou « from »" #: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" -msgstr "close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un co-processus" +msgstr "" +"close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un co-processus" #: io.c:1108 msgid "close of redirection that was never opened" @@ -2599,7 +2724,9 @@ msgstr "fermeture d'une redirection qui n'a jamais été ouverte" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close : la redirection « %s » n'a pas été ouverte avec « |& », second argument ignoré" +msgstr "" +"close : la redirection « %s » n'a pas été ouverte avec « |& », second " +"argument ignoré" #: io.c:1222 #, c-format @@ -2664,12 +2791,14 @@ msgstr "le port local %s n'est pas valide dans « /inet »" #: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" -msgstr "les informations sur l'hôte et le port distants (%s, %s) ne sont pas valides" +msgstr "" +"les informations sur l'hôte et le port distants (%s, %s) ne sont pas valides" #: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" -msgstr "aucun protocole (connu) n'a été fourni dans le nom de fichier spécial « %s »" +msgstr "" +"aucun protocole (connu) n'a été fourni dans le nom de fichier spécial « %s »" #: io.c:1604 #, c-format @@ -2706,7 +2835,9 @@ msgstr "échec de la fermeture de stdout du processus fils (%s)" #: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "échec du déplacement du pty esclave vers le stdout du processus fils (dup : %s)" +msgstr "" +"échec du déplacement du pty esclave vers le stdout du processus fils (dup : " +"%s)" #: io.c:1924 io.c:2110 #, c-format @@ -2716,7 +2847,9 @@ msgstr "échec de fermeture du stdin du processus fils (%s)" #: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "échec du déplacement du pty esclave vers le stdin du processus fils (dup : %s)" +msgstr "" +"échec du déplacement du pty esclave vers le stdin du processus fils (dup : " +"%s)" #: io.c:1929 io.c:1951 #, c-format @@ -2767,7 +2900,9 @@ msgstr "register_input_parser : pointeur NULL reçu" #: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" -msgstr "l'analyseur d'entrée « %s » est en conflit avec l'analyseur « %s » déjà installé" +msgstr "" +"l'analyseur d'entrée « %s » est en conflit avec l'analyseur « %s » déjà " +"installé" #: io.c:2825 #, c-format @@ -2780,8 +2915,10 @@ msgstr "register_output_wrapper : pointeur NULL reçu" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "le filtre de sortie « %s » est en conflit avec le filtre « %s » déjà installé" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"le filtre de sortie « %s » est en conflit avec le filtre « %s » déjà installé" #: io.c:2880 #, c-format @@ -2794,8 +2931,12 @@ msgstr "register_output_processor : pointeur NULL reçu" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" -msgstr "le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire « %s » déjà installé" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire " +"« %s » déjà installé" #: io.c:2939 #, c-format @@ -2813,7 +2954,8 @@ msgstr "impossible d'allouer plus de mémoire d'entrée" #: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" -msgstr "l'utilisation d'un « RS » de plusieurs caractères est une extension gawk" +msgstr "" +"l'utilisation d'un « RS » de plusieurs caractères est une extension gawk" #: io.c:3771 msgid "IPv6 communication is not supported" @@ -2835,7 +2977,9 @@ msgstr "%s : l'option requiert un argument - %c\n" #: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "variable d'environnement « POSIXLY__CORRECT » définie : activation de « --posix »" +msgstr "" +"variable d'environnement « POSIXLY__CORRECT » définie : activation de « --" +"posix »" #: main.c:568 msgid "`--posix' overrides `--traditional'" @@ -2843,12 +2987,14 @@ msgstr "« --posix » prend le pas sur « --traditional »" #: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" -msgstr "« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »" +msgstr "" +"« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »" #: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" -msgstr "l'exécution de %s en mode setuid root peut être un problème de sécurité" +msgstr "" +"l'exécution de %s en mode setuid root peut être un problème de sécurité" #: main.c:588 msgid "`--posix' overrides `--characters-as-bytes'" @@ -2876,12 +3022,14 @@ msgstr "aucun programme !" #: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" -msgstr "Utilisation : %s [options GNU ou POSIX] -f fichier_prog [--] fichier ...\n" +msgstr "" +"Utilisation : %s [options GNU ou POSIX] -f fichier_prog [--] fichier ...\n" #: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" -msgstr "Utilisation : %s [options GNU ou POSIX] [--] %cprogramme%c fichier ...\n" +msgstr "" +"Utilisation : %s [options GNU ou POSIX] [--] %cprogramme%c fichier ...\n" #: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" @@ -3190,7 +3338,8 @@ msgstr "%s : l'argument #%d a une valeur incorrecte %Rg, utilisation de 0" #: mpfr.c:857 msgid "%s: argument #%d negative value %Rg will give strange results" -msgstr "%s : argument #%d : la valeur négative %Rg donnera des résultats inattendus" +msgstr "" +"%s : argument #%d : la valeur négative %Rg donnera des résultats inattendus" #: mpfr.c:863 msgid "%s: argument #%d fractional value %Rg will be truncated" @@ -3199,7 +3348,8 @@ msgstr "%s : argument #%d : la valeur non entière %Rg sera tronquée" #: mpfr.c:878 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" -msgstr "%s : argument #%d : la valeur négative %Zd donnera des résultats inattendus" +msgstr "" +"%s : argument #%d : la valeur négative %Zd donnera des résultats inattendus" #: msg.c:68 #, c-format @@ -3225,8 +3375,12 @@ msgstr "aucun chiffre hexadécimal dans la séquence d'échappement « \\x » #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "la séquence d'échappement hexa. \\x%.*s de %d caractères ne sera probablement pas interprétée comme vous l'imaginez" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"la séquence d'échappement hexa. \\x%.*s de %d caractères ne sera " +"probablement pas interprétée comme vous l'imaginez" #: node.c:594 #, c-format @@ -3234,18 +3388,24 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "séquence d'échappement « \\%c » traitée comme un simple « %c »" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." -msgstr "Données multioctets non valables détectées. Possible incohérence entre données et paramètres régionaux (locale)." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." +msgstr "" +"Données multioctets non valables détectées. Possible incohérence entre " +"données et paramètres régionaux (locale)." #: posix/gawkmisc.c:177 #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" -msgstr "%s %s « %s » : impossible d'obtenir les drapeaux du fd : (fcntl F_GETFD: %s)" +msgstr "" +"%s %s « %s » : impossible d'obtenir les drapeaux du fd : (fcntl F_GETFD: %s)" #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" -msgstr "%s %s « %s »: impossible de positionner close-on-exec: (fcntl F_SETFD: %s)" +msgstr "" +"%s %s « %s »: impossible de positionner close-on-exec: (fcntl F_SETFD: %s)" #: profile.c:71 #, c-format @@ -3314,7 +3474,9 @@ msgstr "redir2str : type de redirection %d inconnu" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "le composant d'expression rationnelle « %.*s » devrait probablement être « [%.*s] »" +msgstr "" +"le composant d'expression rationnelle « %.*s » devrait probablement être " +"« [%.*s] »" #: regcomp.c:131 msgid "Success" diff --git a/po/gawk.pot b/po/gawk.pot index 527a4996..bb47fa9e 100644 --- a/po/gawk.pot +++ b/po/gawk.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.0b\n" +"Project-Id-Version: gawk 4.1.1\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -36,8 +36,8 @@ msgstr "" msgid "attempt to use scalar `%s' as an array" msgstr "" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -135,11 +135,11 @@ msgstr "" msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "" @@ -228,283 +228,283 @@ msgstr "" msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "" -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "" -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5025 +#: awkgram.y:5049 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" @@ -615,298 +615,298 @@ msgstr "" msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" @@ -1736,40 +1736,40 @@ msgstr "" msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr "" @@ -2254,16 +2254,16 @@ msgstr "" msgid "chr: called with inappropriate argument(s)" msgstr "" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "" @@ -2315,27 +2315,27 @@ msgstr "" msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" @@ -2428,20 +2428,20 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" Binary files differ@@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU Awk 4.0.73, API: 0.0\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-15 10:40+0100\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-01-15 10:39+0100\n" "Last-Translator: Antonio Colombo <azc100@gmail.com>\n" "Language-Team: Italian <it@li.org>\n" @@ -34,8 +34,8 @@ msgstr "tentativo di usare il parametro scalare `%s' come un vettore" msgid "attempt to use scalar `%s' as an array" msgstr "tentativo di usare scalare '%s' come vettore" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -141,11 +141,11 @@ msgstr "valori di `case' doppi all'interno di uno `switch': %s" msgid "duplicate `default' detected in switch body" msgstr "valori di default doppi all'interno di uno `switch'" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' non consentito fuori da un ciclo o da uno `switch'" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "`continue' non consentito fuori da un un ciclo" @@ -236,271 +236,271 @@ msgstr "" msgid "invalid subscript expression" msgstr "espressione indice invalida" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "attenzione: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatale: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "carattere 'a capo' o fine stringa non previsti" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "non riesco ad aprire file sorgente `%s' in lettura (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "non riesco ad aprire shared library `%s' in lettura (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "ragione indeterminata" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "non riesco a includere `%s' per usarlo come file di programma" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "file sorgente `%s' gi incluso" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "shared library `%s' gi inclusa" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include un'estensione gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load un'estensione gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "programma nullo sulla riga comandi" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "non riesco a leggere file sorgente `%s' (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "file sorgente `%s' vuoto" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "file sorgente non termina con carattere 'a capo'" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "espressione regolare non completata termina con `\\' a fine file" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: modificatore di espressione regolare tawk `/.../%c' non valido in " "gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modificatore di espressione regolare tawk `/.../%c' non valido in gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "espressione regolare non completata" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "espressione regolare non completata a fine file" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso di `\\ #...' continuazione riga non portabile" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "'\\' non l'ultimo carattere della riga" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX non permette l'operatore `**='" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "il vecchio awk non supporta l'operatore `**='" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX non permette l'operatore `**'" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "il vecchio awk non supporta l'operatore `**'" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "l'operatore `^=' non supportato nel vecchio awk" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "l'operatore `^' non supportato nel vecchio awk" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "stringa non terminata" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "carattere '%c' non valido in un'espressione" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' un'estensione gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX non permette `%s'" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' non supportato nel vecchio awk" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "`goto' considerato pericoloso!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d non valido come numero di argomenti per %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: una stringa come ultimo argomento di `substitute' non ha effetto" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "il terzo parametro di '%s' non un oggetto modificabile" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: il terzo argomento un'estensione gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: il secondo argomento un'estensione gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" msgstr "index: espressione regolare come secondo argomento non consentita" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funzione `%s': parametro `%s' nasconde variabile globale" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "non riesco ad aprire `%s' in scrittura (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "mando lista variabili a 'standard error'" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: `close' non riuscita (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chiamata due volte!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "c'erano variabili nascoste." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "funzione di nome `%s' definita in precedenza" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" "funzione `%s': non possibile usare nome della funzione come nome parametro" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funzione `%s': non possibile usare la variabile speciale `%s' come " "parametro di funzione" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "funzione `%s' chiamata ma mai definita" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "funzione `%s' definita ma mai chiamata direttamente" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "espressione regolare di valore costante per parametro #%d genera valore " "booleano" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -509,23 +509,23 @@ msgstr "" "funzione `%s' chiamata con spazio tra il nome e `(',\n" "o usata come variabile o vettore" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "tentativo di dividere per zero" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativo di dividere per zero in `%%'" -#: awkgram.y:5025 +#: awkgram.y:5049 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossibile assegnare un valore al risultato di un'espressione di post-" "incremento di un campo" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destinazione di assegnazione non valida (codice operativo %s)" @@ -639,116 +639,116 @@ msgstr "fatale: `$' non consentito dopo il punto in un `format'" msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' non ha senso nei `format' awk; ignorato" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatale: `l' non consentito nei `format' POSIX awk" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' non ha senso nei `format' awk; ignorato" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "`L' non ha senso nei `format' awk; ignorato" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' non ha senso nei `format' awk; ignorato" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatale: `h' non consentito nei `format' POSIX awk" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valore %g fuori intervallo per il `format' `%%%c'" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "carattere di `format' sconosciuto `%c' ignorato: nessun argomento convertito" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatale: argomenti in numero minore di quelli richiesti dalla stringa di " "`format'" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ esauriti a questo punto" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specifica di `format' senza un carattere di controllo" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "troppi argomenti specificati per questa stringa di `format'" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: nessun argomento" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: nessun argomento" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argomento non-numerico" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: chiamata con argomento negativo %g" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lunghezza %g non >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lunghezza %g non >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lunghezza non intera %g: sar troncata" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: lunghezza %g troppo elevata per indice stringa, tronco a %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: indice di partenza %g non valido, uso 1" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: indice di partenza non intero %g: sar troncato" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: stringa di partenza lunga zero" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: indice di partenza %g oltre la fine della stringa" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -756,187 +756,187 @@ msgstr "" "substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo " "argomento (%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: il valore del `format' in PROCINFO[\"strftime\"] di tipo numerico" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: secondo argomento non-numerico" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: secondo argomento < 0 o troppo elevato per time_t" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: il primo argomento non una stringa" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: `format' una stringa nulla" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: l'argomento non una stringa" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almeno un valore fuori dall'intervallo di default" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "funzione 'system' non consentita in modo `sandbox'" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: l'argomento non una stringa" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "riferimento a variabile non inizializzata `$%d'" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: l'argomento non una stringa" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: l'argomento non una stringa" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: primo argomento non-numerico" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: secondo argomento non-numerico" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: argomento non-numerico" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: argomento non-numerico" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: argomento non-numerico" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: terzo argomento non-vettoriale" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: il terzo argomento 0, trattato come 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: primo argomento non-numerico" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: secondo argomento non-numerico" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: primo argomento ricevuto non-numerico" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: secondo argomento non-numerico" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: chiamata con meno di due argomenti" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argomento %d non-numerico" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argomento %d, valore negativo %g dar risultati strani" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: chiamata con meno di due argomenti" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argomento %d non-numerico" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argomento %d, valore negativo %g dar risultati strani" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: chiamata con meno di due argomenti" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argomento %d non-numerico" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argomento %d, valore negativo %g dar risultati strani" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: argomento non-numerico" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): valore negativo, dar risultati strani" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valori decimali saranno troncati" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' non una categoria `locale' valida" @@ -1063,8 +1063,8 @@ msgstr "clear [[nome-file:]N|funzione] - togli breakpoint impostati prima." #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" "commands [num] - inizia una lista di comandi da eseguire se si raggiunge un " "breakpoint (watchpoint)." @@ -1812,40 +1812,40 @@ msgstr "`return' non consentito nel contesto corrente; istruzione ignorata" msgid "No symbol `%s' in current context" msgstr "Simbolo `%s' non esiste nel contesto corrente" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "[ non chiusa" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "character class non valida" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "sintassi character class [[:spazio:]], non [:spazio:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "sequenza escape \\ non completa" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Contenuto di \\{\\} non valido" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Espressione regolare troppo complessa" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "( non chiusa" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "nessuna sintassi specificata" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr ") non aperta" @@ -2341,16 +2341,16 @@ msgstr "chr: chiamata senza argomenti" msgid "chr: called with inappropriate argument(s)" msgstr "chr: chiamata con argomento/i non corretto/i" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir non riuscita: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: chiamata con troppi argomenti" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: chiamata senza argomenti" @@ -2402,27 +2402,27 @@ msgstr "do_reada: clear_array non riuscita\n" msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element non riuscita\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: ignoro argomenti" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: non supportato in questa architettura" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: chiamata con troppi argomenti" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: manca necessario argomento numerico" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: l'argomento negativo" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: non supportato in questa architettura" @@ -2525,20 +2525,20 @@ msgstr "node_to_awk_value: ricevuto nodo nullo" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: ricevuto valore nullo" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element: ricevuto vettore nullo" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element: ricevuto indice nullo" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: non sono riuscito a convertire l'indice %d\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: non sono riuscito a convertire il valore %d\n" Binary files differ@@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2011-07-17 08:28+0900\n" "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -18,85 +18,85 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "%s から" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "スカラー値を配列として使用する試みです" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "スカラー仮引数 `%s' を配列として使用する試みです" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "スカラー `%s' を配列として使用する試みです" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "スカラーコンテキストで配列 `%s' を使用する試みです" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: 配列 `%2$s' 内にインデックス `%1$s' がありません" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "スカラー `%s[\"%.*s\"]' を配列として使用する試みです" -#: array.c:773 +#: array.c:776 #, fuzzy msgid "adump: first argument not an array" msgstr "adump: 引数が配列ではありません" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "asort: 第二引数が配列ではありません" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "asorti: 第二引数が配列ではありません" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "asort: 第一引数が配列ではありません" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "asorti: 第一引数が配列ではありません" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "asort: 第一引数の部分配列を第二引数用に使用することは出来ません" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "asorti: 第一引数の部分配列を第二引数用に使用することは出来ません" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "asort: 第二引数の部分配列を第一引数用に使用することは出来ません" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti: 第二引数の部分配列を第一引数用に使用することは出来ません" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' は関数名としては無効です" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "ソート比較関数 `%s' が定義されていません" @@ -137,11 +137,11 @@ msgstr "switch 文の中で重複した case 値が使用されています: %s" msgid "duplicate `default' detected in switch body" msgstr "switch 文の中で重複した `default' が検出されました" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' はループまたは switch の外では許可されていません" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "`continue' はループの外では許可されていません" @@ -231,269 +231,269 @@ msgstr "特別な変数 `%s' は間接関数呼び出し用には使用出来ま msgid "invalid subscript expression" msgstr "添字の式が無効です" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "警告: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "致命的: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "予期しない改行または文字列終端です" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "ソースファイル `%s' を読み込み用に開けません (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "ソースファイル `%s' を読み込み用に開けません (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "原因不明" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "ソースファイル `%s' は既に読み込まれています" -#: awkgram.y:2385 +#: awkgram.y:2409 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "ソースファイル `%s' は既に読み込まれています" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include は gawk 拡張です" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "@include の後に空のファイル名があります" -#: awkgram.y:2470 +#: awkgram.y:2494 #, fuzzy msgid "@load is a gawk extension" msgstr "@include は gawk 拡張です" -#: awkgram.y:2476 +#: awkgram.y:2500 #, fuzzy msgid "empty filename after @load" msgstr "@include の後に空のファイル名があります" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "コマンド行のプログラム表記が空です" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "ソースファイル `%s' を読み込めません (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "ソースファイル `%s' は空です" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "ソースファイルが改行で終っていません" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "終端されていない正規表現がファイル最後の `\\' で終っています。" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk の正規表現修飾子 `/.../%c' は gawk で使用できません" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk の正規表現修飾子 `/.../%c' は gawk で使用できません" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "正規表現が終端されていません" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "ファイルの中で正規表現が終端されていません" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' 形式の行継続は移植性がありません" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "バックスラッシュが行最後の文字になっていません。" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX では演算子 `**=' は許可されていません" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "古い awk は演算子 `**=' をサポートしません" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX では演算子 `**' は許可されていません" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "古い awk は演算子 `**' をサポートしません" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "古い awk は演算子 `^=' をサポートしません" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "古い awk は演算子 `^' をサポートしません" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "文字列が終端されていません" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "式内に無効な文字 '%c' があります" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' は gawk 拡張です" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX では `%s' は許可されていません" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "古い awk は `%s' をサポートしません" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "`goto' は有害だと見なされています!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d は %s 用の引数の数としては無効です" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: 文字列リテラルを置き換え最後の引数に使用すると効果がありません" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三仮引数は可変オブジェクトではありません" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: 第三引数は gawk 拡張です" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: 第二引数は gawk 拡張です" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\")の使用法が間違っています: 先頭のアンダースコア(_)を削除し" "てください" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\")の使用法が間違っています: 先頭のアンダースコア(_)を削除し" "てください" -#: awkgram.y:3992 +#: awkgram.y:4016 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: 文字列では無い第二引数を受け取りました" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "関数 `%s': 仮引数 `%s' が大域変数を覆い隠しています" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "`%s' を書込み用に開けませんでした (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "変数リストを標準エラーに送っています" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() を二回呼び出しています!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "覆い隠された変数がありました" -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "関数名 `%s' は前に定義されています" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "関数 `%s': 関数名を仮引数名として使用出来ません" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "関数 `%s': 特別な変数 `%s' は関数の仮引数として使用出来ません" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "関数 `%s': 仮引数 #%d, `%s' が仮引数 #%d と重複しています" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "未定義の関数 `%s' を呼び出しました" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "関数 `%s' は定義されていますが、一度も直接呼び出されていません" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "仮引数 #%d 用の正規表現定数は真偽値を出力します" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -502,235 +502,245 @@ msgstr "" "関数名と `(' の間にスペースを入れて関数 `%s' を呼び出しています。\n" "または、変数か配列として使われています。" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "ゼロによる除算が試みられました" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%' 内でゼロによる除算が試みられました" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" + +#: awkgram.y:5052 +#, fuzzy, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "%d は %s 用の引数の数としては無効です" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s から \"%s\" へ出力できません (%s)。" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "標準出力" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: 引数が数値ではありません" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: 引数 %g が範囲外です" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: flush できません: パイプ `%s' は読み込み用に開かれています。書き込み" "用ではありません" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: flush できません: ファイル `%s' は読み込み用に開かれています。書き込" "み用ではありません" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' が開かれたファイル、パイプ、プロセス共有ではありません" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "index: 文字列では無い第一引数を受け取りました" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "index: 文字列では無い第二引数を受け取りました" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "int: 数値では無い引数を受け取りました" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "length: 配列引数を受け取りました" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' は gawk 拡張です" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "length: 文字列では無い引数を受け取りました" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "log: 数値では無い引数を受け取りました" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "log: 負の引数 %g を受け取りました" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "" "致命的: `count$’ は全ての書式使用する、または全てに使用しないのいずれかでなけ" "ればいけません" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅は無視されます" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅は無視されます" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅および精度は無視されます" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命的: `$' は awk 形式内では許可されていません" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "致命的: `$' で指定する引数の番号は正でなければいけません" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "致命的: 引数の番号 %ld は引数として与えられた数より大きいです" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "致命的: `$' は書式指定内のピリオド `.' の後に使用できません" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命的: フィールド幅、または精度の指定子に `$' が与えられていません" -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `l' は無意味です。無視します" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `l' は許可されていません" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `L' は無意味です。無視します。" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `L' は許可されていません" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `h' は無意味です。無視します。" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `h' は許可されていません" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: 値 %g は書式 `%%%c' の範囲外です" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "不明な書式指定文字 `%c' を無視しています: 変換される引数はありません" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命的: 書式文字列を満たす十分な数の引数がありません" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ ここから足りません" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: 書式指定子に制御文字がありません" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "書式文字列に与えられている引数が多すぎます" -#: builtin.c:1610 +#: builtin.c:1634 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: 引数がありません" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: 引数がありません" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: 数値では無い引数を受け取りました" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: 長さ %g が 1 以上ではありません" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: 長さ %g が 0 以上ではありません" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 文字数 %g の小数点以下は切り捨てます。" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: 文字数 %g は最大値を超えています。%g を使います。" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: 開始インデックス %g が無効です。1を使用します" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 開始インデックス %g が非整数のため、値は切り捨てられます" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: 文字列の長さがゼロです。" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: 開始インデックス %g が文字列終端の後にあります" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -738,189 +748,189 @@ msgstr "" "substr: 開始インデックス %2$g からの長さ %1$g は第一引数の長さを超えています " "(%3$lu)" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"] の書式の値は数値型です" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: 非数値の第二引数を受け取りました" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: 非文字列の第一引数を受け取りました" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: 空の書式文字列を受け取りました" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: 非文字列引数を受け取りました" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 一つ以上の値がデフォルトの範囲を超えています" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "サンドボックスモードでは 'system' 関数は許可されていません" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: 文字列では無い引数を受け取りました" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "初期化されていないフィールド `$%d' への参照です" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: 非文字列引数を受け取りました" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: 非文字列引数を受け取りました" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: 非数値の第一引数を受け取りました" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: 非数値の第二引数を受け取りました" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: 非数値の引数を受け取りました" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: 非数値の引数を受け取りました" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: 非数値の引数を受け取りました" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: 第三引数が配列ではありません" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 第三引数が 0 です。1 を代わりに使用します" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: 非数値の第一引数を受け取りました" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: 非数値の第二引数を受け取りました" -#: builtin.c:3011 +#: builtin.c:3038 #, fuzzy, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3013 +#: builtin.c:3040 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): 小数点以下は切り捨てられます" -#: builtin.c:3015 +#: builtin.c:3042 #, fuzzy, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%lf, %lf): シフト値が大き過ぎると異常な結果になります" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: 非数値の第一引数を受け取りました" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: 非数値の第二引数を受け取りました" -#: builtin.c:3048 +#: builtin.c:3075 #, fuzzy, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3050 +#: builtin.c:3077 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): 小数点以下は切り捨てられます" -#: builtin.c:3052 +#: builtin.c:3079 #, fuzzy, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%lf, %lf): シフト値が大き過ぎると異常な結果になります" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: builtin.c:3082 +#: builtin.c:3109 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: 引数 %g が範囲外です" -#: builtin.c:3086 +#: builtin.c:3113 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: builtin.c:3114 +#: builtin.c:3141 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: 引数 %g が範囲外です" -#: builtin.c:3118 +#: builtin.c:3145 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: builtin.c:3146 +#: builtin.c:3173 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: 引数 %g が範囲外です" -#: builtin.c:3150 +#: builtin.c:3177 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: 非数値の引数を受け取りました" -#: builtin.c:3181 +#: builtin.c:3208 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3183 +#: builtin.c:3210 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): 小数点以下は切り捨てられます" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' は無効なロケール区分です" @@ -1044,8 +1054,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1202,7 +1212,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "エラー: " @@ -1242,557 +1252,557 @@ msgstr "無効な照合文字です" msgid "undefined command: %s\n" msgstr "" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, fuzzy, c-format msgid "can't read source file `%s' (%s)" msgstr "ソースファイル `%s' を読み込めません (%s)" -#: debug.c:447 +#: debug.c:453 #, fuzzy, c-format msgid "source file `%s' is empty.\n" msgstr "ソースファイル `%s' は空です" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "" -#: debug.c:499 +#: debug.c:505 #, fuzzy, c-format msgid "cannot find source file named `%s' (%s)" msgstr "ソースファイル `%s' を読み込めません (%s)" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, fuzzy, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "予期しない改行または文字列終端です" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:723 +#: debug.c:732 #, fuzzy, c-format msgid "Current source file: %s\n" msgstr "ソースファイル `%s' は既に読み込まれています" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 #, fuzzy msgid "No arguments.\n" msgstr "printf: 引数がありません" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1020 +#: debug.c:1029 #, fuzzy, c-format msgid "no symbol `%s' in current context\n" msgstr "`next' は `%s' から呼び出すことが出来ません" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, fuzzy, c-format msgid "`%s' is not an array\n" msgstr "`%s' は不正な変数名です" -#: debug.c:1046 +#: debug.c:1055 #, fuzzy, c-format msgid "$%ld = uninitialized field\n" msgstr "初期化されていないフィールド `$%d' への参照です" -#: debug.c:1067 +#: debug.c:1076 #, fuzzy, c-format msgid "array `%s' is empty\n" msgstr "データファイル `%s' は空です。" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "delete: 配列 `%2$s' 内にインデックス `%1$s' がありません" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' は不正な変数名です" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "スカラーコンテキスト内で配列 `%s[\"%.*s\"]' の使用の試みです" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "スカラー `%s[\"%.*s\"]' を配列として使用する試みです" -#: debug.c:1414 +#: debug.c:1423 #, fuzzy, c-format msgid "`%s' is a function" msgstr "`%s' は関数名としては無効です" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, fuzzy, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "delete: 配列 `%2$s' 内にインデックス `%1$s' がありません" -#: debug.c:1758 +#: debug.c:1767 #, fuzzy msgid "attempt to use scalar value as array" msgstr "スカラー値を配列として使用する試みです" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 #, fuzzy msgid "invalid frame number" msgstr "無効な範囲終了です" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, fuzzy, c-format msgid "line number %d in file `%s' out of range" msgstr "exp: 引数 %g が範囲外です" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, fuzzy, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "入力ファイル `%s' を読み込み中にエラーが発生しました: %s" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "ソースファイル `%s' は既に読み込まれています" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, fuzzy, c-format msgid "element not in array\n" msgstr "delete: 配列 `%2$s' 内にインデックス `%1$s' がありません" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "" -#: debug.c:4986 +#: debug.c:5001 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: 配列 `%2$s' 内にインデックス `%1$s' がありません" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "" -#: debug.c:5366 +#: debug.c:5381 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`next' は `%s' から呼び出すことが出来ません" -#: debug.c:5374 +#: debug.c:5389 #, fuzzy msgid "`return' not allowed in current context; statement ignored" msgstr "`next' は `%s' から呼び出すことが出来ません" -#: debug.c:5575 +#: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "" -#: dfa.c:1052 +#: dfa.c:1174 #, fuzzy msgid "invalid character class" msgstr "無効な文字クラス名です" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1281 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "\\{\\} の中身が無効です" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "正規表現が大きすぎます" -#: dfa.c:1816 +#: dfa.c:1936 msgid "unbalanced (" msgstr "" -#: dfa.c:1943 +#: dfa.c:2062 msgid "no syntax specified" msgstr "" -#: dfa.c:1951 +#: dfa.c:2070 msgid "unbalanced )" msgstr "" @@ -1811,11 +1821,11 @@ msgstr "不明なオペコード %d です" msgid "opcode %s not an operator or keyword" msgstr "オペコード %s は演算子または予約語ではありません" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "genflags2str 内でバッファオーバーフローが発生しました" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1826,71 +1836,71 @@ msgstr "" "\t# 呼出関数スタック:\n" "\n" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' は gawk 拡張です" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' は gawk 拡張です" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 値 `%s' は無効です。代わりに 3 を使用します" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "誤った `%sFMT' 指定 `%s' です" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT' への代入に従い `--lint' を無効にします" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "初期化されていない引数 `%s' への参照です" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "初期化されていない変数 `%s' への参照です" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "非数値を使用したフイールド参照の試みです" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "NULL 文字列を使用してフィールドの参照を試みています" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "フィールド %ld へのアクセスの試みです" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "初期化されていないフィールド `$%ld' への参照です" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "宣言されている数より多い引数を使って関数 `%s' を呼び出しました" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 予期しない型 `%s' です" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "`/=' 内でゼロによる除算が行われました" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' 内でゼロによる除算が行われました" @@ -1904,7 +1914,7 @@ msgstr "サンドボックスモード内では拡張は許可されていませ msgid "-l / @load are gawk extensions" msgstr "@include は gawk 拡張です" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "" @@ -1937,6 +1947,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "`extension' は gawk 拡張です" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "" + #: ext.c:180 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" @@ -1962,37 +1976,37 @@ msgstr "" msgid "make_builtin: missing function name" msgstr "extension: 関数名がありません" -#: ext.c:238 +#: ext.c:236 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: 関数 `%s' を再定義できません" -#: ext.c:242 +#: ext.c:240 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: 関数 `%s' は既に定義されています" -#: ext.c:246 +#: ext.c:244 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: 関数名 `%s' は前に定義されています" -#: ext.c:248 +#: ext.c:246 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: gawk に組み込まれている `%s' は関数名として使用出来ません" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: 関数 `%s' の引数の数が負です" -#: ext.c:278 +#: ext.c:276 #, fuzzy msgid "extension: missing function name" msgstr "extension: 関数名がありません" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: 関数名 `%2$s' の中で不正な文字 `%1$c' が使用されています" @@ -2017,153 +2031,158 @@ msgstr "関数名 `%s' は前に定義されています" msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: gawk に組み込まれている `%s' は関数名として使用出来ません" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "関数 `%s' に使える引数の数は `%d' 以下と定義されています" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "関数 `%s': 引数 #%d がありません" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "関数 `%s': 引数 #%d: スカラーを配列として使用する試みです" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "関数 `%s': 引数 #%d: 配列をスカラーとして使用する試みです" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: bad parameters" msgstr "%s: 仮引数です\n" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, fuzzy, c-format msgid "fts init: could not create variable %s" msgstr "index: 文字列では無い第二引数を受け取りました" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +#, fuzzy +msgid "fts is not supported on this system" +msgstr "古い awk は `%s' をサポートしません" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 #, fuzzy msgid "fill_path_element: could not set element" msgstr "index: 文字列では無い第二引数を受け取りました" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 #, fuzzy msgid "fts-process: could not set element" msgstr "index: 文字列では無い第二引数を受け取りました" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: 仮引数です\n" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: 仮引数です\n" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: 仮引数です\n" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 #, fuzzy msgid "fts: could not flatten array\n" msgstr "`%s' は不正な変数名です" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 #, fuzzy msgid "fnmatch: called with less than three arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 #, fuzzy msgid "fnmatch: called with more than three arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 #, fuzzy msgid "fnmatch: could not get first argument" msgstr "strftime: 非文字列の第一引数を受け取りました" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 #, fuzzy msgid "fnmatch: could not get second argument" msgstr "index: 文字列では無い第二引数を受け取りました" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "" @@ -2191,88 +2210,88 @@ msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" msgid "wait: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "致命的: extension: `%s' を開くことが出来ません (%s)\n" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, fuzzy, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "`%s' は不正な変数名です" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "パイプ `%s' をフラッシュできません (%s)。" -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "fd %d (`%s') を閉じることができません (%s)" @@ -2307,173 +2326,173 @@ msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 #, fuzzy msgid "readfile: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/readfile.c:118 +#: extension/readfile.c:137 #, fuzzy msgid "readfile: called with no arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: 引数 %g が範囲外です" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: 第四引数が配列ではありません" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: 引数 %g が範囲外です" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: 第三引数が配列ではありません" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:81 +#: extension/time.c:113 #, fuzzy msgid "gettimeofday: ignoring arguments" msgstr "mktime: 非文字列引数を受け取りました" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:133 +#: extension/time.c:165 #, fuzzy msgid "sleep: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/time.c:136 +#: extension/time.c:168 #, fuzzy msgid "sleep: missing required numeric argument" msgstr "exp: 引数が数値ではありません" -#: extension/time.c:142 +#: extension/time.c:174 #, fuzzy msgid "sleep: argument is negative" msgstr "exp: 引数 %g が範囲外です" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "NF が負の値に設定されています" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "split: 第四引数は gawk 拡張です" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "split: 第四引数が配列ではありません" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "split: 第二引数が配列ではありません" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "split: 第二引数と第四引数に同じ配列を使用することは出来ません" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: 第四引数に第二引数の部分配列を使用することは出来ません" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: 第二引数に第四引数の部分配列を使用することは出来ません" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "split: 第三引数に NULL 文字列を使用することは gawk 拡張です" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: 第四引数が配列ではありません" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "patsplit: 第二引数が配列ではありません" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "patsplit: 第三引数は非 NULL でなければいけません" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: 第二引数と第四引数に同じ配列を使用することは出来ません" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: 第四引数に第二引数の部分配列を使用することは出来ません" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: 第二引数に第四引数の部分配列を使用することは出来ません" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' は gawk 拡張です" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "`%s' 付近の FIELDWIDTHS 値が無効です" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "`FS' に NULL 文字列を使用するのは gawk 拡張です" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "古い awk は `FS' の値として正規表現をサポートしません" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' は gawk 拡張です" @@ -2489,596 +2508,596 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 #, fuzzy msgid "remove_element: received null array" msgstr "length: 配列引数を受け取りました" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: オプション '%s' は曖昧です\n" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: オプション '--%s' は引数を取ることができません\n" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: オプション '%c%s' は引数を取ることができません\n" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: オプション '--%s' には引数が必要です\n" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: オプション '--%s' を認識できません\n" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: オプション '%c%s' を認識できません\n" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: 無効なオプション -- '%c'\n" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: オプションには引数が必要です -- '%c'\n" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: オプション '-W %s' は曖昧です\n" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: オプション '-W %s' は引数を取ることができません\n" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: オプション '-W %s' には引数が必要です\n" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "コマンドライン引数 `%s' はディレクトリです: スキップされました" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "ファイル `%s' を読み込み用に開けません (%s)" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "fd %d (`%s') を閉じることができません (%s)" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "サンドボックスモード内ではリダイレクトは許可されていません" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "`%s' リダイレクトの命令式に数値しか記述されていません。" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' リダイレクトの命令式が空列です。" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "`%2$s' リダイレクトに論理演算の結果と思われるファイル名 `%1$s' が使われていま" "す。" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "ファイル `%.*s' で必要以上に `>' と `>>' を組合せています。" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "出力用にパイプ `%s' を開けません (%s)" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "入力用にパイプ `%s' を開けません (%s)" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "入出力用の双方向パイプ `%s' が開けません (%s)" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "`%s' からリダイレクトできません (%s)" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "`%s' にリダイレクトできません (%s)" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "開いているファイルの数がシステム制限に達しました。ファイル記述子を多重化しま" "す。" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "`%s' を閉じるのに失敗しました (%s)" -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "開いているパイプまたは入力ファイルの数が多過ぎます。" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "close: 第二引数は `to' または `from' でなければいけません" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' は開いているファイル、パイプ、プロセス共有ではありません" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "開いてないリダイレクトを閉じようとしています" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: リダイレクト `%s' は `|&' を使用して開かれていません。第二引数は無視さ" "れました" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "パイプ `%2$s' を閉じたときの状態コードが失敗 (%1$d) でした (%3$s)。" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "ファイル `%2$s' を閉じたときの状態コードが失敗 (%1$d) でした (%3$s)。" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ソケット `%s' を明示して閉じていません。" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "並行プロセス `%s' を明示して閉じていません。" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "パイプ `%s' を明示して閉じていません。" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ファイル `%s' を明示して閉じていません。" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "標準出力への書込みエラー (%s)" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "標準エラーへの書込みエラー (%s)" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "パイプ `%s' をフラッシュできません (%s)。" -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "`%s' へ接続するパイプを並行プロセスからフラッシュできません (%s)。" -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "ファイル `%s' をフラッシュできません (%s)。" -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "`/inet' 内のローカルポート %s が無効です" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "リモートのホストおよびポート情報 (%s, %s) が無効です" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "" "スペシャルファイル名 `%s' に(認識できる)プロトコルが指定されていません" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "スペシャルファイル名 `%s' は不完全です" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "`/inet' にはリモートホスト名を与えなければいけません" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "`/inet' にはリモートポート番号を与えなければいけません" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通信はサポートされていません" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "`%s' をモード `%s' で開けません" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "マスター pty を閉じるのに失敗しました (%s)" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "子プロセスが標準出力を閉じるのに失敗しました (%s)" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "子プロセスがスレーブ pty を標準出力に移動できません (dup: %s)。" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "子プロセスが標準入力を閉じられません (%s)。" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "子プロセスがスレーブ pty を標準入力に移動できません (dup: %s)。" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "スレーブ pty を閉じるのに失敗しました (%s)" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "子プロセスがパイプを標準出力に移動できません (dup: %s)。" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "子プロセスがパイプを標準入力に移動できません (dup: %s)。" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "親プロセスが標準出力を復旧できません。\n" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "親プロセスが標準入力を復旧できません。\n" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "パイプを閉じられません (%s)。" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "`|&' は使用できません。" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "パイプ `%s' が開けません (%s)。" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s' 用の子プロセスを実行できません (fork: %s)。" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "データファイル `%s' は空です。" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "入力用メモリーをこれ以上確保できません。" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "複数の文字を `RS' に使用するのは gawk 特有の拡張です。" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "IPv6 通信はサポートされていません" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "`-e/--source' への空の引数は無視されました" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: オプション `-W %s' は認識できません。無視されました\n" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: 引数が必要なオプション -- %c\n" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "環境変数 `POSIXLY_CORRECT' が指定されています。オプション `--posix' を有効に" "します" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "オプション `--posix' は `--traditional' を無効にします。" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "オプション `--posix'/`--traditional' は `--non-decimal-data' を無効にします。" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "setuid root で %s を実行すると、セキュリティ上の問題が発生する場合がありま" "す。" -#: main.c:571 +#: main.c:588 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' は `--binary' を上書きします" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "標準入力をバイナリモードに設定できません (%s)" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "標準出力をバイナリモードに設定できません (%s)" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "標準エラーをバイナリモードに設定できません (%s)" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "プログラム文が全くありません!" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "使用法: %s [POSIX または GNU 形式のオプション] -f progfile [--] file ...\n" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "使用法: %s [POSIX または GNU 形式のオプション] [--] %cprogram%c file ...\n" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX オプション:\t\tGNU 長い形式のオプション: (標準)\n" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短いオプション:\t\tGNU 長い形式のオプション: (拡張)\n" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:795 +#: main.c:815 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:804 +#: main.c:824 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:806 +#: main.c:826 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3087,7 +3106,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3102,7 +3121,7 @@ msgstr "" "翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してくださ" "い。\n" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3112,7 +3131,7 @@ msgstr "" "デフォルト設定では、標準入力を読み込み、標準出力に書き出します。\n" "\n" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3122,7 +3141,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3141,7 +3160,7 @@ msgstr "" "(at your option) any later version.\n" "\n" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3155,7 +3174,7 @@ msgstr "" "GNU General Public License for more details.\n" "\n" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3163,16 +3182,16 @@ msgstr "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "POSIX awk では -Ft は FS をタブに設定しません" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "フィールド指定に不明な値があります: %d\n" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3181,48 +3200,48 @@ msgstr "" "%s: オプション `-v' の引数 `%s' が `変数=代入値' の形式になっていません。\n" "\n" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' は不正な変数名です" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' は変数名ではありません。`%s=%s' のファイルを探します。" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "gawk に組み込みの `%s' は変数名として使用出来ません" -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "関数 `%s' は変数名として使用出来ません" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "浮動小数点例外" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "致命的エラー: 内部エラー" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "致命的エラー: 内部エラー: セグメンテーション違反" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "致命的エラー: 内部エラー: スタックオーバーフロー" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "fd %d が事前に開いていません。" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "事前に fd %d 用に /dev/null を開けません。" @@ -3281,7 +3300,7 @@ msgstr "or(%lf, %lf): 小数点以下は切り捨てられます" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "コマンドライン:" @@ -3335,16 +3354,16 @@ msgstr "%s %s `%s': fd フラグを取得できません: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': close-on-exec を設定できません: (fcntl F_SETFD: %s)" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "`%s' を書込み用に開けませんでした: %s" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "プロファイルを標準エラーに送っています" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" @@ -3353,7 +3372,7 @@ msgstr "" "\t# %s ブロック\n" "\n" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3362,29 +3381,29 @@ msgstr "" "\t# ルール\n" "\n" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "内部エラー: %s の vname が無効です。" -#: profile.c:530 +#: profile.c:537 #, fuzzy msgid "internal error: builtin with null fname" msgstr "内部エラー: %s の vname が無効です。" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk プロファイル、作成日時 %s\n" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" @@ -3393,17 +3412,12 @@ msgstr "" "\n" "\t# 関数一覧(アルファベット順)\n" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: 不明なリダイレクト型 %d です" -#: re.c:583 -#, fuzzy, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "`[%c-%c]' 形式の範囲はロケール依存です" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "正規表現の要素 `%.*s' はおそらく `[%.*s]' であるべきです" @@ -3472,11 +3486,15 @@ msgstr ") または \\) が不一致です" msgid "No previous regular expression" msgstr "以前に正規表現がありません" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "" #, fuzzy +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "`[%c-%c]' 形式の範囲はロケール依存です" + +#, fuzzy #~ msgid "[s]printf called with no arguments" #~ msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.75\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2013-04-19 10:45+0800\n" "Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n" "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n" @@ -19,84 +19,84 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-SourceCharset: UTF-8\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "dari %s" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "cubaan untuk menggunakan nilai skalar sebagai tatasusunan" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" -#: array.c:773 +#: array.c:776 msgid "adump: first argument not an array" msgstr "" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" @@ -137,11 +137,11 @@ msgstr "" msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "" @@ -230,675 +230,685 @@ msgstr "" msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "" -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "" -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" + +#: awkgram.y:5052 +#, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1610 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3011 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3013 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3015 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3048 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3050 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3052 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3082 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3086 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3114 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3118 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3146 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3150 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3181 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3183 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" @@ -1020,8 +1030,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1178,7 +1188,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "" @@ -1216,552 +1226,552 @@ msgstr "" msgid "undefined command: %s\n" msgstr "" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, c-format msgid "can't read source file `%s' (%s)" msgstr "" -#: debug.c:447 +#: debug.c:453 #, c-format msgid "source file `%s' is empty.\n" msgstr "" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "" -#: debug.c:499 +#: debug.c:505 #, c-format msgid "cannot find source file named `%s' (%s)" msgstr "" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:723 +#: debug.c:732 #, c-format msgid "Current source file: %s\n" msgstr "" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 msgid "No arguments.\n" msgstr "" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1020 +#: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" msgstr "" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" msgstr "" -#: debug.c:1046 +#: debug.c:1055 #, c-format msgid "$%ld = uninitialized field\n" msgstr "" -#: debug.c:1067 +#: debug.c:1076 #, c-format msgid "array `%s' is empty\n" msgstr "" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, c-format msgid "`%s' is not a scalar variable" msgstr "" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "" -#: debug.c:1414 +#: debug.c:1423 #, c-format msgid "`%s' is a function" msgstr "" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "" -#: debug.c:1758 +#: debug.c:1767 msgid "attempt to use scalar value as array" msgstr "" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 msgid "invalid frame number" msgstr "" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format msgid "line number %d in file `%s' out of range" msgstr "" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" msgstr "" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "element not in array\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "" -#: debug.c:4986 +#: debug.c:5001 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "" -#: debug.c:5366 +#: debug.c:5381 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5374 +#: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5575 +#: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1281 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "" -#: dfa.c:1816 +#: dfa.c:1936 msgid "unbalanced (" msgstr "" -#: dfa.c:1943 +#: dfa.c:2062 msgid "no syntax specified" msgstr "" -#: dfa.c:1951 +#: dfa.c:2070 msgid "unbalanced )" msgstr "" @@ -1780,11 +1790,11 @@ msgstr "" msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1792,71 +1802,71 @@ msgid "" "\n" msgstr "" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "" @@ -1869,7 +1879,7 @@ msgstr "" msgid "-l / @load are gawk extensions" msgstr "" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "" @@ -1898,6 +1908,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "" + #: ext.c:180 #, c-format msgid "extension: cannot open library `%s' (%s)" @@ -1918,36 +1932,36 @@ msgstr "" msgid "make_builtin: missing function name" msgstr "" -#: ext.c:238 +#: ext.c:236 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "" -#: ext.c:242 +#: ext.c:240 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "" -#: ext.c:246 +#: ext.c:244 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "" -#: ext.c:248 +#: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:278 +#: ext.c:276 msgid "extension: missing function name" msgstr "" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" @@ -1972,139 +1986,143 @@ msgstr "" msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 msgid "stat: called with wrong number of arguments" msgstr "" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 msgid "stat: bad parameters" msgstr "" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +msgid "fts is not supported on this system" +msgstr "" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 msgid "fts: bad first parameter" msgstr "" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 msgid "fts: bad second parameter" msgstr "" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 msgid "fts: bad third parameter" msgstr "" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 msgid "fnmatch: called with less than three arguments" msgstr "" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 msgid "fnmatch: called with more than three arguments" msgstr "" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 msgid "fnmatch: could not get first argument" msgstr "" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 msgid "fnmatch: could not get second argument" msgstr "" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "" @@ -2128,88 +2146,88 @@ msgstr "" msgid "wait: called with too many arguments" msgstr "" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "" @@ -2238,165 +2256,165 @@ msgstr "" msgid "chr: called with inappropriate argument(s)" msgstr "" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 msgid "writea: called with too many arguments" msgstr "" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 msgid "reada: called with too many arguments" msgstr "" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" -#: extension/time.c:81 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "" -#: extension/time.c:133 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "" -#: extension/time.c:136 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "" -#: extension/time.c:142 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "" @@ -2412,577 +2430,577 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "" -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "" -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "" -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:571 +#: main.c:588 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:795 +#: main.c:815 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:804 +#: main.c:824 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:806 +#: main.c:826 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -2991,7 +3009,7 @@ msgstr "" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -2999,21 +3017,21 @@ msgid "" "\n" msgstr "" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3025,7 +3043,7 @@ msgid "" "\n" msgstr "" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3034,70 +3052,70 @@ msgid "" "\n" msgstr "" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" @@ -3152,7 +3170,7 @@ msgstr "" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "" @@ -3202,68 +3220,63 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" "\n" msgstr "" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" "\n" msgstr "" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "" -#: profile.c:530 +#: profile.c:537 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" -#: re.c:583 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" @@ -3332,6 +3345,6 @@ msgstr "" msgid "No previous regular expression" msgstr "" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "" Binary files differ@@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-02-04 11:18+0100\n" "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" @@ -40,8 +40,8 @@ msgstr "scalaire parameter '%s' wordt gebruikt als array" msgid "attempt to use scalar `%s' as an array" msgstr "scalair '%s' wordt gebruikt als array" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -79,19 +79,27 @@ msgstr "asorti: eerste argument is geen array" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" -msgstr "asort: een subarray van het eerste argument kan niet als tweede argument gebruikt worden" +msgstr "" +"asort: een subarray van het eerste argument kan niet als tweede argument " +"gebruikt worden" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" -msgstr "asorti: een subarray van het eerste argument kan niet als tweede argument gebruikt worden" +msgstr "" +"asorti: een subarray van het eerste argument kan niet als tweede argument " +"gebruikt worden" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" -msgstr "asort: een subarray van het tweede argument kan niet als eerste argument gebruikt worden" +msgstr "" +"asort: een subarray van het tweede argument kan niet als eerste argument " +"gebruikt worden" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" -msgstr "asorti: een subarray van het tweede argument kan niet als eerste argument gebruikt worden" +msgstr "" +"asorti: een subarray van het tweede argument kan niet als eerste argument " +"gebruikt worden" #: array.c:1314 #, c-format @@ -139,11 +147,11 @@ msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s" msgid "duplicate `default' detected in switch body" msgstr "dubbele 'default' in 'switch'-opdracht" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "'continue' buiten een lus is niet toegestaan" @@ -163,7 +171,8 @@ msgstr "'return' wordt gebruikt buiten functiecontext" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "kale 'print' in BEGIN- of END-regel moet vermoedelijk 'print \"\"' zijn" +msgstr "" +"kale 'print' in BEGIN- of END-regel moet vermoedelijk 'print \"\"' zijn" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" @@ -226,268 +235,272 @@ msgstr "indirecte functieaanroepen zijn een gawk-uitbreiding" #: awkgram.y:1620 #, c-format msgid "can not use special variable `%s' for indirect function call" -msgstr "kan speciale variabele '%s' niet voor indirecte functieaanroep gebruiken" +msgstr "" +"kan speciale variabele '%s' niet voor indirecte functieaanroep gebruiken" #: awkgram.y:1698 msgid "invalid subscript expression" msgstr "ongeldige index-expressie" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "waarschuwing: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fataal: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "onverwacht regeleinde of einde van string" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan bronbestand '%s' niet openen om te lezen (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan gedeelde bibliotheek '%s' niet openen om te lezen (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "reden onbekend" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kan '%s' niet invoegen en als programmabestand gebruiken" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "bronbestand '%s' is reeds ingesloten" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "gedeelde bibliotheek '%s' is reeds geladen" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "'@include' is een gawk-uitbreiding" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "lege bestandsnaam na '@include'" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "'@load' is een gawk-uitbreiding" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "lege bestandsnaam na '@load'" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "lege programmatekst op opdrachtregel" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan bronbestand '%s' niet lezen (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "bronbestand '%s' is leeg" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "bronbestand eindigt niet met een regeleindeteken (LF)" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "onafgesloten reguliere expressie" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "onafgesloten reguliere expressie aan bestandseinde" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "backslash is niet het laatste teken op de regel" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX staat operator '**=' niet toe" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "oude 'awk' kent de operator '**=' niet" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX staat operator '**' niet toe" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "oude 'awk' kent de operator '**' niet" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "oude 'awk' kent de operator '^=' niet" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "oude 'awk' kent de operator '^' niet" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "onafgesloten string" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "ongeldig teken '%c' in expressie" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' is een gawk-uitbreiding" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX staat '%s' niet toe" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "oude 'awk' kent '%s' niet" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "'goto' wordt als schadelijk beschouwd!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d is een ongeldig aantal argumenten voor %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: een stringwaarde als laatste vervangingsargument heeft geen effect" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: derde parameter is geen veranderbaar object" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: derde argument is een gawk-uitbreiding" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: tweede argument is een gawk-uitbreiding" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" -msgstr "index: een reguliere-expressie-constante als tweede argument is niet toegestaan" +msgstr "" +"index: een reguliere-expressie-constante als tweede argument is niet " +"toegestaan" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "functie '%s': parameter '%s' schaduwt een globale variabele" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kan '%s' niet openen om te schrijven (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "variabelenlijst gaat naar standaardfoutuitvoer" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sluiten is mislukt (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() twee keer aangeroepen!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "er waren geschaduwde variabelen." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "functienaam '%s' is al eerder gedefinieerd" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "functie '%s': kan speciale variabele '%s' niet als functieparameter gebruiken" +msgstr "" +"functie '%s': kan speciale variabele '%s' niet als functieparameter gebruiken" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "regexp-constante als parameter #%d levert booleanwaarde op" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -496,20 +509,23 @@ msgstr "" "functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n" "of wordt gebruikt als variabele of array" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "deling door nul" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "deling door nul in '%%'" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" -msgstr "kan geen waarde toewijzen aan het resultaat van een post-increment-expressie van een veld" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" +"kan geen waarde toewijzen aan het resultaat van een post-increment-expressie " +"van een veld" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ongeldig doel van toewijzing (opcode %s)" @@ -535,12 +551,16 @@ msgstr "exp: argument %g ligt buiten toegestane bereik" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush: kan pijp niet leegmaken: '%s' is geopend om te lezen, niet om te schrijven" +msgstr "" +"fflush: kan pijp niet leegmaken: '%s' is geopend om te lezen, niet om te " +"schrijven" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te schrijven" +msgstr "" +"fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te " +"schrijven" #: builtin.c:244 #, c-format @@ -620,297 +640,302 @@ msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak" msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" -msgstr "onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" +msgstr "" +"onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "fataal: niet genoeg argumenten voor opmaakstring" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "niet genoeg ^ voor deze" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: opmaakaanduiding mist een stuurletter" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "te veel argumenten voor opmaakstring" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: geen argumenten" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: geen argumenten" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argument is geen getal" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: argument %g is negatief" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lengte %g is niet >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lengte %g is niet >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lengte %g is geen integer; wordt afgekapt" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" -msgstr "substr: lengte %g is te groot voor stringindexering; wordt verkort tot %g" +msgstr "" +"substr: lengte %g is te groot voor stringindexering; wordt verkort tot %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g is geen integer; wordt afgekapt" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: bronstring heeft lengte nul" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g ligt voorbij het einde van de string" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: lengte %g bij startindex %g is groter dan de lengte van het eerste argument (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: lengte %g bij startindex %g is groter dan de lengte van het eerste " +"argument (%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: tweede argument is geen getal" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: eerste argument is geen string" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: opmaakstring is leeg" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: argument is geen string" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: minstens één van waarden valt buiten het standaardbereik" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-functie is niet toegestaan in sandbox-modus" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: argument is geen string" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: argument is geen string" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: argument is geen string" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: eerste argument is geen getal" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: tweede argument is geen getal" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: argument is geen getal" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: argument is geen getal" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: argument is geen getal" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: derde argument is geen array" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: derde argument is 0; wordt beschouwd als 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: eerste argument is geen getal" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: tweede argument is geen getal" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: eerste argument is geen getal" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: tweede argument is geen getal" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: aangeroepen met minder dan twee argumenten" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d is niet-numeriek" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: aangeroepen met minder dan twee argumenten" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d is niet-numeriek" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: aangeroepen met minder dan twee argumenten" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d is niet-numeriek" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: argument is geen getal" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatieve waarden geven rare resultaten" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): cijfers na de komma worden afgekapt" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie" @@ -942,7 +967,8 @@ msgstr "save \"%s\": commando niet toegestaan." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" -msgstr "Kan commando 'commands' niet voor breekpunt-/kijkpunt-commando's gebruiken" +msgstr "" +"Kan commando 'commands' niet voor breekpunt-/kijkpunt-commando's gebruiken" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" @@ -1016,24 +1042,39 @@ msgid "non-zero integer value" msgstr "niet-nul geheel getal" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - een trace weergeven van alle of N binnenste frames (of buitenste als N < 0)" +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - een trace weergeven van alle of N binnenste frames (of " +"buitenste als N < 0)" #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - breekpunt zetten op gegeven positie" +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." +msgstr "" +"break [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - breekpunt zetten op gegeven " +"positie" #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - eerder gezet breekpunt verwijderen" +msgstr "" +"clear [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - eerder gezet breekpunt " +"verwijderen" #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [NUMMER] - een lijst van commando's beginnen die uitgevoerd moeten worden wanneer een breekpunt/kijkpunt getroffen wordt" +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [NUMMER] - een lijst van commando's beginnen die uitgevoerd moeten " +"worden wanneer een breekpunt/kijkpunt getroffen wordt" #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition NUMMER [EXPRESSIE] - de conditie van een breekpunt/kijkpunt zetten of wissen" +msgstr "" +"condition NUMMER [EXPRESSIE] - de conditie van een breekpunt/kijkpunt zetten " +"of wissen" #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1049,7 +1090,9 @@ msgstr "disable [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten uitschakelen" #: command.y:833 msgid "display [var] - print value of variable each time the program stops." -msgstr "display [VAR] - waarde van variabele weergeven elke keer dat het programma stopt" +msgstr "" +"display [VAR] - waarde van variabele weergeven elke keer dat het programma " +"stopt" #: command.y:835 msgid "down [N] - move N frames down the stack." @@ -1057,11 +1100,14 @@ msgstr "down [AANTAL] - dit aantal frames naar beneden in de stack gaan" #: command.y:837 msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer (of naar bestand)" +msgstr "" +"dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer (of naar " +"bestand)" #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "enable [once|del] [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten inschakelen" +msgstr "" +"enable [once|del] [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten inschakelen" #: command.y:841 msgid "end - end a list of commands or awk statements." @@ -1081,27 +1127,41 @@ msgstr "frame [NUMMER] - stack-frame met dit nummer selecteren en weergeven" #: command.y:849 msgid "help [command] - print list of commands or explanation of command." -msgstr "help [COMMANDO] - lijst van beschikbare commando's (of uitleg van commando) tonen" +msgstr "" +"help [COMMANDO] - lijst van beschikbare commando's (of uitleg van commando) " +"tonen" #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore NUMMER AANTAL - het aantal keren dat dit breekpuntnummer genegeerd moet worden" +msgstr "" +"ignore NUMMER AANTAL - het aantal keren dat dit breekpuntnummer genegeerd " +"moet worden" #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." -msgstr "info THEMA - source|sources|variables|functions|break|frame|args|locals|display|watch" +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." +msgstr "" +"info THEMA - source|sources|variables|functions|break|frame|args|locals|" +"display|watch" #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -msgstr "list [-|+|[BESTANDSNAAM:]REGELNUMMER|FUNCTIE|BEREIK] - aangegeven regels tonen" +msgstr "" +"list [-|+|[BESTANDSNAAM:]REGELNUMMER|FUNCTIE|BEREIK] - aangegeven regels " +"tonen" #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [AANTAL] - programma uitvoeren tot de volgende bronregel bereikt is" +msgstr "" +"next [AANTAL] - programma uitvoeren tot de volgende bronregel bereikt is" #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [AANTAL] - één instructie (of dit aantal) uitvoeren, waarbij een functie-aanroep als één telt" +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgstr "" +"nexti [AANTAL] - één instructie (of dit aantal) uitvoeren, waarbij een " +"functie-aanroep als één telt" #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." @@ -1136,8 +1196,11 @@ msgid "set var = value - assign value to a scalar variable." msgstr "set VAR = WAARDE - een waarde aan een scalaire variabele toekennen" #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - de gewone meldingen bij het stoppen bij een breekpunt/kijkpunt onderdrukken" +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - de gewone meldingen bij het stoppen bij een breekpunt/kijkpunt " +"onderdrukken" #: command.y:881 msgid "source file - execute commands from file." @@ -1145,7 +1208,8 @@ msgstr "source BESTANDSNAAM - commando's uit dit bestand uitvoeren" #: command.y:883 msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [AANTAL] - programma uitvoeren tot een andere bronregel bereikt is" +msgstr "" +"step [AANTAL] - programma uitvoeren tot een andere bronregel bereikt is" #: command.y:885 msgid "stepi [COUNT] - step one instruction exactly." @@ -1153,7 +1217,8 @@ msgstr "stepi [AANTAL] - precies één (of dit aantal) instructies uitvoeren" #: command.y:887 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - een tijdelijk breekpunt zetten" +msgstr "" +"tbreak [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - een tijdelijk breekpunt zetten" #: command.y:889 msgid "trace on|off - print instruction before executing." @@ -1161,11 +1226,16 @@ msgstr "trace on|off - instructie weergeven alvorens deze uit te voeren" #: command.y:891 msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [AANTAL] - variabele(n) van automatische weergavelijst verwijderen" +msgstr "" +"undisplay [AANTAL] - variabele(n) van automatische weergavelijst verwijderen" #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[BESTANDSNAAM:]N|FUNCTIE] - programma uitvoeren totdat deze een andere regel bereikt of regel N binnen het huidige frame" +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[BESTANDSNAAM:]N|FUNCTIE] - programma uitvoeren totdat deze een " +"andere regel bereikt of regel N binnen het huidige frame" #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1271,7 +1341,8 @@ msgstr "kan geen bronbestand met naam '%s' vinden (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" -msgstr "Waarschuwing: bronbestand '%s' is gewijzigd sinds programmacompilatie.\n" +msgstr "" +"Waarschuwing: bronbestand '%s' is gewijzigd sinds programmacompilatie.\n" #: debug.c:551 #, c-format @@ -1501,7 +1572,9 @@ msgstr "ongeldig framenummer" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Opmerking: breekpunt %d (ingeschakeld, volgende %ld passages genegeerd), ook gezet op %s:%d" +msgstr "" +"Opmerking: breekpunt %d (ingeschakeld, volgende %ld passages genegeerd), ook " +"gezet op %s:%d" #: debug.c:2207 #, c-format @@ -1511,7 +1584,9 @@ msgstr "Opmerking: breekpunt %d (ingeschakeld), ook gezet op %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Opmerking: breekpunt %d (uitgeschakeld, volgende %ld passages genegeerd), ook gezet op %s:%d" +msgstr "" +"Opmerking: breekpunt %d (uitgeschakeld, volgende %ld passages genegeerd), " +"ook gezet op %s:%d" #: debug.c:2221 #, c-format @@ -1617,7 +1692,8 @@ msgstr "fout: kan niet herstarten; operatie is niet toegestaan\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" -msgstr "fout(%s): kan niet herstarten; de resterende commando's worden genegeerd\n" +msgstr "" +"fout(%s): kan niet herstarten; de resterende commando's worden genegeerd\n" #: debug.c:2950 #, c-format @@ -1705,7 +1781,8 @@ msgstr "'until' is niet zinvol met een niet-lokale sprong '%s'\n" #: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" -msgstr "\t------[Enter] om verder te gaan, of [q] [Enter] om af te sluiten------" +msgstr "" +"\t------[Enter] om verder te gaan, of [q] [Enter] om af te sluiten------" #: debug.c:4186 msgid "q" @@ -1739,40 +1816,40 @@ msgstr "'return' is niet toegestaan in huidige context; statement is genegeerd" msgid "No symbol `%s' in current context" msgstr "Geen symbool '%s' in huidige context" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "ongepaarde [" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "ongeldige tekenklasse" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "onafgemaakte \\-stuurcode" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Ongeldige inhoud van \\{\\}" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Reguliere expressie is te groot" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "ongepaarde (" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "geen syntax opgegeven" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr "ongepaarde )" @@ -1894,8 +1971,10 @@ msgstr "load_ext: kan bibliotheek '%s' niet openen (%s)\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)\n" #: ext.c:110 #, c-format @@ -1922,8 +2001,10 @@ msgstr "extension: kan bibliotheek '%s' niet openen (%s)" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)" #: ext.c:190 #, c-format @@ -1952,7 +2033,8 @@ msgstr "make_builtin: functienaam '%s' is al eerder gedefinieerd" #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" +msgstr "" +"make_builtin: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" #: ext.c:249 ext.c:304 #, c-format @@ -1991,7 +2073,8 @@ msgstr "extension: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" #: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "functie '%s' is gedefinieerd om niet meer dan %d argument(en) te accepteren" +msgstr "" +"functie '%s' is gedefinieerd om niet meer dan %d argument(en) te accepteren" #: ext.c:378 #, c-format @@ -2014,7 +2097,8 @@ msgstr "het dynamisch laden van de bibliotheek wordt niet ondersteund" #: extension/filefuncs.c:159 msgid "chdir: called with incorrect number of arguments, expecting 1" -msgstr "chdir: aangeroepen met onjuist aantal argumenten; één wordt er verwacht" +msgstr "" +"chdir: aangeroepen met onjuist aantal argumenten; één wordt er verwacht" #: extension/filefuncs.c:439 #, c-format @@ -2065,7 +2149,8 @@ msgstr "fts-verwerking: kan element niet instellen" #: extension/filefuncs.c:784 msgid "fts: called with incorrect number of arguments, expecting 3" -msgstr "fts: aangeroepen met onjuist aantal argumenten; drie worden er verwacht" +msgstr "" +"fts: aangeroepen met onjuist aantal argumenten; drie worden er verwacht" #: extension/filefuncs.c:787 msgid "fts: bad first parameter" @@ -2159,12 +2244,15 @@ msgstr "inplace_begin(): verwachtte twee argumenten maar is aangeroepen met %d" #: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" -msgstr "inplace_begin(): kan eerste argument niet als bestandsnaamstring oppakken" +msgstr "" +"inplace_begin(): kan eerste argument niet als bestandsnaamstring oppakken" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" -msgstr "inplace_begin(): in-situ-bewerken wordt uitgeschakeld voor ongeldige bestandsnaam '%s'" +msgstr "" +"inplace_begin(): in-situ-bewerken wordt uitgeschakeld voor ongeldige " +"bestandsnaam '%s'" #: extension/inplace.c:151 #, c-format @@ -2203,7 +2291,8 @@ msgstr "inplace_begin(): close(%d) is mislukt (%s)" #: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" -msgstr "inplace_end(): kan eerste argument niet als bestandsnaamstring oppakken" +msgstr "" +"inplace_end(): kan eerste argument niet als bestandsnaamstring oppakken" #: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" @@ -2258,16 +2347,16 @@ msgstr "chr: aangeroepen zonder argumenten" msgid "chr: called with inappropriate argument(s)" msgstr "chr: aangeroepen met onjuiste argumenten" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of(): opendir()/fdopendir() is mislukt: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: aangeroepen met te veel argumenten" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: aangeroepen zonder argumenten" @@ -2319,27 +2408,27 @@ msgstr "do_reada: clear_array() is mislukt\n" msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element() is mislukt\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: argumenten worden genegeerd" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: wordt op dit platform niet ondersteund" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: aangeroepen met te veel argumenten" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: vereist numeriek argument ontbreekt" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: argument is negatief" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: wordt op dit platform niet ondersteund" @@ -2361,15 +2450,21 @@ msgstr "split: tweede argument is geen array" #: field.c:993 msgid "split: cannot use the same array for second and fourth args" -msgstr "split: hetzelfde array kan niet zowel als tweede als als vierde argument gebruikt worden" +msgstr "" +"split: hetzelfde array kan niet zowel als tweede als als vierde argument " +"gebruikt worden" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "split: een subarray van het tweede argument kan niet als vierde argument gebruikt worden" +msgstr "" +"split: een subarray van het tweede argument kan niet als vierde argument " +"gebruikt worden" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "split: een subarray van het vierde argument kan niet als tweede argument gebruikt worden" +msgstr "" +"split: een subarray van het vierde argument kan niet als tweede argument " +"gebruikt worden" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" @@ -2389,15 +2484,21 @@ msgstr "patsplit: derde argument moet niet-nil zijn" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" -msgstr "patsplit: hetzelfde array kan niet zowel als tweede als als vierde argument gebruikt worden" +msgstr "" +"patsplit: hetzelfde array kan niet zowel als tweede als als vierde argument " +"gebruikt worden" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "patsplit: een subarray van het tweede argument kan niet als vierde argument gebruikt worden" +msgstr "" +"patsplit: een subarray van het tweede argument kan niet als vierde argument " +"gebruikt worden" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "patsplit: een subarray van het vierde argument kan niet als tweede argument gebruikt worden" +msgstr "" +"patsplit: een subarray van het vierde argument kan niet als tweede argument " +"gebruikt worden" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2432,20 +2533,20 @@ msgstr "node_to_awk_value(): lege knoop ontvangen" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value(): lege waarde ontvangen" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element(): leeg array ontvangen" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element(): lege index ontvangen" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array(): kan index %d niet converteren\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array(): kan waarde %d niet converteren\n" @@ -2537,7 +2638,9 @@ msgstr "expressie voor omleiding '%s' heeft een lege string als waarde" #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "bestandsnaam '%s' voor omleiding '%s' kan het resultaat zijn van een logische expressie" +msgstr "" +"bestandsnaam '%s' voor omleiding '%s' kan het resultaat zijn van een " +"logische expressie" #: io.c:809 #, c-format @@ -2570,8 +2673,10 @@ msgid "can't redirect to `%s' (%s)" msgstr "kan niet omleiden naar '%s' (%s)" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "systeemgrens voor aantal open bestanden is bereikt: begonnen met multiplexen" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"systeemgrens voor aantal open bestanden is bereikt: begonnen met multiplexen" #: io.c:1056 #, c-format @@ -2598,7 +2703,9 @@ msgstr "sluiten van een nooit-geopende omleiding" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt genegeerd" +msgstr "" +"close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt " +"genegeerd" #: io.c:1222 #, c-format @@ -2705,7 +2812,9 @@ msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)" #: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "kan slaaf-pty niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" +msgstr "" +"kan slaaf-pty niet overzetten naar standaarduitvoer van dochterproces (dup: " +"%s)" #: io.c:1924 io.c:2110 #, c-format @@ -2715,7 +2824,9 @@ msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)" #: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "kan slaaf-pty niet overzetten naar standaardinvoer van dochterproces (dup: %s)" +msgstr "" +"kan slaaf-pty niet overzetten naar standaardinvoer van dochterproces (dup: " +"%s)" #: io.c:1929 io.c:1951 #, c-format @@ -2725,12 +2836,14 @@ msgstr "kan slaaf-pty niet sluiten (%s)" #: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" -msgstr "kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" +msgstr "" +"kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" #: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" -msgstr "kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)" +msgstr "" +"kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)" #: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" @@ -2779,8 +2892,10 @@ msgstr "register_output_wrapper(): NULL-pointer gekregen" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "uitvoer-wrapper '%s' botst met eerder geïnstalleerde uitvoer-wrapper '%s'" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"uitvoer-wrapper '%s' botst met eerder geïnstalleerde uitvoer-wrapper '%s'" #: io.c:2880 #, c-format @@ -2793,8 +2908,11 @@ msgstr "register_output_processor(): NULL-pointer gekregen" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" -msgstr "tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'" #: io.c:2939 #, c-format @@ -3192,7 +3310,8 @@ msgstr "%s: negatieve waarde %2$Rg van argument #%1$d geeft rare resultaten" #: mpfr.c:863 msgid "%s: argument #%d fractional value %Rg will be truncated" -msgstr "%s: cijfers na de komma van waarde %2$Rg van argument #%1$d worden afgekapt" +msgstr "" +"%s: cijfers na de komma van waarde %2$Rg van argument #%1$d worden afgekapt" #: mpfr.c:878 #, c-format @@ -3223,8 +3342,12 @@ msgstr "geen hex cijfers in stuurcodereeks '\\x'" #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet afgehandeld zoals u verwacht" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet " +"afgehandeld zoals u verwacht" #: node.c:594 #, c-format @@ -3232,7 +3355,9 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." msgstr "" "Ongeldige multibyte-gegevens gevonden.\n" "Uw gegevens passen vermoedelijk niet bij uw taalregio." @@ -3240,7 +3365,9 @@ msgstr "" #: posix/gawkmisc.c:177 #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" -msgstr "%s %s '%s': kan bestandsdescriptorvlaggen niet verkrijgen: (fcntl F_GETFD: %s)" +msgstr "" +"%s %s '%s': kan bestandsdescriptorvlaggen niet verkrijgen: (fcntl F_GETFD: " +"%s)" #: posix/gawkmisc.c:189 #, c-format @@ -3314,7 +3441,8 @@ msgstr "redir2str(): onbekend omleidingstype %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn" +msgstr "" +"component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn" #: regcomp.c:131 msgid "Success" @@ -3385,7 +3513,9 @@ msgid "can not pop main context" msgstr "kan hoofdcontext niet poppen" #~ msgid "range of the form `[%c-%c]' is locale dependent" -#~ msgstr "de betekenis van een bereik van de vorm '[%c-%c]' is afhankelijk van de taalregio" +#~ msgstr "" +#~ "de betekenis van een bereik van de vorm '[%c-%c]' is afhankelijk van de " +#~ "taalregio" #~ msgid "attempt to use function `%s' as an array" #~ msgstr "functie '%s' wordt gebruikt als array" @@ -3456,8 +3586,11 @@ msgstr "kan hoofdcontext niet poppen" #~ msgid "statement has no effect" #~ msgstr "opdracht heeft geen effect" -#~ msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" -#~ msgstr "for: array '%s' veranderde van grootte %ld naar %ld tijdens uitvoer van de lus" +#~ msgid "" +#~ "for loop: array `%s' changed size from %ld to %ld during loop execution" +#~ msgstr "" +#~ "for: array '%s' veranderde van grootte %ld naar %ld tijdens uitvoer van " +#~ "de lus" #~ msgid "function called indirectly through `%s' does not exist" #~ msgstr "indirect (via '%s') aangeroepen functie bestaat niet" @@ -3493,7 +3626,8 @@ msgstr "kan hoofdcontext niet poppen" #~ msgstr "kan groepen niet vinden: %s" #~ msgid "assignment is not allowed to result of builtin function" -#~ msgstr "toewijzing aan het resultaat van een ingebouwde functie is niet toegestaan" +#~ msgstr "" +#~ "toewijzing aan het resultaat van een ingebouwde functie is niet toegestaan" #~ msgid "attempt to use array in a scalar context" #~ msgstr "array wordt gebruikt in een scalaire context" @@ -3531,8 +3665,12 @@ msgstr "kan hoofdcontext niet poppen" #~ msgid "`nextfile' cannot be called from a BEGIN rule" #~ msgstr "'nextfile' kan niet aangeroepen worden in een BEGIN-regel" -#~ msgid "concatenation: side effects in one expression have changed the length of another!" -#~ msgstr "concatenation: neveneffecten in de ene expressie hebben de lengte van een andere veranderd!" +#~ msgid "" +#~ "concatenation: side effects in one expression have changed the length of " +#~ "another!" +#~ msgstr "" +#~ "concatenation: neveneffecten in de ene expressie hebben de lengte van een " +#~ "andere veranderd!" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "ongeldig type (%s) in tree_eval()" Binary files differ@@ -1,16 +1,16 @@ # Polish translations for GNU AWK package. -# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # -# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013. +# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. # additional help by Sergey Poznyakoff <gray@gnu.org>, 2003. # msgid "" msgstr "" -"Project-Id-Version: gawk 4.0.75\n" +"Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2013-05-09 16:05+0300\n" -"PO-Revision-Date: 2013-05-05 18:29+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"PO-Revision-Date: 2014-03-22 17:49+0100\n" "Last-Translator: Wojciech Polak <polak@gnu.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language: pl\n" @@ -20,88 +20,88 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: array.c:254 +#: array.c:256 #, c-format msgid "from %s" msgstr "od %s" -#: array.c:354 +#: array.c:357 msgid "attempt to use a scalar value as array" msgstr "próba użycia wartości skalarnej jako tablicy" -#: array.c:356 +#: array.c:359 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "próba użycia parametru `%s' skalaru jako tablicy" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "próba użycia skalaru `%s' jako tablicy" -#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637 -#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125 -#: eval.c:1524 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 +#: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "próba użycia tablicy `%s' w kontekście skalaru" -#: array.c:580 +#: array.c:583 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks `%s' nie jest w tablicy `%s'" -#: array.c:594 +#: array.c:597 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "próba użycia skalaru `%s[\"%.*s\"]' jako tablicy" -#: array.c:773 +#: array.c:776 msgid "adump: first argument not an array" msgstr "adump: pierwszy argument nie jest tablicą" -#: array.c:812 +#: array.c:815 msgid "asort: second argument not an array" msgstr "asort: drugi argument nie jest tablicą" -#: array.c:813 +#: array.c:816 msgid "asorti: second argument not an array" msgstr "asorti: drugi argument nie jest tablicą" -#: array.c:820 +#: array.c:823 msgid "asort: first argument not an array" msgstr "asort: pierwszy argument nie jest tablicą" -#: array.c:821 +#: array.c:824 msgid "asorti: first argument not an array" msgstr "asorti: pierwszy argument nie jest tablicą" -#: array.c:828 +#: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" -#: array.c:829 +#: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" -#: array.c:834 +#: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:835 +#: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:1309 +#: array.c:1314 #, c-format msgid "`%s' is invalid as a function name" msgstr "nieprawidłowa nazwa funkcji `%s'" -#: array.c:1313 +#: array.c:1318 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funkcja porównująca w sortowaniu `%s' nie została zdefiniowna" @@ -145,11 +145,11 @@ msgstr "powielone wartości case w ciele switch: %s" msgid "duplicate `default' detected in switch body" msgstr "wykryto powielony `default' w ciele switch" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "instrukcja `break' poza pętlą lub switch'em jest niedozwolona" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "instrukcja `continue' poza pętlą jest niedozwolona" @@ -243,271 +243,270 @@ msgstr "" msgid "invalid subscript expression" msgstr "nieprawidłowe wyrażenie indeksowe" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "ostrzeżenie: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatalny błąd: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "niespodziewany znak nowego wiersza lub końca łańcucha" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533 -#: debug.c:2792 debug.c:5040 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "nie można otworzyć pliku źródłowego `%s' do czytania (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "nie można otworzyć współdzielonej biblioteki `%s' do czytania (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "nieznany powód" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "nie można dołączyć `%s' i używać go jako pliku programu" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "plik źródłowy `%s' jest już załączony" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteka współdzielona jest już załadowana `%s'" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "pusta nazwa pliku po @include" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load jest rozszerzeniem gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "pusta nazwa pliku po @load" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "pusty tekst programu w linii poleceń" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "nie można otworzyć pliku źródłowego `%s' (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "plik źródłowy `%s' jest pusty" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "plik źródłowy nie posiada na końcu znaku nowego wiersza" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "niezakończone prawidłowo wyrażenie regularne kończy się znakiem `\\' na " "końcu pliku" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: modyfikator wyrażenia regularnego `/.../%c' tawk nie działa w gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modyfikator wyrażenia regularnego `/.../%c' tawk nie działa w gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "niezakończone wyrażenie regularne" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "niezakończone wyrażenie regularne na końcu pliku" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenośne" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "backslash nie jest ostatnim znakiem w wierszu" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX nie zezwala na operator `**='" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "stary awk nie wspiera operatora `**='" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX nie zezwala na operator `**'" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "stary awk nie wspiera operatora `**'" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "operator `^=' nie jest wspierany w starym awk" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "operator `^' nie jest wspierany w starym awk" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "niezakończony łańcuch" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "nieprawidłowy znak '%c' w wyrażeniu" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' jest rozszerzeniem gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX nie zezwala na `%s'" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' nie jest wspierany w starym awk" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "`goto' uważane za szkodliwe!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d jest nieprawidłowe jako liczba argumentów dla %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: literał łańcuchowy jako ostatni argument podstawienia nie ma żadnego " "efektu" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s trzeci parametr nie jest zmiennym obiektem" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: trzeci argument jest rozszerzeniem gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: drugi argument jest rozszerzeniem gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidłowe użycie dcgettext(_\"...\"): usuń znak podkreślenia" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidłowe użycie dcngettext(_\"...\"): usuń znak podkreślenia" -#: awkgram.y:3992 -#, fuzzy +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" -msgstr "index: otrzymano drugi argument, który nie jest łańcuchem" +msgstr "index: stały regexp jako drugi argument nie jest dozwolony" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funkcja `%s': parametr `%s' zasłania globalną zmienną" -#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "nie można otworzyć `%s' do zapisu (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "wysyłanie listy zmiennych na standardowe wyjście diagnostyczne" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: zamknięcie nie powiodło się (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() wywołana podwójnie!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "wystąpiły przykryte zmienne." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "nazwa funkcji `%s' została zdefiniowana poprzednio" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funkcja `%s': nie można użyć specjalnej zmiennej `%s' jako parametru funkcji" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "funkcja `%s' została wywołana, ale nigdy nie została zdefiniowana" -#: awkgram.y:4376 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "" "funkcja `%s' została zdefiniowana, ale nigdy nie została wywołana " "bezpośrednio" -#: awkgram.y:4408 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "stałe wyrażenie regularne dla parametru #%d daje wartość logiczną" -#: awkgram.y:4467 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -517,237 +516,247 @@ msgstr "" "`(',\n" "lub użyta jako zmienna lub jako tablica" -#: awkgram.y:4703 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "próba dzielenia przez zero" -#: awkgram.y:4712 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "próba dzielenia przez zero w `%%'" -#: builtin.c:128 +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "nie można przypisać wartości do wyniku tego wyrażenia" + +#: awkgram.y:5052 +#, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "nieprawidłowy cel przypisania (opcode %s)" + +#: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s do \"%s\" nie powiódł się (%s)" -#: builtin.c:129 +#: builtin.c:134 msgid "standard output" msgstr "standardowe wyjście" -#: builtin.c:143 +#: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: otrzymano argument nie będący liczbą" -#: builtin.c:149 +#: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argument %g jest poza zasięgiem" -#: builtin.c:224 +#: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: nie można opróżnić: potok `%s' otwarty do czytania, a nie do zapisu" -#: builtin.c:227 +#: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: nie można opróżnić: plik `%s' otwarty do czytania, a nie do zapisu" -#: builtin.c:239 +#: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' nie jest ani otwartym plikiem, ani potokiem, ani procesem" -#: builtin.c:357 +#: builtin.c:362 msgid "index: received non-string first argument" msgstr "index: otrzymano pierwszy argument, który nie jest łańcuchem" -#: builtin.c:359 +#: builtin.c:364 msgid "index: received non-string second argument" msgstr "index: otrzymano drugi argument, który nie jest łańcuchem" -#: builtin.c:483 mpfr.c:757 +#: builtin.c:488 mpfr.c:757 msgid "int: received non-numeric argument" msgstr "int: otrzymano argument, który nie jest liczbą" -#: builtin.c:520 +#: builtin.c:525 msgid "length: received array argument" msgstr "length: otrzymano argument, który jest tablicą" -#: builtin.c:523 +#: builtin.c:528 msgid "`length(array)' is a gawk extension" msgstr "`length(tablica)' jest rozszerzeniem gawk" -#: builtin.c:539 +#: builtin.c:544 msgid "length: received non-string argument" msgstr "length: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:570 +#: builtin.c:575 msgid "log: received non-numeric argument" msgstr "log: otrzymano argument, który nie jest liczbą" -#: builtin.c:573 +#: builtin.c:578 #, c-format msgid "log: received negative argument %g" msgstr "log: otrzymano ujemny argument %g" -#: builtin.c:771 builtin.c:776 +#: builtin.c:776 builtin.c:781 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic" -#: builtin.c:846 +#: builtin.c:851 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'" -#: builtin.c:848 +#: builtin.c:853 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precyzja jest ignorowana dla specyfikatora `%%'" -#: builtin.c:850 +#: builtin.c:855 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "szerokość pola i precyzja są ignorowane dla specyfikatora `%%'" -#: builtin.c:901 +#: builtin.c:906 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$' jest niedozwolony w formatach awk" -#: builtin.c:910 +#: builtin.c:915 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argument count z `$' musi być > 0" -#: builtin.c:914 +#: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: argument count %ld większy niż całkowita suma argumentów dostarczonych" -#: builtin.c:918 +#: builtin.c:923 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: `$' jest niedozwolony po kropce w formacie" -#: builtin.c:934 +#: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: brak `$' dla pozycyjnej szerokości pola lub precyzji" -#: builtin.c:1006 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1010 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1023 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1027 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1040 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1044 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1439 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: wartość %g jest poza zasięgiem dla formatu `%%%c'" -#: builtin.c:1537 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "pominięcie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano " "argumentu" -#: builtin.c:1542 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: brak wystarczającej liczby argumentów, aby zaspokoić łańcuch " "formatujący" -#: builtin.c:1544 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "zabrakło ^" -#: builtin.c:1551 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery" -#: builtin.c:1554 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "zbyt dużo podanych argumentów w łańcuchu formatującym" -#: builtin.c:1610 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: brak argumentów" -#: builtin.c:1633 builtin.c:1644 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: brak argumentów" -#: builtin.c:1687 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: otrzymano argument, który nie jest liczbą" -#: builtin.c:1691 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: wywołana z ujemnym argumentem %g" -#: builtin.c:1722 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: długość %g nie jest >= 1" -#: builtin.c:1724 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: długość %g nie jest >= 0" -#: builtin.c:1731 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: długość %g, która nie jest liczbą całkowitą, zostanie obcięta" -#: builtin.c:1736 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: długość %g zbyt duża dla indeksu łańcucha, obcinanie do %g" -#: builtin.c:1748 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: początkowy indeks %g jest nieprawidłowy, nastąpi użycie 1" -#: builtin.c:1753 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" "substr: początkowy indeks %g, który nie jest liczbą całkowitą, zostanie " "obcięty" -#: builtin.c:1778 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: łańcuch źródłowy ma zerową długość" -#: builtin.c:1794 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: początkowy indeks %g leży poza końcem łańcucha" -#: builtin.c:1802 +#: builtin.c:1826 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -755,187 +764,187 @@ msgstr "" "substr: długość %g zaczynając od %g przekracza długość pierwszego argumentu " "(%lu)" -#: builtin.c:1876 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny" -#: builtin.c:1899 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:1903 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" -#: builtin.c:1910 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: otrzymano pierwszy argument, który nie jest łańcuchem" -#: builtin.c:1917 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: otrzymano pusty łańcuch formatujący" -#: builtin.c:1983 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2000 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: przynajmniej jedna z wartości jest poza domyślnym zakresem" -#: builtin.c:2035 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy" -#: builtin.c:2040 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2160 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "odwołanie do niezainicjowanego pola `$%d'" -#: builtin.c:2247 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2281 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2317 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:2319 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:2338 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: otrzymano argument, który nie jest liczbą" -#: builtin.c:2354 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: otrzymano argument, który nie jest liczbą" -#: builtin.c:2407 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: otrzymano argument, który nie jest liczbą" -#: builtin.c:2438 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicą" -#: builtin.c:2710 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:3003 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:3005 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:3011 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3013 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3015 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): zbyt duża wartość przesunięcia spowoduje dziwne wyniki" -#: builtin.c:3040 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:3042 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:3048 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3050 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3052 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): zbyt duża wartość przesunięcia spowoduje dziwne wyniki" -#: builtin.c:3077 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3082 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d nie jest liczbą" -#: builtin.c:3086 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3109 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3114 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d nie jest liczbą" -#: builtin.c:3118 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3140 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3146 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d nie jest liczbą" -#: builtin.c:3150 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3175 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: otrzymano argument, który nie jest liczbą" -#: builtin.c:3181 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3183 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3352 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' nie jest prawidłową kategorią lokalizacji" @@ -1057,8 +1066,8 @@ msgstr "" #: command.y:823 msgid "" -"commands [num] - starts a list of commands to be executed at a breakpoint" -"(watchpoint) hit." +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1215,7 +1224,7 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:395 msg.c:128 +#: command.y:1011 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "błąd: " @@ -1253,93 +1262,93 @@ msgstr "nieprawidłowy znak" msgid "undefined command: %s\n" msgstr "niezdefiniowana komenda: %s\n" -#: debug.c:246 +#: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "" -#: debug.c:248 +#: debug.c:254 msgid "set or show the list command window size." msgstr "" -#: debug.c:250 +#: debug.c:256 msgid "set or show gawk output file." msgstr "" -#: debug.c:252 +#: debug.c:258 msgid "set or show debugger prompt." msgstr "" -#: debug.c:254 +#: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "" -#: debug.c:256 +#: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "" -#: debug.c:258 +#: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "" -#: debug.c:339 +#: debug.c:345 msgid "program not running." msgstr "" -#: debug.c:442 debug.c:597 +#: debug.c:448 debug.c:606 #, c-format msgid "can't read source file `%s' (%s)" msgstr "nie można odczytać pliku źródłowego `%s' (%s)" -#: debug.c:447 +#: debug.c:453 #, c-format msgid "source file `%s' is empty.\n" msgstr "plik źródłowy `%s' jest pusty.\n" -#: debug.c:474 +#: debug.c:480 msgid "no current source file." msgstr "brak aktualnego pliku źródłowego." -#: debug.c:499 +#: debug.c:505 #, c-format msgid "cannot find source file named `%s' (%s)" msgstr "nie można znaleźć pliku źródłowego `%s' (%s)" -#: debug.c:523 +#: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "UWAGA: plik źródłowy `%s' uległ zmianie od kompilacji programu.\n" -#: debug.c:542 +#: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:602 +#: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "niespodziewany koniec pliku podczas czytania `%s', linia %d" -#: debug.c:611 +#: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "plik źródłowy `%s' uległ zmianie od rozpoczęcia działania programu" -#: debug.c:723 +#: debug.c:732 #, c-format msgid "Current source file: %s\n" msgstr "Aktualny plik źródłowy: %s\n" -#: debug.c:724 +#: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "Ilość linii: %d\n" -#: debug.c:731 +#: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Plik źródłowy (linie): %s (%d)\n" -#: debug.c:745 +#: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1347,54 +1356,54 @@ msgstr "" "Numer Disp Enabled Lokacja\n" "\n" -#: debug.c:756 +#: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "" -#: debug.c:758 +#: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:760 debug.c:900 +#: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "\tkoniec warunku: %s\n" -#: debug.c:762 debug.c:902 +#: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "\tkomendy:\n" -#: debug.c:784 +#: debug.c:793 #, c-format msgid "Current frame: " msgstr "Aktualna ramka: " -#: debug.c:787 +#: debug.c:796 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:791 +#: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:839 +#: debug.c:848 msgid "No arguments.\n" msgstr "Brak argumentów.\n" -#: debug.c:840 +#: debug.c:849 msgid "No locals.\n" msgstr "" -#: debug.c:848 +#: debug.c:857 msgid "" "All defined variables:\n" "\n" @@ -1402,7 +1411,7 @@ msgstr "" "Wszystkie zdefiniowane zmienne:\n" "\n" -#: debug.c:858 +#: debug.c:867 msgid "" "All defined functions:\n" "\n" @@ -1410,13 +1419,13 @@ msgstr "" "Wszystkie zdefiniowane funkcje:\n" "\n" -#: debug.c:877 +#: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "Watch variables:\n" "\n" @@ -1424,390 +1433,390 @@ msgstr "" "Obserwowane zmienne:\n" "\n" -#: debug.c:1020 +#: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" msgstr "brak symbolu `%s' w bieżącym kontekście\n" -#: debug.c:1032 debug.c:1418 +#: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' nie jest tablicą\n" -#: debug.c:1046 +#: debug.c:1055 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = niezainicjowane pole\n" -#: debug.c:1067 +#: debug.c:1076 #, c-format msgid "array `%s' is empty\n" msgstr "tablica `%s' jest pusta\n" -#: debug.c:1110 debug.c:1162 +#: debug.c:1119 debug.c:1171 #, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "[\"%s\"] nie ma w tablicy `%s'\n" -#: debug.c:1166 +#: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' nie jest tablicą\n" -#: debug.c:1227 debug.c:4949 +#: debug.c:1236 debug.c:4964 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' nie jest zmienną skalarną" -#: debug.c:1249 debug.c:4979 +#: debug.c:1258 debug.c:4994 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "próba użycia tablicy `%s[\"%s\"]' w kontekście skalaru" -#: debug.c:1271 debug.c:4990 +#: debug.c:1280 debug.c:5005 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "próba użycia skalaru `%s[\"%s\"]' jako tablicy" -#: debug.c:1414 +#: debug.c:1423 #, c-format msgid "`%s' is a function" msgstr "`%s' jest funkcją" -#: debug.c:1456 +#: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1490 +#: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "" -#: debug.c:1493 +#: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "" -#: debug.c:1519 +#: debug.c:1528 #, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "%d: [\"%s\"] nie ma w tablicy `%s'\n" -#: debug.c:1758 +#: debug.c:1767 msgid "attempt to use scalar value as array" msgstr "próba użycia wartości skalarnej jako tablicy" -#: debug.c:1847 +#: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1858 +#: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1891 +#: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr " w pliku `%s', linia %d\n" -#: debug.c:1912 +#: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr " w `%s':%d" -#: debug.c:1928 debug.c:1991 +#: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "#%ld\tw " -#: debug.c:1965 +#: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2008 +#: debug.c:2017 msgid "invalid frame number" msgstr "nieprawidłowy numer ramki" -#: debug.c:2180 +#: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2187 +#: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2194 +#: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2201 +#: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2218 +#: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d ustawiony w pliku `%s', linia %d\n" -#: debug.c:2320 +#: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2349 debug.c:2472 debug.c:3330 +#: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format msgid "line number %d in file `%s' out of range" msgstr "numer linii %d w pliku `%s' jest poza zasięgiem" -#: debug.c:2353 +#: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "Nie można znaleźć reguły!!!\n" -#: debug.c:2355 +#: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2367 +#: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2383 +#: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2488 debug.c:2510 +#: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "Skasowany breakpoint %d" -#: debug.c:2494 +#: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2521 +#: debug.c:2541 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Brak breakpointa w pliku `%s', linii #%d\n" -#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680 +#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2592 +#: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "Czy skasować wszystkie breakpointy? (y lub n) " -#: debug.c:2593 debug.c:2903 debug.c:2956 +#: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "t" -#: debug.c:2642 +#: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2646 +#: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2763 +#: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2888 +#: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2902 +#: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2906 +#: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2916 +#: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2922 +#: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2930 +#: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "Uruchamianie programu: \n" -#: debug.c:2939 +#: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "" -#: debug.c:2955 +#: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:2990 +#: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:2995 +#: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "" -#: debug.c:3000 +#: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3187 +#: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3192 +#: debug.c:3212 #, c-format msgid "Run till return from " msgstr "" -#: debug.c:3235 +#: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3349 +#: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "" -#: debug.c:3357 +#: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" msgstr "nieprawidłowa linia źródłowa %d w pliku `%s'" -#: debug.c:3372 +#: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "element not in array\n" msgstr "brak elementu w tablicy\n" -#: debug.c:3404 +#: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "zmienna bez typu\n" -#: debug.c:3446 +#: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3523 +#: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3530 +#: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4165 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4166 +#: debug.c:4186 msgid "q" msgstr "q" -#: debug.c:4986 +#: debug.c:5001 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] nie ma w tablicy `%s'" -#: debug.c:5192 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "wysyłanie wyjścia na stdout\n" -#: debug.c:5232 +#: debug.c:5247 msgid "invalid number" msgstr "nieprawidłowa liczba" -#: debug.c:5366 +#: debug.c:5381 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "polecenie `%s' nie może być wywołane w tym kontekście; zignorowano" -#: debug.c:5374 +#: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" msgstr "" "instrukcja `return' nie może być wywołana w tym kontekście; zignorowano" -#: debug.c:5575 +#: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" msgstr "Brak symbolu `%s' w bieżącym kontekście" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "[ nie do pary" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "nieprawidłowa klasa znaku" -#: dfa.c:1229 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "składnia klasy znaku to [[:space:]], a nie [:space:]" -#: dfa.c:1281 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "niedokończona sekwencja ucieczki \\" -#: dfa.c:1428 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Nieprawidłowa zawartość \\{\\}" -#: dfa.c:1431 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Wyrażenie regularne jest zbyt duże" -#: dfa.c:1816 +#: dfa.c:1936 msgid "unbalanced (" msgstr "( nie do pary" -#: dfa.c:1943 +#: dfa.c:2062 msgid "no syntax specified" msgstr "nie podano składni" -#: dfa.c:1951 +#: dfa.c:2070 msgid "unbalanced )" msgstr ") nie do pary" @@ -1826,11 +1835,11 @@ msgstr "nieznany opcode %d" msgid "opcode %s not an operator or keyword" msgstr "opcode %s nie jest operatorem ani słowem kluczowym" -#: eval.c:471 +#: eval.c:472 msgid "buffer overflow in genflags2str" msgstr "przepełnienie bufora w genflags2str" -#: eval.c:674 +#: eval.c:675 #, c-format msgid "" "\n" @@ -1841,73 +1850,73 @@ msgstr "" "\t# Stos Wywoławczy Funkcji:\n" "\n" -#: eval.c:703 +#: eval.c:704 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' jest rozszerzeniem gawk" -#: eval.c:735 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' jest rozszerzeniem gawk" -#: eval.c:793 +#: eval.c:794 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "wartość BINMODE `%s' jest nieprawidłowa, przyjęto ją jako 3" -#: eval.c:884 +#: eval.c:885 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "zła specyfikacja `%sFMT' `%s'" -#: eval.c:968 +#: eval.c:969 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "wyłączenie `--lint' z powodu przypisania do `LINT'" -#: eval.c:1146 +#: eval.c:1147 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "odwołanie do niezainicjowanego argumentu `%s'" -#: eval.c:1147 +#: eval.c:1148 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "odwołanie do niezainicjowanej zmiennej `%s'" -#: eval.c:1165 +#: eval.c:1166 msgid "attempt to field reference from non-numeric value" msgstr "próba odwołania do pola poprzez nienumeryczną wartość" -#: eval.c:1167 +#: eval.c:1168 msgid "attempt to field reference from null string" msgstr "próba odwołania z zerowego łańcucha" -#: eval.c:1175 +#: eval.c:1176 #, c-format msgid "attempt to access field %ld" msgstr "próba dostępu do pola %ld" -#: eval.c:1184 +#: eval.c:1185 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "odwołanie do niezainicjowanego pola `$%ld'" -#: eval.c:1271 +#: eval.c:1272 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" "funkcja `%s' została wywołana z większą ilością argumentów niż zostało to " "zadeklarowane" -#: eval.c:1466 +#: eval.c:1473 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: niespodziewany typ `%s'" -#: eval.c:1562 +#: eval.c:1569 msgid "division by zero attempted in `/='" msgstr "próba dzielenia przez zero w `/='" -#: eval.c:1569 +#: eval.c:1576 #, c-format msgid "division by zero attempted in `%%='" msgstr "próba dzielenia przez zero w `%%='" @@ -1920,7 +1929,7 @@ msgstr "rozszerzenia nie są dozwolone w trybie piaskownicy" msgid "-l / @load are gawk extensions" msgstr "-l / @load są rozszerzeniami gawk" -#: ext.c:95 ext.c:177 +#: ext.c:95 msgid "load_ext: received NULL lib_name" msgstr "load_ext: otrzymano NULL lib_name" @@ -1951,6 +1960,10 @@ msgstr "" msgid "`extension' is a gawk extension" msgstr "`extension' jest rozszerzeniem gawk" +#: ext.c:177 +msgid "extension: received NULL lib_name" +msgstr "extension: otrzymano NULL lib_name" + #: ext.c:180 #, c-format msgid "extension: cannot open library `%s' (%s)" @@ -1972,36 +1985,36 @@ msgstr "extension: biblioteka `%s': nie można wywołać funkcji `%s' (%s)" msgid "make_builtin: missing function name" msgstr "make_builtin: brakująca nazwa funkcji" -#: ext.c:238 +#: ext.c:236 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: nie można zredefiniować funkcji `%s'" -#: ext.c:242 +#: ext.c:240 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funkcja `%s' została już zdefiniowana" -#: ext.c:246 +#: ext.c:244 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nazwa funkcji `%s' została zdefiniowana wcześniej" -#: ext.c:248 +#: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "make_builtin: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji" -#: ext.c:251 ext.c:304 +#: ext.c:249 ext.c:304 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: ujemny licznik argumentów dla funkcji `%s'" -#: ext.c:278 +#: ext.c:276 msgid "extension: missing function name" msgstr "extension: brakująca nazwa funkcji" -#: ext.c:283 +#: ext.c:279 ext.c:283 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: nieprawidłowy znak `%c' w nazwie funkcji `%s'" @@ -2026,139 +2039,143 @@ msgstr "extension: nazwa funkcji `%s' została zdefiniowana wcześniej" msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji" -#: ext.c:374 +#: ext.c:375 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funkcja `%s' zdefiniowana aby pobrać nie więcej niż %d argument(ów)" -#: ext.c:377 +#: ext.c:378 #, c-format msgid "function `%s': missing argument #%d" msgstr "funkcja `%s': brakuje #%d argumentu" -#: ext.c:394 +#: ext.c:395 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funkcja `%s': argument #%d: próba użycia skalaru jako tablicy" -#: ext.c:398 +#: ext.c:399 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funkcja `%s': argument #%d: próba użycia tablicy jako skalaru" -#: ext.c:412 +#: ext.c:413 msgid "dynamic loading of library not supported" msgstr "dynamiczne ładowanie biblioteki nie jest wspierane" -#: extension/filefuncs.c:97 +#: extension/filefuncs.c:159 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: wywołano z nieprawidłową ilością argumentów, spodziewano się 1" -#: extension/filefuncs.c:343 +#: extension/filefuncs.c:439 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: nie można odczytać dowiązania symbolicznego `%s'" -#: extension/filefuncs.c:376 +#: extension/filefuncs.c:472 msgid "stat: called with wrong number of arguments" msgstr "stat: wywołano z nieprawidłową ilością argumentów" -#: extension/filefuncs.c:383 +#: extension/filefuncs.c:479 msgid "stat: bad parameters" msgstr "stat: złe parametry" -#: extension/filefuncs.c:437 +#: extension/filefuncs.c:533 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: nie można utworzyć zmiennej %s" -#: extension/filefuncs.c:460 +#: extension/filefuncs.c:554 +msgid "fts is not supported on this system" +msgstr "funkcja fts nie jest wspierana w tym systemie" + +#: extension/filefuncs.c:573 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: nie można utworzyć tablicy" -#: extension/filefuncs.c:469 +#: extension/filefuncs.c:582 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: nie można ustawić elementu" -#: extension/filefuncs.c:484 +#: extension/filefuncs.c:597 msgid "fill_path_element: could not set element" msgstr "fill_path_element: nie można ustawić elementu" -#: extension/filefuncs.c:500 +#: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" msgstr "fill_error_element: nie można ustawić elementu" -#: extension/filefuncs.c:547 extension/filefuncs.c:594 +#: extension/filefuncs.c:660 extension/filefuncs.c:707 msgid "fts-process: could not create array" msgstr "fts-process: nie można utworzyć tablicy" -#: extension/filefuncs.c:557 extension/filefuncs.c:604 -#: extension/filefuncs.c:622 +#: extension/filefuncs.c:670 extension/filefuncs.c:717 +#: extension/filefuncs.c:735 msgid "fts-process: could not set element" msgstr "fts-process: nie można ustawić elementu" -#: extension/filefuncs.c:671 +#: extension/filefuncs.c:784 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: wywołano z nieprawidłową ilością argumentów, powinny być 3" -#: extension/filefuncs.c:674 +#: extension/filefuncs.c:787 msgid "fts: bad first parameter" msgstr "fts: nieprawidłowy pierwszy parametr" -#: extension/filefuncs.c:680 +#: extension/filefuncs.c:793 msgid "fts: bad second parameter" msgstr "fts: nieprawidłowy drugi parametr" -#: extension/filefuncs.c:686 +#: extension/filefuncs.c:799 msgid "fts: bad third parameter" msgstr "fts: nieprawidłowy trzeci parametr" -#: extension/filefuncs.c:693 +#: extension/filefuncs.c:806 msgid "fts: could not flatten array\n" msgstr "fts: nie można spłaszczyć tablicy\n" -#: extension/filefuncs.c:711 +#: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: zignorowano flagę FTS_NOSTAT. nyah, nyah, nyah." -#: extension/filefuncs.c:728 +#: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() nie powiodła się\n" -#: extension/fnmatch.c:98 +#: extension/fnmatch.c:112 msgid "fnmatch: called with less than three arguments" msgstr "fnmatch: wywołano z mniej niż trzema argumentami" -#: extension/fnmatch.c:101 +#: extension/fnmatch.c:115 msgid "fnmatch: called with more than three arguments" msgstr "fnmatch: wywołano z więcej niż trzema argumentami" -#: extension/fnmatch.c:104 +#: extension/fnmatch.c:118 msgid "fnmatch: could not get first argument" msgstr "fnmatch: nie można pobrać pierwszego argumentu" -#: extension/fnmatch.c:109 +#: extension/fnmatch.c:123 msgid "fnmatch: could not get second argument" msgstr "fnmatch: nie można pobrać drugiego argumentu" -#: extension/fnmatch.c:114 +#: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "fnmatch: nie można pobrać trzeciego argumentu" -#: extension/fnmatch.c:127 +#: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "funkcja fnmatch nie została zaimplementowana w tym systemie\n" -#: extension/fnmatch.c:159 +#: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "fnmatch init: nie można było dodać zmiennej FNM_NOMATCH" -#: extension/fnmatch.c:169 +#: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "fnmatch init: nie można było ustawić elementu tablicy %s" -#: extension/fnmatch.c:179 +#: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "fnmatch init: nie można było zainstalować tablicy FNM" @@ -2182,90 +2199,90 @@ msgstr "wait: wywołano bez argumentów" msgid "wait: called with too many arguments" msgstr "wait: wywołana ze zbyt dużą ilością argumentów" -#: extension/inplace.c:110 +#: extension/inplace.c:130 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: edycja w miejscu jest już aktywna" -#: extension/inplace.c:113 extension/inplace.c:187 +#: extension/inplace.c:133 extension/inplace.c:207 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: spodziewano się 2 argumentów, a otrzymano %d" -#: extension/inplace.c:116 +#: extension/inplace.c:136 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: nie można pobrać pierwszego argumentu jako nazwy pliku" -#: extension/inplace.c:124 +#: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: wyłączenie edycji w miejscu dla nieprawidłowej nazwy pliku `" "%s'" -#: extension/inplace.c:131 +#: extension/inplace.c:151 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: nie można sprawdzić `%s' (%s)" -#: extension/inplace.c:138 +#: extension/inplace.c:158 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' nie jest zwykłym plikiem" -#: extension/inplace.c:149 +#: extension/inplace.c:169 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: wywołanie mkstemp(`%s') nie powiodło się (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:178 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: funkcja chmod nie powiodła się (%s)" -#: extension/inplace.c:165 +#: extension/inplace.c:185 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: wywołanie dup(stdout) nie powiodło się (%s)" -#: extension/inplace.c:168 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: wywołanie dup2(%d, stdout) nie powiodło się (%s)" -#: extension/inplace.c:171 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: wywołanie close(%d) nie powiodło się (%s)" -#: extension/inplace.c:190 +#: extension/inplace.c:210 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: nie można pobrać pierwszego argumentu jako nazwy pliku" -#: extension/inplace.c:197 +#: extension/inplace.c:217 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: edycja w miejscu nie jest aktywna" -#: extension/inplace.c:203 +#: extension/inplace.c:223 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: wywołanie dup2(%d, stdout) nie powiodło się (%s)" -#: extension/inplace.c:206 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: wywołanie close(%d) nie powiodło się (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: wywołanie fsetpos(stdout) nie powiodło się (%s)" -#: extension/inplace.c:223 +#: extension/inplace.c:243 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: wywołanie link(`%s', `%s') nie powiodło się (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:253 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: wywołanie rename(`%s', `%s') nie powiodło się (%s)" @@ -2294,173 +2311,173 @@ msgstr "chr: wywołano bez argumentów" msgid "chr: called with inappropriate argument(s)" msgstr "chr: wywołano z nieprawidłowymi argumentami" -#: extension/readdir.c:203 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: wywołanie opendir/fdopendir nie powiodło się: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: wywołana ze zbyt dużą ilością argumentów" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: wywołano bez argumentów" -#: extension/rwarray.c:120 +#: extension/rwarray.c:124 msgid "writea: called with too many arguments" msgstr "writea: wywołana ze zbyt dużą ilością argumentów" -#: extension/rwarray.c:127 +#: extension/rwarray.c:131 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:133 +#: extension/rwarray.c:137 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 nie jest tablicą\n" -#: extension/rwarray.c:180 +#: extension/rwarray.c:184 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: nie można spłaszczyć tablicy\n" -#: extension/rwarray.c:194 +#: extension/rwarray.c:198 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: nie można było zwolnić spłaszczonej tablicy\n" -#: extension/rwarray.c:276 +#: extension/rwarray.c:280 msgid "reada: called with too many arguments" msgstr "reada: wywołana ze zbyt dużą ilością argumentów" -#: extension/rwarray.c:283 +#: extension/rwarray.c:287 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:289 +#: extension/rwarray.c:293 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 nie jest tablicą\n" -#: extension/rwarray.c:333 +#: extension/rwarray.c:337 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array nie powiodła się\n" -#: extension/rwarray.c:370 +#: extension/rwarray.c:374 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element nie powiodła się\n" -#: extension/time.c:81 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: zignorowano argumenty" -#: extension/time.c:112 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: funkcja nie jest wspierana na tej platformie" -#: extension/time.c:133 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: wywołana ze zbyt dużą ilością argumentów" -#: extension/time.c:136 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: brakuje wymaganego argumentu numerycznego" -#: extension/time.c:142 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: argument jest ujemny" -#: extension/time.c:176 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: funkcja nie jest wspierana na tej platformie" -#: field.c:339 +#: field.c:345 msgid "NF set to negative value" msgstr "NF ustawiony na wartość ujemną" -#: field.c:964 field.c:971 field.c:975 +#: field.c:971 field.c:978 field.c:982 msgid "split: fourth argument is a gawk extension" msgstr "split: czwarty argument jest rozszerzeniem gawk" -#: field.c:968 +#: field.c:975 msgid "split: fourth argument is not an array" msgstr "split: czwarty argument nie jest tablicą" -#: field.c:982 +#: field.c:989 msgid "split: second argument is not an array" msgstr "split: drugi argument nie jest tablicą" -#: field.c:986 +#: field.c:993 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu" -#: field.c:991 +#: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: nie można użyć podtablicy drugiego argumentu dla czwartego argumentu" -#: field.c:994 +#: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: nie można użyć podtablicy czwartego argumentu dla drugiego argumentu" -#: field.c:1023 +#: field.c:1032 msgid "split: null string for third arg is a gawk extension" msgstr "split: zerowy łańcuch dla trzeciego argumentu jest rozszerzeniem gawk" -#: field.c:1063 +#: field.c:1072 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: czwarty argument nie jest tablicą" -#: field.c:1068 +#: field.c:1077 msgid "patsplit: second argument is not an array" msgstr "patsplit: drugi argument nie jest tablicą" -#: field.c:1074 +#: field.c:1083 msgid "patsplit: third argument must be non-null" msgstr "patsplit: trzeci argument nie może być pusty" -#: field.c:1078 +#: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu" -#: field.c:1083 +#: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: nie można użyć podtablicy drugiego argumentu dla czwartego " "argumentu" -#: field.c:1086 +#: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: nie można użyć podtablicy czwartego argumentu dla drugiego " "argumentu" -#: field.c:1124 +#: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk" -#: field.c:1188 +#: field.c:1197 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "nieprawidłowa wartość FIELDWIDTHS, w pobliżu `%s'" -#: field.c:1261 +#: field.c:1270 msgid "null string for `FS' is a gawk extension" msgstr "zerowy łańcuch dla `FS' jest rozszerzeniem gawk" -#: field.c:1265 +#: field.c:1274 msgid "old awk does not support regexps as value of `FS'" msgstr "stary awk nie wspiera wyrażeń regularnych jako wartości `FS'" -#: field.c:1384 +#: field.c:1393 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' jest rozszerzeniem gawk" @@ -2476,391 +2493,391 @@ msgstr "node_to_awk_value: otrzymano null node" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: otrzymano null val" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element: otrzymano tablicę null" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element: otrzymano null subscript" -#: gawkapi.c:943 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: nie można było skonwertować indeksu %d\n" -#: gawkapi.c:948 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: nie można było skonwertować wartości %d\n" -#: getopt.c:603 getopt.c:632 +#: getopt.c:604 getopt.c:633 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opcja '%s' jest niejednoznaczna; możliwości:" -#: getopt.c:678 getopt.c:682 +#: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcja '--%s' nie może mieć argumentów\n" -#: getopt.c:691 getopt.c:696 +#: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" -#: getopt.c:739 getopt.c:758 +#: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: opcja '--%s' wymaga argumentu\n" -#: getopt.c:796 getopt.c:799 +#: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nieznana opcja '--%s'\n" -#: getopt.c:807 getopt.c:810 +#: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nieznana opcja '%c%s'\n" -#: getopt.c:859 getopt.c:862 +#: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: błędna opcja -- '%c'\n" -#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160 +#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: opcja wymaga argumentu -- '%c'\n" -#: getopt.c:988 getopt.c:1004 +#: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" -#: getopt.c:1028 getopt.c:1046 +#: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" -#: getopt.c:1067 getopt.c:1085 +#: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opcja '-W %s' wymaga argumentu\n" -#: io.c:347 +#: io.c:392 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "argument linii poleceń `%s' jest katalogiem: pominięto" -#: io.c:350 io.c:463 +#: io.c:395 io.c:513 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "nie można otworzyć pliku `%s' do czytania (%s)" -#: io.c:590 +#: io.c:640 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "zamknięcie fd %d (`%s') nie powiodło się (%s)" -#: io.c:666 +#: io.c:716 msgid "redirection not allowed in sandbox mode" msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy" -#: io.c:700 +#: io.c:750 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numeryczną" -#: io.c:706 +#: io.c:756 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "wyrażenie dla przekierowania `%s' ma zerową wartość łańcucha" -#: io.c:711 +#: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "nazwa pliku `%s' dla przekierowania `%s' może być rezultatem logicznego " "wyrażenia" -#: io.c:754 +#: io.c:809 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'" -#: io.c:808 +#: io.c:863 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "nie można otworzyć potoku `%s' jako wyjścia (%s)" -#: io.c:818 +#: io.c:873 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "nie można otworzyć potoku `%s' jako wejścia (%s)" -#: io.c:849 +#: io.c:904 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" "nie można otworzyć dwukierunkowego potoku `%s' jako wejścia/wyjścia (%s)" -#: io.c:928 +#: io.c:986 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "nie można przekierować z `%s' (%s)" -#: io.c:931 +#: io.c:989 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "nie można przekierować do `%s' (%s)" -#: io.c:982 +#: io.c:1040 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "osiągnięto systemowy limit otwartych plików: rozpoczęcie multipleksowania " "deskryptorów plików" -#: io.c:998 +#: io.c:1056 #, c-format msgid "close of `%s' failed (%s)." msgstr "zamknięcie `%s' nie powiodło się (%s)." -#: io.c:1006 +#: io.c:1064 msgid "too many pipes or input files open" msgstr "zbyt dużo otwartych potoków lub plików wejściowych" -#: io.c:1028 +#: io.c:1086 msgid "close: second argument must be `to' or `from'" msgstr "close: drugim argumentem musi być `to' lub `from'" -#: io.c:1045 +#: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" "close: `%.*s' nie jest ani otwartym plikiem, ani potokiem, ani procesem" -#: io.c:1050 +#: io.c:1108 msgid "close of redirection that was never opened" msgstr "zamknięcie przekierowania, które nigdy nie zostało otwarte" -#: io.c:1147 +#: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: przekierowanie `%s' nie zostało otwarte z `|&', drugi argument " "zignorowany" -#: io.c:1164 +#: io.c:1222 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)" -#: io.c:1167 +#: io.c:1225 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)" -#: io.c:1187 +#: io.c:1245 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "brak jawnego zamknięcia gniazdka `%s'" -#: io.c:1190 +#: io.c:1248 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "brak jawnego zamknięcia procesu pomocniczego `%s'" -#: io.c:1193 +#: io.c:1251 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "brak jawnego zamknięcia potoku `%s'" -#: io.c:1196 +#: io.c:1254 #, c-format msgid "no explicit close of file `%s' provided" msgstr "brak jawnego zamknięcia pliku `%s'" -#: io.c:1224 io.c:1279 main.c:842 main.c:879 +#: io.c:1284 io.c:1342 main.c:864 main.c:906 #, c-format msgid "error writing standard output (%s)" msgstr "błąd podczas zapisu na standardowe wyjście (%s)" -#: io.c:1228 io.c:1284 +#: io.c:1289 io.c:1348 main.c:866 #, c-format msgid "error writing standard error (%s)" msgstr "błąd podczas zapisu na standardowe wyjście diagnostyczne (%s)" -#: io.c:1236 +#: io.c:1297 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "opróżnienie potoku `%s' nie powiodło się (%s)." -#: io.c:1239 +#: io.c:1300 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" "opróżnienie potoku do `%s' przez proces pomocniczy nie powiodło się (%s)." -#: io.c:1242 +#: io.c:1303 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "opróżnienie pliku `%s' nie powiodło się (%s)." -#: io.c:1356 +#: io.c:1420 #, c-format msgid "local port %s invalid in `/inet'" msgstr "nieprawidłowy lokalny port %s w `/inet'" -#: io.c:1374 +#: io.c:1438 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informacje o zdalnym hoście i porcie są nieprawidłowe (%s, %s)" -#: io.c:1526 +#: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "nie dostarczono (znanego) protokołu w specjalnym pliku `%s'" -#: io.c:1540 +#: io.c:1604 #, c-format msgid "special file name `%s' is incomplete" msgstr "specjalna nazwa pliku `%s' jest niekompletna" -#: io.c:1557 +#: io.c:1621 msgid "must supply a remote hostname to `/inet'" msgstr "należy dostarczyć nazwę zdalnego hosta do `/inet'" -#: io.c:1575 +#: io.c:1639 msgid "must supply a remote port to `/inet'" msgstr "należy dostarczyć numer zdalnego portu do `/inet'" -#: io.c:1621 +#: io.c:1685 msgid "TCP/IP communications are not supported" msgstr "Komunikacja TCP/IP nie jest wspierana" -#: io.c:1796 +#: io.c:1867 #, c-format msgid "could not open `%s', mode `%s'" msgstr "nie można otworzyć `%s', tryb `%s'" -#: io.c:1846 +#: io.c:1917 #, c-format msgid "close of master pty failed (%s)" msgstr "zamknięcie nadrzędnego pty nie powiodło się (%s)" -#: io.c:1848 io.c:2024 io.c:2194 +#: io.c:1919 io.c:2105 io.c:2305 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" "zamknięcie standardowego wyjścia w procesie potomnym nie powiodło się (%s)" -#: io.c:1851 +#: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "przesunięcie podległego pty na standardowe wyjście w procesie potomnym nie " "powiodło się (dup: %s)" -#: io.c:1853 io.c:2029 +#: io.c:1924 io.c:2110 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" "zamknięcie standardowego wejścia w procesie potomnym nie powiodło się (%s)" -#: io.c:1856 +#: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "przesunięcie podległego pty na standardowe wejście w procesie potomnym nie " "powiodło się (dup: %s)" -#: io.c:1858 io.c:1879 +#: io.c:1929 io.c:1951 #, c-format msgid "close of slave pty failed (%s)" msgstr "zamknięcie podległego pty nie powiodło się (%s)" -#: io.c:1965 io.c:2027 io.c:2171 io.c:2197 +#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "przesunięcie potoku na standardowe wyjście w procesie potomnym nie powiodło " "się (dup: %s)" -#: io.c:1972 io.c:2032 +#: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "przesunięcie potoku na standardowe wejście w procesie potomnym nie powiodło " "się (dup: %s)" -#: io.c:1992 io.c:2187 +#: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" msgstr "" "odzyskanie standardowego wyjścia w procesie potomnym nie powiodło się\n" -#: io.c:2000 +#: io.c:2081 msgid "restoring stdin in parent process failed\n" msgstr "" "odzyskanie standardowego wejścia w procesie potomnym nie powiodło się\n" -#: io.c:2035 io.c:2199 io.c:2213 +#: io.c:2116 io.c:2310 io.c:2324 #, c-format msgid "close of pipe failed (%s)" msgstr "zamknięcie potoku nie powiodło się (%s)" -#: io.c:2089 +#: io.c:2174 msgid "`|&' not supported" msgstr "`|&' nie jest wspierany" -#: io.c:2156 +#: io.c:2261 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "nie można otworzyć potoku `%s' (%s)" -#: io.c:2207 +#: io.c:2318 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2667 +#: io.c:2790 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: otrzymano wskaźnik NULL" -#: io.c:2695 +#: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "parser wejścia `%s' konfliktuje z poprzednio zainstalowanym parserem `%s'" -#: io.c:2702 +#: io.c:2825 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "parser wejścia `%s': nie powiodło się otwarcie `%s'" -#: io.c:2722 +#: io.c:2845 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: otrzymano wskaźnik NULL" -#: io.c:2750 +#: io.c:2873 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "otoczka wyjścia `%s' konfliktuje z poprzednio zainstalowaną otoczką `%s'" -#: io.c:2757 +#: io.c:2880 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "otoczka wyjścia `%s': nie powiodło się otwarcie `%s'" -#: io.c:2778 +#: io.c:2901 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: otrzymano wskaźnik NULL" -#: io.c:2807 +#: io.c:2930 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2869,212 +2886,212 @@ msgstr "" "dwukierunkowy procesor `%s' konfliktuje z poprzednio zainstalowanym " "procesorem `%s'" -#: io.c:2816 +#: io.c:2939 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "dwukierunkowy procesor `%s' zawiódł w otwarciu `%s'" -#: io.c:2923 +#: io.c:3064 #, c-format msgid "data file `%s' is empty" msgstr "plik danych `%s' jest pusty" -#: io.c:2965 io.c:2973 +#: io.c:3106 io.c:3114 msgid "could not allocate more input memory" msgstr "nie można zarezerwować więcej pamięci wejściowej" -#: io.c:3539 +#: io.c:3682 msgid "multicharacter value of `RS' is a gawk extension" msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk" -#: io.c:3628 +#: io.c:3771 msgid "IPv6 communication is not supported" msgstr "Komunikacja IPv6 nie jest wspierana" -#: main.c:388 +#: main.c:405 msgid "empty argument to `-e/--source' ignored" msgstr "pusty argument dla opcji `-e/--source' został zignorowany" -#: main.c:478 +#: main.c:495 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n" -#: main.c:524 +#: main.c:541 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja musi mieć argument -- %c\n" -#: main.c:545 +#: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "zmienna środowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' został włączony" -#: main.c:551 +#: main.c:568 msgid "`--posix' overrides `--traditional'" msgstr "opcja `--posix' zostanie użyta nad `--traditional'" -#: main.c:562 +#: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' użyte nad opcją `--non-decimal-data'" -#: main.c:566 +#: main.c:583 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "uruchamianie %s setuid root może być problemem pod względem bezpieczeństwa" -#: main.c:571 +#: main.c:588 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "opcja `--posix' zostanie użyta nad `--characters-as-bytes'" -#: main.c:630 +#: main.c:647 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "nie można ustawić trybu binarnego na standardowym wejściu (%s)" -#: main.c:633 +#: main.c:650 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "nie można ustawić trybu binarnego na standardowym wyjściu (%s)" -#: main.c:635 +#: main.c:652 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "nie można ustawić trybu binarnego na wyjściu diagnostycznym (%s)" -#: main.c:693 +#: main.c:710 msgid "no program text at all!" msgstr "brak tekstu programu!" -#: main.c:779 +#: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Użycie: %s [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...\n" -#: main.c:781 +#: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Użycie: %s [styl opcji POSIX lub GNU] [--] %cprogram%c plik ...\n" -#: main.c:786 +#: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcje POSIX:\t\tDługie opcje GNU (standard):\n" -#: main.c:787 +#: main.c:807 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f program\t\t--file=program\n" -#: main.c:788 +#: main.c:808 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:789 +#: main.c:809 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n" -#: main.c:790 +#: main.c:810 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Krótkie opcje:\t\tDługie opcje GNU: (rozszerzenia)\n" -#: main.c:791 +#: main.c:811 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:792 +#: main.c:812 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:793 +#: main.c:813 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:794 +#: main.c:814 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n" -#: main.c:795 +#: main.c:815 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[plik]\t\t--debug[=plik]\n" -#: main.c:796 +#: main.c:816 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n" -#: main.c:797 +#: main.c:817 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E plik\t\t\t--exec=plik\n" -#: main.c:798 +#: main.c:818 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:799 +#: main.c:819 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:800 +#: main.c:820 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i plikinclude\t\t--include=plikinclude\n" -#: main.c:801 +#: main.c:821 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteka\t\t--load=biblioteka\n" -#: main.c:802 +#: main.c:822 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:803 +#: main.c:823 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:804 +#: main.c:824 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:805 +#: main.c:825 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:806 +#: main.c:826 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[plik]\t\t--pretty-print[=plik]\n" -#: main.c:807 +#: main.c:827 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:808 +#: main.c:828 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[plik]\t\t--profile[=plik]\n" -#: main.c:809 +#: main.c:829 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:810 +#: main.c:830 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:811 +#: main.c:831 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:812 +#: main.c:832 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:813 +#: main.c:833 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:815 +#: main.c:835 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:818 +#: main.c:838 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3083,7 +3100,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:827 +#: main.c:847 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3096,7 +3113,7 @@ msgstr "" "dokumentacji.\n" "\n" -#: main.c:831 +#: main.c:851 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3106,7 +3123,7 @@ msgstr "" "Program domyślnie czyta standardowe wejście i zapisuje standardowe wyjście.\n" "\n" -#: main.c:835 +#: main.c:855 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3116,7 +3133,7 @@ msgstr "" "\tgawk '{ suma += $1 }; END { print suma }' plik\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:855 +#: main.c:880 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3135,7 +3152,7 @@ msgstr "" "tej Licencji lub którejś z późniejszych wersji.\n" "\n" -#: main.c:863 +#: main.c:888 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3150,7 +3167,7 @@ msgstr "" "Powszechną Licencję Publiczną GNU.\n" "\n" -#: main.c:869 +#: main.c:894 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3159,16 +3176,16 @@ msgstr "" "Powszechnej Licencji Publicznej GNU (GNU General Public License);\n" "jeśli zaś nie - odwiedź stronę http://www.gnu.org/licenses/.\n" -#: main.c:904 +#: main.c:931 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk" -#: main.c:1181 +#: main.c:1208 #, c-format msgid "unknown value for field spec: %d\n" msgstr "nieznana wartość dla specyfikacji pola: %d\n" -#: main.c:1279 +#: main.c:1306 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3177,48 +3194,48 @@ msgstr "" "%s: argument `%s' dla `-v' nie jest zgodny ze składnią `zmienna=wartość'\n" "\n" -#: main.c:1305 +#: main.c:1332 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' nie jest dozwoloną nazwą zmiennej" -#: main.c:1308 +#: main.c:1335 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' nie jest nazwą zmiennej, szukanie pliku `%s=%s'" -#: main.c:1312 +#: main.c:1339 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nie można użyć wbudowanej w gawk `%s' jako nazwy zmiennej" -#: main.c:1317 +#: main.c:1344 #, c-format msgid "cannot use function `%s' as variable name" msgstr "nie można użyć funkcji `%s' jako nazwy zmiennej" -#: main.c:1370 +#: main.c:1397 msgid "floating point exception" msgstr "wyjątek zmiennopozycyjny" -#: main.c:1377 +#: main.c:1404 msgid "fatal error: internal error" msgstr "fatalny błąd: wewnętrzny błąd" -#: main.c:1392 +#: main.c:1419 msgid "fatal error: internal error: segfault" msgstr "fatalny błąd: wewnętrzny błąd: błąd segmentacji" -#: main.c:1404 +#: main.c:1431 msgid "fatal error: internal error: stack overflow" msgstr "fatalny błąd: wewnętrzny błąd: przepełnienie stosu" -#: main.c:1463 +#: main.c:1490 #, c-format msgid "no pre-opened fd %d" msgstr "brak już otwartego fd %d" -#: main.c:1470 +#: main.c:1497 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "nie można otworzyć zawczasu /dev/null dla fd %d" @@ -3273,7 +3290,7 @@ msgstr "%s: argument #%d ułamkowa wartość %Rg zostanie obcięta" msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" -#: msg.c:61 +#: msg.c:68 #, c-format msgid "cmd. line:" msgstr "linia poleceń:" @@ -3327,16 +3344,16 @@ msgstr "%s %s `%s': nie można uzyskać flag fd: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': nie można ustawić close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:70 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "nie można otworzyć `%s' do zapisu: %s" -#: profile.c:72 +#: profile.c:73 msgid "sending profile to standard error" msgstr "wysyłanie profilu na standardowe wyjście diagnostyczne" -#: profile.c:188 +#: profile.c:193 #, c-format msgid "" "\t# %s block(s)\n" @@ -3345,7 +3362,7 @@ msgstr "" "\t# %s blok(i)\n" "\n" -#: profile.c:193 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3354,16 +3371,16 @@ msgstr "" "\t# Reguła(i)\n" "\n" -#: profile.c:267 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "wewnętrzny błąd: %s z zerowym vname" -#: profile.c:530 +#: profile.c:537 msgid "internal error: builtin with null fname" msgstr "wewnętrzny błąd: builtin z fname null" -#: profile.c:942 +#: profile.c:949 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3372,12 +3389,12 @@ msgstr "" "\t# Załadowane rozszerzenia (-l i/lub @load)\n" "\n" -#: profile.c:965 +#: profile.c:972 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil programu gawk, utworzony %s\n" -#: profile.c:1351 +#: profile.c:1475 #, c-format msgid "" "\n" @@ -3386,17 +3403,12 @@ msgstr "" "\n" "\t# Funkcje, spis alfabetyczny\n" -#: profile.c:1389 +#: profile.c:1513 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: nieznany typ przekierowania %d" -#: re.c:583 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependent" -msgstr "zasięg formy `[%c-%c]' jest zależny od lokalizacji" - -#: re.c:610 +#: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "komponent regexp `%.*s' powinien być prawdopodobnie `[%.*s]'" @@ -3465,10 +3477,13 @@ msgstr "Niedopasowany znak ) lub \\)" msgid "No previous regular expression" msgstr "Brak poprzedniego wyrażenia regularnego" -#: symbol.c:740 +#: symbol.c:741 msgid "can not pop main context" msgstr "nie można zdjąć głównego kontekstu" +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "zasięg formy `[%c-%c]' jest zależny od lokalizacji" + #~ msgid "attempt to use function `%s' as an array" #~ msgstr "próba użycia funkcji `%s' jako tablicy" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-01-21 17:40+0100\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" @@ -38,8 +38,8 @@ msgstr "försök att använda skalärparametern ”%s” som en vektor" msgid "attempt to use scalar `%s' as an array" msgstr "försök att använda skalären ”%s” som en vektor" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -77,19 +77,27 @@ msgstr "asorti: första argumentet är inte en vektor" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" -msgstr "asort: det går inte att använda en delvektor av första argumentet som andra argument" +msgstr "" +"asort: det går inte att använda en delvektor av första argumentet som andra " +"argument" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" -msgstr "asorti: det går inte att använda en delvektor av första argumentet som andra argument" +msgstr "" +"asorti: det går inte att använda en delvektor av första argumentet som andra " +"argument" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" -msgstr "asort: det går inte att använda en delvektor av andra argumentet som första argument" +msgstr "" +"asort: det går inte att använda en delvektor av andra argumentet som första " +"argument" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" -msgstr "asorti: det går inte att använda en delvektor av andra argumentet som första argument" +msgstr "" +"asorti: det går inte att använda en delvektor av andra argumentet som första " +"argument" #: array.c:1314 #, c-format @@ -137,11 +145,11 @@ msgstr "upprepade case-värden i switch-sats: %s" msgid "duplicate `default' detected in switch body" msgstr "flera \"default\" upptäcktes i switch-sats" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" msgstr "\"break\" är inte tillåtet utanför en slinga eller switch" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" är inte tillåtet utanför en slinga" @@ -161,7 +169,8 @@ msgstr "\"return\" använd utanför funktion" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "ensamt \"print\" i BEGIN eller END-regel bör troligen vara 'print \"\"'" +msgstr "" +"ensamt \"print\" i BEGIN eller END-regel bör troligen vara 'print \"\"'" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" @@ -224,268 +233,279 @@ msgstr "indirekta funktionsanrop är en gawk-utökning" #: awkgram.y:1620 #, c-format msgid "can not use special variable `%s' for indirect function call" -msgstr "det går inte att använda specialvariabeln \"%s\" för indirekta fuktionsanrop" +msgstr "" +"det går inte att använda specialvariabeln \"%s\" för indirekta fuktionsanrop" #: awkgram.y:1698 msgid "invalid subscript expression" msgstr "ogiltig indexuttryck" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "varning: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "ödesdigert: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "oväntat nyradstecken eller slut på strängen" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan inte öppna källfilen \"%s\" för läsning (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan inte öppna det delade biblioteket ”%s” för läsning (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "okänd anledning" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kan inte inkludera ”%s” och använda den som en programfil" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "inkluderade redan källfilen \"%s\"" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "inkluderade redan det delade biblioteket ”%s”" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include är en gawk-utökning" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "tomt filnamn efter @include" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load är en gawk-utökning" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "tomt filnamn efter @load" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "tom programtext på kommandoraden" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan inte läsa källfilen \"%s\" (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "källfilen \"%s\" är tom" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "källfilen slutar inte med en ny rad" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "%s: %d: tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk" +msgstr "" +"%s: %d: tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i " +"gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk" +msgstr "" +"tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "oavslutat reguljärt uttryck" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "oavslutat reguljärt uttryck i slutet av filen" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "sista tecknet på raden är inte ett omvänt snedstreck" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillåter inte operatorn \"**=\"" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "gamla awk stöder inte operatorn \"**=\"" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillåter inte operatorn \"**\"" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "operatorn \"^=\" stöds inte i gamla awk" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "operatorn \"^\" stöds inte i gamla awk" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "oavslutad sträng" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "ogiltigt tecken \"%c\" i uttryck" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" är en gawk-utökning" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillåter inte \"%s\"" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "\"%s\" stöds inte i gamla awk" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "\"goto\" anses skadlig!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d är ett ogiltigt antal argument för %s" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" -msgstr "%s: bokstavlig sträng som sista argument till ersättning har ingen effekt" +msgstr "" +"%s: bokstavlig sträng som sista argument till ersättning har ingen effekt" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argumentet är inte ett ändringsbart objekt" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: tredje argumentet är en gawk-utökning" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: andra argumentet är en gawk-utökning" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" -msgstr "användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande understrykningstecknet" +msgstr "" +"användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande " +"understrykningstecknet" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" -msgstr "användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande understrykningstecknet" +msgstr "" +"användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande " +"understrykningstecknet" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" msgstr "index: reguljäruttryck som andra argumentet är inte tillåtet" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunde inte öppna \"%s\" för skrivning (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "skickar variabellista till standard fel" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: misslyckades att stänga (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() anropad två gånger!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "det fanns överskuggade variabler." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen \"%s\": kan inte använda funktionsnamn som parameternamn" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "funktionen \"%s\": det går inte att använda specialvariabeln \"%s\" som en funktionsparameter" +msgstr "" +"funktionen \"%s\": det går inte att använda specialvariabeln \"%s\" som en " +"funktionsparameter" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen \"%s\" anropad men aldrig definierad" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen \"%s\" definierad men aldrig anropad direkt" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant reguljärt uttryck för parameter %d ger ett booleskt värde" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -494,20 +514,23 @@ msgstr "" "funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n" "eller använd som variabel eller vektor" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "försökte dividera med noll" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "försökte dividera med noll i \"%%\"" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" -msgstr "kan inte tilldela ett värde till uttryck som är en efterinkrementering av ett fält" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" +"kan inte tilldela ett värde till uttryck som är en efterinkrementering av " +"ett fält" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ogiltigt mål för tilldelning (op-kod %s)" @@ -533,12 +556,14 @@ msgstr "exp: argumentet %g är inte inom tillåten gräns" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush: kan inte spola: röret \"%s\" öppnat för läsning, inte skrivning" +msgstr "" +"fflush: kan inte spola: röret \"%s\" öppnat för läsning, inte skrivning" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush: kan inte spola: filen \"%s\" öppnad för läsning, inte skrivning" +msgstr "" +"fflush: kan inte spola: filen \"%s\" öppnad för läsning, inte skrivning" #: builtin.c:244 #, c-format @@ -616,299 +641,305 @@ msgstr "ödesdigert: \"$\" tillåts inte efter en punkt i formatet" #: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller precision" +msgstr "" +"ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller " +"precision" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "\"l\" är meningslös i awk-format, ignorerad" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"l\" tillåts inte i POSIX awk-format" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "\"L\" är meningslös i awk-format, ignorerad" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"L\" tillåts inte i POSIX awk-format" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "\"h\" är meningslös i awk-format, ignorerad" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"h\" tillåts inte i POSIX awk-format" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" -msgstr "ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat" +msgstr "" +"ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "ödesdigert: för få argument för formatsträngen" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "^ tog slut här" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifieraren har ingen kommandobokstav" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "för många argument för formatsträngen" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: inga argument" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: inga argument" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fick ickenumeriskt argument" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: anropad med negativt argument %g" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: längden %g är inte >= 1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: längden %g är inte >= 0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: längden %g som inte är ett heltal kommer huggas av" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: längden %g är för stor för strängindexering, huggas av till %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g är ogiltigt, använder 1" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g som inte är ett heltal kommer huggas av" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: källsträngen är tom" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g är bortom strängens slut" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: längden %g vid startindex %g överskrider det första argumentets längd (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: längden %g vid startindex %g överskrider det första argumentets " +"längd (%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: fick ett ickenumeriskt andra argument" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andra argimentet mindre än 0 eller för stort för time_t" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: fick ett första argument som inte är en sträng" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: fick en tom formatsträng" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: fick ett argument som inte är en sträng" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: åtminstone ett av värdena är utanför standardintervallet" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "funktionen \"system\" är inte tillåten i sandlådeläge" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: fick ett argument som inte är en sträng" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referens till icke initierat fält \"$%d\"" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: fick ett argument som inte är en sträng" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: fick ett argument som inte är en sträng" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: fick ett ickenumeriskt första argument" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: fick ett ickenumeriskt andra argument" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: fick ett ickenumeriskt argument" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: fick ett ickenumeriskt argument" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: fick ett ickenumeriskt argument" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: tredje argumentet är inte en vektor" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: nollan i tredje argumentet behandlad som en etta" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: fick ett ickenumeriskt första argument" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negativa värden kommer ge konstiga resultat" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): för stort skiftvärde kommer ge konstiga resultat" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: fick ett ickenumeriskt första argument" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negativa värden kommer ge konstiga resultat" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): för stor skiftvärde kommer ge konstiga resultat" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: anropad med mindre än två argument" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d är inte numeriskt" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: anropad med färre än två argmuent" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d är inte numeriskt" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: anropad med färre än två argument" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d är inte numeriskt" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: fick ett ickenumeriskt argument" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negativt värde kommer ge konstiga resultat" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): flyttalsvärde kommer huggas av" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori" @@ -940,7 +971,9 @@ msgstr "save \"%s\": kommandot inte tillåtet." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" -msgstr "Det går inte att använda kommandot ”commands” i brytpunkts-/observationspunktskommandon" +msgstr "" +"Det går inte att använda kommandot ”commands” i brytpunkts-/" +"observationspunktskommandon" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" @@ -1014,11 +1047,16 @@ msgid "non-zero integer value" msgstr "heltalsvärde som inte är noll" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - skriv ett spår över alla eller N innersta (yttersta om N < 0) ramar." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - skriv ett spår över alla eller N innersta (yttersta om N < " +"0) ramar." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." msgstr "break [[filename:]N|function] - sätt brytpunkt på den angivna platsen." #: command.y:821 @@ -1026,12 +1064,18 @@ msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[filnamn:]N|funktion] - radera tidigare satta brytpunkter." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [num] - startar en lista av kommandon att köra när en brytpunkt(observationspunkt) träffas." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [num] - startar en lista av kommandon att köra när en " +"brytpunkt(observationspunkt) träffas." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition num [uttr] - sätt eller töm en brytpunkts eller observationspunkts villkor." +msgstr "" +"condition num [uttr] - sätt eller töm en brytpunkts eller observationspunkts " +"villkor." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1047,7 +1091,8 @@ msgstr "disable [brytpunkger] [intervall] - avaktivera angivna brytpunkter." #: command.y:833 msgid "display [var] - print value of variable each time the program stops." -msgstr "display [var] - skriv ut värdet på variabeln varje gång programmet stoppar." +msgstr "" +"display [var] - skriv ut värdet på variabeln varje gång programmet stoppar." #: command.y:835 msgid "down [N] - move N frames down the stack." @@ -1059,7 +1104,8 @@ msgstr "dump [filnamn] - skriv instruktioner till filen eller standard ut." #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "enable [once|del] [brytpunkter] [intervall] - aktivera angivna brytpunkter." +msgstr "" +"enable [once|del] [brytpunkter] [intervall] - aktivera angivna brytpunkter." #: command.y:841 msgid "end - end a list of commands or awk statements." @@ -1079,15 +1125,21 @@ msgstr "frame [N] - välj och skriv ut stackram nummer N." #: command.y:849 msgid "help [command] - print list of commands or explanation of command." -msgstr "help [kommando] - skriv listan av kommandon eller en förklaring av kommando." +msgstr "" +"help [kommando] - skriv listan av kommandon eller en förklaring av kommando." #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N ANTAL - sätt ignoreringsantal på brytpunkt nummer N till ANTAL." +msgstr "" +"ignore N ANTAL - sätt ignoreringsantal på brytpunkt nummer N till ANTAL." #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." -msgstr "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." +msgstr "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." @@ -1098,7 +1150,8 @@ msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [ANTAL] - stega programmet, passera genom subrutinanrop." #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "nexti [ANTAL] - stega en instruktion, men passera genom subrutinanrop." #: command.y:861 @@ -1134,8 +1187,11 @@ msgid "set var = value - assign value to a scalar variable." msgstr "set var = värde - tilldela värde till en skalär variabel." #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - undertrycker normala meddelanden vid stopp på en brytpunkt/observationspunkt. " +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - undertrycker normala meddelanden vid stopp på en brytpunkt/" +"observationspunkt. " #: command.y:881 msgid "source file - execute commands from file." @@ -1162,8 +1218,12 @@ msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - ta bort variabler från listan över automatiskt visade." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[filenamn:]N|funktion] - kör tills programmet når en annan rad eller rad N inom aktuell ram." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[filenamn:]N|funktion] - kör tills programmet når en annan rad eller " +"rad N inom aktuell ram." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1465,7 +1525,8 @@ msgstr "försök att använda ett skalärt värde som vektor" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" -msgstr "Observationspunkt %d raderad för att parametern är utanför sin räckvidd.\n" +msgstr "" +"Observationspunkt %d raderad för att parametern är utanför sin räckvidd.\n" #: debug.c:1867 #, c-format @@ -1499,7 +1560,9 @@ msgstr "Ogiltigt ramnummer" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Observera: brytpunkt %d (aktiverad, ingorera följande %ld träffar), är också satt vid %s:%d" +msgstr "" +"Observera: brytpunkt %d (aktiverad, ingorera följande %ld träffar), är också " +"satt vid %s:%d" #: debug.c:2207 #, c-format @@ -1509,7 +1572,9 @@ msgstr "Observera: brytpunkt %d (aktiverad), är också satt vid %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Observera: brytpunkt %d (avaktiverad, intorera följande %ld träffar), är också satt vid %s:%d" +msgstr "" +"Observera: brytpunkt %d (avaktiverad, intorera följande %ld träffar), är " +"också satt vid %s:%d" #: debug.c:2221 #, c-format @@ -1703,7 +1768,8 @@ msgstr "”until” är inte meningsfullt med icke lokalt hopp ”%s”\n" #: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" -msgstr "\t------[Retur] för att fortsätta eller a [Retur] för att avsluta------" +msgstr "" +"\t------[Retur] för att fortsätta eller a [Retur] för att avsluta------" #: debug.c:4186 msgid "q" @@ -1730,47 +1796,48 @@ msgstr "”%s” är inte tillåtet i det aktuella sammanhanget; satsen ignorera #: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" -msgstr "”return” är inte tillåtet i det aktuella sammanhanget; satsen ignoreras" +msgstr "" +"”return” är inte tillåtet i det aktuella sammanhanget; satsen ignoreras" #: debug.c:5590 #, c-format msgid "No symbol `%s' in current context" msgstr "Ingen symbol ”%s” i aktuell omgivning" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "obalanserad [" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "ogiltig teckenklass" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntaxen för teckenklass är [[:space:]], inte [:space:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "oavslutad \\-följd" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Ogiltigt innehåll i \\{\\}" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Reguljärt uttryck för stort" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "obalanserad (" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "ingen syntax angiven" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr "obalanserad )" @@ -1892,8 +1959,10 @@ msgstr "load_ext: kan inte öppna biblioteket ”%s” (%s)\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext: biblioteket ”%s”: definierar inte ”plugin_is_GPL_compatible” (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext: biblioteket ”%s”: definierar inte ”plugin_is_GPL_compatible” (%s)\n" #: ext.c:110 #, c-format @@ -1903,7 +1972,8 @@ msgstr "load_ext: biblioteket ”%s”: kan inte anropa funktionen ”%s” (%s) #: ext.c:114 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" -msgstr "load_ext: initieringsrutinen ”%2$s” i biblioteket ”%1$s” misslyckades\n" +msgstr "" +"load_ext: initieringsrutinen ”%2$s” i biblioteket ”%1$s” misslyckades\n" #: ext.c:174 msgid "`extension' is a gawk extension" @@ -1920,8 +1990,10 @@ msgstr "extension: kan inte öppna biblioteket ”%s” (%s)" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension: biblioteket ”%s”: definierar inte ”plugin_is_GPL_compatible” (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension: biblioteket ”%s”: definierar inte ”plugin_is_GPL_compatible” (%s)" #: ext.c:190 #, c-format @@ -1950,7 +2022,8 @@ msgstr "make_builtin: funktionsnamnet ”%s” är definierat sedan tidigare" #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin: kan inte använda gawks inbyggda ”%s” som ett funktionsnamn" +msgstr "" +"make_builtin: kan inte använda gawks inbyggda ”%s” som ett funktionsnamn" #: ext.c:249 ext.c:304 #, c-format @@ -1984,7 +2057,8 @@ msgstr "extension: funktionsnamnet \"%s\" är definierat sedan tidigare" #: ext.c:301 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "extension: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" +msgstr "" +"extension: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" #: ext.c:375 #, c-format @@ -2162,7 +2236,8 @@ msgstr "inplace_begin: kan inte hämta 1:a argumentet som en filnamnssträng" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" -msgstr "inplace_begin: avaktiverar redigering på plats för ogiltigt FILNAMN ”%s”" +msgstr "" +"inplace_begin: avaktiverar redigering på plats för ogiltigt FILNAMN ”%s”" #: extension/inplace.c:151 #, c-format @@ -2256,16 +2331,16 @@ msgstr "chr: anropad utan argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr: anropad med felaktiga argument" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir misslyckades: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: anropad med för många argument" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: anropad utan argument" @@ -2317,27 +2392,27 @@ msgstr "do_reada: clear_array misslyckades\n" msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element misslyckades\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: ignorerar argumenten" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: stödjs inte på denna plattform" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: anropad med för många argument" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: nödvändigt numeriskt argument saknas" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: argumentet är negativt" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: stödjs inte på denna plattform" @@ -2359,15 +2434,20 @@ msgstr "split: andra argumentet är inte en vektor" #: field.c:993 msgid "split: cannot use the same array for second and fourth args" -msgstr "split: det går inte att använda samma vektor som andra och fjärde argument" +msgstr "" +"split: det går inte att använda samma vektor som andra och fjärde argument" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "split: det går inte att använda en delvektor av andra argumentet som fjärde argument" +msgstr "" +"split: det går inte att använda en delvektor av andra argumentet som fjärde " +"argument" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "split: det går inte att använda en delvektor av fjärde argumentet som andra argument" +msgstr "" +"split: det går inte att använda en delvektor av fjärde argumentet som andra " +"argument" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" @@ -2387,15 +2467,20 @@ msgstr "patsplit: tredje argumentet får inte vara tomt" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" -msgstr "patsplit: det går inte att använda samma vektor som andra och fjärde argument" +msgstr "" +"patsplit: det går inte att använda samma vektor som andra och fjärde argument" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "patsplit: det går inte att använda en delvektor av andra argumentet som fjärde argument" +msgstr "" +"patsplit: det går inte att använda en delvektor av andra argumentet som " +"fjärde argument" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "patsplit: det går inte att använda en delvektor av fjärde argumentet som andra argument" +msgstr "" +"patsplit: det går inte att använda en delvektor av fjärde argumentet som " +"andra argument" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2430,20 +2515,20 @@ msgstr "node_to_awk_value: mottog null-nod" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: mottog null-värde" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element: fick en null-vektor" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element: mottog null-index" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: kunde inte konvertera index %d\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: kunde inte konvertera värdet %d\n" @@ -2535,7 +2620,9 @@ msgstr "uttrycket för \"%s\"-omdirigering har en tom sträng som värde" #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "filnamnet \"%s\" för \"%s\"-omdirigering kan vara resultatet av ett logiskt uttryck" +msgstr "" +"filnamnet \"%s\" för \"%s\"-omdirigering kan vara resultatet av ett logiskt " +"uttryck" #: io.c:809 #, c-format @@ -2568,8 +2655,10 @@ msgid "can't redirect to `%s' (%s)" msgstr "kan inte dirigera om till \"%s\" (%s)" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "nådde systembegränsningen för öppna filer: börjar multiplexa fildeskriptorer" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"nådde systembegränsningen för öppna filer: börjar multiplexa fildeskriptorer" #: io.c:1056 #, c-format @@ -2596,7 +2685,9 @@ msgstr "stängning av omdirigering som aldrig öppnades" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet ignorerat" +msgstr "" +"close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet " +"ignorerat" #: io.c:1222 #, c-format @@ -2666,7 +2757,8 @@ msgstr "ogiltig information (%s, %s) för fjärrvärd och fjärrport" #: io.c:1590 #, c-format msgid "no (known) protocol supplied in special filename `%s'" -msgstr "inget (känt) protokoll tillhandahållet i det speciella filnamnet \"%s\"" +msgstr "" +"inget (känt) protokoll tillhandahållet i det speciella filnamnet \"%s\"" #: io.c:1604 #, c-format @@ -2764,7 +2856,9 @@ msgstr "register_input_parser: mottog NULL-pekare" #: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" -msgstr "inmatningstolken ”%s” står i konflikt med tidigare installerad inmatningstolk ”%s”" +msgstr "" +"inmatningstolken ”%s” står i konflikt med tidigare installerad " +"inmatningstolk ”%s”" #: io.c:2825 #, c-format @@ -2777,8 +2871,11 @@ msgstr "register_output_wrapper: mottog NULL-pekare" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "utmatningsomslag ”%s” står i konflikt med tidigare installerat utmatningsomslag ”%s”" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"utmatningsomslag ”%s” står i konflikt med tidigare installerat " +"utmatningsomslag ”%s”" #: io.c:2880 #, c-format @@ -2791,8 +2888,12 @@ msgstr "register_output_processor: mottog NULL-pekare" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" -msgstr "tvåvägsprocessorn ”%s” står i konflikt med tidigare installerad tvåvägsprocessor ”%s”" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"tvåvägsprocessorn ”%s” står i konflikt med tidigare installerad " +"tvåvägsprocessor ”%s”" #: io.c:2939 #, c-format @@ -2873,7 +2974,8 @@ msgstr "ingen programtext alls!" #: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" -msgstr "Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n" +msgstr "" +"Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n" #: main.c:801 #, c-format @@ -3216,8 +3318,12 @@ msgstr "inga hexadecimala siffror i \"\\x\"-kontrollsekvenser" #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "hexkod \\x%.*s med %d tecken tolkas förmodligen inte på det sätt du förväntar dig" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"hexkod \\x%.*s med %d tecken tolkas förmodligen inte på det sätt du " +"förväntar dig" #: node.c:594 #, c-format @@ -3225,8 +3331,12 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrollsekvensen \"\\%c\" behandlad som bara \"%c\"" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." -msgstr "Ogiltig multibytedata upptäckt. Dina data och din lokal stämmer kanske inte överens." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." +msgstr "" +"Ogiltig multibytedata upptäckt. Dina data och din lokal stämmer kanske inte " +"överens." #: posix/gawkmisc.c:177 #, c-format @@ -3305,7 +3415,8 @@ msgstr "redir2str: okänd omdirigeringstyp %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "komponenten \"%.*s\" i reguljäruttryck skall förmodligen vara \"[%.*s]\"" +msgstr "" +"komponenten \"%.*s\" i reguljäruttryck skall förmodligen vara \"[%.*s]\"" #: regcomp.c:131 msgid "Success" Binary files differ@@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk-4.1.0b\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-01-14 22:23+0200\n" +"POT-Creation-Date: 2014-04-08 19:23+0300\n" "PO-Revision-Date: 2014-01-16 14:52+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" @@ -40,8 +40,8 @@ msgstr "cố dùng tham số vô hướng “%s” như là mảng" msgid "attempt to use scalar `%s' as an array" msgstr "cố dùng “%s” vô hướng như là mảng" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1599 builtin.c:1645 -#: builtin.c:1658 builtin.c:2086 builtin.c:2100 eval.c:1122 eval.c:1126 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661 +#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 #: eval.c:1531 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -79,19 +79,27 @@ msgstr "asorti: đối số thứ nhất không phải là một mảng" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" -msgstr "asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham số thứ nhất cho tham số thứ hai" +msgstr "" +"asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham " +"số thứ nhất cho tham số thứ hai" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" -msgstr "asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham số thứ nhất cho tham số thứ hai" +msgstr "" +"asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của " +"tham số thứ nhất cho tham số thứ hai" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" -msgstr "asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham số thứ hai cho tham số thứ nhất" +msgstr "" +"asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham " +"số thứ hai cho tham số thứ nhất" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" -msgstr "asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham số thứ hai cho tham số thứ nhất" +msgstr "" +"asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của " +"tham số thứ hai cho tham số thứ nhất" #: array.c:1314 #, c-format @@ -114,7 +122,8 @@ msgstr "Mọi quy tắc phải có một mẫu hay phần kiểu hành động" #: awkgram.y:325 awkgram.y:336 msgid "old awk does not support multiple `BEGIN' or `END' rules" -msgstr "awk cũ không hỗ trợ nhiều quy tắc kiểu “BEGIN” (bắt đầu) hay “END” (kết thúc)" +msgstr "" +"awk cũ không hỗ trợ nhiều quy tắc kiểu “BEGIN” (bắt đầu) hay “END” (kết thúc)" #: awkgram.y:373 #, c-format @@ -123,12 +132,16 @@ msgstr "“%s” là một hàm có sẵn nên nó không thể được định #: awkgram.y:419 msgid "regexp constant `//' looks like a C++ comment, but is not" -msgstr "hằng biểu thức chính quy “//” trông giống như một chú thích C++, nhưng mà không phải" +msgstr "" +"hằng biểu thức chính quy “//” trông giống như một chú thích C++, nhưng mà " +"không phải" #: awkgram.y:423 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" -msgstr "hằng biểu thức chính quy “/%s/” trông giống như một chú thích C, nhưng mà không phải" +msgstr "" +"hằng biểu thức chính quy “/%s/” trông giống như một chú thích C, nhưng mà " +"không phải" #: awkgram.y:515 #, c-format @@ -137,13 +150,15 @@ msgstr "gặp giá trị case trùng trong thân chuyển đổi (switch body): #: awkgram.y:536 msgid "duplicate `default' detected in switch body" -msgstr "đã phát hiện trùng “default” trong thân cấu trúc điều khiển chọn lựa (switch)" +msgstr "" +"đã phát hiện trùng “default” trong thân cấu trúc điều khiển chọn lựa (switch)" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:796 awkgram.y:3723 msgid "`break' is not allowed outside a loop or switch" -msgstr "không cho phép “break” (ngắt) nằm ở ngoại vòng lặp hay cấu trúc chọn lựa" +msgstr "" +"không cho phép “break” (ngắt) nằm ở ngoại vòng lặp hay cấu trúc chọn lựa" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:805 awkgram.y:3715 msgid "`continue' is not allowed outside a loop" msgstr "không cho phép “continue” (tiếp tục) ở ngoài một vòng lặp" @@ -163,7 +178,9 @@ msgstr "“return” (trở về) được dùng ở ngoại ngữ cảnh hàm" #: awkgram.y:922 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "“print” (in) thường trong quy tắc “BEGIN” (bắt đầu) hay “END” (kết thúc) gần như chắc chắn nên là “print”””" +msgstr "" +"“print” (in) thường trong quy tắc “BEGIN” (bắt đầu) hay “END” (kết thúc) gần " +"như chắc chắn nên là “print”””" #: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with SYMTAB" @@ -209,7 +226,9 @@ msgstr "“getline” không hợp lệ trong quy tắc “%s”" #: awkgram.y:1425 msgid "non-redirected `getline' undefined inside END action" -msgstr "trong hành động “END” (kết thúc) có “getline” (lấy dòng) không được chuyển hướng lại và chưa được định nghĩa." +msgstr "" +"trong hành động “END” (kết thúc) có “getline” (lấy dòng) không được chuyển " +"hướng lại và chưa được định nghĩa." #: awkgram.y:1444 msgid "old awk does not support multidimensional arrays" @@ -217,7 +236,9 @@ msgstr "awk cũ không hỗ trợ mảng đa chiều" #: awkgram.y:1541 msgid "call of `length' without parentheses is not portable" -msgstr "lời gọi “length” (độ dài) mà không có dấu ngoặc đơn là không tương thích trên các hệ thống khác" +msgstr "" +"lời gọi “length” (độ dài) mà không có dấu ngoặc đơn là không tương thích " +"trên các hệ thống khác" #: awkgram.y:1607 msgid "indirect function calls are a gawk extension" @@ -232,262 +253,270 @@ msgstr "không thể dùng biến đặc biệt “%s” cho cú gọi hàm giá msgid "invalid subscript expression" msgstr "biểu thức in thấp không hợp lệ" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "cảnh báo: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "lỗi nghiêm trọng: " -#: awkgram.y:2092 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "gặp dòng mới hay kết thúc chuỗi bất ngờ" -#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:523 debug.c:539 +#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "không thể mở tập tin nguồn “%s” để đọc (%s)" -#: awkgram.y:2360 awkgram.y:2485 +#: awkgram.y:2384 awkgram.y:2509 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "không thể mở tập thư viện chia sẻ “%s” để đọc (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "không rõ lý do" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2395 awkgram.y:2419 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "không thể bao gồm “%s” và dùng nó như là tập tin chương trình" -#: awkgram.y:2384 +#: awkgram.y:2408 #, c-format msgid "already included source file `%s'" msgstr "đã sẵn bao gồm tập tin nguồn “%s”" -#: awkgram.y:2385 +#: awkgram.y:2409 #, c-format msgid "already loaded shared library `%s'" msgstr "thư viện dùng chung “%s” đã được sẵn được tải rồi" -#: awkgram.y:2420 +#: awkgram.y:2444 msgid "@include is a gawk extension" msgstr "@include là phần mở rộng của gawk" -#: awkgram.y:2426 +#: awkgram.y:2450 msgid "empty filename after @include" msgstr "tập tin trống sau @include" -#: awkgram.y:2470 +#: awkgram.y:2494 msgid "@load is a gawk extension" msgstr "@load là một phần mở rộng gawk" -#: awkgram.y:2476 +#: awkgram.y:2500 msgid "empty filename after @load" msgstr "tên tập tin trống sau @load" -#: awkgram.y:2610 +#: awkgram.y:2634 msgid "empty program text on command line" msgstr "gặp đoạn chữ chương trình rỗng nằm trên dòng lệnh" -#: awkgram.y:2725 +#: awkgram.y:2749 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "không thể đọc tập tin nguồn “%s” (%s)" -#: awkgram.y:2736 +#: awkgram.y:2760 #, c-format msgid "source file `%s' is empty" msgstr "tập tin nguồn “%s” là rỗng" -#: awkgram.y:2913 +#: awkgram.y:2937 msgid "source file does not end in newline" msgstr "tập tin nguồn không kết thúc với một dòng mới" -#: awkgram.y:3018 +#: awkgram.y:3042 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "biểu thức chính quy chưa được chấm dứt kết thúc với “\\” tại kết thúc của tập tin" +msgstr "" +"biểu thức chính quy chưa được chấm dứt kết thúc với “\\” tại kết thúc của " +"tập tin" -#: awkgram.y:3042 +#: awkgram.y:3066 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "%s: %d: bộ sửa đổi biểu thức chính quy tawk “/.../%c” không hoạt động được trong gawk" +msgstr "" +"%s: %d: bộ sửa đổi biểu thức chính quy tawk “/.../%c” không hoạt động được " +"trong gawk" -#: awkgram.y:3046 +#: awkgram.y:3070 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "bộ sửa đổi biểu thức chính quy tawk “/.../%c” không hoạt động được trong gawk" +msgstr "" +"bộ sửa đổi biểu thức chính quy tawk “/.../%c” không hoạt động được trong gawk" -#: awkgram.y:3053 +#: awkgram.y:3077 msgid "unterminated regexp" msgstr "biểu thức chính quy chưa được chấm dứt" -#: awkgram.y:3057 +#: awkgram.y:3081 msgid "unterminated regexp at end of file" msgstr "biểu thức chính quy chưa được chấm dứt nằm tại kết thúc của tập tin" -#: awkgram.y:3116 +#: awkgram.y:3140 msgid "use of `\\ #...' line continuation is not portable" msgstr "không thể mang khả năng dùng “\\#...” để tiếp tục dòng" -#: awkgram.y:3132 +#: awkgram.y:3156 msgid "backslash not last character on line" msgstr "dấu gạch ngược không phải là ký tự cuối cùng nằm trên dòng" -#: awkgram.y:3193 +#: awkgram.y:3217 msgid "POSIX does not allow operator `**='" msgstr "POSIX không cho phép toán tử “**=”" -#: awkgram.y:3195 +#: awkgram.y:3219 msgid "old awk does not support operator `**='" msgstr "awk cũ không hỗ trợ toán tử “**=”" -#: awkgram.y:3204 +#: awkgram.y:3228 msgid "POSIX does not allow operator `**'" msgstr "POSIX không cho phép toán tử “**”" -#: awkgram.y:3206 +#: awkgram.y:3230 msgid "old awk does not support operator `**'" msgstr "awk cũ không hỗ trợ toán tử “**”" -#: awkgram.y:3241 +#: awkgram.y:3265 msgid "operator `^=' is not supported in old awk" msgstr "awk cũ không hỗ trợ toán tử “^=”" -#: awkgram.y:3249 +#: awkgram.y:3273 msgid "operator `^' is not supported in old awk" msgstr "awk cũ không hỗ trợ toán tử “^”" -#: awkgram.y:3342 awkgram.y:3358 command.y:1178 +#: awkgram.y:3366 awkgram.y:3382 command.y:1178 msgid "unterminated string" msgstr "chuỗi không được chấm dứt" -#: awkgram.y:3579 +#: awkgram.y:3603 #, c-format msgid "invalid char '%c' in expression" msgstr "có ký tự không hợp lệ “%c” nằm trong biểu thức" -#: awkgram.y:3626 +#: awkgram.y:3650 #, c-format msgid "`%s' is a gawk extension" msgstr "“%s” là một phần mở rộng gawk" -#: awkgram.y:3631 +#: awkgram.y:3655 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX không cho phép “%s”" -#: awkgram.y:3639 +#: awkgram.y:3663 #, c-format msgid "`%s' is not supported in old awk" msgstr "awk kiểu cũ không hỗ trợ “%s”" -#: awkgram.y:3729 +#: awkgram.y:3753 msgid "`goto' considered harmful!\n" msgstr "“goto” được xem là có hại!\n" -#: awkgram.y:3763 +#: awkgram.y:3787 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "“%d” không hợp lệ khi là số đối số cho “%s”" -#: awkgram.y:3798 +#: awkgram.y:3822 #, c-format msgid "%s: string literal as last arg of substitute has no effect" -msgstr "%s: khi đối số cuối cùng của sự thay thế, hằng mã nguồn chuỗi không có tác dụng" +msgstr "" +"%s: khi đối số cuối cùng của sự thay thế, hằng mã nguồn chuỗi không có tác " +"dụng" -#: awkgram.y:3803 +#: awkgram.y:3827 #, c-format msgid "%s third parameter is not a changeable object" msgstr "tham số thứ ba %s không phải là một đối tượng có thể thay đổi" -#: awkgram.y:3886 awkgram.y:3889 +#: awkgram.y:3910 awkgram.y:3913 msgid "match: third argument is a gawk extension" msgstr "match: (khớp) đối số thứ ba là phần mở rộng gawk" -#: awkgram.y:3943 awkgram.y:3946 +#: awkgram.y:3967 awkgram.y:3970 msgid "close: second argument is a gawk extension" msgstr "close: (đóng) đối số thứ hai là phần mở rộng gawk" -#: awkgram.y:3958 +#: awkgram.y:3982 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"...\")” không đúng: hãy gỡ bỏ gạch dưới nằm trước" -#: awkgram.y:3973 +#: awkgram.y:3997 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"...\")” không đúng: hãy gỡ bỏ gạch dưới nằm trước" -#: awkgram.y:3992 +#: awkgram.y:4016 msgid "index: regexp constant as second argument is not allowed" -msgstr "index: (chỉ mục) không cho phép hằng biểu thức chính quy làm đối số thứ hai" +msgstr "" +"index: (chỉ mục) không cho phép hằng biểu thức chính quy làm đối số thứ hai" -#: awkgram.y:4045 +#: awkgram.y:4069 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "hàm “%s”: tham số “%s” che biến toàn cục" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "không mở được “%s” để ghi (%s)" -#: awkgram.y:4103 +#: awkgram.y:4127 msgid "sending variable list to standard error" msgstr "đang gởi danh sách biến tới thiết bị lỗi chuẩn" -#: awkgram.y:4111 +#: awkgram.y:4135 #, c-format msgid "%s: close failed (%s)" msgstr "%s: gặp lỗi khi đóng (%s)" -#: awkgram.y:4136 +#: awkgram.y:4160 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() (hàm bóng) được gọi hai lần!" -#: awkgram.y:4144 +#: awkgram.y:4168 msgid "there were shadowed variables." msgstr "có biến bị bóng." -#: awkgram.y:4215 +#: awkgram.y:4239 #, c-format msgid "function name `%s' previously defined" msgstr "tên hàm “%s” trước đây đã được định nghĩa rồi" -#: awkgram.y:4261 +#: awkgram.y:4285 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "hàm “%s”: không thể dùng tên hàm như là tên tham số" -#: awkgram.y:4264 +#: awkgram.y:4288 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "hàm “%s”: không thể dùng biến đặc biệt “%s” như là tham số hàm" -#: awkgram.y:4272 +#: awkgram.y:4296 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "hàm “%s”: tham số “#%d”, “%s”, nhân đôi tham số “#%d”" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4383 awkgram.y:4389 #, c-format msgid "function `%s' called but never defined" msgstr "hàm “%s” được gọi nhưng mà chưa định nghĩa" -#: awkgram.y:4369 +#: awkgram.y:4393 #, c-format msgid "function `%s' defined but never called directly" msgstr "hàm “%s” được định nghĩa nhưng mà chưa được gọi trực tiếp bao giờ" -#: awkgram.y:4401 +#: awkgram.y:4425 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "hằng biểu thức chính quy cho tham số “#%d” làm giá trị luận lý (bun)" -#: awkgram.y:4460 +#: awkgram.y:4484 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -496,20 +525,21 @@ msgstr "" "hàm “%s” được gọi với dấu cách nằm giữa tên và “(”\n" "hoặc được dùng như là biến hay mảng" -#: awkgram.y:4696 +#: awkgram.y:4720 msgid "division by zero attempted" msgstr "gặp phép chia cho số không" -#: awkgram.y:4705 +#: awkgram.y:4729 #, c-format msgid "division by zero attempted in `%%'" msgstr "gặp phép chia cho số không trong “%%”" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" +#: awkgram.y:5049 +msgid "" +"cannot assign a value to the result of a field post-increment expression" msgstr "không thể gán giá trị cho kết quả của biểu thức trường tăng-trước" -#: awkgram.y:5028 +#: awkgram.y:5052 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "gán đich không hợp lệ (mã thi hành “%s”)" @@ -535,17 +565,22 @@ msgstr "exp: đối số “%g” nằm ngoài phạm vi" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "fflush: không thể flush (đẩy dữ liệu lên đĩa): ống dẫn “%s” được mở để đọc, không phải để ghi" +msgstr "" +"fflush: không thể flush (đẩy dữ liệu lên đĩa): ống dẫn “%s” được mở để đọc, " +"không phải để ghi" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" -msgstr "fflush: không thể flush (đẩy dữ liệu vào đĩa): tập tin “%s” được mở để đọc, không phải để ghi" +msgstr "" +"fflush: không thể flush (đẩy dữ liệu vào đĩa): tập tin “%s” được mở để đọc, " +"không phải để ghi" #: builtin.c:244 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" -msgstr "fflush: “%s” không phải là tập tin, ống dẫn hay đồng tiến trình được mở" +msgstr "" +"fflush: “%s” không phải là tập tin, ống dẫn hay đồng tiến trình được mở" #: builtin.c:362 msgid "index: received non-string first argument" @@ -610,7 +645,8 @@ msgstr "lỗi nghiêm trọng: số lượng đối số với “$” phải >0 #: builtin.c:919 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" -msgstr "lỗi nghiêm trọng: số lượng đối số %ld lớn hơn tổng số đối số được cung cấp" +msgstr "" +"lỗi nghiêm trọng: số lượng đối số %ld lớn hơn tổng số đối số được cung cấp" #: builtin.c:923 msgid "fatal: `$' not permitted after period in format" @@ -618,299 +654,314 @@ msgstr "lỗi nghiêm trọng: không cho phép “$” nằm sau dấu chấm t #: builtin.c:939 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "lỗi nghiêm trọng: chưa cung cấp “$” cho độ rộng trường thuộc vị trí hay cho độ chính xác" +msgstr "" +"lỗi nghiêm trọng: chưa cung cấp “$” cho độ rộng trường thuộc vị trí hay cho " +"độ chính xác" -#: builtin.c:1011 +#: builtin.c:1009 msgid "`l' is meaningless in awk formats; ignored" msgstr "chữ “l” không có nghĩa trong định dạng awk nên bị bỏ qua" -#: builtin.c:1015 +#: builtin.c:1013 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "lỗi nghiêm trọng: không cho phép chữ “l” nằm trong định dạng awk POSIX" -#: builtin.c:1028 +#: builtin.c:1026 msgid "`L' is meaningless in awk formats; ignored" msgstr "chữ “L” không có nghĩa trong định dạng awk nên bị bỏ qua" -#: builtin.c:1032 +#: builtin.c:1030 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "lỗi nghiêm trọng: không cho phép chữ “L” nằm trong định dạng awk POSIX" -#: builtin.c:1045 +#: builtin.c:1043 msgid "`h' is meaningless in awk formats; ignored" msgstr "chữ “h” không có nghĩa trong định dạng awk nên bị bỏ qua" -#: builtin.c:1049 +#: builtin.c:1047 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "lỗi nghiêm trọng: không cho phép chữ “h” nằm trong định dạng awk POSIX" -#: builtin.c:1447 +#: builtin.c:1463 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%c”" -#: builtin.c:1545 +#: builtin.c:1561 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" -msgstr "đang bỏ qua ký tự ghi rõ định dạng không rõ “%c”: không có đối số được chuyển đổi" +msgstr "" +"đang bỏ qua ký tự ghi rõ định dạng không rõ “%c”: không có đối số được " +"chuyển đổi" -#: builtin.c:1550 +#: builtin.c:1566 msgid "fatal: not enough arguments to satisfy format string" msgstr "lỗi nghiêm trọng: chưa có đủ đối số để đáp ứng chuỗi định dạng" -#: builtin.c:1552 +#: builtin.c:1568 msgid "^ ran out for this one" msgstr "bị hết “^” cho cái này" -#: builtin.c:1559 +#: builtin.c:1575 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: chỉ định định dạng không có ký hiệu điều khiển" -#: builtin.c:1562 +#: builtin.c:1578 msgid "too many arguments supplied for format string" msgstr "quá nhiều đối số được cung cấp cho chuỗi định dạng" -#: builtin.c:1618 +#: builtin.c:1634 msgid "sprintf: no arguments" msgstr "sprintf: không có đối số" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1657 builtin.c:1668 msgid "printf: no arguments" msgstr "printf: không có đối số" -#: builtin.c:1695 +#: builtin.c:1711 msgid "sqrt: received non-numeric argument" msgstr "sqrt: (căn bậc hai) đã nhận đối số không phải thuộc số" -#: builtin.c:1699 +#: builtin.c:1715 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: (căn bậc hai) đã gọi với đối số âm “%g”" -#: builtin.c:1730 +#: builtin.c:1746 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: (chuỗi con) độ dài %g không phải ≥1" -#: builtin.c:1732 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: (chuỗi con) độ dài %g không phải ≥0" -#: builtin.c:1739 +#: builtin.c:1755 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: (chuỗi con) sẽ cắt xén độ dài không phải số nguyên “%g”" -#: builtin.c:1744 +#: builtin.c:1760 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" -msgstr "substr: (chuỗi con) độ dài %g là quá lớn cho chỉ số chuỗi, nên xén ngắn thành %g" +msgstr "" +"substr: (chuỗi con) độ dài %g là quá lớn cho chỉ số chuỗi, nên xén ngắn " +"thành %g" -#: builtin.c:1756 +#: builtin.c:1772 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: (chuỗi con) chỉ số đầu “%g” không hợp lệ nên dùng 1" -#: builtin.c:1761 +#: builtin.c:1777 #, c-format msgid "substr: non-integer start index %g will be truncated" -msgstr "substr: (chuỗi con) chỉ số đầu không phải số nguyên “%g” sẽ bị cắt ngắn" +msgstr "" +"substr: (chuỗi con) chỉ số đầu không phải số nguyên “%g” sẽ bị cắt ngắn" -#: builtin.c:1786 +#: builtin.c:1802 msgid "substr: source string is zero length" msgstr "substr: (chuỗi con) chuỗi nguồn có độ dài số không" -#: builtin.c:1802 +#: builtin.c:1818 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: (chuỗi con) chỉ số đầu %g nằm sau kết thúc của chuỗi" -#: builtin.c:1810 +#: builtin.c:1826 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: (chuỗi con) độ dài %g chỉ số đầu %g vượt quá độ dài của đối số đầu (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: (chuỗi con) độ dài %g chỉ số đầu %g vượt quá độ dài của đối số đầu " +"(%lu)" -#: builtin.c:1884 +#: builtin.c:1900 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -msgstr "strftime: giá trị định dạng trong PROCINFO[”strftime”] phải thuộc kiểu số" +msgstr "" +"strftime: giá trị định dạng trong PROCINFO[”strftime”] phải thuộc kiểu số" -#: builtin.c:1907 +#: builtin.c:1923 msgid "strftime: received non-numeric second argument" msgstr "strftime: đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:1911 +#: builtin.c:1927 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tham số thứ hai nhỏ hơn 0 hay quá lớn dành cho time_t" -#: builtin.c:1918 +#: builtin.c:1934 msgid "strftime: received non-string first argument" msgstr "strftime: đã nhận đối số thứ nhất khác chuỗi" -#: builtin.c:1925 +#: builtin.c:1941 msgid "strftime: received empty format string" msgstr "strftime: đã nhận chuỗi định dạng rỗng" -#: builtin.c:1991 +#: builtin.c:2007 msgid "mktime: received non-string argument" msgstr "mktime: đã nhận đối số khác chuỗi" -#: builtin.c:2008 +#: builtin.c:2024 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: ít nhất một của những giá trị nằm ở ngoại phạm vi mặc định" -#: builtin.c:2043 +#: builtin.c:2059 msgid "'system' function not allowed in sandbox mode" msgstr "hàm “system” không cho phép ở chế độ khuôn đúc" -#: builtin.c:2048 +#: builtin.c:2064 msgid "system: received non-string argument" msgstr "system: (hệ thống) đã nhận đối số khác chuỗi" -#: builtin.c:2168 +#: builtin.c:2184 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "gặp tham chiếu đến trường chưa được khởi tạo “$%d”" -#: builtin.c:2255 +#: builtin.c:2271 msgid "tolower: received non-string argument" msgstr "tolower: (đến thấp hơn) đã nhận đối số khác chuỗi" -#: builtin.c:2289 +#: builtin.c:2305 msgid "toupper: received non-string argument" msgstr "toupper: (đến cao hơn) đã nhận đối số khác chuỗi" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2341 mpfr.c:672 msgid "atan2: received non-numeric first argument" msgstr "atan2: đã nhận đối số thứ nhất khác thuộc số" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2343 mpfr.c:674 msgid "atan2: received non-numeric second argument" msgstr "atan2: đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:2346 +#: builtin.c:2362 msgid "sin: received non-numeric argument" msgstr "sin: đã nhận đối số không phải thuộc số" -#: builtin.c:2362 +#: builtin.c:2378 msgid "cos: received non-numeric argument" msgstr "cos: đã nhận đối số không phải thuộc số" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2431 mpfr.c:1156 msgid "srand: received non-numeric argument" msgstr "srand: đã nhận đối số không phải thuộc số" -#: builtin.c:2446 +#: builtin.c:2462 msgid "match: third argument is not an array" msgstr "match: (khớp) đối số thứ ba không phải là mảng" -#: builtin.c:2718 +#: builtin.c:2734 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: đối số thứ ba của 0 được xử lý như 1" -#: builtin.c:3014 +#: builtin.c:3030 msgid "lshift: received non-numeric first argument" msgstr "lshift: đã nhận đối số đầu không phải thuộc số" -#: builtin.c:3016 +#: builtin.c:3032 msgid "lshift: received non-numeric second argument" msgstr "lshift: (dịch bên trái) đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:3022 +#: builtin.c:3038 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): giá trị âm sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3024 +#: builtin.c:3040 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): giá trị thuộc phân số sẽ bị cắt ngắn" -#: builtin.c:3026 +#: builtin.c:3042 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" -msgstr "lshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn" +msgstr "" +"lshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3051 +#: builtin.c:3067 msgid "rshift: received non-numeric first argument" msgstr "rshift: đã nhận đối số thứ nhất khác thuộc số" -#: builtin.c:3053 +#: builtin.c:3069 msgid "rshift: received non-numeric second argument" msgstr "rshift: (dịch phải) đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:3059 +#: builtin.c:3075 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): giá trị âm sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3061 +#: builtin.c:3077 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): giá trị thuộc kiểu phân số sẽ bị xén ngắn" -#: builtin.c:3063 +#: builtin.c:3079 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "rshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn" +msgstr "" +"rshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3104 mpfr.c:968 msgid "and: called with less than two arguments" msgstr "and: được gọi với ít hơn hai đối số" -#: builtin.c:3093 +#: builtin.c:3109 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: đối số %d không phải thuộc số" -#: builtin.c:3097 +#: builtin.c:3113 #, c-format msgid "and: argument %d negative value %g will give strange results" -msgstr "and: (và) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn" +msgstr "" +"and: (và) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3136 mpfr.c:1000 msgid "or: called with less than two arguments" msgstr "or: (hoặc) được gọi với ít hơn hai đối số" -#: builtin.c:3125 +#: builtin.c:3141 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: (hoặc) đối số %d không thuộc kiểu số" -#: builtin.c:3129 +#: builtin.c:3145 #, c-format msgid "or: argument %d negative value %g will give strange results" -msgstr "or: (hoặc) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn" +msgstr "" +"or: (hoặc) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3167 mpfr.c:1031 msgid "xor: called with less than two arguments" msgstr "xor: được gọi với ít hơn hai đối số" -#: builtin.c:3157 +#: builtin.c:3173 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: đối số %d không thuộc kiểu số" -#: builtin.c:3161 +#: builtin.c:3177 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3202 mpfr.c:787 msgid "compl: received non-numeric argument" msgstr "compl: (biên dịch) đã nhận được đối số không-phải-số" -#: builtin.c:3192 +#: builtin.c:3208 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): giá trị âm sẽ gây ra kết quả không như mong đợi" -#: builtin.c:3194 +#: builtin.c:3210 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): giá trị thuộc phân số sẽ bị cắt ngắn" -#: builtin.c:3363 +#: builtin.c:3379 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: “%s” không phải là một phân loại miền địa phương hợp lệ" @@ -1016,24 +1067,35 @@ msgid "non-zero integer value" msgstr "giá trị số nguyên khác không" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - in vết của tất cả hay N khung trong cùng nhất (ngoài cùng nhất nếu N < 0)." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - in vết của tất cả hay N khung trong cùng nhất (ngoài cùng " +"nhất nếu N < 0)." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." msgstr "break [[tên_tập_tin:]N|hàm] - đặt điểm ngắt tại vị trí đã cho." #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[tên_tập_tin:]N|function] - xóa các điểm ngắt được đặt trước đây." +msgstr "" +"clear [[tên_tập_tin:]N|function] - xóa các điểm ngắt được đặt trước đây." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [số] - chạy một danh sách các câu lệnh được thực thi tại điểm ngắt (hay điểm theo dõi) tìm được." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [số] - chạy một danh sách các câu lệnh được thực thi tại điểm ngắt " +"(hay điểm theo dõi) tìm được." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition num [expr] - đặt hay xóa điểm ngắt hay điều kiện điểm theo dõi." +msgstr "" +"condition num [expr] - đặt hay xóa điểm ngắt hay điều kiện điểm theo dõi." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1057,7 +1119,8 @@ msgstr "down [N] - chuyển xuống N khung stack." #: command.y:837 msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [tên_tập_tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn." +msgstr "" +"dump [tên_tập_tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn." #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." @@ -1088,8 +1151,11 @@ msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N SỐ-LƯỢNG - đặt số lượng điểm ngắt bị bỏ qua." #: command.y:853 -msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." -msgstr "info chủ_đề - nguồn|nguồn|biến|hàm|break|frame|args|locals|display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch." +msgstr "" +"info chủ_đề - nguồn|nguồn|biến|hàm|break|frame|args|locals|display|watch." #: command.y:855 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." @@ -1097,11 +1163,16 @@ msgstr "list [-|+|[tập_tin:]số_dòng|hàm|vùng] - liệt kê các dòng đ #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [SỐ_LƯỢNG] - nhảy một chỉ lệnh, nhưng được xử lý thông qua gọi thủ tục con." +msgstr "" +"next [SỐ_LƯỢNG] - nhảy một chỉ lệnh, nhưng được xử lý thông qua gọi thủ " +"tục con." #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [SỐ_LƯỢNG] - nhảy từng chỉ lệnh, nhưng được xử lý thông qua gọi thủ tục con." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgstr "" +"nexti [SỐ_LƯỢNG] - nhảy từng chỉ lệnh, nhưng được xử lý thông qua gọi thủ " +"tục con." #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." @@ -1121,7 +1192,9 @@ msgstr "quit - thoát khỏi chương trình gỡ lỗi." #: command.y:869 msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [giá-trị] - làm cho khung stack đã chọn trả về giá trị này cho bộ gọi nó." +msgstr "" +"return [giá-trị] - làm cho khung stack đã chọn trả về giá trị này cho bộ gọi " +"nó." #: command.y:871 msgid "run - start or restart executing program." @@ -1136,8 +1209,11 @@ msgid "set var = value - assign value to a scalar variable." msgstr "set biến = giá_trị - gán giá trị cho một biến vô hướng." #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - chặn các lời nhắn thông thường khi dừng tại điểm ngăt hay điểm theo dõi." +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - chặn các lời nhắn thông thường khi dừng tại điểm ngăt hay điểm theo " +"dõi." #: command.y:881 msgid "source file - execute commands from file." @@ -1145,7 +1221,9 @@ msgstr "source file - thực hiện các câu lệnh từ tập tin." #: command.y:883 msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [SỐ_LƯỢNG] - chạy từng bước chương trình cho đến khi nó gặp một dòng nguồn khác." +msgstr "" +"step [SỐ_LƯỢNG] - chạy từng bước chương trình cho đến khi nó gặp một dòng " +"nguồn khác." #: command.y:885 msgid "stepi [COUNT] - step one instruction exactly." @@ -1164,8 +1242,12 @@ msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - gỡ bỏ các biến từ danh sách hiển thị tự động." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[tên_tập_tin:]N|hàm] - thực hiện cho đến khi chương trình đạt đến dòng khác hay dòng N trong khung hiện tại." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[tên_tập_tin:]N|hàm] - thực hiện cho đến khi chương trình đạt đến " +"dòng khác hay dòng N trong khung hiện tại." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1501,7 +1583,9 @@ msgstr "số khung không hợp lệ" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Chú ý: điểm ngắt %d (được bật, bỏ qua %ld gợi ý tiếp), đồng thời được đặt tại %s:%d" +msgstr "" +"Chú ý: điểm ngắt %d (được bật, bỏ qua %ld gợi ý tiếp), đồng thời được đặt " +"tại %s:%d" #: debug.c:2207 #, c-format @@ -1511,7 +1595,9 @@ msgstr "Chú ý: điểm ngắt %d (được bật), đồng thời được đ #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Chú ý: điểm ngắt %d (bị tắt, bỏ qua %ld gợi ý tiếp), đồng thời được đặt tại %s:%d" +msgstr "" +"Chú ý: điểm ngắt %d (bị tắt, bỏ qua %ld gợi ý tiếp), đồng thời được đặt tại " +"%s:%d" #: debug.c:2221 #, c-format @@ -1593,7 +1679,8 @@ msgstr "Sẽ dừng lần gặp điểm ngắt %d tiếp theo.\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" -msgstr "Chỉ có thể gỡ lỗi các chương trình được cung cấp cùng với tùy chọn “-f”.\n" +msgstr "" +"Chỉ có thể gỡ lỗi các chương trình được cung cấp cùng với tùy chọn “-f”.\n" #: debug.c:2908 #, c-format @@ -1739,40 +1826,40 @@ msgstr "“return” không được phép trong ngữ cảnh hiện hành; câu msgid "No symbol `%s' in current context" msgstr "Không có ký hiệu “%s” trong ngữ cảnh hiện thời" -#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103 -#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1191 +#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197 +#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275 msgid "unbalanced [" msgstr "thiếu dấu ngoặc vuông mở [" -#: dfa.c:1052 +#: dfa.c:1174 msgid "invalid character class" msgstr "sai lớp ký tự" -#: dfa.c:1228 +#: dfa.c:1316 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "cú pháp lớp ký tự là [[:dấu_cách:]], không phải [:dấu_cách:]" -#: dfa.c:1280 +#: dfa.c:1366 msgid "unfinished \\ escape" msgstr "chưa kết thúc dãy thoát \\" -#: dfa.c:1427 regcomp.c:161 +#: dfa.c:1513 regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "Nội dung của “\\{\\}” không hợp lệ" -#: dfa.c:1430 regcomp.c:176 +#: dfa.c:1516 regcomp.c:176 msgid "Regular expression too big" msgstr "Biểu thức chính quy quá lớn" -#: dfa.c:1847 +#: dfa.c:1936 msgid "unbalanced (" msgstr "thiếu dấu (" -#: dfa.c:1973 +#: dfa.c:2062 msgid "no syntax specified" msgstr "chưa chỉ rõ cú pháp" -#: dfa.c:1981 +#: dfa.c:2070 msgid "unbalanced )" msgstr "thiếu dấu )" @@ -1894,8 +1981,10 @@ msgstr "load_ext: không thể mở thư viện “%s” (%s)\n" #: ext.c:104 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext: thư viện “%s”: chưa định nghĩa “plugin_is_GPL_compatible” (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext: thư viện “%s”: chưa định nghĩa “plugin_is_GPL_compatible” (%s)\n" #: ext.c:110 #, c-format @@ -1922,8 +2011,10 @@ msgstr "phần mở rộng: không thể mở thư viện “%s” (%s)" #: ext.c:186 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "phần mở rộng: thư viện “%s”: chưa định nghĩa “plugin_is_GPL_compatible” (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"phần mở rộng: thư viện “%s”: chưa định nghĩa “plugin_is_GPL_compatible” (%s)" #: ext.c:190 #, c-format @@ -1952,7 +2043,9 @@ msgstr "make_builtin: hàm “%s” đã được định nghĩa trước đây #: ext.c:246 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin: không thể sử dụng “%s” như là một hàm được xây dựng sẵn trong gawk" +msgstr "" +"make_builtin: không thể sử dụng “%s” như là một hàm được xây dựng sẵn trong " +"gawk" #: ext.c:249 ext.c:304 #, c-format @@ -1986,7 +2079,9 @@ msgstr "tên hàm “%s” đã được định nghĩa trước đó" #: ext.c:301 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "extension: (phần mở rộng) không thể dùng điều có sẵn của gawk “%s” như là tên hàm" +msgstr "" +"extension: (phần mở rộng) không thể dùng điều có sẵn của gawk “%s” như là " +"tên hàm" #: ext.c:375 #, c-format @@ -2258,16 +2353,16 @@ msgstr "chr: được gọi mà không có đối số" msgid "chr: called with inappropriate argument(s)" msgstr "chr: được gọi với đối số không thích hợp" -#: extension/readdir.c:277 +#: extension/readdir.c:281 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir gặp lỗi: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: được gọi với quá nhiều đối số" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: được gọi mà không có đối số" @@ -2319,27 +2414,27 @@ msgstr "do_reada: clear_array gặp lỗi\n" msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element gặp lỗi\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: đang lờ đi các đối số" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: không được hỗ trợ trên nền tảng này" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: được gọi với quá nhiều đối số" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: thiếu đối số dạng số cần thiết" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: đối số âm" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: không được hỗ trợ trên nền tảng này" @@ -2361,19 +2456,26 @@ msgstr "split: (chia tách) đối số thứ hai không phải là mảng" #: field.c:993 msgid "split: cannot use the same array for second and fourth args" -msgstr "split (chia tách): không thể sử dụng cùng một mảng có cả đối số thứ hai và thứ tư" +msgstr "" +"split (chia tách): không thể sử dụng cùng một mảng có cả đối số thứ hai và " +"thứ tư" #: field.c:998 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "split (phân tách): không thể sử dụng mảng con của tham số thứ hai cho tham số thứ tư" +msgstr "" +"split (phân tách): không thể sử dụng mảng con của tham số thứ hai cho tham " +"số thứ tư" #: field.c:1001 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "split (phân tách): không thể sử dụng mảng con của tham số thứ tư cho tham số thứ hai" +msgstr "" +"split (phân tách): không thể sử dụng mảng con của tham số thứ tư cho tham số " +"thứ hai" #: field.c:1032 msgid "split: null string for third arg is a gawk extension" -msgstr "split: (chia tách) chuỗi vô giá trị cho đối số thứ ba là phần mở rộng gawk" +msgstr "" +"split: (chia tách) chuỗi vô giá trị cho đối số thứ ba là phần mở rộng gawk" #: field.c:1072 msgid "patsplit: fourth argument is not an array" @@ -2389,15 +2491,21 @@ msgstr "patsplit: đối số thứ ba không phải không rỗng" #: field.c:1087 msgid "patsplit: cannot use the same array for second and fourth args" -msgstr "patsplit (chương trình chia tách): không thể sử dụng cùng một mảng cho cả hai đối số thứ hai và thứ tư" +msgstr "" +"patsplit (chương trình chia tách): không thể sử dụng cùng một mảng cho cả " +"hai đối số thứ hai và thứ tư" #: field.c:1092 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số thứ hai cho tham số thứ tư" +msgstr "" +"patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số " +"thứ hai cho tham số thứ tư" #: field.c:1095 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số thứ tư cho tham số thứ hai" +msgstr "" +"patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số " +"thứ tư cho tham số thứ hai" #: field.c:1133 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2432,20 +2540,20 @@ msgstr "node_to_awk_value: nút nhận được là null" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: biến nhận được là null" -#: gawkapi.c:808 +#: gawkapi.c:807 msgid "remove_element: received null array" msgstr "remove_element: mảng nhận được là null" -#: gawkapi.c:811 +#: gawkapi.c:810 msgid "remove_element: received null subscript" msgstr "remove_element: nhận được là null" -#: gawkapi.c:948 +#: gawkapi.c:947 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: không thể chuyển đổi chỉ số %d\n" -#: gawkapi.c:953 +#: gawkapi.c:952 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: không thể chuyển đổi giá trị %d\n" @@ -2537,7 +2645,9 @@ msgstr "biểu thức cho điều chuyển hướng “%s” có giá trị chu #: io.c:761 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "tên tập tin “%s” cho điều chuyển hướng “%s” có lẽ là kết quả của biểu thức luận lý" +msgstr "" +"tên tập tin “%s” cho điều chuyển hướng “%s” có lẽ là kết quả của biểu thức " +"luận lý" #: io.c:809 #, c-format @@ -2570,8 +2680,11 @@ msgid "can't redirect to `%s' (%s)" msgstr "không thể chuyển hướng đến “%s” (%s)" #: io.c:1040 -msgid "reached system limit for open files: starting to multiplex file descriptors" -msgstr "đã tới giới hạn hệ thống về tập tin được mở nên bắt đầu phối hợp nhiều dòng điều mô tả tập tin" +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"đã tới giới hạn hệ thống về tập tin được mở nên bắt đầu phối hợp nhiều dòng " +"điều mô tả tập tin" #: io.c:1056 #, c-format @@ -2589,7 +2702,9 @@ msgstr "close: (đóng) đối số thứ hai phải là “to” (đến) hay #: io.c:1103 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" -msgstr "close: (đóng) “%.*s” không phải là tập tin, ống dẫn hay đồng tiến trình đã được mở" +msgstr "" +"close: (đóng) “%.*s” không phải là tập tin, ống dẫn hay đồng tiến trình đã " +"được mở" #: io.c:1108 msgid "close of redirection that was never opened" @@ -2598,7 +2713,8 @@ msgstr "đóng một chuyển hướng mà nó chưa từng được mở" #: io.c:1205 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "close: chuyển hướng “%s” không được mở bởi “|&” nên đối số thứ hai bị bỏ qua" +msgstr "" +"close: chuyển hướng “%s” không được mở bởi “|&” nên đối số thứ hai bị bỏ qua" #: io.c:1222 #, c-format @@ -2705,7 +2821,9 @@ msgstr "lỗi đóng đầu ra tiêu chuẩn trong tiến trình con (%s)" #: io.c:1922 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "gặp lỗi khi di chuyển pty (thiết bị cuối giả) phụ thuộc đến thiết bị đầu ra tiêu chuẩn trong con (trùng: %s)" +msgstr "" +"gặp lỗi khi di chuyển pty (thiết bị cuối giả) phụ thuộc đến thiết bị đầu ra " +"tiêu chuẩn trong con (trùng: %s)" #: io.c:1924 io.c:2110 #, c-format @@ -2715,7 +2833,9 @@ msgstr "lỗi đóng thiết bị nhập chuẩn trong tiến trình con (%s)" #: io.c:1927 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "lỗi di chuyển pty (thiết bị cuối giả) phụ tới thiết bị nhập chuẩn trong điều con (nhân đôi: %s)" +msgstr "" +"lỗi di chuyển pty (thiết bị cuối giả) phụ tới thiết bị nhập chuẩn trong điều " +"con (nhân đôi: %s)" #: io.c:1929 io.c:1951 #, c-format @@ -2725,12 +2845,16 @@ msgstr "đóng pty (thiết bị cuối giả) phụ thuộc gặp lỗi (%s)" #: io.c:2040 io.c:2108 io.c:2276 io.c:2308 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" -msgstr "lỗi di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (trùng: %s)" +msgstr "" +"lỗi di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (trùng: " +"%s)" #: io.c:2047 io.c:2113 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" -msgstr "lỗi di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (trùng: %s)" +msgstr "" +"lỗi di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (trùng: " +"%s)" #: io.c:2073 io.c:2298 msgid "restoring stdout in parent process failed\n" @@ -2766,7 +2890,9 @@ msgstr "register_input_parser: nhận được con trỏ NULL" #: io.c:2818 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" -msgstr "bộ phân tích đầu vào “%s” xung đột với bộ phân tích đầu vào được cài đặt trước đó “%s”" +msgstr "" +"bộ phân tích đầu vào “%s” xung đột với bộ phân tích đầu vào được cài đặt " +"trước đó “%s”" #: io.c:2825 #, c-format @@ -2779,8 +2905,10 @@ msgstr "register_output_wrapper: nhận được con trỏ NULL" #: io.c:2873 #, c-format -msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "bộ bao kết xuất “%s” xung đột với bộ bao kết xuất được cài đặt trước đó “%s”" +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"bộ bao kết xuất “%s” xung đột với bộ bao kết xuất được cài đặt trước đó “%s”" #: io.c:2880 #, c-format @@ -2793,8 +2921,12 @@ msgstr "register_output_processor: nhận được con trỏ NULL" #: io.c:2930 #, c-format -msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" -msgstr "bộ xử lý hai hướng “%s” xung đột với bộ xử lý hai hướng đã được cài đặt trước đó “%s”" +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"bộ xử lý hai hướng “%s” xung đột với bộ xử lý hai hướng đã được cài đặt " +"trước đó “%s”" #: io.c:2939 #, c-format @@ -2834,7 +2966,9 @@ msgstr "%s: tùy chọn cần đến đối số “-- %c”\n" #: main.c:562 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "biến môi trường “POSIXLY_CORRECT” (đúng kiểu POSIX) đã được đặt; đang bật tùy chọn “--posix”" +msgstr "" +"biến môi trường “POSIXLY_CORRECT” (đúng kiểu POSIX) đã được đặt; đang bật " +"tùy chọn “--posix”" #: main.c:568 msgid "`--posix' overrides `--traditional'" @@ -2842,7 +2976,9 @@ msgstr "tùy chọn “--posix” có quyền cao hơn “--traditional” (truy #: main.c:579 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" -msgstr "“--posix”/“--traditional” (cổ điển) có quyền cao hơn “--non-decimal-data” (dữ liệu khác thập phân)" +msgstr "" +"“--posix”/“--traditional” (cổ điển) có quyền cao hơn “--non-decimal-" +"data” (dữ liệu khác thập phân)" #: main.c:583 #, c-format @@ -2875,12 +3011,16 @@ msgstr "không có đoạn chữ chương trình nào cả!" #: main.c:799 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" -msgstr "Cách dùng: %s [tùy chọn kiểu POSIX hay GNU] -f tập_tin_chương_trình [--] tập_tin ...\n" +msgstr "" +"Cách dùng: %s [tùy chọn kiểu POSIX hay GNU] -f tập_tin_chương_trình [--] " +"tập_tin ...\n" #: main.c:801 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" -msgstr "Cách dùng: %s [tùy chọn kiểu POSIX hay GNU] [--] %cchương_trình%c tập_tin ...\n" +msgstr "" +"Cách dùng: %s [tùy chọn kiểu POSIX hay GNU] [--] %cchương_trình%c " +"tập_tin ...\n" #: main.c:806 msgid "POSIX options:\t\tGNU long options: (standard)\n" @@ -3225,8 +3365,12 @@ msgstr "không có số thập lúc nằm trong thoát chuỗi “\\x”" #: node.c:579 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "thoát chuỗi thập lục \\x%.*s chứa %d ký tự mà rất có thể không phải được đọc bằng cách dự định" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"thoát chuỗi thập lục \\x%.*s chứa %d ký tự mà rất có thể không phải được đọc " +"bằng cách dự định" #: node.c:594 #, c-format @@ -3234,8 +3378,12 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "thoát chuỗi “\\%c” được xử lý như là “%c” chuẩn" #: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." -msgstr "Dữ liệu dạng đa byte (multibyte) không hợp lệ được tìm thấy. Tại đó có lẽ không khớp giữa dữ liệu của bạn và nơi xảy ra." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." +msgstr "" +"Dữ liệu dạng đa byte (multibyte) không hợp lệ được tìm thấy. Tại đó có lẽ " +"không khớp giữa dữ liệu của bạn và nơi xảy ra." #: posix/gawkmisc.c:177 #, c-format @@ -3245,7 +3393,9 @@ msgstr "%s %s “%s”: không thể lấy cờ mô tả (fd): (fcntl F_GETFD: % #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" -msgstr "%s %s “%s”: không thể đặt “close-on-exec” (đóng một khi thực hiện): (fcntl F_SETFD: %s)" +msgstr "" +"%s %s “%s”: không thể đặt “close-on-exec” (đóng một khi thực hiện): (fcntl " +"F_SETFD: %s)" #: profile.c:71 #, c-format @@ -3314,7 +3464,9 @@ msgstr "redir2str: không hiểu kiểu chuyển hướng %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "thành phần của biểu thức chính qui (regexp) “%.*s” gần như chắc chắn nên là “[%.*s]”" +msgstr "" +"thành phần của biểu thức chính qui (regexp) “%.*s” gần như chắc chắn nên là " +"“[%.*s]”" #: regcomp.c:131 msgid "Success" @@ -3456,8 +3608,11 @@ msgstr "không thể pop (lấy ra) ngữ cảnh chính" #~ msgid "statement has no effect" #~ msgstr "câu không có tác dụng" -#~ msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" -#~ msgstr "cho loop: (cho vòng lặp) mảng “%s” đã thay đổi kích thước từ %ld đến %ld trong khi thực hiện vòng lặp" +#~ msgid "" +#~ "for loop: array `%s' changed size from %ld to %ld during loop execution" +#~ msgstr "" +#~ "cho loop: (cho vòng lặp) mảng “%s” đã thay đổi kích thước từ %ld đến %ld " +#~ "trong khi thực hiện vòng lặp" #~ msgid "function called indirectly through `%s' does not exist" #~ msgstr "hàm được gọi gián tiếp thông qua “%s” không tồn tại" diff --git a/posix/ChangeLog b/posix/ChangeLog index 9eb72ff4..b93b891f 100644 --- a/posix/ChangeLog +++ b/posix/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2013-06-03 Arnold D. Robbins <arnold@skeeve.com> * gawkmisc.c (init_sockets): Remove ifdefs. @@ -3128,8 +3128,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, if (BE (sbcset == NULL, 0)) #endif /* RE_ENABLE_I18N */ { - re_free (sbcset); #ifdef RE_ENABLE_I18N + re_free (sbcset); re_free (mbcset); #endif *err = REG_ESPACE; diff --git a/regex_internal.c b/regex_internal.c index 10dd6e00..056cff3d 100644 --- a/regex_internal.c +++ b/regex_internal.c @@ -320,12 +320,11 @@ build_wcs_upper_buffer (re_string_t *pstr) + byte_idx), remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = wc; - if (iswlower (wc)) + wchar_t wcu = towupper (wc); + if (wcu != wc) { size_t mbcdlen; - wcu = towupper (wc); mbcdlen = wcrtomb (buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); @@ -390,12 +389,11 @@ build_wcs_upper_buffer (re_string_t *pstr) mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = wc; - if (iswlower (wc)) + wchar_t wcu = towupper (wc); + if (wcu != wc) { size_t mbcdlen; - wcu = towupper (wc); mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); @@ -547,10 +545,7 @@ build_upper_buffer (re_string_t *pstr) int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx]; if (BE (pstr->trans != NULL, 0)) ch = pstr->trans[ch]; - if (islower (ch)) - pstr->mbs[char_idx] = toupper (ch); - else - pstr->mbs[char_idx] = ch; + pstr->mbs[char_idx] = toupper (ch); } pstr->valid_len = char_idx; pstr->valid_raw_len = char_idx; diff --git a/test/ChangeLog b/test/ChangeLog index 65409956..6d4cd1c2 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,30 @@ +2014-04-11 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (charset-msg-start): Add a warning message that tests + may fail without adequate locale support, per request from + Nelson H.F. Beebe. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-04 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am: Prettify list of tests a little bit. + +2014-04-03 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): Add readfile2.ok. Oops. + +2014-03-27 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (readfile2): New test. + * readfile2.awk, readfile2.ok: New files. + +2014-02-28 Arnold D. Robbins <arnold@skeeve.com> + + * regrange.ok: Update after code improvements. + 2014-02-03 Stepan Kasal <kasal@ucw.cz> * strftime.awk: the default format uses %e, not %d (Introduced on diff --git a/test/Makefile.am b/test/Makefile.am index 97848a00..238f2ed7 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -710,6 +710,8 @@ EXTRA_DIST = \ range1.ok \ readdir.awk \ readdir0.awk \ + readfile2.awk \ + readfile2.ok \ rebt8b1.awk \ rebt8b1.ok \ rebt8b2.awk \ @@ -947,8 +949,7 @@ BASIC_TESTS = \ arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ aryprm8 arysubnm asgext awkpath \ - back89 backgsub \ - badassign1 \ + back89 backgsub badassign1 \ childin clobber closebad clsflnam compare compare2 concat1 concat2 \ concat3 concat4 convfmt \ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ @@ -1021,7 +1022,7 @@ LOCALE_CHARSET_TESTS = \ SHLIB_TESTS = \ fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \ - ordchr ordchr2 readdir readfile revout revtwoway rwarray testext time + ordchr ordchr2 readdir readfile readfile2 revout revtwoway rwarray testext time # List of the tests which should be run with --lint option: NEED_LINT = \ @@ -1144,6 +1145,10 @@ machine-msg-end: charset-msg-start: @echo "======== Starting tests that can vary based on character set or locale support ========" + @echo "************************************************" + @echo "** Some or all of these tests may fail if you **" + @echo "** have inadequate or missing locale support **" + @echo "************************************************" charset-msg-end: @echo "======== Done with tests that can vary based on character set or locale support ========" @@ -1736,6 +1741,11 @@ readfile:: @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok +readfile2:: + @echo $@ + @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.awk "$(srcdir)"/readdir.awk > _$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + include2:: @echo $@ @AWKPATH="$(srcdir)" $(AWK) --include inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Makefile.in b/test/Makefile.in index 468c19c5..0831c597 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -956,6 +956,8 @@ EXTRA_DIST = \ range1.ok \ readdir.awk \ readdir0.awk \ + readfile2.awk \ + readfile2.ok \ rebt8b1.awk \ rebt8b1.ok \ rebt8b2.awk \ @@ -1192,8 +1194,7 @@ BASIC_TESTS = \ arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ aryprm8 arysubnm asgext awkpath \ - back89 backgsub \ - badassign1 \ + back89 backgsub badassign1 \ childin clobber closebad clsflnam compare compare2 concat1 concat2 \ concat3 concat4 convfmt \ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ @@ -1263,7 +1264,7 @@ LOCALE_CHARSET_TESTS = \ SHLIB_TESTS = \ fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \ - ordchr ordchr2 readdir readfile revout revtwoway rwarray testext time + ordchr ordchr2 readdir readfile readfile2 revout revtwoway rwarray testext time # List of the tests which should be run with --lint option: @@ -1571,6 +1572,10 @@ machine-msg-end: charset-msg-start: @echo "======== Starting tests that can vary based on character set or locale support ========" + @echo "************************************************" + @echo "** Some or all of these tests may fail if you **" + @echo "** have inadequate or missing locale support **" + @echo "************************************************" charset-msg-end: @echo "======== Done with tests that can vary based on character set or locale support ========" @@ -2160,6 +2165,11 @@ readfile:: @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok +readfile2:: + @echo $@ + @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.awk "$(srcdir)"/readdir.awk > _$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + include2:: @echo $@ @AWKPATH="$(srcdir)" $(AWK) --include inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/readfile2.awk b/test/readfile2.awk new file mode 100644 index 00000000..c21483fc --- /dev/null +++ b/test/readfile2.awk @@ -0,0 +1,12 @@ +@load "readfile" +BEGIN { PROCINFO["readfile"] = 1 } +BEGINFILE { print "Start of", basename(FILENAME) } +{ printf ("%d: <%s>\n", FNR, $0 ) } +ENDFILE { print "End of", basename(FILENAME) } + +function basename(file, result) +{ + result = file + gsub(".*/", "", result) + return result +} diff --git a/test/readfile2.ok b/test/readfile2.ok new file mode 100644 index 00000000..be1ded6c --- /dev/null +++ b/test/readfile2.ok @@ -0,0 +1,21 @@ +Start of readfile2.awk +1: <@load "readfile" +BEGIN { PROCINFO["readfile"] = 1 } +BEGINFILE { print "Start of", basename(FILENAME) } +{ printf ("%d: <%s>\n", FNR, $0 ) } +ENDFILE { print "End of", basename(FILENAME) } + +function basename(file, result) +{ + result = file + gsub(".*/", "", result) + return result +} +> +End of readfile2.awk +Start of readdir.awk +1: <@load "readdir" + +{ print } +> +End of readdir.awk diff --git a/test/regrange.ok b/test/regrange.ok index 1fa00c70..ae8c6499 100644 --- a/test/regrange.ok +++ b/test/regrange.ok @@ -3,4 +3,4 @@ "c" ~ /[[a-d]/ --> 1 "\" ~ /[\[-\]]/ --> 1 "[.c.]" ~ /[a-[.e.]]/ --> 1 -"[.d.]" ~ /[[.c.]-[.z.]]/ --> 0 +"[.d.]" ~ /[[.c.]-[.z.]]/ --> 1 diff --git a/vms/ChangeLog b/vms/ChangeLog index 94bc9f1a..1bb34475 100644 --- a/vms/ChangeLog +++ b/vms/ChangeLog @@ -1,3 +1,11 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * descrip.mms, vmsbuild.com: Update patchlevel. + 2014-02-12 John E. Malmberg <wb8tyw@qsl.net> * vmstest.com: (strftime) requires GNV Coreutils date command to run diff --git a/vms/descrip.mms b/vms/descrip.mms index 1f24f8f1..a0b7bd6a 100644 --- a/vms/descrip.mms +++ b/vms/descrip.mms @@ -122,7 +122,7 @@ DOCS= $(DOCDIR)gawk.1,$(DOCDIR)gawk.texi,$(DOCDIR)texinfo.tex # Release of gawk REL=4.1 -PATCHLVL=0 +PATCHLVL=1 # generic target all : gawk diff --git a/vms/vax/ChangeLog b/vms/vax/ChangeLog index 526bc420..7cf2c4fa 100644 --- a/vms/vax/ChangeLog +++ b/vms/vax/ChangeLog @@ -1,3 +1,7 @@ +2014-04-08 Arnold D. Robbins <arnold@skeeve.com> + + * 4.1.1: Release tar ball made. + 2013-12-29 John Malmberg <wb8tyw@qsl.net> * ChangeLog: New directory. diff --git a/vms/vmsbuild.com b/vms/vmsbuild.com index 2c0d39f0..c13e4b57 100644 --- a/vms/vmsbuild.com +++ b/vms/vmsbuild.com @@ -10,10 +10,11 @@ $! gawk 3.1.1 revised, Apr'02 $! gawk 3.1.6 revised, Mar'07 $! gawk-bytecode revd, Jan'10 $! gawk 4.0.0 revd, May'11 -$! gawk 4.1.0 revd, Nov'12 +$! gawk 4.1.0 revd, May'13 +$! gawk 4.1.1 revd, Apr'14 $! $ REL = "4.1" !release version number -$ PATCHLVL = "0" +$ PATCHLVL = "1" $! $ if (f$getsyi("HW_MODEL") .lt. 1024) $ then |